Ping命令及其常用參數詳解

一、命令原理

Ping是ICMP的一個典型應用。Ping是檢測網絡連通的常用工具,同時也能收集其他相關信息。用戶可以在Ping命令中指定不同參數,如ICMP報文長度、發送的ICMP報文個數、等待回覆響應的超時間等,設備根據配置的參數構造來發送ICMP報文,進行Ping測試。

Ping的運作原理是向目標端發送一個ICMP Echo請求報文,並等待ICMP Echo應答報文的回應,根據是否收到回顯應答報文判斷目的端網絡是否可達。

Ping命令及其常用參數詳解

在路由器A上輸入Ping命令:ping 10.0.0.2

Ping命令及其常用參數詳解

Ping命令的輸出信息包括目的地址、ICMP報文長度、序號、TTL值以及往返時間。序號是包含在Echo回覆消息中的可變參數字段,TTL值和往返時間包含在消息的IP頭部中。


對目的地址進行Ping測試的統計結果統計結果(ping statistics)包括:

  • packets transmitted:發送的ECHO-REQUEST報文數目
  • packets received:接收到的ECHO-RESPONSE報文數目
  • packet loss:未響應報文數佔應響應報文總數的百分比
  • round-trip min/avg/max:響應時間的最小值、平均值、最大值

  • 在路由器A上抓包,可以看到每一次ICMP Echo 請求報文都可以收到ICMP Echo應答報文的回應。總共收到5個回顯應答報文。

    Ping命令及其常用參數詳解

    二、參數詳解

    Ping命令可以配置不同參數以實現不同的用途。其參數詳解如下:

    Ping命令及其常用參數詳解

    實驗驗證:在ENSP上對目的地址進行攜帶參數的Ping測試,實驗拓撲如圖所示。採用3臺AR2200路由器,並且採用RIPv2協議實現全互聯。接口配置如表所示:

    Ping命令及其常用參數詳解


    Ping命令及其常用參數詳解

    1. 首先在R1上ping 10.1.1.3並抓包,可以觀察到Request報文的源地址為10.0.0.1

    Ping命令及其常用參數詳解

    2. 在R1輸入ping -a 11.11.11.11 10.1.1.3,可以看到此時的報文源地址為11.11.11.11

    Ping命令及其常用參數詳解

    3. 通過參數-c 改變發送ICMP ECHO Request報文的次數。設置參數為8,由於發送的ICMP ECHO Request報文的次數為8次,所以收到了8個響應報文。

    Ping命令及其常用參數詳解

    4. 通過參數-h 改變TTL值,在R1上輸入ping -c 128 10.1.1.3,抓取R1發送的ICMP Echo Request報文,查看IP頭部可以看到TTL值此時已經改變。

    Ping命令及其常用參數詳解

    通過Ping命令的輸出信息可以看到不影響Echo Reply報文的TTL值。

    Ping命令及其常用參數詳解

    5. 通過參數-t 改變等待回顯消息的超時時間

    Ping命令及其常用參數詳解


    Ping命令及其常用參數詳解

    6. 改變參數-m ,設置發送下一個ICMP請求報文的等待時間。ICMP請求報文的等待時間默認為500ms。抓包可以看出每一次Echo request報文的發送間隔為500ms。

    Ping命令及其常用參數詳解

    接下來在R1上輸入ping -m 1000 10.1.1.3,抓包顯示每一次Echo request報文的發送間隔為1000ms。

    Ping命令及其常用參數詳解

    7. 在R1上通過參數-r ,顯示Echo Reply報文經過的途徑。

    Ping命令及其常用參數詳解

    8. 通過參數-s 改變ECHO-REQUEST報文長度。只改變Data字段的長度。

    Ping命令及其常用參數詳解


    Ping命令及其常用參數詳解


    Ping命令及其常用參數詳解

    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

    Ping命令及其常用參數詳解

    3. 然後通過CTRL+C停止發包,得到Ping統計信息,可以反映當前的上網狀況。

    四、總結

    ping 是最常見的用於檢測IPv4/IPv6網絡設備是否可達的調試手段。我們可以靈活運用ping 的各種參數來排查或檢驗網絡的運行狀況。熟練地掌握ping 的運用也有助於加深我們對數據傳輸的理解。


    分享到:


    相關文章: