处于TIME_WAIT状态下收到syn包
首先分析之前的四次挥手的过程:
服务端主动关闭链接,假设挥手的最后一个ack=301(表明期望这个socket的下一个报的seq为301),然后服务端处于TIME_WAIT状态
- 假设突然这个socket收到syn报seq刚刚好为301,那么被认为能够建立链接接收后面的报,完成三次握手
- 假设收到的syn报的seq位200小于301,tcp协议认为这个报,我已经收到过,然后直接丢弃掉
- 加入收到的syn报的seq为400大于301,tcp协议认为中间缺少301~400之间的报,可能是乱序或者丢包,需要等待,当然这个部分的数据肯定是一直等不到的,客户端收到每一个ack报中的ack都是301,而客户端却认为seq=301的报就没发过,应该会报错,从而终止链接
看我下面这篇文章
https://blog.youkuaiyun.com/qq_34827674/article/details/123227502
他又是画图,又是分析代码的,而我只有臆想,相当的不自信,希望大家指正