1. 程式人生 > >Ping 命令原理及使用

Ping 命令原理及使用

最近處理國內訪問AWS海外區網路問題,學習了一系列原來沒有徹底搞清楚網路知識,這裡特此記錄。Ping命令可以拿來測網路是否聯通,網路響應時間和基礎的掉包率。但掉包分析建議使用mtr工具完成。

ping是一種計算機網路工具,用來測試資料包能否透過IP協議到達特定主機。ping的運作原理是向目標主機傳出一個ICMP [email protected]要求資料包,並等待接收echo迴應資料包。程式會按時間和成功響應的次數估算丟失資料包率(丟包率)和資料包往返時間(網路時延,Round-trip delay time)。

網際網路控制訊息協議(英語:Internet Control Message Protocol,縮寫:ICMP)是網際網路協議族的核心協議之一。它用於TCP/IP網路中傳送控制訊息。ICMP [1]依靠IP來完成它的任務,它是IP的主要部分。ICMP是包含在IP資料包中的,但是對ICMP訊息通常會特殊處理,同樣ICMP是不可靠傳輸。它與傳輸協議(如TCP和UDP)顯著不同:它一般不用於在兩點間傳輸資料

。它通常不由網路程式直接使用,除了ping和traceroute這兩個特別的例子。 IPv4中的ICMP被稱作ICMPv4。Pv6中的ICMP則被稱作ICMPv6。 所以Ping命令並不是用到了TCP和UDP,這裡也就帶來了一個前提:ping能被使用至少要目標主機開放了ICMP協議。

Ping + 網址/IP地址
Ping還可以攜帶引數
-t 不停ping對方主機
-p pattern 可以指定最多16個填充位元組用於保持分組長度為16的整數倍。

例子:

[email protected]:~$ ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=51 time=52.4 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=51 time=50.6 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=51 time=50.9 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=51 time=49.6 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=51 time=50.9 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=6 ttl=51 time=50.5 ms
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5007ms
rtt min/avg/max/mdev = 49.678/50.853/52.405/0.860 ms

這裡講下返回內容:
(1) 64 bytes為ping命令相應資料大小
(2) 第二個為伺服器ip
(3) icmp_seq為ping測試包連續計數。
(4) TTL值
什麼是TTL:當我們對網路上的主機進行ping操作的時候,本地機器會發出一個數據包,資料包經過一定數量的路由器傳送到目的主機,但是由於很多的原因,一些資料包不能正常傳送到目的主機,那如果不給這些資料包一個生存時間的話,這些資料包會一直在網路上傳送,導致網路開銷的增大。當資料包傳送到一個路由器之後,TTL就自動減1,如果減到0了還是沒有傳送到目的主機,那麼就自動丟失。
PING中的TTL:Linux系統的TTL值為64或255。注意這裡TTL值 指的是目標主機到本地資料的路由跳數,比如上例中ping 百度的結果 ,即為的為64-52=12 意味著,從本地機到百度伺服器經過了12跳路由。解釋下這裡的TTL: ping中的TTL為一個為ICMP回顯應答(ICMP Echo Reply)的TTL,這是目標機發回來的資料包的TTL。而我們發過去的TTL是由我們本地機型別決定,並不會顯示在ping結果。
(5) 網路時延
來回通訊延遲(Round-trip delay time),在通訊(Communication)、計算機網路(Computer network)領域中,意指:在雙方通訊中,發訊方的訊號(Signal)傳播(Propagation)到收訊方的時間(意即:傳播延遲(Propagation delay)),加上收訊方回傳訊息到發訊方的時間(如果沒有造成雙向傳播速率差異的因素,此時間與發訊方將訊號傳播到收訊方的時間一樣久) 。即資料往返時間。
(6) 6 packets transmitted,總請求包數
(7) 6 received,收到包數
(8) 0% packet loss 掉包率
(9) rtt min/avg/max= 49.678/50.853/52.405/0.860 ms 最小/平均/最大網路時延
(10) mdev 它表示這些 ICMP 包的 RTT 偏離平均值的程度,這個值越大說明你的網速越不穩定。

參考:
https://zh.wikipedia.org/wiki/Ping