akshat Asked: 2016-05-23 03:00:33 +0800 CST2016-05-23 03:00:33 +0800 CST 2016-05-23 03:00:33 +0800 CST 如何设置 linux 通过像 OS X 一样减小数据包大小来重新传输 TCP 数据包 772 在 OS XI 上,对于未确认的数据包,系统会以减小的数据包大小重新传输它们。这可以在下图中看到。 是否也可以在 Linux 系统中启用相同的行为? linux mac-osx tcp mtu 1 个回答 Voted Best Answer Mark Riddell 2016-05-23T07:45:21+08:002016-05-23T07:45:21+08:00 这看起来可能是 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。
这看起来可能是 MTU 探测行为。引用我写的一篇关于路径 MTU 发现的文章: