百度运维部二面面试官问我这个
我直接懵逼了
TIME_WAIT状态是通信双方简历TCP连接后,
主动关闭的一方就会进入TIME_WAIT状态
1.client向server发送FIN(M),client后处于FIN_WAIT_1状态
2.server收到,发送ACK(M+1),server处于CLOSE_WAIT状态
3.client处于FIN_WAIT_2状态
4.server发送FIN(N),client收到后处于TIME_WAIT状态
5.client发送ACK(N+1),server收到后处于CLOSED状态
TIME_WAIT状态存在的理由
1. 可靠的实现TCP全双工连接的终止,四次挥手更加可靠
如果client不保持TIME_WAIT,而直接处于CLOSED,
会出现RST(异常关闭)
2. 允许老的重复分节在网络中消失
TCP分节可能“迷途”,在迷途期间可能会因超时重发,
而之前发出的分节也会被送到目的地。
为了避免这种情况,TCP协议不允许处于TIME_WAIT的连接启动新的可用连接
TIME_WAIT状态持续2MSL
这样可以保证成功建立一个新的TCP连接的时候,旧的重复分组已经消失了