根据该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)
答案 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