TIME_WAIT状态的一些总结

前言:

  TCP断开连接的四次握手中, 主动关闭连接的一方的TIME_WAIT状态尤为重要。

1:TCP连接的三次握手和断开的四次挥手

2:由上图可知

  在主动关闭的一方, 会经历TIME_WAIT状态, 而TIME_WAIT的持续时间是2MSL, 在这期间, 系统不会建立与此连接相同的连接(Sip:Sport and Dip:Dport),TIME_WAIT主要有两个作用。

       2.1 实现可靠的四次挥手断开连接

  首先, 链路状态是不可靠的, 但是TCP之所以在不可靠的链路上称为可靠协议是因为他比较全面的报文确认机制, 假设没有TIME_WAIT状态, client收到对端的FIN分节发送ACK分节之后就变为了CLOSED状态, 因为链路的不可靠, 这个ACK分节可能会丢失, 一旦超时服务器端就会重新发送FIN给client, 但此时的client已经CLOSED, 只能回应RST分节, 会造成server的异常关闭, 有了TIME_WAIT, 可在TIME_WAIT处再次接收FIN并回复ACK。

  2.2 清除前一个连接的旧报文影响

  所谓前一个连接, 是指前后两个连接的四元组是一样的,  因为TIME_WAIT的时间是2MSL, 在这期间是禁止建立相同四元组的连接, 2MSL正好从FIN, ACK俩个方向上确保了旧连接的报文已经消失在了链路中了。

 

posted @ 2017-12-11 19:34  会飞的小丑  阅读(372)  评论(0编辑  收藏  举报