TIME-WAIT连接拒绝接受新的SYN,即使它具有更大的ISN

时间:2019-02-27 08:10:13

标签: tcp time-wait

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

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

现在就搞定。

服务器和客户端均启用了选项“ net.ipv4.tcp_timestamps”(在centos下启用了默认值)。因此,服务器将首先检查新出现的SYN的时间戳(立即忽略ISN):如果它大于旧连接的相应值,则服务器将重用TIMEWAIT连接(无论现在是ISN较小还是较大)。否则,将其视为旧连接丢失的数据包,并发送旧连接的最后一个确认(无论现在的ISN较小还是较大)。

数据包54365的timestamp(tsval)值比数据包50379小,因此它失败了。

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