TCP状态图中的TIME_WAIT状态

TCP状态图

参见https://blog.csdn.net/timerzip/article/details/87739621

TIME_WAIT状态

小概念:TIME_WAIT状态是一种状态,端点处于这种状态时,会维护一些信息。TIME_WAIT状态会存在2MSL的时长。

作用可靠地实现TCP全双工连接的终止。通过维护一定时间主动方的最终状态来实现。

从TCP连接的断开讲起:是“TCP连接”关闭时会发生如下图所示(来自unp)的分组交换。主动关闭的一方(客户端)发送FIN,被动方(服务器端)接受FIN后发送ACK确认信息。随后,服务器端发送FIN,客户收到后发送ACK确认信息。服务器接收到该ACK后,TCP的连接完全关闭。

出现&解决问题:若服务器端最后没有收到来自客户的ACK确认信息,根据超时重传规则,服务器会重新发送它的FIN。此时为了完成关闭,客户又要重新发送ACK。倘若之前客户未进入TIME_WAIT状态而直接关闭,那么它就不能发送ACK信息,转而发送一个RST。该RST会被被动方解释成一个错误。若客户之前进入TIME_WAIT状态,则客户端能够成功发送ACK信息。

另一个作用:允许老的重复分解在网络中消逝。(往下是一节)

从TCP分节的存活周期说起:TCP传输层的传送单元为分节,也就是包含数据的结构。分节在网络中最多存活MSL的时长,超过MSL则消除该分节。

问题出现:TCP的连接是由套接字对唯一确定的。考虑下面的情况:套接字A和套接字B之间建立连接,A向B传送分节,当分节在网络中传输时,可能会因为网络故障(如路由器故障等)而迷失在网络中。假设分节e在网络中迷失。当A、B断开连接后,A与B都不再需要迷失的e了。倘若e未消失的时候,A与B又重新建立连接。对于e来说,这个连接与之前的连接没有任何不同。但是这个新的连接并不需要e。难受的是,e还是会在新连接中传递。

解决问题:TCP不会给处于TIME_WAIT状态的连接发起新的连接。因为TIME_WAIT状态会存在2MSL时长,从而能够保证没成功建立一个新的TCP连接时,该连接老版本的迷失分节都已经在网络中消失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值