上一小節介紹了 集線器 ,一種工作於物理層的簡單網絡設備。由於集線器採用廣播的方式中繼、轉發物理信號,傳輸效率受到極大制約。
精準轉發
爲了解決集線器工作效率低下的尷尬,我們需要設計一種更高級的網絡設備。新設備根據以太網幀的目的 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地址自動學習 的基本原理。
【小菜學網絡】系列文章首發於公衆號【小菜學編程】,敬請關注: