《計算機網路微課堂》實驗5 交換機的自學習演算法

peterjxl發表於2024-06-01

本實驗的目的在於驗證交換機的自學習演算法。

首先需要構建網路拓普,我們使用三臺計算機,然後使用一個交換機把它們連線起來,我們選擇自動連線將每個計算機連線到交換機上就可以了,那麼交換機的介面是橙色的,我們切換右下角的實時和模擬模式,多切換幾遍,直到交換機的介面變為綠色,接下來給各計算機配置一個 IP 地址,給各計算機旁邊標註上 IP 地址和 MAC 地址,這樣做是為了我們後續實驗觀察的時候比較方便,那在右邊的工具欄上選擇這個放置註釋的按鈕,然後在計算機旁邊點選滑鼠左鍵,輸入 IP 地址。

輸入完了之後注意可以把滑鼠切回到選擇狀態,我們再來標註一下各計算機的 MAC 地址,先來看上面這臺計算機,左鍵點選它在彈出視窗裡面選擇配置,然後選擇他的快速乙太網卡,然後這個地方我們可以看到它的 MAC 地址,我們把它選中,然後滑鼠右鍵彈出選單裡面選擇複製,把視窗關掉,然後再點之前文字,然後回車。以此類推,這一臺計算機和左邊這臺計算機都這樣標註。

輸入完了之後注意可以把滑鼠切回到選擇狀態,我們再來標註一下各計算機的 MAC 地址,先來看上面這臺計算機,左鍵點選它在彈出視窗裡面選擇配置,然後選擇他的快速乙太網卡,然後這個地方我們可以看到它的 MAC 地址,我們把它選中,然後滑鼠右鍵彈出選單裡面選擇複製,把視窗關掉,然後再點之前文字,然後回車。以此類推,這一臺計算機和左邊這臺計算機都這樣標註。

交換機自學習

下面我們切換到模擬模式,然後我們在事件列表過濾器中把所有的協議先給它隱藏掉,然後我們進行編輯,只選擇 ARP 協議和 ICMP 協議即可。

接下來我們讓左邊這臺計算機給右邊這臺計算機傳送一個簡單的 PDU,這個 PDU 其實是用 ICMP 協議封裝的,我們點選右側工具欄上面的新增簡單的 PDU 然後我們點選傳送方,再點選接收方。

我們可以看到這個是本來用 ICMP 協議打包的,我們準備傳送的包,但是包暫時發不了,他要發一個綠色的這個地方表示的資料包,這個資料包是個 ARP 的給你打的包,為什麼之前的課程中我們已經講過了,是由於計算機裡面它沒有這臺主機 IP 地址和 MAC 地址的對應關係,所以左邊這個主機在資料鏈路層封裝的時候,它的目的 MAC 地址他不知道怎麼填,所以他沒有辦法發 ICMP:

它直接就發一個 ARP 的廣播請求,目的就是發出來來詢問,詢問這個 IP 地址為 192.168.0.2 這臺主機它的 MAC 地址是什麼?那麼只有當它得知了這個 MAC 地址以後,他才能把原先包在資料鏈中打包的時候,目的 MAC 地址填上,相應的 MAC 地址。在我們之前的課程中已經介紹過,很顯然 ARP 的廣播請求肯定會進入交換機,那麼進入交換機以後,交換機要對它進行處理,我們之前在講解理論的時候曾經講過。

那麼如何處理?分為兩步,第一步就是要登記,登記這個資料包來自於哪個主機,也就是它的源 MAC 地址是什麼,也就這個 MAC 地址它會登記到這裡。同時有一個對應的埠,也就是它是從哪個埠進入交換機的埠號要登入進去。現在我們看到交換機並沒有埠號。如果您在做模擬實驗的時候跟我們這現象一樣的,那麼在選單欄這兒有個選項選單,然後選擇引數選擇(首選項),在這裡面有一個在邏輯空間中總顯示埠標籤,這樣就可以看到:

那麼這個交換機裡面它有一個幀轉發表,我們剛才說的登記就登記在幀轉發表裡面,那麼剛上電的時候,只要這些主機相互之間沒有發資料的話,那麼這邊它裡面的幀轉發表呢應該是空的,我們可以檢視一下,我們點選右側工具欄的檢查的按鈕,然後我們選它,我們講課的時候叫幀交換表,在我們模擬軟體裡面它叫做 MAC 地址表,我們可以看一下,這張表開啟的是空的,有三列內容,一列是 VLAN,我們忽略不管以後我們會專門講 VLAN 的事情。那麼還有一個就是 MAC 地址和埠,那麼等一會這個資料包到了交換機以後,第一件事交換機就是登記,也就是把這個資料包的 MAC 地址和埠號登記進來:

那麼我們看一下點選下一步。現在這個資料包已經到了交換機裡面了,我們再次點選一下檢視它的 MAC 地址表。我們可以看到尾號為 E39D 的 MAC 地址張登記進來了,同時它是從埠進來的,0/1 埠。這就是交換機的登記,其實也就是他的自學習。換句話說現在交換機已經知道了,和它的這個介面有一臺主機連著這臺主機 MAC 主機。

第二件事轉發,轉發的是根據這個幀的目的那個地址,我們先把滑鼠切回到選擇狀態,根據這個幀的目的那個地址我們說了它是一個廣播幀,我們可以開啟看一下,它是一個廣播幀,那麼廣播幀的話,交換機怎麼看到廣播幀全 F,就是代表它是廣播幀,那麼交換機就收到廣播幀以後,那是要進行泛洪,也就是說除了包從哪個口進來,不再從口反向打出去,其他資料介面他都會把這個包轉發出去的,我們來看一下是不是這樣子。

點選下一步,確實是這樣,那麼當然很顯然上面這臺主機不會收這個資料包,原因是什麼?原因是這臺主機由於這是個廣播包,所以這臺主機的網路卡是會接受這個包的,把幀的中交給他的高層,到了高層以後有 ARP 程序去看,ARP 程序一看這個資料包其實不是詢問這臺計算機的,所以 ARP 的程序就把這個資料丟棄了。

那麼同樣的道理,出來的資料包就到達了這臺主機,那麼他的網路卡接收以後送給 ARP 程序把裡面的內容解析出來,一看詢問這臺計算機,所以這臺計算機的 ARP 程序會再重新封裝一個 ARP 的單播響應,那裡面就把自己的 IP 地址和 MAC 地址就把這個內容寫到這個資料包裡面。

那麼我們再往下走,那麼想象一下這個資料包當到達交換機以後又有哪些工作?我們先看一下交換機裡面目前的 MAC 地址表,登記的是這樣的記錄,當我們計算機發回 ARP 的單播響應的時候,到這個裡面它就會又記錄一個,這個記錄的就是這臺計算機的 MAC 地址和它進入交換機的具體的埠,那麼就在這。7885 計算機的 MAC 地址埠三還是從埠三進入到交換機裡面的:

那麼交換機收到單播幀以後,他要幹嘛?登記完了以後要進行轉發是幹什麼?轉發是查幀的目的 MAC 地址,我們知道這個幀的話是這臺計算機發回給左邊那臺計算機的,所以它的目的 MAC 地址一定填的是 MAC 地址也就是號為 139D 的,那麼他把 139D 在這裡面去查,結果在這一行上就查到了這條 D39D 對應的埠是 1 號埠,說白了就是資料包,交換機知道他應該把這個資料包就從一號介面把它轉發出來,而不會從二號埠轉。

我們看一下是不是這樣的,那麼這樣子的話,我們左邊這臺計算機它就收到了右邊計算機發回的 ARP 的響應報文:

那麼現在就可以把之前快取的了,沒有發的就不能發的 ICMP 報文呢發出來了,我們看一下是不是。同樣的此時資料包又到交換機了,在裡面又進行的是儲存轉發就是登記轉發這兩個事情,那麼跟我們之前的過程一樣,他肯定是一個單播從三號介面轉發出來了,然後我們再點一下,因為 ICMP 它是一個詢問請求,那麼它需要一個響應,那麼這邊右邊計算機就會給它發回一段響應:

為了更好的觀察實驗效果,我們將之前的網路拓撲進行了擴充套件,新增了一個集線器和兩個主機,我們將所有裝置進行重啟,點選重啟裝置選擇是我們會發現很多介面都變成了紅色指示燈,那麼我們切換實時和模擬模式,這兩個按鈕多切換幾次,直到所有的指示燈都變成綠色的即可:

我們在實時模式下,讓新新增的上面這臺主機給下面這臺主機進行一個簡單 PDU 的傳送。當然這個過程還包含了下面計算機收到簡單 PDU 給上面計算機回覆一個響應的這樣的一個過程,只不過在實時模式下我們看不出來而已。這樣做有兩個目的,第一個目的是讓這兩臺計算機知道對方 IP 地址與 MAC 地址的對應關係,以免後續出現 ARP 的廣播請求,影響我們對實驗效果的觀察。

另外一個目的,我們知道當上面主機給下面主機傳送資料包的時候,到達集線器它會被廣播出來,那麼這個資料包必然就會進入到左邊交換機裡面,交換機對這資料包是進行登記,然後進行轉發操作,那麼登記就會登記這個 MAC 地址,那麼這個 MAC 地址是對應著交換機的 4 號介面,也就會登記這麼樣一條記錄。換句話說就是讓交換機學習了一次,當然這裡面還有當我下面計算機收到上面計算機發過來的詢問,我們要給他回計算機會回一個響應,當然響應也會進入到左邊的交換機裡面,所以在交換機裡面,其實這兩個 MAC 地址都學習到了,都對應著它的 4 號埠:

如果您檢視左邊交換機的幀轉發表,並沒有看到上面這個主機的 MAC 地址的對應關係,也沒有看到有關下面主機的 MAC 地址和埠的對應關係的話,證明您在上面主機給下面主機傳送簡單 PDU 後,過了一段時間才來檢視的交換機的幀轉發表。想一想我們之前說過對交換機的每一條記錄它都有個老化時間,當老化時間到期以後,它就會自動的把這一條記錄的給它刪除掉。這就是您可能檢視不到相應記錄的原因。

如果您檢視交換機的幀轉發表裡面是空的,沒有這兩條記錄的話,您可以到上面主機再次給下面主機發一個 ICMP 的報文,也就是簡單的 PDU 然後我們再來檢視一下。現在這裡面就有了這兩臺主機的 MAC 地址以及對應的埠號是 4 號。


下面我們切換到模擬模式,然後我們點右下角的這個地方把剛才發包的場景給它刪除掉,然後我們再次讓右上面這個主機給右下面主機傳送一個 ICMP 的報文,那麼我們把它傳送出來,我們之前就已已經學過了集線器的它是廣播特性的,所以資料包會被廣播出來。當這資料包到達右下面這臺主機,然後資料包到達交換機以後,我們看到交換機給它標了一個叉,這個意思是說資料包的交換機把它丟掉,

我們來想一想這是為什麼?因為 ICMP 報文它封裝到乙太網幀的時候,它的目的 MAC 地址填的是右下面這臺主機的,也就是尾號為 7140 的 MAC 地址,然後我們可以把交換機的幀轉發表把它開啟看一下,要去 7140 這個 MAC 地址,那麼它對應的埠是 4 號,然後他又是從交換機的 4 號埠進來的,所以交換機他就知道不應該把這個資料包反向再打出來,因為是沒有必要的。

那麼我們把這個特性也叫做交換機可以對幀進行過濾,我們可以看到上面主機發給下面主機的資料包,到達交換機以後,它並沒有轉發到交換機的其他埠,而交換機就把它給丟掉了,因為是沒有必要。這個幀其實已經到達了目的地,交換機沒必要把這個幀從自己的任何一個介面再把它轉發出來。

下面我們進入交換機的命令列模式:切換到選擇狀態,然後左鍵單擊交換機:

那麼這是我們第一次進入這個思科裝置的命令列配置介面,按下回車,出現這樣的一個三角的的提示符,我們輸入 enble 然後回車,進入特權模式,然後我們打一條命令,show mac-a 會展示它的 MAC 地址表,這是一條簡寫的命令。那麼我們可以看到它裡面有兩條記錄型別都是動態 DYNAMIC 的,也就是它有老化時間的,會自動刪除。

‍‍```
Switch>enable
Switch#show mac-a
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

   1    0004.9a1d.392e    DYNAMIC     Fa0/4
   1    00e0.8f1d.dd74    DYNAMIC     Fa0/4
‍‍```

那麼這兩個 MAC 地址一個是 7140,就是我們下面這臺計算機的 7140 對應的是埠號是交換機的 4 號埠, B780,它也是對應的 4 號埠,這個介面這個裡面作業系統的互動式的命令列,其實就是交換機裡面的命令方式檢視方式和我們在工具欄點檢視 MAC 地址表是一樣的。刪除命令是 clear mac-a

輸入完了以後,交換機裡面的這兩條記錄就被我們手工的透過命令方式給它清空了,還沒等它老化,我們就已經把它清空了,我們看一下現在這張表是不是空的,我們再來 show mac -a 我們可以看到這張表已經空了:

Switch#clear mac-a
Switch#show mac-a
          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----

下面的話我們這個時候再讓上面計算機給下面計算機發一個 ICMP 的報文,我們看一下會有什麼樣一個情形?

到集線器是廣播,然後 ICMPT 報文進到交換機裡面了,交換機會不會把它轉發出來呢?我們可以看到交換機把它從所有介面轉發出來了,想一想這是為什麼?很顯然就是因為我們之前把交換機裡面的記錄全部給它清空了,我們可以認為這個時候交換機就很笨了。過來一個資料包,他其實本來是想到下面這臺計算機,但是對於他來說,下面 MAC 計算機的 MAC 地址他不知道,也就資料包要到那個地方去,他並不知道要從自己的哪個介面去轉發,所以它除了進口不發以外,其他的所有的可能它都會轉發,也就是我們說的泛洪或者是洪泛都可以

本次實驗就進行到這裡。那麼本次實驗主要驗證了交換機自學習的演算法,包括如何登記接收到的資料包以及如何轉發,那麼這裡麵包括明確的轉發,盲目的轉發,還有丟棄資料包,也就是交換機可以對接進行過濾

交換機與集線器

相關文章