主动关闭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连接,影响新的流程
相关文章推荐
- 服务器端主动关闭连接, 产生的TIME_WAIT状态为什么会占用服务端大量端口?
- 理解tcp关闭连接中的time_wait状态
- TCP/IP TIME_WAIT状态原理(四次握手关闭连接原理)
- TCP关闭连接(为什么会能Time_wait,Close_wait?)
- TCP古董TIME_WAIT:为什么被动关闭的一方不需要TIME_WAIT傻等呢,似乎人人都了然了
- TCP关闭连接(为什么会能Time_wait,Close_wait?)
- 为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义
- TCP 连接关闭的 TIME_WAIT (2MSL) 状态,及 TCP 连接状态图
- TCP释放连接时为什么time_wait状态必须等待2MSL时间(阅读笔记)?
- TCP连接中的TIME_WAIT状态
- TCP可靠传输及流量控制系列六:TCP连接中的TIME_WAIT状态
- Windows操作系统TIME_WAIT状态的TCP连接快速回收时间
- 一个解除TCP连接的TIME_WAIT状态限制的简便方法
- socket 连接关闭的TIME_WAIT状态的理由
- 一个解除TCP连接的TIME_WAIT状态限制的简便方法
- TCP连接中的TIME_WAIT状态
- TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT
- TCP关闭时的time_wait状态
- TCP连接状态分析:SYNC_RECV,CLOSE_WAIT,TIME_WAIT
- tcp关闭时time wait状态