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