TCP四次挥手终止连接的TIME_WAIT状态

TCP的TIME_WAIT状态是为了确保连接的可靠释放和避免旧数据包干扰新连接。当主动关闭连接的一方在接收到ACK后进入TIME_WAIT状态,等待2MSL以消除网络中可能残留的旧数据包。TIME_WAIT过多会占用资源,解决方案包括设置SO_REUSEADDR选项和调整内核参数。使用netstat命令可以检查TIME_WAIT状态的连接。
摘要由CSDN通过智能技术生成

(1)存在TIME_WAIT状态的原因

    首先,只有主动调用closed的一方才会在接收到对端的ACK后进入time_wait状态;并且任意一方都可以先发起closed;下图为四次挥手状态:

  • 原因一:保证TCP全双工连接的可靠释放

解析:假设场景为客户端主动向服务器发起断开连接,假如在主动方(客户端)最后一次发送的ACK在网络中丢失,根据TCP的超时重传机制,被动方(服务器)需要重新向客户端发送FIN+ACK,在FIN未达到之前,必须维护这条连接;并且要接收到客户端发出的ACK确认后才能终止连接;如果直接在重传的FIN到达之前而关闭连接,当FIN到达后会促使客户端TCP传输层发送RST重新建立连接,而本质上这是一个正常断开连接的过程。

另一种解释是:
       4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来;若主动关闭方能够保持一个2MSL的TIME_WAIT状态,则有更大的机会让丢失的ACK被再次发送出去。

  • 原因二:为了使就得数据包在网络中因过期而失效

 解析:假设没有time_wait状态时,A刚刚与B断开连接,C又以和A相同的ip和port和B建立起连接,TCP协议栈无法区分A和C是不同的连接, 这时ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值