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