《計算機網路微課堂》3-9 乙太網交換機自學習和轉發幀的流程

peterjxl發表於2024-05-26

在上節課中,我們對比了在物理層擴充套件乙太網的集線器,和在資料鏈路層擴充套件乙太網的交換機。

本節課我們介紹乙太網交換機自學習和轉發幀的流程,乙太網交換機工作在資料鏈路層,當然也包括物理層,需要說明的是目前市場上也有包含網路層部分功能的交換機,稱為三層交換機。

乙太網交換機收到幀後,在幀交換表中查詢幀的目的 MAC 地址所對應的介面號,然後透過該介面轉發幀。

乙太網交換機是一種即插即用的裝置,剛上電啟動時,其內部的幀交換表是空的。隨著網路中各主機間的通訊,乙太網交換機透過自學習演算法,自動逐漸建立起幀交換表。

下面我們來舉例說明,乙太網交換機自學習和轉發幀的流程,如圖所示,相互連線的兩臺乙太網交換機,各自連線了三臺主機,構成了一個交換式乙太網。為了簡單起見,各主機中網路卡上固化的 MAC 地址,僅用一個大寫字母表示,各主機互不相同。為了將重點放在乙太網交換機自學習和轉發幀的流程上,我們假設各主機已經知道了網路裝其他各主機的 MAC 地址,換句話說,不需要首先透過 ARP 來獲取目的主機的 MAC 地址。

假設主機 A 給主機 B 傳送幀,該幀從交換機 1 的介面 1 進入交換機 1,交換機 1 首先進行登記的工作,將該幀的源 MAC 地址 A 記錄到自己的幀交換表中,將該幀進入自己的介面的介面號 1,相應的也記錄到幀交換表中,上述登記工作就稱為交換機的自學習。

之後,交換機 1 對該幀進行轉發,該幀的目的 MAC 地址是 B,在幀交換表中查詢 MAC 地址 B,找不到,於是對該幀進行盲目的轉發,也稱為泛洪,也就是從除該幀進入交換機介面外的其他所有介面轉發該幀,可以看出交換機一開始還是比較笨的,他還沒有足夠的知識來明確轉發幀,只能進行盲目的轉發。

主機 B 的網路卡收到該幀後,根據幀的目的 MAC 地址 B 就知道這是傳送給自己的幀,於是就要接受該幀。主機 C 的網路卡收到該幀後,根據幀的目的 MAC 地址 B 就知道這不是傳送給自己的幀,於是就丟棄該幀。

該幀從交換機 2 的介面二進入交換機 2,交換機 2 首先進行登記的工作,將該幀的源 MAC 地址 A 記錄到自己的幀交換表中,將該幀進入自己的介面的介面號 2,相應的也記錄到幀交換表中。之後交換機 2 對該幀進行轉發,該幀的目的 MAC 地址是 B,在幀交換表中查詢 MAC 地址 B,找不到,於是對該幀進行盲目的轉發,主機 DEF 都會收到該幀,根據幀的目的 MAC 地址 B 就知道這不是傳送給自己的幀,於是丟棄該幀。

接下來主機 B 給主機 A 傳送幀,該幀從交換機 1 的介面 3 進入交換機 1,交換機 1 首先進行登記的工作,將該幀的源 MAC 地址 B 記錄到自己的幀交換表中,將該幀進入自己的介面的介面號 3,相應的也記錄到幀交換表中。之後,交換機 1 對該幀進行轉發,該幀的目的 MAC 地址是 A,在幀交換表中查詢 MAC 地址 A,可以找到,於是按照 MAC 地址 A 所對應的介面號 1,從介面 1 轉發該幀,這是明確的轉發。

主機 A 的網路卡收到該幀後,根據幀的目的 MAC 地址 A 就知道這是傳送給自己的幀,於是接受該幀,很顯然交換機 2 不會收到該幀。


接下來主機 E 給主機 A 傳送幀,該幀從交換機 2 的介面 3 進入交換機 2,交換機 2 首先進行登記的工作,之後,交換機 2 對該幀進行轉發,該幀的目的 MAC 地址是 A,在幀交換表中查詢 MAC 地址 A,可以找到,於是按照 MAC 地址 A 所對應的介面號 2,從介面 2 轉發該幀,這是明確的轉發,該幀從交換機 1 的介面 4 進入交換機 1,交換機 1 首先進行登記的工作,之後,交換機 1 對該幀進行轉發,該幀的目的 MAC 地址是 A,在幀交換表中查詢 MAC 地址 A,可以找到,於是按照 MAC 地址 A 所對應的介面號 1,從介面 1 轉發該幀,這是明確的轉發。

主機 A 的網路卡收到該幀後,根據幀的目的 MAC 地址 A 就知道這是傳送給自己的幀,於是接受該幀。


我們再來看看乙太網交換機丟棄幀的情況,為了演示該情況,我們給交換機 1 的介面 1 再連線一臺主機 G,為了簡單起見,沒有畫出集線器,這樣主機 A 主機 G,交換機 1 的介面 1 就共享同一條匯流排,假設主機 G 給主機 A 傳送幀,該幀透過匯流排進行傳輸,主機 A 和交換機 1 的介面 1 都可以收到,主機 A 的網路卡收到該幀後,根據幀的目的 MAC 地址 A 就知道這是傳送給自己的幀,於是接受該幀。交換機 1 收到該幀後,首先進行登記工作,之後,交換機 1 對該幀進行轉發,該幀的目的 MAC 地址是 A,在幀交換表中查詢 MAC 地址 A,可以找到 MAC 地址 A 所對應的介面號是 1,但是該幀正是從介面 1 進入交換機 1 的,交換機 1 不會再從該介面將該幀轉發出去,因為這是沒有必要的,於是丟棄該幀,很顯然交換機 2 不會收到該幀。

隨著網路中各主機都傳送了幀後,網路中的各交換機,就可以學習到各主機的 MAC 地址,以及他們與自己各介面的對應關係。

需要注意的是幀交換表中的每條記錄都有自己的有效時間,到期自動刪除。請大家想想看,這是為什麼呢?好不容易學習來的記錄,為什麼要到期自動刪除,這不是多此一舉嗎?這是因為 MAC 地址與交換機介面的對應關係,並不是永久性的,例如交換機某介面所連線的主機更換成了另一臺主機,又或者主機中的網路卡壞了,更換了新的網路卡,這些情況都會導致 MAC 地址與交換機介面的對應關係的改變。

相信大家還記得我們曾經介紹過的 ARP 快取記憶體表,表中的 IP 地址與 MAC 地址的對應關係記錄也是會定期自動刪除的,這是因為 IP 地址與 MAC 地址的對應關係,也並不是永久性的。

接下來請同學們參照我們剛剛所舉的例子,本題的答案如下所示,相信同學們都能解答正確。


接下來我們再來做幾道相關的考研題,這是計算機專業考研全國統考計算機網路部分 2009 年的題 36,答案是選項 A。

PDU 的意思是協議資料單元,它是計算機網路體系結構中對等實體間邏輯通訊的物件。乙太網交換機工作在資料鏈路層,也包括物理層,他接收並轉發的 PDU 通常稱為幀。

乙太網交換機收到幀後,在幀交換表中查詢幀的目的 MAC 地址所對應的介面號,然後透過該介面轉發幀,MAC 地址又稱為硬體地址或實體地址。請注意不要被物理二字誤導,認為實體地址屬於物理層範疇,實際上實體地址屬於資料鏈路層範疇。

再來看 2014 年的題 34,答案是選項 B 。

根據題意左側主機給右側主機傳送資料幀,該幀從交換機的介面 1 進入交換機,交換機首先進行登記的工作,將該幀的源 MAC 地址記錄到自己的幀交換表中,將該幀進入自己的介面的介面號,相應的也記錄到幀交換表中。之後交換機對該幀進行轉發,在幀交換表中查詢該幀的目的 MAC 地址,找不到,於是對該幀進行盲目的轉發。因此交換機轉發資料幀的埠為 2 和 3。

根據題意,右側主機收到左側主機傳送的資料幀後,給左側主機傳送確認幀,該幀從交換機的介面三進入交換機,交換機首先進行登記的工作,將該幀的源 MAC 地址記錄到自己的幀交換表中,將該幀進入自己的介面的介面號,相應的也記錄到幀交換表中。

之後,交換機對該幀進行轉發,在幀交換表中查詢該幀的目的 MAC 地址,可以找到,於是按照 MAC 地址做對應的介面號 1 從介面 1 明確轉發該幀,因此交換機轉發確認幀的埠為 1:

本節課的內容小結如下:

相關文章