Ping 干的事很简单:向目标发一个 ICMP Echo Request,等它回一个 Echo Reply,算出往返耗时。

Ping 检测首页:多节点并发探测,输出延迟、丢包与抖动

Ping 检测首页:多节点并发探测,输出延迟、丢包与抖动

但它的边界也很清楚:只覆盖网络层。 不涉及 DNS 解析,不涉及 TLS 握手,也不涉及页面渲染。所以 Ping 通不代表网站一定能打开,Ping 不通也不代表网站不可用——这两句话是理解 Ping 的前提。

三个数字

一次 Ping 检测会给出三组信息:

  • RTT(往返延迟):发出到收回的时间,单位毫秒
  • 丢包率:发出去的包有多少没回来
  • 抖动:最大延迟与最小延迟的差值,反映稳定性

延迟看的是「快不快」,丢包看的是「稳不稳」,抖动看的是「稳不稳得住」。三个一起看,才是完整判断。

ICMP 到底测了什么

从你的节点到目标之间,要经过十几跳路由。ICMP 包走的是这条路径的网络层,沿途每一跳的排队、转发、拥塞都会体现到 RTT 上。

所以 Ping 的结果本质上是链路质量的度量:距离越远、跳数越多、互联越差,数字越大。

它不关心目标上跑的是 Nginx 还是 Apache,也不关心证书有没有过期。这些都属于上面的层。

为什么 Ping 通但网站打不开

四种常见情况:

  • 端口没开放:80/443 被防火墙挡了,ICMP 却放行
  • DNS 解析错误:IP 通,域名指错了地方
  • 证书过期或被拒:浏览器直接拦截
  • 后端服务挂了:网关在,应用不在,返回 502

这四件事 Ping 全都测不出来。反过来说,Ping 报异常时也不能直接判定「网站挂了」,得往上走一层确认。

为什么 Ping 不通但网站正常

因为很多服务器出于安全考虑关了 ICMP。

这是行业惯例——ICMP 常被用于探测和放大攻击,云厂商和机房的默认策略里经常直接丢弃。这时候 Ping 全部超时,但网站一点问题没有。

遇到这种情况,用 TCPing 打业务端口:它走 TCP 握手,不依赖 ICMP,能测出真实的连通性。

它适合回答什么

  • 这台机器的网络通不通
  • 到各地的链路质量怎么样
  • 丢包是不是集中在某些地区
  • 延迟抖动是不是变大了

不适合回答:网站能不能打开、页面加载多快、证书有没有问题、服务端处理要多久。

分清楚这条线,就不会拿着 Ping 结果去解释一个它根本管不到的问题。