對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2007/5/31 2:10:00
> > hub在多人連結時上網頻寬是平均分配的
> > 但switch hub是看誰有需要才給他頻寬
> > 也就是hub很像是廣撥方式傳遞訊息
> > 而switch hub是直接傳到想要的那台主機
>
> 一般 HUB 與 Switch HUB,都是廣播的呀,要不然..
> 網路芳鄰怎麼看得到,DHCP如何使用呢?
>
> 當然,supported VLAN 產品例外囉..
>
> 一般 HUB 與 Switch HUB 差別,說明一下,如有錯誤,
> 還望高人指點指點.. :P
>
> Hub 僅屬於 Layer 1 product.
> Switch Hub 則屬於 Layer 2 product.
>
> Switch Hub 比一般 Hub 多的功能,最少它要聰明地學習
> 每個 Port 對應的 Mac address。
>
> 假設 Switch Hub port 1 學到的 Mac address 為 00:10:B5:30:30:A9
> port 2 學到的 Mac address 為 00:10:C1:D3:E2:A2
> port 3 學到的 Mac address 為 00:10:B3:E3:A1:07
>
> Port 1 底下接的是 Linux,
> Port 2 底下接的是 Win98,
> Port 3 底下接的是 Router。
>
> 今天,假設您要從 Linux 透過 Router 連接上 Internet,那麼首先送出
> ARP packages 問到 Router IP 所對應的 Mac address,然後 Linux 就
> 連接到 Router 所對應的 Mac address (00:10:B3:E3:A1:07) 做溝通。
>
> 其中,Switch HUB 已經得知 Linux 與 Router 的 Mac address,當 Linux
> 與 Router 做資料傳輸時,並不會將資料丟到 port 2 給 win98。假如您
> 想要在 Win98 上裝 sniffer 之類的軟體聽取封包,那麼您則聽不到 Linux
> 與 Router 之間傳送的封包。
>
> 這就是 Switch HUB 聰明的地方。
> 但是如果是 HUB,無論是這個線段網路上的任何資料,每個 Port 都收得到。
>
> 結論,Switch HUB,比 HUB 更有安全性,減少封包碰撞,傳輸更有效率。
>
> 歡迎大家不吝指教。
>
我喜歡看到這樣的答案﹐也喜歡和這樣的朋友討論。
我們這裡談到的 switch 相信都是指 level 2 上面的吧﹐那麼我們要知道 OSI level
2 layer 上面有什麼標準才好理解。其中的 IEEE802.x 是應用最廣的標準﹐而我們最
常見的 ethernet 則是使用 IEEE802.3 這個 MAC sublayer 標準﹐其上的 DLC
sublayer 802.2 就交給寫 programing 的朋友幫忙解釋一下 吧。
我們這裡看看 IEEE802.3 是怎麼運作的﹐其特性有哪些﹖
IEEE802.3 在 ethernet 上使用的傳輸技術﹐最普遍被採用的是 CSMA/CD﹐其實可以
拆開三個部份來了解﹕
1) CS (Carrier Sense)
傳送設備要將信號送至傳輸媒體之前﹐首先要探測媒體是否已經存在 carrier﹐如果
有﹐則表示有其它設備在使用這個媒體進行其它的傳送。然則﹐傳送設備就不能向這
個媒體送出信號﹐而必須等到下次探測沒有 carrier 的時候才能傳送。這比較好理
解﹐也就是先搶先贏嘛﹐好比在課堂上發言﹐誰先舉手說誰先說﹐如果已經有人在說
了﹐那就等。
2) MA (Mutiple Access)
在同一時間內﹐允許多個設備使用共享媒體(當然不能離開 CS 和 CD 的制約)。在
CSMA/CD 技術中﹐當發送設備順利通過 CS 檢測之後向媒體送出信號而沒有發生
Collision 的話﹐所有分享著同一媒體的設備﹐都能收到這個信號。每一個設備都有
一個唯一的位址標識﹐我們通常稱之為 MAC 位址﹔而信號在傳送媒體中則是以 frame
的形式傳送﹐每個 frame 都有一個 source 和一個 destination 位址欄。傳送設備
將 frame 送至媒體上之後﹐只有被標識為 destination 的的設備﹐才會將信號 copy
下來﹐再往上層程式遞送 (decapsulate)﹐而那些設備發現 destination 不是自己的
話﹐就單純的不處理這個 frame (除非在 promiscuous 模式之下)。
不同的協定﹐對 MA 使用的不同﹐也會影響整體效率的運作﹐例如廣播封包﹐那些以
FF:FF:FF:FF:FF:FF 為 MAC 位址的封包﹐switch 還是會送到所有機器上面的﹐因為
使用這個廣播位址的 frame﹐每個接收設備都會將之 copy 下來進行 decapsulate 處
理。例如 Microsoft Network 的協定家族﹐其使用廣播封包的比率是非常高的﹐就算
使用 L2 switch 對這樣的廣播也束手無策。只有利用 subnet 和 router 或更高
level 的 switch 才有效﹐但設定的複雜性和額外增加的交通﹐也是要另行評估的﹐
恐怕就超出目前的討論範圍了。
3) CD (Collision Detection)
前面的 CS 過程中﹐在理想的情況之下﹐所有分享著共同媒體的設備﹐都應該有機會
取得傳送的機會。只是﹐電子設備的運作速度﹐遠非我們人類所能感應的﹐這些運
作﹐每一秒鐘可能有上萬甚至百萬次之多﹐例如 CAT 5 種類的網線﹐就能處理
350Mhz 或更高的傳送頻率。假如﹐當兩個設備剛好在這百萬分之一秒之內﹐同時做
CS 的動作﹐而又同時探測到媒體上沒有 carrier﹐那這種情形之下﹐這兩個設備可能
會同時對這媒體傳送信號﹐這就是我們常說的 Collision (碰撞)了。如果當一個碰撞
發生了﹐就會在媒體上產生frequecy ripple 現象。當一個在線的設備偵測到
ripple ﹐它就會發出一個高頻信號去清除所有其它信號。換句話說﹐這個信號同時告
訴所有設備﹐碰撞已經發生。這時候﹐每一個設備都會隨機的等待一段時間再重新進
行 CS﹐如果連續的(非間斷的)還是遇到 collision﹐那就按一定比例延遲隨機等待時
候﹐總共可以進行16次嘗試大家才會最終放棄。所以不難看出﹐如果在同一個
segment 上面﹐在線的設備越多﹐其發生 collision 的機會也越大。
事實上﹐除了 CSMA/CD 外﹐還有一個 CSMA/CA (CA = Collision Avoidance) 的技術
我們可以使用﹕發送端先向接收端送出 RTS(Request To Send) 封包﹐等收到 CTS
(Clear To Send) 回應後﹐才向媒體送出信號。AppleTalk 協定就是使用這種技術。
CA 和 CD 的分別﹐可以用過獨木橋來比喻﹕用 CD 的時候﹐要過就過﹐過不了再來﹔
用 CA 的時候﹐會先派一個小廝探路﹐如果他通過了﹐然後您才施然而過。
好了﹐當您了解 CSMA/CD 這個協定之後﹐那再來看看 HUB 和 Switch 的分別吧﹕
HUB 單純的是一個 repeater﹐當它從一個 port (和 TCP 協定的 port 不一樣﹐這裡
是指插網路線的接孔)接收信號進來之後﹐會將這個信號原原本本的送到所有其它
port 上﹐不管哪些 port 是接到哪一台機器。
而 switch 呢﹖它自己有一份 table﹐記錄著哪個 port 接到哪些 MAC 位址設備上。
當信號從一個 port 進來之後﹐會檢查這個 frame 的 destination 是哪個 MAC﹐然
後按 table 找到這個 MAC 對應的 port ﹐而僅將信號往這個 port 送﹐其它的 port
就不送了。
這樣有什麼好處﹖
先看看 CS 吧﹐當用 hub 的時候﹐所有 port 所連接到的設備都探測到 carrier﹐然
後就要等﹔而用 switch 呢﹖那些不是 destination 的設備﹐並沒有探測到
carrier﹐也就無需再等﹐可以直接向媒體送出信號。當信號到達 switch 的時
候﹐switch 會先利用 cache 接收這個信號﹐然後進行 table 的比對﹐再向
destination 送出。如果 switch 的 cache 越大﹐CPU 處理能力越強﹐其效率也越
高﹐當然價錢也越貴。
再看 CD﹐因為大部份由設備送出的信號﹐都會先被 switch cache 起來﹐然後再經過
table 判斷送出﹐那麼 collision 的機會也大為的減少﹐由此﹐因 CD 而中斷的傳送
也就大為減少﹐相對的﹐所有設備的使用效率也大為提高。
至於 MA﹐相信不用多解釋了吧﹖使用 swtich 還有一個好處﹕提高網路的安全性。如
果我們用 hub 來連接設備﹐因為 frame 會抵達所有機器﹐如果某人在其設備上裝上
一個封包抓取軟體﹐同時將網路卡的 promiscuous mode 打開﹐那就可以看到所有的
封包了﹔但如果用 switch 呢﹖只有被送到這台機器上的封包﹐才能被抓到。通常在
網路安全上面﹐安全性對於效能及便利性是成反比的﹕要增加安全性﹐就要犧牲效能
和便利性﹔要增加效能和便利性﹐就要犧牲安全性。而 switch﹐似乎是唯一打破這個
樊籬的網路設備了。
剛纔我還看到有人將 Bridge 和 Switch 混為一談了﹐我不知道該仁兄對 bridge 的
理解是怎樣的﹖在下認為﹐bridge 的功能只有兩個﹕filtering 和 forwarding﹔後
者是根據前者判斷後才能發生。
使用 bridge 的時候﹐基本上將物理的連線切為兩個 segment (或多個﹐視 bridge
界面而定)﹐然後﹐bridge 也會建立起自己的 table﹐分別將不同的 MAC 劃分到不同
的 segment 去。然後當 frame 抵達 bridge 的時候﹐bridge 會檢查其 source 和
destination﹐如果發現這兩個 MAC 都在同一個 segment 之上﹐那就不處理這個
frame (發揮 filter 的功能)﹔但如果發現 soure 和 destination 不在同一個
segment 上呢﹐就起用 forward 功能﹐將 frame 送到 destination 那個 segment
上﹐或是單純的向所有‘非 source’到 segment(s) 遞送(視 bridge 的能力)。
這樣看來﹐bridge 對 CS 和 CD 也起到改善的作用﹐但其對 frame 的處理﹐畢竟和
switch 是不一樣的﹕bridge 以 segment 為依據﹐而 switch 則以個別設備為單位﹐
所以在執行效率上還是有分別的。當然﹐如果您將每一 port 所連接的設備看為單一
的 segment﹐然後將 switch 看為 learning bridge﹐那或許可以將它們看為極為近
似的兩個設備吧。
至於於 10Base 和 100Base 的轉換﹐那只是 switch 中一項非常簡單的功能而已﹐並
非是 switch 真正加分的因素。
以上純為個人認知﹐如有錯誤﹐懇請指正﹐以免誤導觀眾。
> > 但switch hub是看誰有需要才給他頻寬
> > 也就是hub很像是廣撥方式傳遞訊息
> > 而switch hub是直接傳到想要的那台主機
>
> 一般 HUB 與 Switch HUB,都是廣播的呀,要不然..
> 網路芳鄰怎麼看得到,DHCP如何使用呢?
>
> 當然,supported VLAN 產品例外囉..
>
> 一般 HUB 與 Switch HUB 差別,說明一下,如有錯誤,
> 還望高人指點指點.. :P
>
> Hub 僅屬於 Layer 1 product.
> Switch Hub 則屬於 Layer 2 product.
>
> Switch Hub 比一般 Hub 多的功能,最少它要聰明地學習
> 每個 Port 對應的 Mac address。
>
> 假設 Switch Hub port 1 學到的 Mac address 為 00:10:B5:30:30:A9
> port 2 學到的 Mac address 為 00:10:C1:D3:E2:A2
> port 3 學到的 Mac address 為 00:10:B3:E3:A1:07
>
> Port 1 底下接的是 Linux,
> Port 2 底下接的是 Win98,
> Port 3 底下接的是 Router。
>
> 今天,假設您要從 Linux 透過 Router 連接上 Internet,那麼首先送出
> ARP packages 問到 Router IP 所對應的 Mac address,然後 Linux 就
> 連接到 Router 所對應的 Mac address (00:10:B3:E3:A1:07) 做溝通。
>
> 其中,Switch HUB 已經得知 Linux 與 Router 的 Mac address,當 Linux
> 與 Router 做資料傳輸時,並不會將資料丟到 port 2 給 win98。假如您
> 想要在 Win98 上裝 sniffer 之類的軟體聽取封包,那麼您則聽不到 Linux
> 與 Router 之間傳送的封包。
>
> 這就是 Switch HUB 聰明的地方。
> 但是如果是 HUB,無論是這個線段網路上的任何資料,每個 Port 都收得到。
>
> 結論,Switch HUB,比 HUB 更有安全性,減少封包碰撞,傳輸更有效率。
>
> 歡迎大家不吝指教。
>
我喜歡看到這樣的答案﹐也喜歡和這樣的朋友討論。
我們這裡談到的 switch 相信都是指 level 2 上面的吧﹐那麼我們要知道 OSI level
2 layer 上面有什麼標準才好理解。其中的 IEEE802.x 是應用最廣的標準﹐而我們最
常見的 ethernet 則是使用 IEEE802.3 這個 MAC sublayer 標準﹐其上的 DLC
sublayer 802.2 就交給寫 programing 的朋友幫忙解釋一下 吧。
我們這裡看看 IEEE802.3 是怎麼運作的﹐其特性有哪些﹖
IEEE802.3 在 ethernet 上使用的傳輸技術﹐最普遍被採用的是 CSMA/CD﹐其實可以
拆開三個部份來了解﹕
1) CS (Carrier Sense)
傳送設備要將信號送至傳輸媒體之前﹐首先要探測媒體是否已經存在 carrier﹐如果
有﹐則表示有其它設備在使用這個媒體進行其它的傳送。然則﹐傳送設備就不能向這
個媒體送出信號﹐而必須等到下次探測沒有 carrier 的時候才能傳送。這比較好理
解﹐也就是先搶先贏嘛﹐好比在課堂上發言﹐誰先舉手說誰先說﹐如果已經有人在說
了﹐那就等。
2) MA (Mutiple Access)
在同一時間內﹐允許多個設備使用共享媒體(當然不能離開 CS 和 CD 的制約)。在
CSMA/CD 技術中﹐當發送設備順利通過 CS 檢測之後向媒體送出信號而沒有發生
Collision 的話﹐所有分享著同一媒體的設備﹐都能收到這個信號。每一個設備都有
一個唯一的位址標識﹐我們通常稱之為 MAC 位址﹔而信號在傳送媒體中則是以 frame
的形式傳送﹐每個 frame 都有一個 source 和一個 destination 位址欄。傳送設備
將 frame 送至媒體上之後﹐只有被標識為 destination 的的設備﹐才會將信號 copy
下來﹐再往上層程式遞送 (decapsulate)﹐而那些設備發現 destination 不是自己的
話﹐就單純的不處理這個 frame (除非在 promiscuous 模式之下)。
不同的協定﹐對 MA 使用的不同﹐也會影響整體效率的運作﹐例如廣播封包﹐那些以
FF:FF:FF:FF:FF:FF 為 MAC 位址的封包﹐switch 還是會送到所有機器上面的﹐因為
使用這個廣播位址的 frame﹐每個接收設備都會將之 copy 下來進行 decapsulate 處
理。例如 Microsoft Network 的協定家族﹐其使用廣播封包的比率是非常高的﹐就算
使用 L2 switch 對這樣的廣播也束手無策。只有利用 subnet 和 router 或更高
level 的 switch 才有效﹐但設定的複雜性和額外增加的交通﹐也是要另行評估的﹐
恐怕就超出目前的討論範圍了。
3) CD (Collision Detection)
前面的 CS 過程中﹐在理想的情況之下﹐所有分享著共同媒體的設備﹐都應該有機會
取得傳送的機會。只是﹐電子設備的運作速度﹐遠非我們人類所能感應的﹐這些運
作﹐每一秒鐘可能有上萬甚至百萬次之多﹐例如 CAT 5 種類的網線﹐就能處理
350Mhz 或更高的傳送頻率。假如﹐當兩個設備剛好在這百萬分之一秒之內﹐同時做
CS 的動作﹐而又同時探測到媒體上沒有 carrier﹐那這種情形之下﹐這兩個設備可能
會同時對這媒體傳送信號﹐這就是我們常說的 Collision (碰撞)了。如果當一個碰撞
發生了﹐就會在媒體上產生frequecy ripple 現象。當一個在線的設備偵測到
ripple ﹐它就會發出一個高頻信號去清除所有其它信號。換句話說﹐這個信號同時告
訴所有設備﹐碰撞已經發生。這時候﹐每一個設備都會隨機的等待一段時間再重新進
行 CS﹐如果連續的(非間斷的)還是遇到 collision﹐那就按一定比例延遲隨機等待時
候﹐總共可以進行16次嘗試大家才會最終放棄。所以不難看出﹐如果在同一個
segment 上面﹐在線的設備越多﹐其發生 collision 的機會也越大。
事實上﹐除了 CSMA/CD 外﹐還有一個 CSMA/CA (CA = Collision Avoidance) 的技術
我們可以使用﹕發送端先向接收端送出 RTS(Request To Send) 封包﹐等收到 CTS
(Clear To Send) 回應後﹐才向媒體送出信號。AppleTalk 協定就是使用這種技術。
CA 和 CD 的分別﹐可以用過獨木橋來比喻﹕用 CD 的時候﹐要過就過﹐過不了再來﹔
用 CA 的時候﹐會先派一個小廝探路﹐如果他通過了﹐然後您才施然而過。
好了﹐當您了解 CSMA/CD 這個協定之後﹐那再來看看 HUB 和 Switch 的分別吧﹕
HUB 單純的是一個 repeater﹐當它從一個 port (和 TCP 協定的 port 不一樣﹐這裡
是指插網路線的接孔)接收信號進來之後﹐會將這個信號原原本本的送到所有其它
port 上﹐不管哪些 port 是接到哪一台機器。
而 switch 呢﹖它自己有一份 table﹐記錄著哪個 port 接到哪些 MAC 位址設備上。
當信號從一個 port 進來之後﹐會檢查這個 frame 的 destination 是哪個 MAC﹐然
後按 table 找到這個 MAC 對應的 port ﹐而僅將信號往這個 port 送﹐其它的 port
就不送了。
這樣有什麼好處﹖
先看看 CS 吧﹐當用 hub 的時候﹐所有 port 所連接到的設備都探測到 carrier﹐然
後就要等﹔而用 switch 呢﹖那些不是 destination 的設備﹐並沒有探測到
carrier﹐也就無需再等﹐可以直接向媒體送出信號。當信號到達 switch 的時
候﹐switch 會先利用 cache 接收這個信號﹐然後進行 table 的比對﹐再向
destination 送出。如果 switch 的 cache 越大﹐CPU 處理能力越強﹐其效率也越
高﹐當然價錢也越貴。
再看 CD﹐因為大部份由設備送出的信號﹐都會先被 switch cache 起來﹐然後再經過
table 判斷送出﹐那麼 collision 的機會也大為的減少﹐由此﹐因 CD 而中斷的傳送
也就大為減少﹐相對的﹐所有設備的使用效率也大為提高。
至於 MA﹐相信不用多解釋了吧﹖使用 swtich 還有一個好處﹕提高網路的安全性。如
果我們用 hub 來連接設備﹐因為 frame 會抵達所有機器﹐如果某人在其設備上裝上
一個封包抓取軟體﹐同時將網路卡的 promiscuous mode 打開﹐那就可以看到所有的
封包了﹔但如果用 switch 呢﹖只有被送到這台機器上的封包﹐才能被抓到。通常在
網路安全上面﹐安全性對於效能及便利性是成反比的﹕要增加安全性﹐就要犧牲效能
和便利性﹔要增加效能和便利性﹐就要犧牲安全性。而 switch﹐似乎是唯一打破這個
樊籬的網路設備了。
剛纔我還看到有人將 Bridge 和 Switch 混為一談了﹐我不知道該仁兄對 bridge 的
理解是怎樣的﹖在下認為﹐bridge 的功能只有兩個﹕filtering 和 forwarding﹔後
者是根據前者判斷後才能發生。
使用 bridge 的時候﹐基本上將物理的連線切為兩個 segment (或多個﹐視 bridge
界面而定)﹐然後﹐bridge 也會建立起自己的 table﹐分別將不同的 MAC 劃分到不同
的 segment 去。然後當 frame 抵達 bridge 的時候﹐bridge 會檢查其 source 和
destination﹐如果發現這兩個 MAC 都在同一個 segment 之上﹐那就不處理這個
frame (發揮 filter 的功能)﹔但如果發現 soure 和 destination 不在同一個
segment 上呢﹐就起用 forward 功能﹐將 frame 送到 destination 那個 segment
上﹐或是單純的向所有‘非 source’到 segment(s) 遞送(視 bridge 的能力)。
這樣看來﹐bridge 對 CS 和 CD 也起到改善的作用﹐但其對 frame 的處理﹐畢竟和
switch 是不一樣的﹕bridge 以 segment 為依據﹐而 switch 則以個別設備為單位﹐
所以在執行效率上還是有分別的。當然﹐如果您將每一 port 所連接的設備看為單一
的 segment﹐然後將 switch 看為 learning bridge﹐那或許可以將它們看為極為近
似的兩個設備吧。
至於於 10Base 和 100Base 的轉換﹐那只是 switch 中一項非常簡單的功能而已﹐並
非是 switch 真正加分的因素。
以上純為個人認知﹐如有錯誤﹐懇請指正﹐以免誤導觀眾。