-1

根据this SO post Can a TCP port be re-used before TIME-WAIT expires?, 如果新的 SYN 数据包具有较大的 ISN,则可以重用 TIME-WAIT。

但是,如果它的 ISN 大于旧连接,则以下 SYN 失败事件。

Detailed info:
Failed SYN: NO(54365) , ISN(3853063683)
Elder connection max packet: NO(50379), ISN(2103445551)

在此处输入图像描述

4

1 回答 1

0

现在明白了。

服务器和客户端都启用了选项'net.ipv4.tcp_timestamps'(centos下默认启用)。所以服务器会先检查新来的SYN的时间戳(Ignore ISN now):如果大于老连接对应的值,则服务器重用TIMEWAIT连接(不管现在ISN是小还是大)。否则将其视为老连接的丢失数据包,并发送老连接的最后一个ack(无论ISN现在是更小还是更大)。

数据包 54365 的时间戳 (tsval) 值小于数据包 50379,因此失败。

有用的参考:https ://vincent.bernat.ch/en/blog/2014-tcp-time-wait-state-linux

于 2019-02-28T08:40:02.653 回答