延迟(Ping)衡量的是数据传输的速度,而丢包(Packet Loss)衡量的是数据传输的完整性。即使延迟很低,高丢包率也会使网络体验变得极差。理解丢包有助于你更好地诊断网络问题。
丢包的定义
在网络通信中,数据以**数据包(Packet)**的形式传输。每一个数据包都是独立发送的,从发送方到接收方经过多个路由器中转。
丢包是指:在这个传输过程中,部分数据包在途中丢失,没有成功到达目的地。
丢包率通常用百分比表示。例如:
- 发送了 100 个数据包,99 个到达 → 丢包率 1%
- 发送了 100 个数据包,95 个到达 → 丢包率 5%
网络协议(如 TCP)会尝试重传丢失的数据包,但重传需要额外时间,因此丢包不仅会造成数据损失,还会显著增加实际体验延迟。
常见原因
1. 网络拥堵
这是丢包最常见的原因。当大量数据同时通过一个路由节点时,路由器的缓冲区满了,新来的数据包会被直接丢弃。公网中转线路在晚高峰期最容易出现这种情况。
2. 物理线路质量差
网线、光纤、Wi-Fi 信号弱等物理层问题会导致数据包在传输过程中损坏,损坏的包会被接收方丢弃。
常见场景:
- Wi-Fi 信号弱(< -70dBm)导致丢包
- 网线接头松动或损坏
- 长距离铜缆的信号衰减
3. 路由器/交换机过载
如果你的家用路由器连接的设备太多,或者同时有大量下载任务,路由器的处理能力饱和,也可能丢弃部分数据包。
4. GFW 干扰
在使用代理的场景下,GFW(防火长城)对某些代理协议的干扰会以「主动丢包」的形式出现——即防火墙主动丢弃识别为异常的数据包,表现为间歇性超时或连接中断。
5. 代理节点服务器问题
代理节点服务器本身过载、带宽不足,或者节点服务器所在网络的上行出现问题,也会导致丢包。
如何检测丢包
方法 1:使用 ping 命令
Windows:
# 发送 100 次 ping,检测到目标的丢包率
ping -n 100 8.8.8.8
# 输出结果中会显示:
# 已发送 = 100,已接收 = 98,丢失 = 2 (2% 丢失)
macOS / Linux:
# 持续 ping,按 Ctrl+C 停止后显示统计结果
ping -c 100 8.8.8.8
方法 2:使用 MTR(推荐)
MTR 是 ping 和 traceroute 的结合体,可以同时显示每一跳路由的延迟和丢包率,帮助定位丢包发生在哪个环节:
# Windows(需要先安装 WinMTR)
# macOS(先安装:brew install mtr)
mtr --report --report-cycles 100 8.8.8.8
MTR 的输出会显示从你的设备到目标的每一个中间节点,以及每一跳的丢包率。如果丢包只从某一跳开始出现,说明问题出在那个节点处。
方法 3:在线测速工具
访问 https://www.speedtest.net/ 或 https://fast.com/,这类工具会在测速的同时检测丢包情况。
丢包对不同业务的影响
| 业务类型 | 对丢包的敏感度 | 丢包 1% 的影响 | 丢包 5% 的影响 |
|---|---|---|---|
| 竞技游戏(FPS) | 极高 | 偶发卡顿 | 严重卡顿,不可玩 |
| 视频通话(Zoom) | 高 | 轻微花屏/声音断续 | 明显卡顿、语音中断 |
| 流媒体(Netflix) | 中 | 基本无感(TCP 重传) | 偶发缓冲 |
| 文件下载 | 低 | 速度略慢(重传开销) | 速度明显变慢 |
| 网页浏览 | 低 | 页面加载略慢 | 部分元素加载失败 |
常见解决方法
1. 切换到专线节点
IPLC / IEPL 专线的丢包率通常在 0.1% 以下,而公网中转在高峰期可达 3-10%。如果你正在使用公网中转节点,切换到同一机场的专线节点通常能立竿见影地改善丢包。
2. 更换代理协议
部分协议(如 Hysteria2)内置了针对高丢包环境的优化,基于 QUIC 协议,在丢包情况下能更好地维持连接质量。如果机场提供 Hysteria2 节点,可以在高丢包环境下尝试。
3. 检查本地网络
排查路由器、网线和 Wi-Fi 信号问题:
- 将设备改为有线网络连接,排查 Wi-Fi 干扰
- 重启路由器
- 检查网线接头是否牢固
4. 避开高峰期
公网中转节点的丢包高峰通常在晚间 20:00-23:00。如果对丢包敏感,在这段时间使用专线节点,非高峰期再切回普通节点。