《計算機網路微課堂》實驗11 IP資料包的傳送和轉發流程

peterjxl發表於2024-06-02

下面我們來進行一個模擬實驗,本模擬實驗的內容為觀察主機傳送 IP 資料包的過程,以及路由器轉發 IP 資料包的過程。

我已經在軟體中構建好了之前我們在理論課中所講解的那幅網路拓撲,並且將需要配置的內容標註在了網路中各裝置的旁邊。例如主機需要配置 IP 地址、子網掩碼以及指定預設閘道器,而路由器的每個介面需要配置 IP 地址子網掩碼。另外路由器還需要新增靜態路由:

為了後續實驗觀察方便,我們將每個介面的 MAC 地址也標註在了裝置的旁邊,例如主機的 MAC 地址,我們可以點開主機,然後選擇配置,然後在這個 FAST INTERNET0 也就是主機內部的這塊網路卡,那麼我們可以看到 MAC 地址,這裡就是 MAC 地址,那麼把它複製一下,標註在主機的旁邊。

對於路由器的話我們點開路由器,然後配置,那麼在它的這三個介面 0 號 1 號 2 號,那麼點開以後我們也同樣可以看到它的 MAC 地址,我們把它複製出來標註在旁邊,以方便我們後續實驗的檢視。圖中的這三臺交換機,我們並沒有對他們進行任何資訊的標註,這是因為我們在之前的理論課中已經講解過交換機的工作原理,自學習演算法以及生成樹演算法,並且都進行了模擬實驗。因此在本實驗裡面,我們就要不去詳細的觀察交換機頒發 IP 資料包的過程了。

現在我已經按圖中各裝置標註的資訊給他們配置了 IP 地址子網掩碼,對於主機的話,我們還指定了預設閘道器,對於路由器的話,除了配置它的各介面的 IP 地址,子網掩碼以外,還給他們新增好了所標註的相應的靜態路由。如果您不會進行配置的話,請您參考我們上一個模擬實驗的影片。接下來我們從實時模式切換到模擬模式,然後我們並不需要檢視這麼多的協議,我們把它先全部隱藏掉,然後選擇我們需要的 ARP 協議和 ICMP 協議就可以了。


我們先來進行一下左上面這臺主機對左下面這臺主機傳送 ICMP 的這種詢問報文的情況,當然 ICMP 的詢問報文是封裝在 IP 資料包中進行傳送,在傳送之前我們需要把相關裝置也就是左上這臺主機這個路由器以及左下面這臺主機,我們先把他們的 ARP 快取記憶體表我們把它開啟,另外我們還要把路由器的它的路由表也開啟,我們點選右側的檢視按鈕,然後選擇主機 ARP 表,那麼我們需要調整一下就這個視窗的大小,我們把它調成合適的位置。然後這三個欄也就是這 IP 地址硬體地址介面,這三個我們需要調整一下。

然後我們在標滑鼠是在檢視狀態,我們就可以在點選這個路由器,我們把它的 ARP 表也開啟,調整好以後我們放到它的旁邊,還有下面這個主機,我們把它的 ARP 表也開啟,如果它沒有內容的話,它這三個欄目也就是三個列表的三列,其實是擠壓在一起的,我們需要調整一下。


那麼我們先來解釋一下,由於我們現在是最初始的狀態,那麼或者你認為是剛上電的狀態,那麼這兩個主機上下這兩個主機它的 ARP 快取記憶體表是空的,而我們路由器裡面我們可以看到三條記錄,這三條記錄實際上分別記錄著路由器的三個介面的 IP 地址,和他們自己和他們對應的 MAC 地址的關係,路由器上面以後它的 ARP 快取記憶體表裡面就有這樣的三條記錄,也就是標明瞭它的三個介面的 IP 地址和 MAC 地址的對應關係,另外我們還需要把因為待會我們要看到路由器轉發 IP 資料包的這樣的一個過程,所以我們需要把它的路由表也給它開啟。同樣的我們也來解釋一下這個裡面的情況,凡是標了 C 的,凡是標了 C 的,我們可以看一下這個型別是 C 的表示直接連線,也就是說路由器和上面網路直接連線,那麼這是上面網路的網路地址,這個表明它和下面網路下面這個網路直接連線右邊這個介面,這表明和它這邊右邊的網路直接相連也就這條記錄。

另外 L 這種型別是表示它自己的各個介面的 IP 地址,另外我們看到這兒有一個 S 型別是 S 的,那麼它的目的網路是 192.168.16.192/29,其實它標識的是到最右下角的這個網路這條記錄。那麼我們可以看到從路由器要到網路來下一跳,實際上是要跳給路由器的,這個介面也就是 192.168.16.202,所以我們看到下一跳在路由表裡面也是這樣標註的,這些東西都是 C 和 L 的這種的,是路由器自己生成的,他自己就知道,一旦你給他配了 IP 地址,這個埠,配了 IP 地址和地址掩碼的,他就知道了。而 S 這種型別的是靜態路由,是我們之前的新增的:


現在我們就讓左上面主機給左下面主機傳送一個 IP 資料包,我們點選右邊的新增簡單的 PDU,然後我們把它指定傳送方,也就是源主機點上面主機,然後再指定目的主機點下面這個主機。我們可以看到他確實是先用 ICMP 的協議的封裝了一個 ICMP 的詢問報文,當然報文最終是要封裝成 IP 資料包的來傳送走的,但是我們看到現在好像他並沒有傳送,而是要傳送另外一個綠色的這個地方表示的資料包,我們看到是 ARP 協議,我們點開 ICMP 的資料包,我們看一下它到底發生了什麼事情。

那麼在這裡面我們可以看到體系結構的第三層第二層分別是怎麼處理的,那有詳細的描述,我已經把全部翻譯成中文了,所以看起來呢並不複雜。您如果不太熟悉的話,可以逐條的去讀一下它到底發生了什麼事情。

而我這裡就大概解釋一下,為了節約時間,我們大概說一下主機要傳送 ICMP 的詢問報文的話,最終它是要封在這個 IP 資料包裡面, IP 資料包的話源地址它填 192.168.16.1 這個沒有問題。目的地址它要填誰,當然是我們指定的目的主機是 192.168.16.129,然後封裝成 IP 資料包以後,還要封裝成乙太網的幀才能傳送走。那麼乙太網的幀的首部裡面,原來的地址填的是也就是源 IP 地址對應的 MAC 地址,也就這臺主機的網路卡上的 MAC 地址,但是下面就有問題了,就是目的 MAC 地址到底填什麼,那麼千萬不要誤解成說源 MAC 地址你是按照源 IP 地址對應關係填出來的,也就是原來 P 對應什麼,源 MAC 地址你就填什麼,那麼目的 MAC 地址是不是也是按照這個 IP 資料包裡面的這個目的 IP 地址,然後它所對應的 MAC 地址你把它填寫上就就可以了,實際上是不是的。

這個 MAC 地址我們在理論課程中是講過的,他在逐段鏈路上,在每段鏈路上源 MAC 和目的 MAC 是逐段鏈路變化的,當然這個 IP 地址源 IP 和目的 IP 是在 IP 資料包總部當中,從源網路傳遞到目的網路它都是不會變化的。從圖中我們可以非常清楚的看到,主機應該把 ICMP 的報文傳送給路由器,由這個路由器轉發給下面這臺主機,但是對於主機而言,他自己到底是怎麼知道的,我們人是一下就可以看出來的,對於上面的主機他是怎麼知道的呢?首先他把目的主機的 IP 地址,這個是我們告訴他的,讓他上面就是發給目的 IP 地址這個地方,這個他是知道的,所以他把這個目的主機的 IP 地址 192.168.16.129 和自己的子網掩碼的相與,這樣與完的結果就是會得到一個網路地址,然後它的網路地址和它自己所在的網路的網路地址去比較,他自己所在的網路地址他也是知道的,比如說他怎麼知道的,他用他自己的 IP 地址和子網掩碼與,得出來這個東西,就是他自己所在網路的網路地址。

我們剛才說的是他把目的主機的 IP 地址和自己的子網掩碼一與得到了一個地址,這是一個網路地址,他看這個網路地址和他自己的所在的網路相不相等,如果相等的話,他就知道它和目的主機是在同一個網路裡面,這樣屬於直接交付,如果得出來的結果不等的話,他也會知道原來他和目的主機是不在同一個網路,需要這臺主機上面所在網路上面的一臺路由器,然後在這裡我們叫做預設閘道器,需要由預設閘道器也就這臺路由器幫他進行轉發,因此主機將 ICMP 詢問報文首先封裝在 IP 資料包裡面,在 IP 資料包的首部裡面,源地址就填的這臺主機的 IP 地址,而目的地址填的是下面這臺主機的 IP 地址,這樣 IP 資料包就要封裝完成了,但是他還要再封裝一次封裝成把 IP 資料棒給它再封裝成乙太網的幀。在乙太網的幀的首部源 MAC 地址填的就是主機網路卡的 MAC 地址。目的 MAC 地址我們現在剛才已經解釋過了,很顯然的是應該先傳送給路由器的,所以目的 MAC 地址應該填寫的是路由器的介面的 MAC 地址,也就這個 MAC 地址,但是我們之前並沒有給這個主機,並沒有告訴他,實際上也沒有機制來告訴他,我們其實只能告訴他的是預設閘道器的 IP 地址是什麼。因此這臺主機實際上他現在並不知道目的 MAC 地址填什麼,但是他知道目的 MAC 地址應該填的是 192.168.16.126 這個 IP 地址對應的 MAC 地址,因此他就會在他的 ARP 的快取記憶體表去查這個東西。很顯然 ARP 快取記憶體表由於是初始的狀態,它裡面沒有任何的記錄,所以查不到。

那麼這個就用到了我們之前所講過的 ARP 的協議,主機它的 ARP 程序就會傳送一個 ARP 的廣播請求,這是一個廣播目的就是問 192.168.16.126 這個 IP 地址對應的 MAC 地址是什麼?那麼我們點右側的捕獲前進,我們讓它進行一步廣播請求到達交換機以後,由於它是個廣播,所以交換機就會從除了進口以外的其他口都把它轉發出來好。那麼我們注意觀察一下,轉發出來到上面右上方的這臺主機,這是一把叉,那麼表明他不接受要丟棄的東西,這個是很合理的,因為右上相關主機的 ARP 程序最終收到 MAC 廣播請求,把它的內容一看,其實問的並不是他自己,所以他就不理。會而我們請求也到了路由器上面,那麼我們可以看到路由器原來有三條記錄,現在當他收到 ARP 廣播請求以後,它變成了多一條 4 條,那麼具體多的就是這一條,這一條具體來看一下是一個 IP 地址和一個硬體地址的對應關係,這個 IP 地址 192.168.16.1,很顯然就是主機的也就是源主機的,而後面硬體地址就是簡單的,我就說它的最後 4 位就是 7793,也是源主機的網路卡的 MAC 地址,正是因為路由器收到了源主機發的 ARP 的廣播請求。

