實驗12 網際控制報文協議ICMP的應用
一、實驗目的
驗證ping命令和tracert命令的工作原理。
二、實驗環境
·Cisco Packet Tracer模擬器
三、實驗過程
1.構建網絡拓撲并進行信息標注,將所需要配置的IP地址寫在對應的主機或者路由器旁邊,如圖1所示。
圖1 網絡拓撲
2.配置主機H1,H2的IP地址、路由器的IP地址、子網掩碼、靜態路由,如圖2,3,4所示。
圖2 主機IP地址以及子網掩碼配置
圖3 路由器端口IP地址配置
圖4 路由器靜態路由配置
3.觀察主機H1-H2是否能正常通信,判斷拓撲是否建立成功,配置正確,讓主機H1使用ping 192.168.1.1與主機H2通信,結果如圖5所示。經過兩次超時,是因為經過了兩個路由器,有兩次ARP的影響。
圖5 H1與H2之間的通信
4.跟蹤數據報從H1到達H2經過了哪些路由器,通過命令tracter 192.168.1.1來查看,結果如圖6所示。圖中給出了經過各個路由器的相關端口。
圖6 數據包到達H2經過的路徑
5.切換到仿真模式下H2 pingH1,如圖7所示,觀察ping命令是如何通過ICMP實現的,并且過濾協議,只保留ICMP協議,主機H2的封裝細節如圖8所示,PING進程創建了一個ICMP“回送請求”報文并將其傳送給下層進程。
圖7 讓主機H2ping主機H1
圖8 在主機H2上的PDU信息
6.點擊捕獲前進,當數據包到達主機H1時,查看封裝的PDU細節,如圖
9所示。此時ICMP收到的數據包是一個ICMP數據包,此時ICMP進程將會對其處理,ICMP進程收到一個“回送請求”報文,
圖9 主機H1上的PDU信息
7.點擊捕獲前進,當主機H2收到響應報文之后,第一次ICMP請求就結束了,如圖10所示。
圖10 第一次ICMP請求報文結束
8.仿真模式下H1tracertH2,如圖11所示,觀察tracert命令是如何通過ICMP實現的,再查看主機H1上的PDU信息,如圖12所示。Trace route進程啟動下一個追蹤,Trace route進程創建一個ICMP“回送請求”報文并將其發送給下一層進程。
圖11 仿真模式下H1tracertH2
圖12 查看主機H1的PDU信息
9.再次查看主機H1上的出站PDU詳情,發現TTL字段被設置成為了1,如圖13所示。這說明當轉發到下一個路由器的時候,就會將TTL減1,也就是置為0,那么此時路由器就會丟棄這個ICMP報文,如圖14所示,并給源主機H1發送一個ICMP差錯報告(類型是時間超過),此時查看路由器上的PDU信息,如圖15所示。設備發送一個ICMP“時間超過”報文。
圖13 出站PDU中的TTL被設置成1
圖14 路由器丟棄這個ICMP報文
圖15 路由器上的PDU信息
10.主機H1獲取路徑上的第一個路由器需要發送三個ICMP報文,并且也要收到三個ICMP響應報文才算找到第一個路由器,如下圖所示,第一個路由器的IP地址為192.168.0.254,如圖16所示。
圖16 主機H1找到第一個路由器
11.同理,主機H1要找到第二個路由器,就需要將TTL的值設置為2,然后就去找找到的話,也是需要進行三次ICMP報文的傳送以及收到三個ICMP報文的響應,才算找到第二個路由器,如圖17所示。同理找到第三個路由器,主機H1將TTL字段設置為3,找到第三個路由器如圖18所示。
圖17 主機H1找到第二個路由器
圖18 主機H1找到第三個路由器
四、實驗小結
-
Ping命令和tracert命令都是基于網際控制報文協議(ICMP)實現的。Ping命令用于測試主機之間、主機與路由器之間以及路由器與路由器之間的連通性。而tracert命令則用于探測從源主機到目的主機之間經過的路由器路徑。
-
Ping命令利用ICMP中的詢問報文機制,源主機發送ICMP請求報文,目的主機則返回相應的應答報文,以確認連通性。
-
使用tracert命令時,發出的數據包的生存時間(TTL)初始值為1。當數據包經過第一個路由器時,TTL值減1,變為0,此時數據包會被丟棄,并向源主機發送一個ICMP差錯報告(“時間超過”報文),從而告知源主機該數據包未能成功到達目的地。
-
tracert命令不僅依賴于詢問報文,還利用差錯報文來獲取路徑信息,從而逐步確定源主機到目的主機之間的路由路徑。