延迟、丢包和抖动——故障测试必知必会
网络性能的三大关键指标是延迟、丢包和抖动。今天我们就来聊聊这三者,尤其聚焦在“延迟”和“丢包”这两个对应用性能影响最大的“罪魁祸首”。
绝大多数应用都依赖 TCP(传输控制协议)将数据从 A 点传输到 B 点,换句话说,85% 的互联网流量都跑在 TCP 上。TCP 有个有趣的特性:它完全屏蔽了底层网络的分包机制,让上层应用几乎感知不到网络传输中可能出现的“风吹雨打”。不管是像 Telnet 或 SSH 这种“一封一收”的小打小闹,还是像 FTP 这类大文件传输的“洪水猛兽”,TCP 都能把数据打包、排队,然后按部就班地发出去。即使途中丢了包、顺序乱了,TCP 也会兢兢业业地重传、排序,最后把“整整齐齐”的数据交给应用层,妥妥的“保姆级服务”。
延迟
早期的网络协议多是在局域网或校园网环境下设计的,数据往返只需几毫秒,快得让人“眼睛都不眨”。可一旦放到全球互联网这个大江湖,哪怕数据包只绕地球一圈,至少也得十来毫秒;再来个返回包,往返就飙到 200 毫秒。别忘了,光纤里的光速虽然不如真空快,但也有每秒 20 万公里,粗略一算,每 100 公里 RTT 就要 1 毫秒。
排队理论告诉我们,链路越繁忙,等候时间就越长。想象你在邮局排队,前面的人越多,你越是干着急。假如一条 10 Gbps 的链路跑到了 80% 的利用率,等你这个数据包一到,前面已经排了四个包。要是到了 99%,队伍直接拉长到 99 个包。虽然在高带宽下这些排队时间不算啥,传 99 个 500 字节的包只要 0.248 毫秒,但一旦链路被过度使用,比如 99.9% 的利用率,那排队延迟就有可能“节节攀升”。
TCP 为了在高延迟网络下也能稳定“打工”,引入了多种机制,最核心的是:确保传输中始终有足够多的数据包流动。如果每发一个包都要等对方说“我收到了”再发下一个,那传输效率低得连蜗牛都嫌慢。200 毫秒 RTT 的链路上每秒只能发出 5 个包,这谁受得了?于是 TCP 会尽量让链路“吃饱”,但不至于“撑死”,这对大流量的长连接下载效果拔群。
可一旦遇上短连接,比如加载网页小图标、接口响应这些“小碎步”,慢启动机制就成了拖后腿的“绊脚石”。每次都要“从头跑起”,还没加速就跑完了。现在的浏览器为了提速,会复用已经“加速完成”的 TCP 会话,避免一再慢启动。然而,有些开发经验不足的软件常常“一开一关”,频繁新建 TCP 连接,这种“断断续续”的策略在远距离传输或带宽吃紧的场景下性能会直线下滑。
而且别忘了,几乎所有 TCP 连接都要先查 DNS,如果 DNS 服务器响应慢,那整个流程都会像“老牛拉破车”一样拖沓。所以,优先选择靠近的 DNS 服务器,绝对是事半功倍。
丢包
理想状态下,网络应该是“滴水不漏”的,可现实总爱开玩笑。数据包会因为比特翻转或干扰丢失,尤其是在无线网络中,即便有纠错码也无法“百发百中”。
丢了包怎么办?TCP 自然是“反复确认、重新传”,但这就要耗时间了。比如一个 RTT 为 200 毫秒的连接,每秒发送 1000 个数据包,当包号 500 丢失时,发送方其实正在发 700 号,确认包也只是刚到 400。那就得等确认到 499、501,才能发现 500 丢了,此时 TCP 已传了一大段数据,而接收方为了保持顺序,只能“死守”501 到 700 这些数据,等那“姗姗来迟”的 500 包归队。
如果这种丢包情况频繁发生,而 RTT 又高,TCP 的缓冲区就会不堪重负,结果就是“全线暂停”直到丢失的包重传成功。简单说,高延迟能忍、高丢包也能熬,可“两害齐发”,那就是 TCP 的“灾难现场”。
还有一种更常见的丢包场景:TCP 发送太快,网络设备缓冲区来不及处理,只能“忍痛割爱”,直接丢掉多余的数据包。TCP 也不知道是哪儿的问题,只能默认为“网络太挤”,于是自动减速。幸运的话可以触发“快速重传”机制,问题不大。但如果最后几个包掉了,重传不及时,TCP 就得等到超时再来一次“慢启动”,整个连接性能会严重受挫。
这个“慢启动循环”对于短时 Web 请求尤为致命,用户可能看到页面加载只差最后一张图,可那张图“卡壳”一秒才来,这种体验可不太妙。此时,断开重来往往比苦等超时要高效得多。
抖动
抖动说白了就是数据包传输时间的“不稳定”。虽然光速不变、光纤不动,但链路拥堵时,数据包在路由器里排队时间不一,有时候“秒进秒出”,有时候“等到花儿都谢了”。
对 TCP 来说,抖动问题还算可控——只不过得用保守的 RTT 估计和更长的超时。可对实时音视频就“伤筋动骨”了,因为音视频播放讲究“稳准快”,延迟波动大,就会出现卡顿、掉帧,甚至音画不同步。此时,应用只能选择“等慢包”或者“丢慢包”,要么增加延迟,要么增加丢包率,真是“左右为难”。
总结
在多条网络路径共存的环境中,选择一条低延迟、低丢包、低抖动的“黄金通道”至关重要。路径长、路况差的线路,就算“绕远路也不能绕远心”。Noction 在路径选择方面拥有领先的智能算法,能根据实时丢包率和延迟指标,动态选择表现最优的线路,帮助应用如虎添翼。欢迎了解我们的智能路由平台,看看它如何助力网络提速降本。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-24,如有侵权请联系 cloudcommunity@tencent 删除性能tcp连接数据网络