那麼路由器就知道源主機的 IP 和源主機的 MAC 的對應關係,他順便就把這個對應關係寫到了自己的 ARP 的快取記憶體表裡面,以備以後可能會用到。那麼他現在除了把寫進來以後,他看到就問他自己的,也就是說我們源主機現在想知道你路由器的這個介面的 IP 地址,它對應的 MAC 地址到底是什麼東西,所以我們這個路由器會做出響應,那麼我們點選下一步。到了交換機由於這是一個單播,並且之前在發廣播過來的時候,交換機已經記錄了源主機的 MAC 地址和交換機的埠的對應關係,所以這回是一個明確的單播,交換機可以明確的轉發給源主機。那麼我們的源主機收到以後,我們可以看到它的 ARP 快取記憶體表裡立刻就會出現一條 IP 地址和硬體地址的或者叫做 MAC 地址的對應關係。這個 IP 地址 192.168.16.126,就是我們路由器那當然也是源主機的預設閘道器了,它的介面 192.168.16.126,所對應的 MAC 地址尾數是 6901,我們看到這只是 6901。


那麼現在對於我們源主機來說,它封裝乙太網幀的時候目的那個地址就好填了,這時候就直接填他請求來的預設閘道器的這個介面它所對應的 MAC 地址,所以他現在準備傳送之前 ICMP 的詢報文是封裝的 IP 資料包裡,然後再把 IP 資料包封裝在乙太網幀裡面,我們可以點開看一下。在第二層乙太網的一個資料鏈的層的話,它的源 MAC 地址 7793,也就是這臺主機的 7793 就是 MAC 地址,目的 MAC 地址填的尾號是 6901,我們可以看到這個路由器就是它的主機的預設閘道器,它的介面的 MAC 地址尾號就是 6901,也就是說他請求來了乙太網的幀就可以封裝成功了,那麼接下來他就可以去傳送了。


我們點選捕獲前進按鈕,讓他開始傳送 ICMP 的詢問報文,到達交換機,然後再點一下就到達了路由器。那麼到達了路由器以後出現了現在這樣的現象,我們可以點開來觀察一下。那麼這是 ICMP 的報文進來以後逐層的解封裝,然後再去準備要把它轉發了。我們看一下準備轉發的時候,具體又是什麼樣一個情況。為了節約時間,我們不詳細去看每一條的軟體裡面給我們解釋,我來大概解釋一下,路由器收到這個資料幀以後對它進行解封裝,把裡面的 IP 資料包解出來,主要目的是為了提取 IP 資料包首部的目的 IP 地址,然後根據這個目的 IP 地址在自己的路由表中進行查表,來找一條路由記錄,那麼找到以後如果能夠找到的話,就按照這條路由記錄的下一跳所指定的 IP 地址進行轉發。

那麼具體的怎麼去查這個表,我們在理論課當中已經講過了,並且模擬軟體裡面並呃並沒有一個具體的這樣的查表的,可以模擬出來的一個過程,所以我們這個裡面就不詳細演示了,最終他查表的結果可以看到他應該是從下面這個介面把它轉發出來,那也就是從下面這個介面我們在這個表格裡面找一下,應該是從到達這個網路,卻應該從它的一號介面把它轉發出來,那麼應該從一號介面轉發出來以後,他就知道了從一號介面轉發出來,這下一跳,其實是沒有的,這表明了這是它一號介面和目的,主機所在的網路是同一個網路,所以這屬於又是屬於直接交付。於是路由器知道了直接交付的話,它重新封裝 IP 資料包,把這個 IP 資料包重新封裝成幀。此時在幀的源地址裡面就應該填寫,因為是他決定從下面這個一號介面把它送出來,那就應該填寫 埠 1MAC 地址。

而目的 MAC 地址路由器他並不知道,他只知道目的 IP 地址是 192.168.16.129,所以他就會在自己的 ARP 快取記憶體中去查詢 192.168.16.129 這樣一個 IP 地址它所對應的 MAC 地址。而我們可以很明顯看到這個時候在這裡面只有 4 條記錄,並沒有 192.168.16.129,所以他查不到,因此他無法封裝成資料幀,所以他就把收到的之前收到的資料跟當然裡面就是封裝有我們的 ICMP 的報文資料幀的它就給它丟棄了。然後緊接著他會立刻傳送一個,我們可以看到這個東西又是一個 ARP 的廣播請求。我們點選下一步廣播請求出來以後,到了交換機進行泛洪的這種轉發,然後到達右側這臺主機的話,他把他丟棄了,因為不是問他:


