【小菜學網路】交換機與MAC地址學習

上一小節介紹了 集線器 ,一種工作於物理層的簡單網路設備。由於集線器採用廣播的方式中繼、轉發物理訊號,傳輸效率受到極大制約。

精準轉發

為了解決集線器工作效率低下的尷尬,我們需要設計一種更高級的網路設備。新設備根據乙太網幀的目的 MAC 地址,將它精準地轉發到正確埠:

注釋:這裡 ( port )指的是轉發設備的插口,也可叫做網口。

如上圖,中間節點是轉發設備,它在內部維護著一張主機 MAC 地址與對應埠的映射表,現與 3 台主機相連。這樣一來, 當轉發設備接到主機 A 發給主機 C 的數據後,根據目的 MAC 地址搜索映射表,便可將數據準確地轉發到對應的埠 3

現在,傳輸模式變得更有針對性了——數據幀被精準轉發到正確的埠,其他埠不再收到多餘的數據:

不僅如此,主機 AB 通訊的同時,其他電腦也可通訊,互不干擾。轉發設備每個埠是一個獨立的衝突域,頻寬也是獨立的。

集線器的缺陷全部避免了!

交換機

能夠根據乙太網幀目的地址轉發數據的網路設備就是 乙太網交換機 ( ethernet switch ):

交換機長相跟集線器沒啥區別嘛。當然了,大部分網路設備都是一個布滿埠的盒子,關鍵在於內部構造。

再看看現實中的交換機長啥樣:

總結起來,乙太網交換機屬於 二層網路設備 ,特點如下:

  • 根據目的地址轉發乙太網幀;
  • 每個埠是獨立衝突域;
  • 每個埠頻寬獨立;

Mac地址學習

交換機完美地解決集線器的缺點,但新問題又來了,映射表如何獲得呢?

最原始的方式是:維護一張靜態映射表。當新設備接入,向映射表添加一條記錄;當設備移除,從映射表刪除對應記錄。然而,純手工操作方式多少有些煩躁。

好在電腦領域可以實現各種花樣的自動化——通過演算法自動學習映射表。我們先來看看大致思路:

初始狀態下,映射表是空的。現在,主機 AB 發送一個數據幀 FRAME1 。因為映射表中沒有地址 B 的記錄,交換機便將數據幀廣播到其他所有埠。

由於交換機是從 Fa0/1 埠收到數據幀的,便知道 A 連接 Fa0/1 埠,而數據幀的源地址就是 A 的地址!此時,交換機可以將 A 的地址和埠 Fa0/1 作為一條記錄加入映射表。交換機學習到 A 的地址!

接著,主機 BA 回復一個數據幀 FRAME2  。由於映射表中已經存在地址 A 的記錄了,因此交換機將數據幀精準轉發到埠 Fa0/1 。同理,交換機學習到主機 B 的地址。

當主機 C 開始發送數據時,交換機同樣學到其地址,學習過程完成!

這就是 MAC地址自動學習 的基本原理。

小菜學網路】系列文章首發於公眾號【小菜學編程】,敬請關註: