1. 程式人生 > >測試網路連通性的PING命令

測試網路連通性的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:


                                                      圖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請求報文。


                                                             圖12.Server上抓包
  • 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抓包第四幀