而到達我們目的主機的時候,我們可以看到我們目的主機就立刻把廣播請求所帶來的資訊,也就是路由器介面的 IP 和 MAC 地址的對應關係寫在了自己的 ARP 快取記憶體表中,以備以後會需要用到。


然後我們這個主機把這個內容解析出來,看到是問的是自己的,對方請求的自己的 IP 地址和 MAC 地址的關係,所以它會傳送一個單播的這樣的一個 ARP 的響應回去。當我們路由器收到以後,我們會觀察到在路由器的 ARP 快取記憶體表裡面又會多了一條記錄,這條記錄就是記錄的我們目的主機的 IP 地址和它的 MAC 地址的對應關係,我們可以看到在這裡

這樣的話,我們讓源主機給目的主機傳送 ICMP 的詢問報文的過程其實就要結束了,但是我們看到其實我們目的主機最終實際上是沒有收到 ICMP 的詢問報文的,那是因為把路由器把它丟了,把它丟棄了,主動給它丟棄掉了,這是因為這個路由器它還要發一個 ARP 的廣播請求去詢問,並且還要等待目的主機,把 IP 地址和 MAC 地址對應關係,再用 ARP 單播響應的方式傳回來,所以這樣路由器就把之前的 ICMP 丟掉它,把它直接先丟棄掉。


那麼這之後我們可以再來看一下又會是怎麼樣的情形。我們點選右下角這個箭頭,把之前我們讓它傳遞的這些場景給它刪除掉。現在我們需要注意一下的就是我們的源主機的 ARP 快取記憶體表裡已經有預設閘道器的 IP 和 MAC 的對應關係,而路由器它的 ARP 快取記憶體裡面也有我們目的主機的 IP 和那個地址的對應關係,所以我們應該可以想象到,我們再讓上面這臺主機給下面這臺主機傳送一個 ICMP 的請求報文的話,應該很順利的就能夠這樣一路的最終到達目的主機,而不會再看到之前的 ARP 的請求的過程。那麼我們來看一下是不是這樣,我們點選這兒的新增簡單的 PDU 然後我們點選源主機再點選目的主機,然後我們點選捕獲前進,到了交換機轉發下來,然後到了路由器,它會把資料包的目的 IP 地址提出來比對,然後決定從它的埠一從這送下來,然後到了交換機以後又明確的轉發給我們的目的主機。由於這是我們傳送的是 ICMP 的詢問報文,所以我們主機在收到以後還會給我們的從目的主機收到以後,還會給我們的源主機再發回一個 ICMP 的應答報文,所以我們可以看到他還會發一個應答報文過來,那麼這一次我們就可以看到很順利的源主機給目標主機傳送 ICMP 的詢問報文,目的主機收到後會給源主機回了一個響應。

這就是為什麼 ping 的第一次會超時!


現在我們把之前開啟的這些視窗都給他們關閉掉,比如說 ARP 的快取記憶體,還有路由器的路由表,然後把我們之前做過的實驗的場景也給它刪除掉。

我們再來看一個現象,我就現在用這臺主機,我想用右上這臺主機來 ping 一下右下左側這臺主機,這也是我們在理論課過程中給大家提的一個練習題。我們說了是在模擬軟體裡面,最終我們來把它解決掉。我是怎麼做,我用上面這臺主機在他的命令列裡面,也就是上面這臺主機,我來 ping 一下下面這臺主機,PING 這臺主機的 IP 地址我們已經標成了 192.168.16.193,也就是我們給它設定的是 IP 地址,我們 ping 一下這個 IP 地址。192.168.16.193,然後我們回車。為了快速的看,我們需要把從模擬模式切換回實時模式,那麼我們再點選出來它切換以後視窗丟掉了,你再點選它就出來了。我們看到第一次請求超時,第二次請求超時,第三次收到了這個目的 IP 地址,也就是這個目的主機回來的響應,第 4 次也收到了。

我們先解釋一下這個 ping 實際上是幹什麼,相當於是我們比較熟悉的傳送簡單的 PDU 我們將新增給源主機,再新增給目的主機,讓他傳送一次。其實這個 ping 我們可以把它看成這樣進行了,也就是傳送了 4 個簡單的 PDU。我們把滑鼠狀態切換回選擇狀態,然後我們再點主機就看到我們剛才 ping 的結果有兩次超時,有兩次它收到了,它相當於源主機給目的主機,依次傳送了 4 個 ICMP 的請求報文,但是有兩個沒收到響應,他判定為超時而另外兩個是受到了響應。那麼根據我們之前所講的左上面主機這臺主機給左下這臺主機傳送 ICMP 的請求報文的過程,其實我們可以分析出來,或者說我們可以猜測出來,給這個主機它在傳送 ICMP 的請求報文的過程中,第一次報文到達了路由器,但是由於路由器它的介面並不知道它的對應的對方的介面的 IP 地址所對應的 MAC 地址,所以首先路由器就是把 ICMP 的報文給它丟掉了,然後他去詢問一下用 ARP 的廣播請求去詢問一下。然後這個過程就結束了,那也就是第一條超時的原因

而第二條超時是因為第二次主機我們說了他要發連續 4 個 ICMP 的請求報文,所以他就發了第二個到左邊路由器以後,這個時候路由器透過查自己的路由表,然後直接轉發,那麼這個時候也不需要請求,不需要 ARP 請求了,直接轉發給右邊的路由器,而右邊路由器查錶轉發決定從下面這個口送下來,但是這個時候他又不知道目的主機的 IP 地址對應的 MAC 地址,所以他又發了一次 ARP 的廣播請求,在發之前他就把剛才說到的 ICMP 的第二個 ICMP 也丟掉了,那也就是我們看到的第二次超時,

然後他就發一個 ARP 廣播請求,就獲取到了目的主機的 IP 地址對應的 MAC 地址的關係。然後我們這臺主機他第三次傳送 ICMP 資料包的時候到了路由器很順利的轉發到這個路由器,很順利的轉發下來。然後第 4 次也就是說第 3 次我們看到是這樣的,收到的響應第 4 次和第 3 次是一樣的,我們現在再試下,我們想一想會看到什麼結果,再 ping 一次的話應該是 4 次都順利收到的。我們摁鍵盤的向上的箭頭鍵就可以不用重複去打這條命令。現在我們可以看到第一次收到了 4 個響應,收到了 4 個目的主機發回來的響應


如果想自己單步模擬:重啟工程即可。

如果您對我剛才的這種解釋還是不能信服的話,您可以自己對我們剛才這個過程進行一下模擬,具體的模擬的話就要做一些工作,比如說因為我們剛才已經用 ping 的方式 ping 過了,也就是我們在這裡面已經 ping 過了,所以那個過程並且我們在實時模式下做的,那麼這樣的話主機交換機還有路由器,他們的 ARP 快取記憶體都已經有了相應的記錄,所以你再去單步模擬的話,或者你不去單步模擬還是這麼聽的話,我們剛才已經 ping 過了,他就沒有那種超時的,也就是你看不出來資料包被丟掉的情況,所以我們需要清一下 ARP 的快取記憶體。

