为何tcp timewait需要2MSL
借用一张图( https://blog.csdn.net/xp178171640/article/details/103855714 ) tcp time_wait等待2MSL有两个原因 1:如果最后一个ACK丢失,对端需要重传FIN,如果直接是CLOSED的状态,那对于重传的FIN,肯定是RST响应 2:为了保证最后一个ACK正常的丢失,因为不确认对方是否收到,需要等1个MSL,至于另一个MSL,能找到比较信服的解释就是被动关闭的一方在收到ACK的那一刻之前重发了FIN,为了保证这个FIN正常丢失,需要再等1个MSL( https://cloud.tencent.com/developer/article/1450264 , https://www.zhihu.com/question/67013338 ) 3:CentOS7.6内核中TIMEWAIT的定义是60s 定义如下 #define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT * state, about 60 seconds */ 4:TCP RFC793规定MSL为2分钟,实际Linux定义的是30S,至于为何MSL是30S,这个应该是个经验值,TCP头部的SEQ是32位,对于一个连接,如果SEQ翻转