ping 是什么?如何用 ping 检测网络连通性与延迟

更新时间

ping 通过向目标主机发送 ICMP 回显请求(Echo Request),等待对方返回回显应答(Echo Reply),从而测量数据包往返时间(RTT,即延迟)并统计丢包率。它适合快速判断“这台机器到目标 IP 是否可达、链路质量如何”,但不能证明网站服务正常——ping 通只说明主机网络层可达,HTTP 服务可能仍然挂掉。适用条件:你有命令行环境(Windows、macOS、Linux 均可),且目标主机或中间防火墙没有屏蔽 ICMP。

基本原理:一次 ping 发生了什么

  1. 本机向目标 IP 发出一个 ICMP Echo Request,携带序号和时间戳。
  2. 目标主机(或网关)收到后回一个 Echo Reply。
  3. 本机用收到应答的时间减去发出时间,得到往返延迟;序号缺失则计为丢包。
  4. 应答中的 TTL 值每经过一个路由跳减 1,可粗略推断经过的跳数。

因此 ping 结果里的 time 是往返时间,TTL 反映路径长度,丢包率反映链路稳定性。

各平台常用命令

平台 基本命令 常用参数 说明
Windows ping example.com -n 10 指定次数,-t 持续 ping,-l 1472 指定负载大小 默认发 4 次
macOS ping example.com -c 10 指定次数,-i 0.5 间隔秒数 默认持续,需 Ctrl+C 停止
Linux ping example.com -c 10 指定次数,-i 0.2 间隔,-W 2 超时秒数 默认持续

示例(Linux/macOS 发 10 个包):

ping -c 10 example.com

预期输出末尾会给出统计:10 packets transmitted, 10 received, 0% packet loss,以及 min/avg/max/mdev 的延迟分布。Windows 则显示“已发送 = 10,已接收 = 10,丢失 = 0 (0% 丢失)”和“最短/最长/平均”往返时间。

如何解读结果

  • 延迟(time/平均往返时间):局域网通常 <1 ms;同城公网几毫秒到十几毫秒;跨洲几十到两百毫秒以上都属正常范围。数值稳定比绝对大小更重要。
  • 丢包率:0% 为理想;偶发 1%–2% 可能只是瞬时拥塞;持续丢包说明链路或目标有问题。
  • 延迟抖动(mdev/标准差):抖动大意味着网络不稳定,语音、视频类应用会明显受影响。
  • TTL:可辅助判断是否经过多层路由,但不同系统初始 TTL 不同(常见 64、128、255),只能粗略参考。
  • 请求超时(Request timed out):可能是丢包、目标屏蔽 ICMP,或路径中断,需结合后续排查。

ping 不通时的排查顺序

按“由近到远”逐层排除,每步都有明确预期结果:

  1. 本机回环:ping 127.0.0.1。不通说明本机 TCP/IP 协议栈异常。
  2. 本机 IP:ping 本机局域网 IP。不通说明网卡或驱动问题。
  3. 网关:ping 默认网关(用 ipconfig/ip route 查)。不通说明本地网络或网线/Wi-Fi 问题。
  4. 公网 IP:ping 8.8.8.8 或 ping 1.1.1.1。不通说明出口网络或运营商链路问题。
  5. 域名解析:ping example.com 若提示“找不到主机”,先用 nslookup example.com 或 dig example.com 检查 DNS;能解析出 IP 但 ping 不通,再回到第 4 步判断是链路还是目标屏蔽。
  6. 目标屏蔽 ICMP:很多服务器和云防火墙默认丢弃 ICMP。此时 ping 不通不代表服务不可用,改用 curl -I https://example.com 或 telnet example.com 443 验证端口与服务。

常见卡点:公司网络或云安全组屏蔽 ICMP 导致“假不通”;目标只禁 ping 但 Web 正常;本地开了代理/VPN 使路径变化,结果与直连不同。

ping 与网站可用性监控的区别

ping 检测的是主机网络层可达性,而网站可用性监控检测的是应用层服务是否正常响应。两者互补:

  • ping 通、但 HTTP 返回 502 或超时——主机活着,Web 服务挂了。这时需要的是 HTTP 探测,而不是 ping。
  • 主机被防火墙禁 ICMP、但网站正常——ping 不通,服务却可用。

Pingmeter 这类监控服务的做法可以说明这一区别:它从多个国家、多个地点的服务器每分钟对网站发起扫描,先做误报防护(从多个位置复核错误,排除瞬时网络抖动),确认宕机后还有延迟告警窗口,在窗口内持续观察是否自行恢复,只有问题持续才通过短信、语音电话或邮件通知。它还能在宕机时执行恢复动作,例如通过 Cloudflare 等 DNS 服务商 API 把域名自动切到备用服务器(DNS Failover),并支持维护模式避免计划内维护触发告警。这些能力都建立在“服务层探测 + 多位置复核 + 恢复动作”之上,是单纯 ping 命令做不到的。

所以实践中的分工是:用 ping 做本机到目标的快速连通性与延迟初判;用 HTTP/端口探测或专业监控服务判断网站是否真正可用,并在宕机时获得告警与自动恢复。

快速上手清单

  • 想测延迟和丢包:ping -c 20 目标(Windows 用 ping -n 20 目标),看平均延迟与丢包率。
  • ping 不通先按“回环 → 本机 IP → 网关 → 公网 IP → DNS → 目标端口”顺序排查。
  • 判断网站是否可用,别只看 ping,用 curl -I 或监控服务验证 HTTP 响应。
  • 需要 7×24 告警和自动切换,考虑带多位置扫描、误报防护、延迟告警和 DNS Failover 的监控服务。