TCP 碎片在 TCP 服务器中保留多长时间

TCP 碎片在 TCP 服务器中保留多长时间

假设给定的 TCP 片段被分割成两个 IP 数据报,并且第一个数据报到达 TCP 服务器,但第二个数据报永远不会到达。

经过一段时间后,TCP 服务器会发送一个 keepalive 消息,并确定客户端处于活动状态。那么 TCP 服务器会如何处理第一个数据报?是等待第二个数据报到达,还是丢弃第一个数据报?

答案1

片段重组超时到期后,片段将被丢弃;另一端需要重新传输。

此超时通常是可配置的。在 Linux 上,默认为 30 秒,通过 进行控制/proc/sys/net/ipv4/ipfrag_time

答案2

这个问题没有明确的答案;

如果你看到在有关自适应重传的文章中,您将看到 TCP 使用 RTT 作为计算适当延迟的一个因素。

是一篇更详细的文章。本质上,没有专门针对碎片的特殊超时值。

不过,思科的文章指出,IOS XR 虚拟防火墙的片段默认超时时间为 10 秒,并有自己的可配置计时器。我之所以要链接这篇文章,是想说明操作系统和设备的行为方式会有所不同,如果您通过这样的设备传递连接,则可能会对您的连接产生负面影响。

如果您想测试碎片延迟的影响,最好将两台相同配置的机器通过交叉连接起来,然后从那里开始测试。

相关内容