《計算機網路微課堂》實驗6 生成樹協議STP的功能

peterjxl發表於2024-06-01

接下來我們進行一個模擬實驗的內容,是驗證乙太網交換機生成樹協議的功能。

首先需要構建網路拓撲,我們採用 4 臺乙太網交換機,然後將它們連線成一個環路,然後我們選擇自動連線型別,讓它們連線成一個環路,我們可以看到交換機的各個埠的狀態指示燈為橙色的,那麼我們切換右下角的實時和模擬模式。

現在我們可以看到右上角的這臺交換機它的埠一處於阻塞狀態,而其他各個交換機的連線的埠都已經成了綠色指示燈,表明是正常工作狀態:

這就是因為各個交換機他們在後臺執行著生成樹協議,使得本來他們連線完了物理拓撲上有環路,但是執行了身份證協議以後,某些交換機它會斷掉自己的某些埠,也就是阻塞掉某些埠,這樣就使得整個邏輯環路不存在了,沒有這個邏輯上的環路,雖然物理上的環路仍然存在,但是從邏輯通訊角度來講,它的環境已經斷開了。

下面我們給拓撲結構新增兩臺計算機,我們看到用兩個計算機的連線上的動畫機的介面是橙色的,我們快速的切換一下實時方式和模擬模式。我們可以看到連線上計算機的相應的交換機的埠變成了綠色的,可以正常工作。我們給這兩個計算機配置一下 IP 地址,左邊的是 192.168.0.1,那右邊我們就配置成 192.168.0.2,那麼這兩臺主機現在是否可以進行互通呢?

從網路拓撲上看,上面這條鏈路的話,由於這一點被堵塞了,給交換機的埠被堵塞了,那麼肯定不可能從上面透過來,但是我們可以看到從下面這樣繞過來是可以通訊的。

那麼我們來驗證看一下,我們用左邊的這臺計算機來 ping 右邊這臺計算機,那麼我們進到左邊這臺計算機的命令提示符下面。PING 空格,右邊這臺計算機的 IP 地址是 192.168.0.2:

我們可以看到收到了響應,來自 1920168.0.2 的響應,是我們發了 4 個詢問,他回來了,4 個響應證明這是通的:

C:\>ping 192.168.0.2

Pinging 192.168.0.2 with 32 bytes of data:

Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128
Reply from 192.168.0.2: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

那麼反過來用右邊那臺來 ping 一下左邊那臺也是通的:

Cisco Packet Tracer PC Command Line 1.0
C:\>ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

那麼我們就已經驗證了這兩臺計算機可以透過這樣一條路徑,從這邊進入到交換機再轉發下來,再到這邊的交換機再轉換上去,然後最後到這邊這個主機,這邊主機反過來也可以和左邊就可以通訊,他們可以透過這樣一條路徑來通訊。


現在我們模擬一下,如果說這樣一條路徑當中某個點出了故障或者某幾個點出了故障,會出現什麼樣的情況?這樣的點有很多,隨便我們把交換機的點給它模擬一下故障,那麼我們把這個介面是介面二等於埠二,我們把交換機開啟,然後選擇它的配置,然後我們選擇這埠,在這個地方它的介面狀態本來是開的,我們現在把它點掉也就是把它關掉:

那麼我們可以看到整個這一塊這一點也會變成紅色。再就是整個路這一塊就不通了,出了故障了,那麼我們還能通訊嗎?我們可以驗證一下,我們用左邊的 ping 右邊的,也就拼 192.192.168.0.2。看來是不通了,然後這個意思就是請求超時了,在規定時間內我沒有收到響應,這是第一次的第二次的一共要拼 4 次,也就是一共要發 4 個詢問的報文,等待 4 個詢問報文回來。

經過一段時間以後,我們會觀察到右上方的交換機原來被他自己生成樹協議堵塞掉的埠,一現在他又恢復了正常工作:

這是因為我們人為的在這個地方設定了一個故障,使得原來可以通的那條路現在不通了,所以之後這些交換機他們的生成樹協議,在共同運作的情況下會發現這個情況,並且交換機它會把它自己的阻塞的埠開啟,選擇重新構建一條可以通的這兩臺計算機可以通的這樣的一條通路。現在我們再來 ping 一下,我們用左邊的計算機去拼一下右邊的計算機,之前我們拼是超時的,那麼我們現在聽一下 192.168.0.2,我們可以看到這是通的。


下面我們把之前我們關閉掉的交換機的埠給它開啟二號埠,我們把它開啟。然後我們切換實時和模擬模式,我們可以看到經過生成樹協議的這種演算法,最終還是右上角的這臺交換機,把自己的埠一給阻塞掉了,但是整個網路仍然是聯通的,只透過下面這條通路,整個網路是聯通的:

交換機上的生成樹協議,在交換機啟動後是預設自動執行的,下面我們將這 4 臺交換機的生成樹協議給它關閉掉,然後我們再來做後續的實驗,我們需要進入到交換機的命令列,以命令的方式來關閉交換機的生成樹協議。現在我們以左上方這一臺交換機為例。

那麼我們點選它以後出來的彈出視窗,這兒有一個命令列介面,我們點命令列介面,那麼這樣我們就可以進入到這臺交換機的命令列方式,我們輸入回車,然後我們輸入 ENABLE 也就進入特權模式,然後我們輸入 CONFIG 進入全域性配置模式,這裡按一下回車就可以了。然後比較關鍵的命令也就是關閉生成樹的命令是 no spanning-tree vlan 1,然後一這條命令其實是刪除 VLAN1 上面的生成樹功能,也就關閉這個功能。

VLAN 的概念我們還沒有講叫做虛擬區域網,我們後續過程中會說,那麼暫且是記住一條命令就可以。

Switch>enable
Switch#config
Configuring from terminal, memory, or network [terminal]? 
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#no spanning-tree vlan 1

那麼我們回車,這樣的話這臺交換機的生成樹協議就被關閉掉了,那麼下面需要將其他的交換機的生成樹協議都關閉掉,我們就不再一一做演示了。現在我們看到的情況就是將這 4 臺交換機的生成樹協議全部關閉以後的效果,我們可以看到每個交換機的所連線的埠都已經是綠色指示燈,也就是他們都是正常工作:

這就使得本身有物理的環路存在,然後現在這個物理環路又沒有被在邏輯上給它斷開,那麼也就相當於說邏輯上也存在環路,那麼這兩臺計算機之間也就整個網路大的這樣的一個邏輯環路。我們前面在講理論的時候,只要有這個邏輯環路的存在,那麼當某個主機傳送一個廣播幀的時候,那麼這個廣播幀就會在邏輯環路里面兜圈子,那麼它順時針方向和逆時針方向都會有兜圈的現象,那麼永無止境這樣兜下去,這樣的話就會嚴重的佔用了網路的資源。

我們下面進入模擬模式,來看一下廣播幀兜圈子的情況。那麼我們選擇右側右邊這個工具欄上面的新增複雜 PDU 然後我們讓左邊主機傳送一個廣播,目的 IP 地址我們填 255.255.255.255,原來 IP 地址就填這臺主機自己的 192.168.0.1,這兒給個序號 1,那兒給 1 個單次的模擬時間是 1 秒,然後建立 PDU。

然後下面我們進行捕獲,我們就可以看到它就傳送一個 ICMP 的廣播通脹轉發出來,然後上面交換機收到轉發給主機,它還會從下面口袋轉發出來,而下面這邊交換機從右邊口轉發出來,上面有一個廣播會到達右下角交換機,左邊的交換機會把 ICMPP 的廣播同樣的廣播發到這邊,對交換機會從不同的介面收到兩個廣播,然後他收到這兩個廣播,又從他的兩個埠又重新發出來,我們就可以看到,這就永無止境的這樣的在這裡面兜圈子下去了。

我們現在的切換回實時模式,雖然我們在這個效果上看不到在兜圈子,實際上現在有廣播的資料包就在這裡面兜圈子,順時針方向一直分成方向,都在兜圈子,那麼這就嚴重的佔用了網路的資源,那麼我們在此刻我們再用左邊這臺計算機去拼一下右邊這臺計算機,看能不能 ping 通。ping 192.168.0.2,如果正常情況下他會發 4 個請求,那麼會收到 4 個響應,現在我們發了第一個請求,ICMP 的第一個請求,結果是請求超時,也就是對方沒給我響應。

第二個請求出去,還是沒回來,也超時了。

第三個,這樣我們發了 4 個 ICMP 的請求報文,但是都沒有受到響應,證明這個是不通的,那麼反過來用右邊這個主機去拼一下左邊主機,ping 192.168.0.1。我們來看一下,這仍然是不通的,第一個已經超時了,為什麼?是因為網路環路里面有廣播幀,在這 4 個交換機中瘋狂的在那兒轉發,形成這樣的環路瘋狂的轉發,所以就佔用了網路的通訊資源。這樣的話我們網路上本身想正常通訊的那些主機就沒有辦法正常通訊了。

本次實驗就到這裡結束了,相信你已經很的理解了網路環路會給網路帶來怎樣的負面效應,以及生成樹協議的作用

相關文章