那麼我們來說明一下對於主機的話,我們可以在它的命令列直接打 ARP -d 這樣就清空了。那麼當然 ARP -A 我們可以檢視一下,就是說沒有 ARP 條目找到就是 ARP 表示空的,你這樣就可以清掉。而交換機我們要進去以後,在它的命令列介面那點回車,然後 DNABLE 進入他的客權模式,然後我們可以用一條命令叫 CLEAR mac -a 這是一條簡寫的命令,寫完了是全寫的話應該是 MAC -ADDRESS,我們可以用簡寫就可以,這樣一做也是清了。那麼另外路由器可不可以清,路由器也有相應的命令,我們點回車,然後 enable 進入它的特權模式,是 CLEAR ARP 這個說明一下剛才我們清交換機的時候,我們清的不是它的 ARP 快取,清的是它的 MAC 地址表,也就是它的記錄著各主機的 MAC 地址和它的埠號的對應關係,我們請的是交換機的 MAC 地址表,對於路由器和我們的主機而言,我們清的都是 ARP,只不過主機的命令是 ARP -D 而路由器的話它是 clear ARP,

但是這裡面有一個問題,我們儘管這樣打了,在路由器裡面清除的 ARP,我們 show 一下 ARP 的快取記憶體,我們仍然可以看到凡是有一條短線的,應該就是它的這三個介面的 IP 地址和 MAC 地址的對應關係,但是這裡面你比如像這一條,192.168.16.2 其實是主機的,然後它對應的 MAC 地址我們看尾號是 81D1,就是這兒的 81D1 是主機的,我們打了一遍 clear arp 然後我們再把它收出來 ARP 其實在我們模擬軟體裡,它仍然存在這條記錄,並沒有把它刪了,按道理來說應該是出了命令以後,除了它介面它本身自己知道的三個介面的 IP 地址,對於 MAC 地址這個是有所不變的,除非你人為去給它重新配置 IP 地址,會改變,否則是不會改變的。

而其他的它處於傳輸過程中動態獲取到的,就 ARP 協議動態獲取到的這樣的一個 IP 地址和 MAC 地址的記錄,比如說這一條,還有上面這一條,還有下面凡是現在我們看到標的 0 的都是那麼什麼意思?這個地方它有一個時間,也就是說這條記錄從誕生以後有多長時間,比如說我們待會再瘦一下,這個時間就可能變為一了,當然它會有一個上限到一定時間的時候,這條記錄就會被重新整理掉,那這個可能是模擬軟體的一個 BUG,也就是說我們打了 clear ARP 的話是清不掉這個的,而你清不掉路由器裡面的 ARP 快取記憶體表,

你自然的就會就不可能看到路由器去上面這臺主機在訪問下面這臺主機的話,那麼路由器要訪問路由就是要獲取路由器的介面 MAC 地址,而右邊這個路由器要用他需要知道下面這個目的主機的 IP 對應的 MAC 地址 你自然就看不到,因為這兩個路由器的 ARP 快取記憶體在我們之前用 ping 的那種方式的時候,它已經自動獲取到了 IP 地址和 MAC 地址的對應關係。

所以怎麼辦?您可以直接把實驗的工程先儲存了,然後退出去,然後重新啟動這個軟體,然後把這個工程再開啟。這樣的話我們各個主機裡面的 ARP 快取記憶體表就被清掉了,然後路由器裡面的 ARP 快取記憶體表就可以清掉了,然後您在單步的情況下,用 4 次就用新增 PDU 的情況這種方式讓源主機給目的主機去發,但您會看到第一次的時候這個左邊的路由器會把這個 ICMP 的請求丟掉,然後您再新增一次讓源主機給他發,您這回可以看到的資料包應該是從路由器的轉發到右邊路由器以後,右邊路由器又把它丟掉,而去詢問他的 IP 地址對應的 MAC 地址。在這兩次之後,您在做第三次的時候,再讓主機給主機傳送 ICMP 的報文的話,我們就可以看到非常順暢的就可以到達目的主機第 4 次一樣,這樣的話您就可以驗證出來和我們用 ping 在實時模式下 ping ,如果他們的 ARP 快取記憶體都是空的話,那麼你會看到有兩次的請求超時,那有兩次是沒有超時是得到了回應。

相關文章