10.06 科普一下:什麼叫MAC地址學習,記錄什麼內容

概述

MAC地址學習雖然說起來比較簡單,但是在工作中,還是經常看小夥伴不能正確的應用,遇到問題時也比較迷茫,不知道如何分析問題。究其原因,可能還是對MAC地址學習的工作原理了解的不夠,所以我今天寫一篇文章,給還迷糊的小夥伴在普及一下,如果是已經瞭解的同學,可以當做複習。

MAC地址簡介

在OSI七層模型中,每一層都有不同標識符,用來區分不同的設備,這樣它們之間才能對等的進行通信。而MAC地址是數據鏈路層(layer2)標識符,在數據鏈路層唯一標識一臺設備。

科普一下:什麼叫MAC地址學習,記錄什麼內容

OSI七層模型

MAC地址總共有48個比特(bit),在工作中通常使用16進制來表示,一般有兩種寫法,一種是:HH:HH:HH:HH:HH:HH格式,如下圖:

科普一下:什麼叫MAC地址學習,記錄什麼內容

HH:HH:HH:HH:HH:HH

另外一種是:HHHH:HHHH:HHHH,如下圖:

科普一下:什麼叫MAC地址學習,記錄什麼內容

HHHH:HHHH:HHHH

中間可以使用冒號(:)或者點(.)分割,看具體的廠商實現。

源MAC vs 目的MAC

我們注意到,在一個以太網報文中,有兩個MAC地址:源MAC、目的MAC,如下圖所示:

科普一下:什麼叫MAC地址學習,記錄什麼內容

源MAC、目的MAC

那麼這兩個MAC地址有什麼區別呢?這也是大家容易犯迷糊的地方,其實只要記住三句話就可以了:

  1. 源MAC地址是屬於報文發送者;
  2. 目的MAC地址是屬於報文終結者;
  3. 交換機接收到報文以後,會記錄源MAC,同時根據目的MAC查找出接口。

MAC地址學習原理

MAC地址學習是針對於交換機來說的,它說的是交換機在收到一個報文時,會把報文的源MAC地址記錄在MAC地址表項中。

如下圖所示,交換機E0/1接口收到任何PC1發送的報文,都會把源地址記錄在MAC地址表項中:

科普一下:什麼叫MAC地址學習,記錄什麼內容

記錄MAC地址表項

交換機MAC地址表項的格式類似於下圖:

科普一下:什麼叫MAC地址學習,記錄什麼內容

MAC地址表項

當交換機從別的接口,收到目的MAC是0000:0000:1111的報文時,就會從E0/1接口轉發出去,這個也稱為查找MAC地址表。

下面我們以一個具體的例子來闡述上面的內容。

原理舉例

拓撲

科普一下:什麼叫MAC地址學習,記錄什麼內容

拓撲圖

  • 三臺PC配置同一個網段的IP地址;
  • 交換機和三臺PC相連的接口配置同一個Access VLAN 10;

MAC地址學習

初始情況下,交換機的MAC地址表項是空的,如下圖:

科普一下:什麼叫MAC地址學習,記錄什麼內容

初始的MAC Table

當PC1發送的任何報文到達交換機時,例如ARP報文:

科普一下:什麼叫MAC地址學習,記錄什麼內容

ARP報文

交換機都會記錄報文的源MAC地址,同時更新在MAC地址表項中,如下圖所示:

科普一下:什麼叫MAC地址學習,記錄什麼內容

更新MAC地址表

下次如果收到目的MAC為0000.0000.1111的報文,就會只從E0/1接口轉發出去,如下圖所示:

科普一下:什麼叫MAC地址學習,記錄什麼內容

特定出接口

估計看到這裡,有小夥伴就會問:如果交換機接收到的報文,在MAC地址表找不到目的MAC對應的表項該怎麼辦?

答案是:在同一個VLAN裡進行泛洪。

例如此時PC2發送一個報文,其目的MAC地址為0000.0000.4444,交換機沒有這個表項,則交換機會把報文同時發送到PC1和PC3,如下圖所示:

科普一下:什麼叫MAC地址學習,記錄什麼內容

交換機泛洪報文

總結

各位小夥伴看完上面的描述,應該對MAC地址學習的原理了解了吧,我們簡單的總結出3條結論:

  1. MAC地址學習,記錄是接收報文的源MAC地址;
  2. 交換機收到報文以後,會根據目的MAC地址查找出接口;
  3. 如果找不到出接口,會從同一個VLAN裡的所有接口轉發出去(泛洪);
  4. ​如果找到出接口,會只從特定的出接口轉發出去,這個就是MAC地址學習的真正目的:減少網絡的流量。

如果各位還有疑問,歡迎留言討論,也非常歡迎各位關注我的頭條號,一起討論網絡問題!


分享到:


相關文章: