这看起来可能是 MTU 探测行为。引用我写的一篇关于路径 MTU 发现的文章:
MTU 探测的工作原理是首先发送小数据包,如果成功确认,则逐渐增加数据包大小,直到找到正确的路径 MTU。
在Linux中,我们可以修改该值
/proc/sys/net/ipv4/tcp_mtu_probing如下:
- 0 - 禁用(默认)
- 1 - 仅当检测到 PMTU 黑洞时启用
- 2 - 始终启用,使用初始 MSS 值
tcp_base_mss值 1 将使用正常的 PMTUD 过程,但是如果数据包未得到确认,MTU 探测将启动并开始重新传输数据包,并将 MSS 设置为值
tcp_base_mss(默认 512 字节)。假设这些数据包被最终主机接收并成功确认,数据包大小将进一步增加并重复该过程。这种探测方法的优点是,它仅在您开始发送重传时发挥作用,因此到达该点的所有其他流量均使用默认 MTU 发送。主要缺点是重传流量增加,并且可能需要一段时间才能等待更高 MTU 的重传发生。值 2 只是强制始终进行 MTU 探测,因此所有数据包最初都将使用等于 MSS 的 MSS 发送
tcp_base_mss,如果得到确认,大小将逐渐增加。使用此方法,您不必在 MTU 探测开始之前等待重传,但是所有出站数据包最初都非常小,使得这种探测方法的效率比选项 1 低得多。