把端到端时延量准:一套可复现的工具与判读方法

快连电脑版真实延迟测试示意图

挑线路的时候,多数人先扫列表里那个毫秒数字,挑最小的点下去;实测里 120 次往返之后反差的例子不少:数字只有几十毫秒的那条线路用着发涩,标着一百多毫秒的反而顺手,这种事并不罕见。

原因在于列表里那个数字通常量的是节点入口延迟,而非你要访问的那一端端到端真实延迟。想把一条线路摸清楚,得围绕常用的几个目标各测几轮;下面按工具、流程、判读三段展开,文中阈值取自一轮采样,跨区往返中位数 62 ms、早高峰 71 ms。

一、列表里的毫秒数字为什么偏乐观

客户端给出的那个值,多半是每 30 秒朝接入点打一个轻量探测包算出来的,按这一采样口径它只说明你的机器到接入点这一段的往返耗时。真正打开网页时,请求还要从接入点继续往外走,那一段完全没算进这个数字里。

真实延迟的构成

真实延迟页面总耗时 = 本机到接入点 + 接入点内部处理 + 接入点到目标站 + 目标站自身的应答

举例说明:

节点 客户端显示延迟 打开搜索页的实际耗时
香港-高速1 45ms 180ms
日本-优化2 80ms 120ms
美国-硅谷 160ms 165ms

表里那条本地数字最小的线路,落到搜索页上并不占优,另一条本地数字更大却更快。所以说挑线路时那个毫秒数只能当参考。

二、几件顺手的测量工具

工具1:Ping(基础测试)

最老的工具还是 ping,它朝目标发 ICMP 回显请求,算一个来回要多久。

# Windows ping example.com # macOS / Linux ping -c 10 example.com

优点:上手最快,先摸个大概。

缺点:缺点是有些主机直接丢弃 ICMP,也不说明 TCP 与 UDP 的真实表现。

工具二:tcping,贴近真实握手

它直接对目标端口发起握手,量建立连接要多久。

# 在 Windows 上用包管理器装一份 tcping tcping example.com 443 # 测试10次 tcping -n 10 example.com 443

优点:拿到的是握手阶段的真实耗时,与 ICMP 是否被拦无关。

缺点:得先装个额外的小工具。

工具3:MTR(My Traceroute,推荐)

mtr 把逐跳追踪和持续探测并在一起,按 60 次探测的统计盯住整条路径每一段的耗时与丢包变化。

# 安装 mtr # Windows: 下载WinMTR # macOS: brew install mtr # Linux: apt install mtr # 使用示例 mtr example.com

优点:哪一段开始劣化一眼就能看出来,省去逐段猜。

缺点:屏幕上的东西不少,得懂点基础才读得动。

工具4:curl(HTTP层测试)

用 curl 跑一次真实请求,它会把域名解析、连接建立、TLS 协商、首字节到达这几个阶段分别计时。

# 看一次请求各阶段的耗时 curl -o /dev/null -s -w "DNS: %{time_namelookup}s\nTCP: %{time_connect}s\nTLS: %{time_appconnect}s\n首字节: %{time_starttransfer}s\n总计: %{time_total}s\n" https://www.example.com

优点:这条数据离用户感受最近,因为整条链路都在里面。

缺点: 需要命令行基础。

工具五:网页版测速站

不愿意敲命令的话,浏览器里也有能用的,下面几家可供参考:

  • Speedtest.net:带宽与延迟一起测,能手动挑测试服务器。
  • Fast.com: Netflix 出品,简单快速。
  • Cloudflare Speed Test: speed.cloudflare.com,能看抖动与丢包两项。
  • LibreSpeed:开源自托管的一支,可自己搭一份。

三、动手量一遍的完整顺序

第一步:先连上一条线路

在客户端列表里挑一条,点连接,等状态灯稳定下来。

第二步:确认流量已走隧道

访问 「https://ip.sb」,看到的应该是接入点所在地。

第三步:拿你常用的站做目标

目标不要随便挑,选你每天真的会打开的那几个:

# 量到搜索站的往返 tcping example.com 443 # 视频站也量一遍往返 tcping www.视频平台.com 443 # 测试到GitHub的延迟 tcping github.com 443

第四步:跑一次完整请求

curl -o /dev/null -s -w "总耗时: %{time_total}s\n" https://www.example.com

第五步:把结果记下来做横向比

