概述
MAC地址學習雖然說起來比較簡單,但是在工作中,還是經常看小夥伴不能正確的應用,遇到問題時也比較迷茫,不知道如何分析問題。究其原因,可能還是對MAC地址學習的工作原理了解的不夠,所以我今天寫一篇文章,給還迷糊的小夥伴在普及一下,如果是已經瞭解的同學,可以當做複習。
MAC地址簡介
在OSI七層模型中,每一層都有不同標識符,用來區分不同的設備,這樣它們之間才能對等的進行通信。而MAC地址是數據鏈路層(layer2)標識符,在數據鏈路層唯一標識一臺設備。
MAC地址總共有48個比特(bit),在工作中通常使用16進制來表示,一般有兩種寫法,一種是:HH:HH:HH:HH:HH:HH格式,如下圖:
另外一種是:HHHH:HHHH:HHHH,如下圖:
中間可以使用冒號(:)或者點(.)分割,看具體的廠商實現。
源MAC vs 目的MAC
我們注意到,在一個以太網報文中,有兩個MAC地址:源MAC、目的MAC,如下圖所示:
那麼這兩個MAC地址有什麼區別呢?這也是大家容易犯迷糊的地方,其實只要記住三句話就可以了:
- 源MAC地址是屬於報文發送者;
- 目的MAC地址是屬於報文終結者;
- 交換機接收到報文以後,會記錄源MAC,同時根據目的MAC查找出接口。
MAC地址學習原理
MAC地址學習是針對於交換機來說的,它說的是交換機在收到一個報文時,會把報文的源MAC地址記錄在MAC地址表項中。
如下圖所示,交換機E0/1接口收到任何PC1發送的報文,都會把源地址記錄在MAC地址表項中:
交換機MAC地址表項的格式類似於下圖:
當交換機從別的接口,收到目的MAC是0000:0000:1111的報文時,就會從E0/1接口轉發出去,這個也稱為查找MAC地址表。
下面我們以一個具體的例子來闡述上面的內容。
原理舉例
拓撲
- 三臺PC配置同一個網段的IP地址;
- 交換機和三臺PC相連的接口配置同一個Access VLAN 10;
MAC地址學習
初始情況下,交換機的MAC地址表項是空的,如下圖:
當PC1發送的任何報文到達交換機時,例如ARP報文:
交換機都會記錄報文的源MAC地址,同時更新在MAC地址表項中,如下圖所示:
下次如果收到目的MAC為0000.0000.1111的報文,就會只從E0/1接口轉發出去,如下圖所示:
估計看到這裡,有小夥伴就會問:如果交換機接收到的報文,在MAC地址表找不到目的MAC對應的表項該怎麼辦?
答案是:在同一個VLAN裡進行泛洪。
例如此時PC2發送一個報文,其目的MAC地址為0000.0000.4444,交換機沒有這個表項,則交換機會把報文同時發送到PC1和PC3,如下圖所示:
總結
各位小夥伴看完上面的描述,應該對MAC地址學習的原理了解了吧,我們簡單的總結出3條結論:
- MAC地址學習,記錄是接收報文的源MAC地址;
- 交換機收到報文以後,會根據目的MAC地址查找出接口;
- 如果找不到出接口,會從同一個VLAN裡的所有接口轉發出去(泛洪);
- 如果找到出接口,會只從特定的出接口轉發出去,這個就是MAC地址學習的真正目的:減少網絡的流量。
如果各位還有疑問,歡迎留言討論,也非常歡迎各位關注我的頭條號,一起討論網絡問題!
閱讀更多 網絡之路 的文章