您的位置:首页 > 理论基础 > 计算机网络

主动关闭TCP连接的一方为什么要有TIME_WAIT状态

2017-04-18 13:41 183 查看


TCP连接是全双工通信,主动方和被动方都需要自主关闭通信链路,TCP正常情况下连接断开会进行四次挥手(流程如上图所示):

1.由主动断开方发起FIN

2.被动方回复ACK

3.待被动方数据传输完成,被动方发送FIN

4.主动方回复ACK,并进入TIME_WAIT状态

TIME_WAIT的状态会持续2MSL (MSL是报文在网络中生存的最大生命周期)。

那这里为什么需要2MSL的状态?

TCP是建立在非连接链路的可靠传输通信方式,若在步骤4中发出ACK,由于网络原因ACK报文被动方没有收到,等到2MSL从而触发被动方重新发送FIN包,若主动方不存在TIME_WAIT 会出现如下情况:

a. 原来的TCP信息已经不存在,主动方回复RST,引起被动方关闭流程错乱

b.在原来端口上建立了新的TCP连接,影响新的流程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: