TCP连接中的TIME_WAIT和CLOSE_WAIT
ESTABLISHED后,在关闭TCP连接时,分两种情况:
- 主动断开,这时,主动发送FIN,等待客户端回复ACK (FIN_WAIT1) 然后TIME_WAIT, 这个TIME_WAIT是为了给接收方回复留出足够的时间,确保人家收到了ACK,并将🔗关闭。
TIME_WAIT 该状态是最常见的状态,主动方在收到对方 FIN 后,就由 FIN_WAIT_2 状态进入到 TIME_WAIT 状态。
- 被动断开,这时接收到FIN包,这时,发送方进入CLOSE_WAIT,然后显式进入CLOSE。
CLOSE_WAIT 表示正在等待关闭,该状态只在被动端出现,即当主动断开的一端调用 close() 后发送 FIN 报文给被动端,被动端必然会回应一个 ACK(这是由 TCP 协议层决定的),这个时候,TCP 连接状态就进入到 CLOSE_WAIT 状态。

附TCP连接全链路状态变化图:


浙公网安备 33010602011771号