网络 · 2026-10-23

路径 MTU 发现失败时,TCP 会怎么表现

PMTUD 依赖 ICMP 的「需要分片」消息。一旦这条消息被防火墙拦掉,发送方不知道包太大,会一直重传同一个满尺寸的段,直到超时退避。

表现出来的现象很有欺骗性:小请求正常,大响应卡住;连接能建立,但传文件到某个点就不动了。用 curl 取一个小页面完全正常,取一个大文件就停。

诊断靠 ping 加 -M do 逐步试尺寸,或者直接抓包看是否有重复的相同长度段。最快的方法是用 tcpdump 看有没有「同一序号重复发送」的包。

解决方式是显式设置 MSS clamp,或者直接在隧道接口上把 MTU 调小。后者更彻底,但也更容易因为路径变化而失效。

← 全部笔记