延迟、丢包与抖动到底有什么区别
这三个指标经常被混为一谈,但它们描述的是完全不同的现象,对应的体验问题也不一样。
延迟(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 衡量的是往返耗时,网速衡量的是单位时间的数据量。低延迟高带宽、高延迟高带宽都可能出现。