網路量測、管理與效能

ping

/ ping /

ping 是網路用來大喊「你在嗎?」然後等著聽到「在」回來的方式。這個名字借自聲納:潛艇送出一個聲音脈衝,聆聽回音,而回音花的時間告訴它某個東西有多遠。ping 用封包做同樣的事——當某個東西連不上時,它通常是任何人第一個拿來用的工具,因為它一次回答兩個簡單問題:我到底連不連得到那台主機?以及,一趟來回要花多久?

在機制上,ping 送出一個 ICMP 回應請求(echo request)封包到目標位址。收到它的主機通常會以一個內含相同資料的 ICMP 回應回覆(echo reply)來回應。ping 計時從送出請求到收到回覆之間的間隔——那就是往返時間(round-trip time,RTT)。它每秒重複一次,並報告每次的 RTT 加上一份摘要:回來了幾個回覆相對於送出了幾個(這樣你能看出封包遺失),以及 RTT 的最小、平均與最大值。穩定的低 RTT 加上零遺失代表路徑健康;上升的 RTT 暗示有佇列延遲,而缺少的回覆則暗示有遺失,或主機掛了、或正在過濾。

兩個誠實的提醒。第一,ping 量的是往返時間,不是單向延遲,而一條路徑的兩個方向可能差很多。第二,許多主機與防火牆刻意丟棄 ICMP,或把它降低優先序,所以「沒有回覆」並不證明主機掛了——它可能只是不理你,而一台負載很重的路由器可能慢慢回它自己的 ping,但同時把真實流量轉送得完美無瑕。ping 告訴你的是 ICMP 所看到的、通往一台主機的路徑,這是有用的代理指標,但不是全部真相。

你輸入「ping 8.8.8.8」,看到:「64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=14.2 ms」,每秒重複一次,最後以「5 packets transmitted, 5 received, 0% packet loss, rtt min/avg/max = 13.9/14.2/14.6 ms」結尾。零遺失加上很緊的 RTT 範圍,說明這條路徑是健康的。

ping 用 ICMP 回應封包回報通往一台主機的往返時間與遺失——東西連不上時第一個該試的工具。

ping 沒有回覆並不能證明主機掛了:許多主機與防火牆刻意丟棄或降低 ICMP 的優先序。ping 量的也是來回,而非單向延遲,而兩個方向可能差很多。

又称
ICMP echoICMP echo request/reply