MAC地址表
MAC地址表
MAC(Media Access Control, 介質訪問控制)地址是識別LAN(區域網)節點的標識。網卡的物理地址通常是由網卡生產廠家燒入網卡的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。
交換機之所以能夠直接對目的節點發送數據包,而不是像集線器一樣以廣播方式對所有節點發送數據包,最關鍵的技術就是交換機可以識別連在網路上的節點的網卡MAC地址,並把它們放到一個叫做MAC地址表的地方。這個MAC地址表存放於交換機的緩存中,並記住這些地址,這樣一來當需要向目的地址發送數據時,交換機就可在MAC地址表中查找這個MAC地址的節點位置,然後直接向這個位置的節點發送。所謂MAC地址數量是指交換機的MAC地址表中可以最多存儲的MAC地址數量,存儲的MAC地址數量越多,那麼數據轉發的速度和效率也就就越高。
但是不同檔次的交換機每個埠所能夠支持的MAC數量不同。在交換機的每個埠,都需要足夠的緩存來記憶這些MAC地址,所以Buffer(緩存)容量的大小就決定了相應交換機所能記憶的MAC地址數多少。通常交換機只要能夠記憶1024個MAC地址基本上就可以了,而一般的交換機通常都能做到這一點,所以如果對網路規模不是很大的情況下,這參數無需太多考慮。當然越是高檔的交換機能記住的MAC地址數就越多,這在選擇時要視所連網路的規模而定了。
交換機技術在轉發數據前必須知道它的每一個埠所連接的主機的MAC地址,構建出一個MAC地址表。當交換機從某個埠收到數據幀后,讀取數據幀中封裝的目的地MAC地址信息,然後查閱事先構建的MAC地址表,找出和目的地地址相對應的埠,從該埠把數據轉發出去,其他埠則不受影響,這樣避免了與其它埠上的數據發生碰撞。因此構建MAC地址表是交換機的首要工作。下面舉例說明交換機建立地址表的過程。
假設主機A向主機C發送一個數據幀(每一個數據幀中都包含有源MAC地址和目的MAC地址),當該數據幀從E0埠進入交換機后,交換機通過檢查數據幀中的源MAC地址欄位,將該欄位的值(主機A的MAC地址)放入MAC地址表中,並把它與E0埠對應起來,表示E0埠所連接的主機是A。此時,由於在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地址。