CLOSE-WAIT和TIME-WAIT的意义?

CLOSE-WAIT 和 TIME-WAIT 的状态和意义是什么?

CLOSE-WAIT

是第一次挥手后服务器接收到来自客户端的FIN包后进入的状态。为了保证服务器在关闭连接之前将待发送的数据发送完成。

TIME-WAIT

是第四次挥手后客户端进入的状态,目的是等待服务端的对应端口关闭客户端发送到服务端的数据确定到达或过期。不存在这个状态会导致两个问题:

  1. 客户端立即关闭后,立即又用同样的端口握手并建立通信,此时上次的连接残留的数据包会被误认为是本次的,造成数据异常;

  2. 客户端直接关闭后,若服务端重新发送 FIN 包,客户端就会发 RST 响应服务器,服务器会认为有异常发生,虽然其实是没有问题的。

Last updated