TCP 拨测的「连接耗时」是什么?用三次握手耗时判断到服务器的网络延迟
用宝塔拨测(t.bt.cn)的 TCP 方式测端口,结果里除了「通不通」,还有一个关键指标——「连接耗时」。它是一次 TCP 三次握手(SYN → SYN-ACK → ACK)的往返耗时,也就是「连接建立要多久」。它只反映网络层的往返延迟,不含 TLS 握手、不含服务器处理、不含内容传输,所以是判断「到服务器的网络到底远不远、快不快」最干净的一个数字。
下面用对 www.bt.cn:443(国内 CDN)和 github.com:443(海外)两次真实 TCP 拨测的对比,演示怎么看这个指标。
连接耗时 = 三次握手一个往返的时间
TCP 拨测的目标是「域名:端口」。检测节点向目标端口发起连接,如果端口开放,就完成三次握手并记录这次握手耗时;如果连不上,就报连接失败。所以 TCP 拨测给你两层信息:
| 维度 | 看什么 | 回答的问题 |
|---|---|---|
| 通不通 | 端口是否开放、成功节点比例 | 端口有没有监听、防火墙有没有放行 |
| 连接耗时 | 三次握手的往返耗时 | 到服务器的网络延迟有多高 |
对比 HTTP 拨测:HTTP 的总耗时里既有网络往返,也混进了服务器处理、TLS 握手、内容传输;而 TCP 拨测的「连接耗时」只有网络往返这一段,所以拿它判断「服务器离我远不远」更纯粹。
实测:国内 CDN 站 vs 海外站,连接耗时差多少
我在 2026-09-30(北京时间)对两个目标各做了一次 TCP 拨测,结果如下(以下数值只代表本次采集时刻的情况,连接耗时会随网络波动和节点调度变化):
| 指标 | www.bt.cn:443(国内 CDN) | github.com:443(海外) |
|---|---|---|
| 成功节点 | 367/367(100%) | 334/367(91%) |
| 连接耗时中位数 | 63.3ms | 123.6ms |
| 连接耗时 p95 | 495.5ms | 1172.3ms |
| 最快节点 | 深圳-联通 10.9ms | 宿迁-电信 1.4ms |
| 最慢节点 | 以色列 5152.6ms | 吉安-移动 7433.3ms |
两个目标都覆盖 60 个省份/地区(大陆 31 个、港澳台及海外 29 个)。最直观的差距:国内 CDN 站连接耗时中位数 63.3ms,海外站 123.6ms,几乎翻倍;而海外站的失败节点有 33 个(成功率 91%),国内站一个失败都没有。
为什么差距这么大?看解析位置和运营商
差距的根源是「服务器在哪」。TCP 连接耗时的长短,主要取决于检测节点到目标服务器所在地的物理距离。
www.bt.cn 解析到了广东广州的中国联通 CDN 边缘(本次 367 个节点解析 IP 位置全部是广东/广州/中国联通)。所以离广东越近、走联通的节点,握手越快:
- 联通节点平均 60.4ms(最快)
- 电信节点平均 120.5ms
- 移动节点平均 121ms
- 海外节点平均 486.3ms(最慢,物理距离最远)
而 github.com 的服务器在海外,解析 IP 位置分散在新加坡、美国、日本、韩国等多个地区(其中新加坡最多,292 个节点)。于是方向反过来:
- 海外节点平均 51.8ms(最快,离服务器近)
- 港澳台节点平均 59.1ms
- 联通节点平均 222.4ms
- 电信节点平均 398.3ms
- 移动节点平均 483ms(最慢,跨境链路最长)
一句话:同一个端口,国内站快在「服务器在国内」、海外站慢在「服务器在海外」,跟端口本身没关系。
海外站的连接超时:33 个节点失败
github.com:443 这次有 33 个节点没完成拨测,全部报 TCP_CONNECT_FAILED,其中绝大多数错误信息是 dial tcp4 …:443: i/o timeout(连接超时),集中在移动、电信节点(如江苏无锡移动、浙江温州移动、广东惠州移动、安徽淮北移动等;个别节点如新疆乌鲁木齐电信报的是 IPv6 地址 cannot assign requested address)。
这说明这些检测节点到 GitHub 的跨境链路质量不稳定——不是 github.com 的 443 端口没开放(否则应该 367 个节点全失败),而是「部分运营商的跨境路由到不了或超时」。对比之下,www.bt.cn:443 一次失败都没有,这就是「服务器在国内、走国内 CDN」和「服务器在海外、裸跨境访问」在端口层最直接的差别。
怎么读 TCP 拨测的连接耗时
看一个 TCP 拨测结果,按这个顺序判断:
- 先看成功率:大面积失败报连接超时,是链路问题;只有个别节点失败,多半是检测节点自身的解析异常。
- 再看连接耗时中位数:国内站几十毫秒、海外站上百毫秒是常态。国内站若普遍几百毫秒,先查服务器是不是在海外、有没有接国内 CDN。
- 最后看运营商/地区差异:哪个运营商或地区明显偏慢,往往就是它到服务器的路由有问题,可以针对性优化(如为该地区加 CDN 边缘节点)。
端口层判断用 TCP 拨测的「通不通」,判断「到服务器快不快」用「连接耗时」——两者合起来,才是端口连通性的完整画像。
常见问题
TCP 拨测结果里的「连接耗时」是什么?
是检测节点和目标端口完成一次 TCP 三次握手(SYN → SYN-ACK → ACK)的往返耗时,也就是「连接建立要多久」。它只反映网络层的往返延迟,不含 TLS 握手、不含服务器处理、不含内容传输,所以比 HTTP 总耗时更纯粹地反映到服务器的网络距离。
TCP 拨测的「连接耗时」和「通不通」有什么区别?
「通不通」看端口是否开放(能否建立连接),「连接耗时」看连接建立得快不快。同一个端口可能通但很慢:连接耗时高说明检测节点到服务器的物理距离远或链路质量差。两者叠加才能完整判断端口层状况。
为什么同一个端口,不同运营商的连接耗时差很多?
连接耗时主要取决于检测节点到目标服务器所在地的物理距离和路由路径。本文实测 www.bt.cn:443 解析到广东广州的 CDN 边缘,所以离得近的联通节点平均只要 60.4ms,海外节点要 486.3ms;github.com 的服务器在海外,海外节点平均仅 51.8ms,而大陆电信、移动节点要 398.3ms、483ms。
连接耗时多少算正常?
国内访问国内站点,连接耗时通常几十毫秒(本文 www.bt.cn:443 中位数 63.3ms);国内访问海外站点普遍上百毫秒(本文 github.com:443 中位数 123.6ms)。如果国内站点连接耗时普遍超过几百毫秒,就要排查是不是服务器在海外、没接国内 CDN,或运营商路由异常。
TCP 拨测显示部分节点连接超时(i/o timeout)是什么原因?
连接超时说明这些检测节点在时限内没能和目标端口完成三次握手,常见原因是该节点到目标服务器的链路质量差或被中途丢弃。本文 github.com:443 有 33 个节点报 TCP_CONNECT_FAILED(i/o timeout),集中在移动、电信节点,指向部分运营商到 GitHub 的跨境链路不稳定。