同一条线路量三到五轮、每轮 60 次采样,再取中位数填进下面这张表:

线路名称 | 客户端毫秒 | 搜索页往返 | 视频站往返 -----------|-----------|----------|---------- 新加坡 | 14ms | 54ms | 61ms 东京 | 26ms | 62ms | 69ms 法兰克福 | 41ms | 96ms | 108ms

四、数字摆出来以后怎么看

耗时的分档参考

延迟范围 体验评价 适用场景
< 100ms 极佳 联机对战、会议、语音通话,实测 62 ms 以内
100-200ms 良好 翻网页、看视频,实测区间 71 ms 上下
200-300ms 一般 日常浏览尚可,看片容易转圈
> 300ms 较差 建议更换节点

关注抖动(Jitter)

抖动说的是耗时上下浮动的幅度。均值好看不代表稳,忽高忽低的线路用起来照样难受,比如:

  • 节点A:延迟 100ms,抖动 ±5ms → 体验稳定
  • 节点B:延迟 80ms,抖动 ±60ms → 体验卡顿

mtr 的逐跳统计能单独看抖动。

关注丢包率

按一轮 300 次探测的统计,丢包过了 1% 卡顿就能被察觉;到 5%,连接基本维持不下去。mtr 与 tcping 都会把丢包行报出来。

五、客户端自带的那套测速

客户端里其实就有批量测速的入口,精度比不上前面那几件工具,好处是省事:

  • 打开线路列表,点到「测速」那个测速按钮,程序会依次给每条线路打一轮探测。
  • 跑完的结果直接回填到列表里,按毫秒排序就能筛。
  • 部分版本支持 「智能选路」,也可以让它自己挑最快的一条。
建议:两者分工:先用自带测速从上百条里挑出几个候选,再拿命令行工具逐个细量。粗筛省时间,细量保准确。

六、常见问题 FAQ

问一:能 ping 通,网页却打不开
ping 走的是 ICMP,网页走的是 TCP 与 HTTP,两条路未必同时放行。有的线路放行回显请求却卡住 80 与 443 端口,也可能是解析环节出了问题。换 tcping 或 curl 再试一次就能定位。
问二:同一目标量出来的值忽大忽小
常见三处:一是本机网络不干净,无线信号弱或有人在下大文件;二是接入点用户量在变,排队时长跟着变;三是运营商之间的路径在高峰被重选。做法是在不同时段各量几轮取中位数再比。
问三:耗时短就够了吗
不够。耗时短只解决了快的问题,还要看带宽(影响下载速度)、抖动(影响稳定性)、丢包率(这一项决定连接稳不稳)。挑线路时几个指标要合起来看。
问四:联机游戏的耗时怎么量
多数游戏跑在 UDP 上,所以要用能发 UDP 探测的工具(比如udping),不少游戏自带的延迟显示也能凑合看。还可以用mtr --udp对游戏服务器做 UDP 探测。
问五:能不能脚本化批量测量
客户端带命令行模式,可以直接调快连 node --ping "节点名称"对指定线路做单次测量。要跑全量的话,写个循环把列表里的线路名逐个喂进去,结果落成文件就行。

七、延迟优化建议

  • 优先考虑物理位置近的出口:距离短一段,往返时间一般就少一截。
  • 避开高峰时段:晚上八九点以后普遍更慢,尽量避开这段。
  • 使用有线网络:无线比网线多出 10–30 ms,实测区间如此。
  • 把偷带宽的后台程序停掉:边下边看的时候,测量值会被拉高。
  • 定期重新测速:一条线路的好坏会随时间漂移,两三周复测一次比较稳。
  • 启用KTP协议:自研传输协议在丢包偏高的链路上,耗时抬升的幅度会更小一些。

八、总结

把端到端耗时量准,是挑线路这件事里最该先做的一步。读到这里,下面几块内容应该已经清楚了:

  • 列表数字为什么和实际感受对不上
  • 几件工具各自的适用场合
  • 从连上到出结果的一套动作
  • 耗时、抖动、丢包这三项怎么分档看
  • 换线、避峰、复测的几条经验

更实际的做法是给自己建一份线路记录:把每条线路在不同时段的中位数、抖动、丢包记下来,采样满 30 天之后,选线就变成查表。还有疑问可以到快连官网帮助中心翻一翻,或写信给客服。

回到博客目录