現代乙太網路交換器不使用CSMA/CD的原因在於全雙工通信和專用通道的存在,使碰撞變得不再可能。交換器通過自動學習機制來更新交換表,而在SDN環境中,交換表的管理由集中式控制器負責,轉發決策通過流表來實現。在網絡銀行轉帳子系統的例子中,電腦A發送ARP Request並最終獲取電腦B的MAC地址的過程展示了交換器如何動態更新和使用交換表來進行數據轉發。
乙太網路交換器不使用 CSMA/CD 的原因
CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是乙太網路中一種避免碰撞的協議,最初設計用於半雙工網絡中,特別是共享介質的總線拓撲或集線器(Hub)網絡。然而,現代乙太網路交換器(Switch)幾乎都是全雙工操作,並且每個端口都有自己的專用通道,從而消除了碰撞的可能性,因此不再需要使用CSMA/CD。主要原因如下:
- 全雙工通信:交換器的每個端口都支持全雙工模式,這意味著數據可以同時在兩個方向上傳輸,不會發生碰撞。
- 專用通道:每個設備都直接連接到交換器的端口,形成獨立的點對點鏈路,消除了多設備共享同一傳輸介質的情況。
- 交換技術:交換器能夠根據交換表(Switching Table)快速轉發數據包到目標端口,減少了數據包的碰撞和延遲。
乙太網路交換器自動學習交換表的運作機制
乙太網路交換器的交換表(Switching Table)是根據交換機自動學習機制來建立和更新的。其基本運作機制如下:
- 初始狀態:交換器剛啟動時,交換表是空的,沒有任何MAC地址與端口的映射。
- 數據包學習:當交換器接收到來自某個端口的數據包時,它會讀取數據包的源MAC地址和接收端口,並將這對信息添加到交換表中。
- 查詢和轉發:當交換器接收到一個數據包時,會檢查目標MAC地址是否在交換表中:
- 如果找到匹配的條目,交換器將數據包轉發到對應的端口。
- 如果未找到匹配的條目,交換器會將數據包廣播到所有端口(除了接收端口),以確保目標設備能夠接收到數據包。
SDN 交換器中的交換表自動學習機制變化
使用軟體定義網路(SDN)交換器時,交換表的管理和更新機制與傳統交換器有所不同。SDN的基本理念是將網路控制層與數據轉發層分離,使用集中式控制器來管理和配置網絡設備。
- 集中控制:在SDN架構中,交換器不再獨立學習和維護交換表。相反,所有的轉發決策由SDN控制器集中管理。
- 流表(Flow Table):SDN交換器使用流表(Flow Table)來進行數據包轉發。流表條目由SDN控制器下發到交換器中。
- 控制器交互:當SDN交換器接收到一個未知的數據包(即交換表中沒有相應條目),會將該數據包轉發給控制器,控制器根據網絡策略和拓撲決定如何處理,並下發相應的流表條目到交換器。
ARP Request 例子中交換器的交換表更新過程
以下是電腦A發送ARP Request詢問電腦B的MAC地址過程中,交換器如何更新交換表內容的詳細說明:
-
電腦A發送ARP Request:
- 電腦A發送一個廣播ARP Request數據包,請求獲取電腦B的MAC地址。該數據包的源MAC地址為A的MAC地址,目標MAC地址為FF:FF:FF:FF:FF
(廣播地址)。
-
交換器接收ARP Request:
- 交換器接收到來自電腦A的ARP Request數據包,讀取數據包的源MAC地址和接收端口,並將這對信息(A的MAC地址和對應的端口)添加到交換表中。
-
交換器廣播ARP Request:
- 因為ARP Request是廣播數據包,交換器將該數據包廣播到所有其他端口,以便網絡中的所有設備都能接收到此請求。
-
電腦B接收ARP Request:
- 電腦B接收到ARP Request數據包後,回應一個ARP Reply數據包,該數據包的源MAC地址為B的MAC地址,目標MAC地址為A的MAC地址。
-
交換器接收ARP Reply:
- 交換器接收到來自電腦B的ARP Reply數據包,讀取數據包的源MAC地址和接收端口,並將這對信息(B的MAC地址和對應的端口)添加到交換表中。
-
交換器轉發ARP Reply:
- 交換器檢查ARP Reply數據包的目標MAC地址(A的MAC地址),並查詢交換表,找到對應的端口,然後將ARP Reply數據包轉發到電腦A所在的端口。