TIME_WAIT状态:
主动关闭的那端最后经历的状态,一般为2MSL秒(1~4分钟).
两个原因:
- 保证当最后一个ack丢失后,能收到对端重传的fin包.
- 保证ack包消失,不会影响下一个连接.
关于原因2: 重传时间一般为几百毫秒,而延时的数量级可能为几十秒(MSL数量级),所以延迟到达的包可能是曾经的fin包或其他,如果是fin,会影响下一个连接.
例外(源自unp):
如果到达的SYN的序号大于前一连接的结束序列号,berkeley实现将给当前处于time_wait状态的连接启动新连接.rsh命令具备这种能力,RFC1185讲述了其陷阱.