Ping 测的是网络层,TCPing 测的是传输层。差这一层,能回答的问题就完全不一样了。

它做的事:完成一次握手

TCPing 向目标的指定端口发一个 SYN 包,等对方回 SYN-ACK,收到之后这次探测就算成功,从发出到收到的时间就是握手耗时。

整个过程只走到连接建立这一步,不发送任何业务数据,也不进入交互。所以它很快,也很轻,适合一次打向几十上百个节点。

为什么它比 Ping 更可靠

因为不依赖 ICMP。

很多服务器出于安全考虑禁用了 ICMP,Ping 全部超时,但 80、443 端口好好的,网站照常访问。这种情况下 Ping 给出的结论是错的,而 TCPing 不受影响,它走的是真实业务端口,测出来的就是用户实际能不能连上。

换句话说,Ping 测的是「这台机器在网络里存不存在」,TCPing 测的是「这个服务能不能被连上」。后者离业务更近。

握手耗时里包含什么

  • 网络往返:你的节点到目标之间的物理链路时间
  • 中间设备处理:防火墙、负载均衡、NAT 的转发开销
  • 服务端响应:内核接受连接、协议栈回包的速度

正常情况下,握手耗时比同链路的 Ping 略高一点,因为 TCP 头更大、处理更多。如果高出很多,那就要看看中间是不是有设备在做检查或者限速。

它能回答什么

这个端口开没开、全国各地的用户能不能连上、某个地区是不是被安全组挡了、连接建立要多久、跨运营商访问差异有多大。

这些问题在排查「网站打不开」「接口连不上」「数据库连不上」时,是最先要确认的一层。

它不能回答什么

端口通了之后的请求处理对不对、HTTP 返回码是多少、证书有没有问题、页面加载快不快,这些都在应用层,TCPing 管不到。

握手成功只证明链路和端口是通的,剩下的事要交给网站测速、SSL 检测和日志。