TCP四次挥手
TCP四次挥手
双方一开始都是处于建立连接的状态:
A 发送连接释放报文,FIN=1,就进入FIN_WAIT_1的状态;
B 收到之后发出确认,此时 TCP 属于CLOSE_WAIT(半关闭)状态,B 能向 A 发送数据但是 A 不能向 B 发送数据;
当 B 不再需要连接时,发送连接释放报文,FIN=1,就进入FIN_WAIT_2的状态
A 收到后发出确认,进入 TIME-WAIT 状态,等待 2 MSL(最大报文存活时间)后释放连接;
B 收到 A 的确认后释放连接;
TIME_WAIT
客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间2MSL。这么做有两个理由:
1.确保最后一个确认报文能够到达。如果 B 没收到 A 发送来的确认报文,那么就会重新发送连接释放请求报文,A等待一段时间就是为了处理这种情况的发生。
2.等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。