ping 发送 ICMP 回显请求并报告观察到的应答。它测试到某个地址的一条控制消息路径,并不能证明 TCP、UDP、DNS、身份认证或应用程序正常工作。
故障排除 · 第 2 课
ping
了解如何运行有界的 ping 测试,以及如何解读应答、丢包、RTT、TTL 和局限性。
运行有界测试
在常见 iputils 实现中,发送三次 IPv4 请求,并为每个数据包设置两秒超时:
$ ping -4 -c 3 -W 2 example.com
使用 -6 选择 IPv6。请记录解析出的地址,因为一个主机名可以返回多个地址,而重复运行时可能选择不同地址。
-c 3 要求什么?
序列与丢包
icmp_seq 标识本次运行中的各次请求。缺失的应答会计入观察到的丢包,而乱序应答可能反映时延变化。小样本的噪声很大;应比较多个有界时间段,并结合应用程序自身的错误率。
丢包可能发生在任一方向,ICMP 速率限制也可能让 ping 丢包率与应用程序丢包率不同。
缺少某个 icmp_seq 应答可能表示什么?
往返时间
time 字段是从发送请求到收到应答的往返时间,单位为毫秒。它包含去程时延、远端处理时间和返程时延。没有同步的端点测量,就无法用它得知单向延迟。
报告的 time=23.7 ms 测量了什么?
TTL 或 Hop Limit
显示的 IPv4 TTL 或 IPv6 Hop Limit 是收到应答时的剩余值。如果不知道发送方的初始值和返回路由,就不能通过减法得到准确跳数。数值变化可能表示响应方、初始值或返回路径发生变化。
IPv4 回显应答中显示的 TTL 是什么?
测试正确的层级
如果 ping 成功但服务失败,应测试实际端口、TLS、协议和请求。如果 ping 失败,应先检查名称解析、ip route get、邻居状态、防火墙策略和抓包,再断言主机已停机。
ping 成功无法证明什么?
课程已完成
你已完成 ping
现在,你可以把 ping 用作一项有明确边界的 ICMP 测量。
选择地址族并记录解析出的地址。
限制次数和等待时间,以便重复测试。
解读丢包时不要假定方向或原因。
把 RTT 视为双向时间,把 TTL 视为剩余值。
单独测试实际应用程序。