Ping 详解:延迟、丢包与 ICMP
Ping 用来检查目标是否响应网络探测,并测量每次应答返回所需的时间。它是排查网络问题时很好用的第一步,但它测不出下载带宽,单靠它也无法判断某个应用或网站是否运行正常。
ping 结果测量的是什么
大多数 ping 程序会发送 ICMP 回显请求(Echo Request),然后等待回显应答(Echo Reply)。显示的往返时间(RTT)包括去程和回程。20 ms 的读数表示一次响应大约耗时 20 毫秒;它并不是以兆比特每秒计的传输速度。
结果中通常包括发送和接收的数据包数量、最小和最大 RTT 以及平均值。多测几次,看看延迟是否稳定。样本太少可能掩盖间歇性故障,而测得太久又可能受到流量和网络状况变化的影响。
主机为什么可能不应答
服务器或防火墙可能屏蔽 ICMP、限制应答数量,或者降低诊断流量的优先级。所以 ping 不通并不能证明 HTTPS 无法访问。反过来,即使应答很快,也不能证明 DNS、TCP 连接、登录或 Web 应用本身都正常。
一些移动网络和 Wi-Fi 链路的 RTT 波动较大,因为无线调度、信号干扰和省电模式都会增加延迟。测试中出现丢包值得深究,但请先与其他目的地和本地路由器的结果对比一下,以免把本地故障错怪到远程服务头上。
推荐的检测顺序
先测本地网关,再测一个稳定的外部目的地,最后测出问题的主机。分别 ping IP 地址和域名,以便把基本连通性问题与 DNS 解析问题区分开来。用浏览器或合适的客户端测试实际的服务。Traceroute 可以显示诊断响应在哪里中断,不过它也有自己的局限。
报告问题时,请附上时间、网络、目的地和探测次数,而不是只给出一个漂亮的数值。不要用频繁的测试去冲击别人的系统。如果只有某一个网站打不开,而其他目的地都正常,请把该网站及其路由与您的整体互联网连接分开排查。
抖动是指相邻几次延迟之间的波动。它对通话和游戏影响尤其大:即使平均延迟看起来还可以,不规律的响应时间也可能造成卡顿。
ICMP 不等于连接质量
Ping 使用的是 ICMP Echo,但 ICMP 还承担其他控制功能。收不到 Echo Reply 可能只是因为过滤或诊断流量优先级低,所以要结合应用的实际表现来判断。请参阅 ICMP 以及延迟、抖动与丢包。