一、命令原理
Ping是ICMP的一個典型應用。Ping是檢測網絡連通的常用工具,同時也能收集其他相關信息。用戶可以在Ping命令中指定不同參數,如ICMP報文長度、發送的ICMP報文個數、等待回覆響應的超時間等,設備根據配置的參數構造來發送ICMP報文,進行Ping測試。
Ping的運作原理是向目標端發送一個ICMP Echo請求報文,並等待ICMP Echo應答報文的回應,根據是否收到回顯應答報文判斷目的端網絡是否可達。
在路由器A上輸入Ping命令:ping 10.0.0.2
Ping命令的輸出信息包括目的地址、ICMP報文長度、序號、TTL值以及往返時間。序號是包含在Echo回覆消息中的可變參數字段,TTL值和往返時間包含在消息的IP頭部中。
對目的地址進行Ping測試的統計結果統計結果(ping statistics)包括:
在路由器A上抓包,可以看到每一次ICMP Echo 請求報文都可以收到ICMP Echo應答報文的回應。總共收到5個回顯應答報文。
二、參數詳解
Ping命令可以配置不同參數以實現不同的用途。其參數詳解如下:
實驗驗證:在ENSP上對目的地址進行攜帶參數的Ping測試,實驗拓撲如圖所示。採用3臺AR2200路由器,並且採用RIPv2協議實現全互聯。接口配置如表所示:
1. 首先在R1上ping 10.1.1.3並抓包,可以觀察到Request報文的源地址為10.0.0.1
2. 在R1輸入ping -a 11.11.11.11 10.1.1.3,可以看到此時的報文源地址為11.11.11.11
3. 通過參數-c 改變發送ICMP ECHO Request報文的次數。設置參數為8,由於發送的ICMP ECHO Request報文的次數為8次,所以收到了8個響應報文。
4. 通過參數-h 改變TTL值,在R1上輸入ping -c 128 10.1.1.3,抓取R1發送的ICMP Echo Request報文,查看IP頭部可以看到TTL值此時已經改變。
通過Ping命令的輸出信息可以看到不影響Echo Reply報文的TTL值。
5. 通過參數-t 改變等待回顯消息的超時時間
6. 改變參數-m ,設置發送下一個ICMP請求報文的等待時間。ICMP請求報文的等待時間默認為500ms。抓包可以看出每一次Echo request報文的發送間隔為500ms。
接下來在R1上輸入ping -m 1000 10.1.1.3,抓包顯示每一次Echo request報文的發送間隔為1000ms。
7. 在R1上通過參數-r ,顯示Echo Reply報文經過的途徑。
8. 通過參數-s 改變ECHO-REQUEST報文長度。只改變Data字段的長度。
ping常見有以下幾種應用場景(ping命令在任意視圖下執行):
場景一:檢查本機協議棧。執行ping ,可以檢查本機TCP/IP協議棧是否正常。
如: ping 127.0.0.1
場景二:在IP網絡中檢測目的主機是否可達。執行ping ,向對端發送ICMP ECHO-REQUEST報文,如果能夠收到對端應答(Echo Reply),則可以判定對端路由可達。
如: ping 10.1.1.2 //檢查IP地址為10.1.1.2的主機是否可達
場景三:網絡環境較差時,通過ping -c count -t timeout host命令可以檢測本端到對端設備間的網絡質量。通過分析顯示結果中的丟包率和平均時延,可以評估網絡質量。對於可靠性較差的網絡,建議發包次數(-c)和超時時間(-t)取較大值,這樣可以更加準確的得到檢測信息。
如: ping -c 8 -t 4000 10.1.1.4 //檢查IP地址為10.1.1.4的主機是否可達,設置發送報文次數為8,設置發送報文等待應答的超時時間為4000ms
場景四:檢測路徑。執行ping -r 命令,可以得到本端到對端的路徑節點信息。
如: ping -r 192.168.108.107
ping不通排查思路:
1. 檢查路由器上端口是否UP、IP地址配置是否正確。
參考命令:display interface brief、display ip interface [ < interface-type > < interface-number > ]
2. 如果是二層口,檢查設備上是否運行了STP二層協議;確認ping業務經過的物理端口是否被阻塞。
參考命令:display stp [ instance < instance-id > ] [ interface < interface-type > < interface-number > ] [ brief ]
3. 確認兩端路由是否可達:若不可達,排查路由故障。
參考命令:display ip routing-table
4. 確認本端和對端是否有策略限制;若對端為防火牆,確認對端端口是否正確加入域,域間規則是否放開。
5. 檢查直連地址的ARP是否學習正常:若學習不到,檢查是否使能arp嚴格學習,去使能後再試;若已去使能依然學不到,請在兩端設備的其中一端執行長ping,同時通過基於arp的流量統計確認arp-request報文是否從端口送出以及對端設備物理口是否回應arp-reply。
參考命令:display arp、display arp learning strict
6. 若上述一切正常,部署基於icmp的流量統計,確認報文丟在哪裡,定位ping丟包點。
三、在Windows的實現
1. 首先打開命令提示符窗口。用快捷鍵win+R 調出運行命令框。輸入cmd 後點擊確定。
2. 在界面輸入Ping 命令及相應參數。這裡我們可以輸入ping -t www.baidu.com
3. 然後通過CTRL+C停止發包,得到Ping統計信息,可以反映當前的上網狀況。
四、總結
ping 是最常見的用於檢測IPv4/IPv6網絡設備是否可達的調試手段。我們可以靈活運用ping 的各種參數來排查或檢驗網絡的運行狀況。熟練地掌握ping 的運用也有助於加深我們對數據傳輸的理解。
閱讀更多 國科科技 的文章