【小菜學網路】交換機與MAC地址學習
上一小節介紹了 集線器 ,一種工作於物理層的簡單網路設備。由於集線器採用廣播的方式中繼、轉發物理訊號,傳輸效率受到極大制約。
精準轉發
為了解決集線器工作效率低下的尷尬,我們需要設計一種更高級的網路設備。新設備根據乙太網幀的目的 MAC 地址,將它精準地轉發到正確埠:
注釋:這裡 埠 ( port )指的是轉發設備的插口,也可叫做網口。
如上圖,中間節點是轉發設備,它在內部維護著一張主機 MAC 地址與對應埠的映射表,現與 3 台主機相連。這樣一來, 當轉發設備接到主機 A 發給主機 C 的數據後,根據目的 MAC 地址搜索映射表,便可將數據準確地轉發到對應的埠 3 。
現在,傳輸模式變得更有針對性了——數據幀被精準轉發到正確的埠,其他埠不再收到多餘的數據:
不僅如此,主機 A 與 B 通訊的同時,其他電腦也可通訊,互不干擾。轉發設備每個埠是一個獨立的衝突域,頻寬也是獨立的。
集線器的缺陷全部避免了!
交換機
能夠根據乙太網幀目的地址轉發數據的網路設備就是 乙太網交換機 ( ethernet switch ):
交換機長相跟集線器沒啥區別嘛。當然了,大部分網路設備都是一個布滿埠的盒子,關鍵在於內部構造。
再看看現實中的交換機長啥樣:
總結起來,乙太網交換機屬於 二層網路設備 ,特點如下:
- 根據目的地址轉發乙太網幀;
- 每個埠是獨立衝突域;
- 每個埠頻寬獨立;
Mac地址學習
交換機完美地解決集線器的缺點,但新問題又來了,映射表如何獲得呢?
最原始的方式是:維護一張靜態映射表。當新設備接入,向映射表添加一條記錄;當設備移除,從映射表刪除對應記錄。然而,純手工操作方式多少有些煩躁。
好在電腦領域可以實現各種花樣的自動化——通過演算法自動學習映射表。我們先來看看大致思路:
初始狀態下,映射表是空的。現在,主機 A 向 B 發送一個數據幀 FRAME1 。因為映射表中沒有地址 B 的記錄,交換機便將數據幀廣播到其他所有埠。
由於交換機是從 Fa0/1
埠收到數據幀的,便知道 A 連接 Fa0/1
埠,而數據幀的源地址就是 A 的地址!此時,交換機可以將 A 的地址和埠 Fa0/1
作為一條記錄加入映射表。交換機學習到 A 的地址!
接著,主機 B 向 A 回復一個數據幀 FRAME2 。由於映射表中已經存在地址 A 的記錄了,因此交換機將數據幀精準轉發到埠 Fa0/1
。同理,交換機學習到主機 B 的地址。
當主機 C 開始發送數據時,交換機同樣學到其地址,學習過程完成!
這就是 MAC地址自動學習 的基本原理。
【小菜學網路】系列文章首發於公眾號【小菜學編程】,敬請關註: