互联网面试宝典

您现在的位置是: 首页 > 计算机网络

问题详情

TCP 四次挥手中 CLOSE-WAIT、TIME-WAIT 分别都发生在什么时候?作用是什么?

面试宝典 2023-06-12 Web前端开发工程师 47
CLOSE-WAIT 发生在客户端执行了 close() 操作后,发送了 FIN 报文给服务器,并收到服务器的 ACK 报文后,进入 CLOSE-WAIT 状态。在这个状态下,客户端已经关闭了对服务器的连接,但服务器还可以发送数据给客户端。作用是告诉服务器,客户端已经没有数据需要发送了,如果服务器还有数据需要发送,那么就可以发送完后关闭连接。

TIME-WAIT 发生在客户端和服务器双方都执行了 close() 操作后,收到对方的 FIN 报文并回复了 ACK 报文后,进入 TIME-WAIT 状态。在这个状态下,客户端和服务器都已经完成了关闭连接的操作,但要等待一段时间(2MSL,传输最大生存时间)后才能真正释放资源。作用是保证在网络上已经失效的报文段不会在之后的连接中出现,同时防止这个连接场景下的重复数据被其他的连接使用。