什么是 TCP ping?
TCP ping 通过建立 TCP 连接(而非发送 ICMP echo)来测量主机是否可达以及响应速度。由于在多数托管和 CDN 后方无法使用 ICMP,IPeek 通过对 443 和 80 端口建立 TCP 连接来测量可达性与延迟,并报告多次尝试中的最小、平均和最大往返时间。
TCP ping 与 ICMP ping 的区别
经典的 ping 命令发送 ICMP echo 请求并对回复计时。这在本地网络可行,但在很大一部分公共互联网上会失败,因为防火墙、CDN 和云服务商常常丢弃或降级 ICMP。TCP ping 则改为向某个服务端口建立真实连接,并对握手耗时计时。由于 Web 服务器必须在 443 和 80 上接受连接才能运转,这种方式能可靠地触及那些从不应答 ICMP 的主机,并测量出实际承载你流量的那条路径的延迟。
如何解读你的延迟结果
IPeek 报告多次尝试中的最小、平均和最大往返时间。最小值是该路径的最佳延迟;平均值是你通常可以预期的水平。最小与最大之间的差距就是抖动:差距小说明连接稳定,差距大则提示拥塞或主机过载。粗略来说,低于 50 ms 为优秀,50 到 150 ms 在跨区域时属正常,而持续偏高或剧烈波动则指向值得调查的网络或服务器问题。
何时该用 TCP ping
当普通 ping 报告 100% 丢包但站点明明能打开时,就该用 TCP ping,这只不过说明 ICMP 被过滤了。用它来确认服务器在其 Web 端口上接受连接、从你所在位置比较到某主机的延迟,或在间歇性变慢演变成宕机前发现它。当你关心真实用户体验时,它也是最诚实的测量,因为它对浏览器和 API 实际使用的同一条 TCP 路径计时,而不是另一条 ICMP 通道。
为什么 ICMP 常被屏蔽
运营方屏蔽或限速 ICMP 以减少攻击面和噪声:ICMP 洪泛曾是经典的拒绝服务手段,而 echo 回复会泄露有助于侦察的信息。CDN 和负载均衡器还会在边缘终止连接,因此 ICMP ping 测到的是最近的边缘节点而非源站。正因如此,ICMP ping 失败完全说明不了站点是否在线。对服务实际监听的端口做 TCP ping,才能就可达性给出可靠的是或否。