MAC 地址學習
當交換機剛接入網絡時,它的 MAC 地址表是空的。當一個數據幀進入交換機的某個端口時,交換機首先會讀取該數據幀中的源 MAC 地址。例如,一臺計算機 A 通過網線連接到交換機的端口 1,并發送一個數據幀,交換機就會從這個數據幀中提取計算機 A 的 MAC 地址。
然后交換機將這個 MAC 地址和數據幀進入的端口號(這里是端口 1)記錄到自己的 MAC 地址表中。這樣,隨著網絡中設備不斷發送數據幀,交換機就逐漸學習到各個設備的 MAC 地址及其對應的端口。
例如,在一個小型辦公室網絡中有 5 臺計算機分別連接到交換機的不同端口,經過一段時間的通信后,交換機的 MAC 地址表中就會記錄下這 5 臺計算機的 MAC 地址和它們所連接的端口信息。
數據幀轉發
當交換機收到一個數據幀后,它會查看數據幀中的目的 MAC 地址。如果交換機在自己的 MAC 地址表中找到了目的 MAC 地址對應的端口,就會將數據幀直接轉發到該端口。
例如,計算機 A 要向計算機 B 發送數據,交換機已經學習到計算機 A 的 MAC 地址對應端口 1,計算機 B 的 MAC 地址對應端口 3。當交換機收到計算機 A 發往計算機 B 的數據幀時,它就會把這個數據幀從端口 3 轉發出去,從而使數據能夠準確地到達計算機 B。
如果交換機在 MAC 地址表中沒有找到目的 MAC 地址對應的端口,這種情況稱為 “未知單播幀”。此時,交換機就會采取泛洪(Flooding)的方式來轉發數據幀。它會把這個數據幀從除了數據幀進入端口之外的所有其他端口轉發出去。這是因為交換機不知道目的 MAC 地址在哪個端口,所以通過泛洪的方式來確保數據幀能夠到達目的設備。當目的設備收到數據幀后做出響應,交換機就可以學習到目的 MAC 地址對應的端口,之后就可以進行正常的轉發了。
數據幀過濾
交換機還具有數據幀過濾的功能。它只會把數據幀轉發到目的 MAC 地址對應的端口,而不會像集線器那樣把數據幀向所有端口廣播。
例如,在一個有多個 VLAN(虛擬局域網)的網絡中,交換機可以根據 VLAN 信息來過濾數據幀。如果一個數據幀的源設備和目的設備在同一個 VLAN 中,交換機就會按照正常的 MAC 地址轉發規則來處理;如果它們在不同的 VLAN 中,交換機可能會根據配置將數據幀轉發到連接路由器的端口,由路由器來處理跨 VLAN 的通信。
對于多層交換機(如第三層交換機、第四層交換機),它們在上述數據鏈路層工作原理的基礎上,還增加了網絡層(基于 IP 地址)和傳輸層(基于端口號等)的功能。第三層交換機可以根據 IP 地址進行路由選擇,第四層交換機可以根據 TCP 或 UDP 端口號等對流量進行更精細的轉發和控制。