延迟、丢包与抖动到底有什么区别

· 编辑部

这三个指标经常被混为一谈,但它们描述的是完全不同的现象,对应的体验问题也不一样。

延迟(Latency)

数据包从发出到收到回应的往返耗时,单位毫秒。命令行里执行:

ping example.com

输出中的 time= 就是单次往返延迟。

影响的是响应速度——延迟高时,点击后到看到反应之间有明显停顿。对网页浏览影响有限,对实时交互影响显著。

丢包(Packet Loss)

发出的数据包中没有到达目的地的比例。同样用 ping 观察,统计行会给出:

20 packets transmitted, 19 received, 5% packet loss

影响的是完整性。TCP 会自动重传丢失的包,代价是额外耗时,表现为「时快时慢」;UDP 不重传,表现为通话断字、画面撕裂。

抖动(Jitter)

延迟的波动幅度。平均延迟 50ms 有两种截然不同的情况:

情况 每次延迟 抖动 体验
A 48, 50, 52, 49, 51 流畅
B 10, 90, 15, 85, 50 卡顿明显

两者平均值都是 50ms,但 B 的体验糟糕得多。

影响的是稳定性。播放器依靠固定节奏的数据到达来维持缓冲,到达时间忽快忽慢会导致缓冲反复耗尽。

三者的对应关系

症状 最可能的原因
点击后反应慢,但内容一旦开始加载就很流畅 延迟高
加载时快时慢,进度条反复停顿 丢包
平均速度不慢,但视频每隔几秒缓冲一次 抖动大
通话断断续续、对方声音有缺失 丢包 + 抖动

怎么测

单次 ping 的样本量不足以判断丢包和抖动。至少连续测量 50 次以上:

ping -c 50 example.com

统计输出会同时给出丢包率和延迟的最小/平均/最大/标准差,其中标准差就是抖动的量化值

只看平均延迟而忽略标准差,是最常见的误判来源。

常见问题

延迟低就一定不卡吗?

不一定。平均延迟低但抖动大时,实时应用依然会卡顿,因为数据包到达时间不均匀会打乱播放缓冲的节奏。

多少丢包率算正常?

一般认为 1% 以内基本无感知,1%-3% 在实时通话和游戏中开始能察觉,超过 5% 则明显影响可用性。

ping 值和网速是一回事吗?

不是。ping 衡量的是往返耗时,网速衡量的是单位时间的数据量。低延迟高带宽、高延迟高带宽都可能出现。