在使用科学上网工具时,你是否遇到过“小文件下载正常,但大文件传输中断”或“部分 HTTPS 网站响应极慢,一直转圈”的情况?这往往与 MTU(最大传输单元) 和 MSS(最大报文段长度) 设置不当导致的网络分片(Packet Fragmentation)有关。
一、什么是数据包多层封装?
以访问一个 HTTPS 网页为例,当流量经过代理软件(如 Clash)和中转专线时,数据包被进行了多层“包装”:
- 原始数据:HTTP/2 网页数据
- TLS 协议层:增加 TLS 记录头(+5 字节)
- 代理协议层:增加 VLESS / Shadowsocks 头部(+16~32 字节)
- 传输层:增加外层 TCP/UDP 头部(+20~32 字节)
- 网络层:增加 IPv4 / IPv6 头部(+20~40 字节)
由于以太网的标准 MTU 规定每个物理数据帧最大不能超过 1500 字节,如果加上多层代理头部后的数据包总长度超过了 1500 字节,路由器就必须将其强行“撕裂”拆分成两个或多个小数据包发送。
二、数据包分片带来的严重后果
- 性能骤降:拆包与解包会消耗大量路由器 CPU 资源。
- 黑洞丢包(PMTUD Black Hole):若数据包设置了
DF (Don't Fragment)标志,且中间路径上的路由器不允许分片,该数据包会被直接丢弃且没有任何错误返回,造成网页彻底卡死。
三、如何计算并设置最佳 MTU / MSS
对于绝大多数代理客户端与虚拟网卡(TUN 模式):
- 常规推荐 MTU:建议设置为
1380或1400(留出约 100 字节给各种协议头部)。 - TCP MSS 钳位(TCP MSS Clamping):
在客户端或软路由中开启
mss-clamping: true,软件会自动修改 TCP 三次握手时的 MSS 协商值,强制目标服务器发送更小的数据包,从源头杜绝分片。
* 点击复制包含绝对主地址的分享链接