设置TIME_WAIT的目的

设置TIME_WAIT的两个原因是:
1.实现了全双工的TCP连接关闭。
TIME_WAIT会出现在主动关闭这端的原因是:该端发出最后一个ACK后,如果这个ACK丢失或最后一个FIN丢失,另外一段将会超时重传最后的FIN。主动关闭这端由于TIME_WAIT的存在可以在需要的时候重传最后的确认报文,否则它收到最后的FIN后可能无法重传最后的ACK,而只能发出RST。另外TIME_WAIT总是从收到最后一个FIN开始算起,当它收到对端重传的FIN后会重新计时。
2.过时的重复报文段失效
每个IP数据包的有效时间由TTL(长度定义为8bit,所以最多经过的路由次数是255)限制。MSL定义为报文的最大生存时间,Linux下是30s。每个连接的新的替身只能在2MSL后才能再次发起,主要是为了保证前一个连接的过时重复报文段不会在新的连接出现,保证不会被误认为是第二次连接的报文段。

此条目发表在net分类目录。将固定链接加入收藏夹。

发表评论