假设给定的 TCP 片段被分成两个 IP 数据报,并且第一个数据报到达 TCP 服务器,但第二个数据报从未到达。
一定时间后,TCP 服务器发送保活消息,并确定客户端处于活动状态。然后 TCP 服务器如何处理第一个数据报?是等待第二个数据报到达,还是丢弃第一个数据报?
假设给定的 TCP 片段被分成两个 IP 数据报,并且第一个数据报到达 TCP 服务器,但第二个数据报从未到达。
一定时间后,TCP 服务器发送保活消息,并确定客户端处于活动状态。然后 TCP 服务器如何处理第一个数据报?是等待第二个数据报到达,还是丢弃第一个数据报?
分片重组超时后,分片被丢弃;另一端需要重新传输。
此超时通常是可配置的。在 Linux 上,默认为 30 秒并通过
/proc/sys/net/ipv4/ipfrag_time
.这个问题没有明确的答案;
如果您看到这篇关于自适应重传的文章,您将看到 TCP 使用 RTT 作为计算适当延迟的一个因素。
这是一篇更详细的文章。本质上,没有专门用于分段的特殊超时值。
不过,这篇Cisco 文章指出,IOS XR 虚拟防火墙的片段默认超时为 10 秒,具有自己的可配置计时器。我将此链接起来是说操作系统和设备的行为会有所不同,例如,如果您通过这样的设备传递连接,它可能会对您的连接产生负面影响。
如果你想测试碎片延迟的影响,最好将两台相同配置的机器用交叉连接起来,然后从那里开始测试。