了解交換機技術構建MAC地址及轉發數據的過程
交換機技術在網絡技術中占有非常重要的地位,其主要的功能就是構建MAC地址表,在這之前它必須知道每一個端口所連接的主機的MAC地址,交換機技術是網絡技術的重點,我們網絡頻道已經為讀者進行了多次報道。因為其重要,故我們再次進行系統的整理,以供初學者參閱。
構建MAC地址表
交換機技術在轉發數據前必須知道它的每一個端口所連接的主機的MAC地址,構建出一個MAC地址表。當交換機從某個端口收到數據幀后,讀取數據幀中封裝的目的地MAC地址信息,然后查閱事先構建的MAC地址表,找出和目的地地址相對應的端口,從該端口把數據轉發出去,其他端口則不受影響,這樣避免了與其它端口上的數據發生碰撞。因此構建MAC地址表是交換機的首要工作。下面舉例說明交換機建立地址表的過程。
假設主機A向主機C發送一個數據幀(每一個數據幀中都包含有源MAC地址和目的MAC地址),當該數據幀從E0端口進入交換機后,交換機通過檢查數據幀中的源MAC地址字段,將該字段的值(主機A的MAC地址)放入MAC地址表中,并把它與E0端口對應起來,表示E0端口所連接的主機是A(如圖11-5所示)。此時,由于在MAC地址表中沒有關于目的地MAC地址(主機C的MAC地址)的條目。交換機技術將此幀向除了E0端口以外的所有端口轉發,從而保證主機C能收到該幀(這種操作叫flooding)。
交換機根據地址表轉發數據
同理,當交換機收到主機B、C、D的數據后也會把他們的地址學習到,寫入地址表中,并將相應的端口和MAC地址對應起來。最終會把所有的主機地址都學習到,構建出完整的地址表。此時,若主機A再向主機C發送一個數據幀,應用交換機技術則根據它的MAC地址表中的地址對應關系,將此數據幀僅從它的E2端口轉發出去。從而僅使主機C接收到主機A發送給它的數據幀,不再影響其他端口。那么在主機A和主機C通信的同時其他主機(比如主機B和主機D)之間也可以通信。
當交換機建立起完整的MAC地址表之后,對數據幀的轉發是通過查找MAC地址表得到對應的端口,從而將數據幀通過特定的端口發送出去的。但是,對于從一個端口進入的廣播數據及在地址表中找不到地址條目的數據,交換機會把該數據幀從除了進入端口之外的所有端口轉發出去。從這個角度來說,交換機互連的設備處于同一個廣播域內,但它們處于不同的碰撞域內。
提示這里為了解釋交換機如何建立MAC地址表,假設A向C發了一個數據幀。實際情況并非如此,并不是主機間必須進行通信交換機才能學習到MAC地址。實際上是當網卡驅動加載之后交換機就學習到了主機的MAC地址。讀者如果仔細觀察就會發現,Windows系統啟動過程還沒完成,交換機技術就學習到了主機的MAC地址。