測試網路連通性的PING命令
本文是對網路連通性測試的常用工具ping命令較為詳細的介紹
1. ping命令簡介
Ping是因特網包探測器,是使用ICMP回顯請求報文和ICMP回顯應答報文來測試主機之間連通性,用來診斷網路的工具。
Ping使用的是ICMP回顯請求報文和ICMP回顯應答報文,那麼,
ICMP回顯請求報文和回顯應答格式如下:
型別(8) |
程式碼(8) |
校驗和(16) |
識別符號(16) |
序號(16) |
|
選項資料 |
不同型別的ICMP報文由報文中的型別和程式碼共同決定
Ping命令中使用到ICMP報文中型別欄位為0和8的詢問報文,其中,8表示請求報文,0表示應答報文,程式碼欄位均為0。
ICMP報文作為IP資料報的資料部分,加上IP資料報首部組成IP資料報傳送出去。
2.實驗部分
拓撲結構如圖1(路由器:左邊埠設為1,右邊埠設為2)
圖1
- PC1能Ping通PC2
進入PC1 DOS介面,鍵入:ping 10.1.20.101,結果如下圖2:
可以看到預設情況下win XP是發出四個Ping包,由圖中可知網路狀態良好,並無丟包。
主機PC1傳送IP資料報給不同網段的PC2,得通過與PC1連線在同一網段的路由器Router來轉發。但是PC1發現自己的arp快取記憶體中並不存在路由器Router的ip與MAC對映關係,於是廣播一個arp請求,如圖3。在圖4展現了此廣播的具體資訊,目的MAC為廣播地址,源MAC為PC1的MAC地址,傳送端MAC,傳送端IP,以及目的端ip,目的端待填寫的MAC(全零)。
圖3.PC1上的抓包
圖4.PC1抓包的第一幀
路由器Router(linux搭建的)接收到此arp廣播請求,檢視目的端ip發現是自己的ip,則會將PC1的ip和MAC對應關係更新到自己的arp表中,如圖5,並且會將自己埠1的MAC地址填充到傳送端MAC,傳送端ip變為路由器Router埠1對應的ip,目的端MAC和ip分別填寫PC1的MAC和ip,如圖5,然後以arp單播形式應答給PC1,PC1接著傳送ICMP請求報文到ICMP。
圖5.Router中的arp表
圖6.Router埠1上抓包
埠2上抓包如圖7,由第一幀可知路由器Router由埠2送一個arp廣播請求,收到一個arp應答包(路由器收到PC1的ICMP回顯請求報文,轉發前檢視自己的ARP表項,沒有找到目的端對應的ARP表項,因此傳送ARP請求),並將PC2的ip和MAC地址更新到自己的arp表中,如圖5,第二行。
圖7.Router埠2上抓包
PC1收到Router的arp應答後,將Router所對應的ip和MAC對映關係寫入arp表中,如圖8。接著向PC2傳送ICMP回顯請求報文,如圖9,由資料鏈路層進行資料封裝,目的MAC是路由器Router埠1的MAC地址,源MAC是PC1的MAC地址,目的ip是PC2 的ip,源IP是PC1的ip。
圖8.PC1上arp表
圖9.Client上抓包第三幀
PC2收到Router的arp廣播後,將Router埠2對應的ip與MAC對映關係寫入arp表中,如圖10。路由器Router在收到PC1發來的ICMP回顯請求報文後,通過查詢路由表,發現有到達PC2的路由,檢視arp表,然後把資料幀進行重新封裝,目的MAC地址變為PC2的MAC,源MAC變為埠2對應MAC,目的ip與源ip不變,然後由埠2,將此資料報發給PC2,如圖11。
圖10.PC2上arp表
圖11.埠2上抓包第三幀
PC2收到ICMP回顯請求報文,返回一個ICMP回顯應答報文,如圖12,經過路由器後送到PC1(資料幀進入路由器後具體變化與上面類似,這兒不再討論),PC1收到回顯應答後,又繼續傳送ICMP請求報文。
- PC2關機狀態
當PC2關機狀態,PC1傳送四個ping包,收到了四個目的主機不可達報文,如圖13
圖13.PC2關機
PC1 ping PC2過程,首先廣播arp請求獲得埠1對應ip與MAC對映關係,寫入PC1 的arp表,路由器arp表中也將PC1的ip與MAC對映關係寫入自己的arp表(這個過程與上面PC1能ping通PC2過程一致),如圖14、15。
圖14.路由器arp表
圖15.PC1的arp表
但是路由器埠2廣播arp請求,並未收到來自PC2的arp應答包,然後每隔一定時間廣播一個arp請求,抓包檢視大約時間間隔為1s(不同系統不一樣),如圖16、17(後續未截圖,已經檢視)
圖16.埠2抓包第二幀
圖17.埠2抓包第三幀
PC1向路由器傳送ICMP回顯請求報文,由於arp表中並不能找到PC2的ip與MAC對應關係,大約三秒左右(不同系統處理不一樣)由路由器向PC1回一個ICMP主機不可達報文,如圖18、19(後續未截圖,已經檢視)。
圖18.埠1抓包第三幀
圖19.埠1抓包第四幀