看网络质量,大多数人只看延迟和速度。但真正决定"用起来跟不跟手"的,是丢包和重传——延迟 80ms 但零丢包,体验远好于延迟 30ms 但丢 3%。
怎么看重传
# 看当前连接的详细信息
ss -tin
# 只看某个目标
ss -tin dst 1.2.3.4
输出里会有一行类似:
retrans:0/120 rtt:45.2/8.1
分子是重传次数,分母是发出的总包数。 上面这个意思是:总共发了 120 个包,重传了 0 个。
多少算高
| 重传比例 | 判断 | 体验 |
|---|---|---|
| < 0.5% | 正常 | 几乎无感 |
| 0.5% – 2% | 轻微丢包 | 偶尔卡一下 |
| 2% – 5% | 明显异常 | 视频缓冲、语音断续 |
| > 5% | 严重 | 基本不可用,需要换线路 |
重传的三种原因
一、链路丢包
最直接。包在中间某个节点被丢了,发送方超时后重传。跨境线路、Wi-Fi 信号弱、运营商拥塞都会导致。
判断方法:mtr 看哪一跳开始丢包。如果是中间某一跳丢、后续不丢,通常不影响;如果是最后一跳持续丢,那是你这一侧的问题。
二、MTU 不匹配
包太大过不去,被丢弃,然后重传同样大的包,再丢。表现是"小文件正常,大文件卡死"。
这种重传有个特征:重传次数会跟着包大小走,而不是随机分布。
三、Wi-Fi 干扰
2.4G 频段拥挤、距离远、隔墙多,都会导致大量重传。这种情况下 ping 可能很稳(小包),但一传数据就掉速。
判断方法:换成有线或者 5G 频段再测一次,重传率明显下降就是 Wi-Fi 的问题。
和 ping 的关系
ping 走 ICMP,不发实际数据,所以丢包率高的时候 ping 可能依然很稳——路由器对 ICMP 的优先级和转发策略,跟 TCP 数据不一样。
这就是为什么"ping 20ms 但用起来很卡"完全可能同时成立。
怎么处理
- 先
mtr定位是哪一段丢 - 本地:换有线、换 5G 频段、关掉占用带宽的程序
- 线路:换节点,优先挑重传率低的
- 如果只在特定网站重传高,那是对方服务器或中间链路的问题,换线路也未必好
💡 一句话:延迟决定"快不快",丢包决定"稳不稳"。选节点时先看丢包,再看延迟。
延伸阅读:延迟怎么测才准、MTU 与分片、为什么晚上八点特别慢。