TCP的TIME_WAIT状态

TCP连接在主动关闭后会进入TIME_WAIT状态,等待2MSL以确保旧报文消逝并正确关闭连接。当服务器频繁创建短连接时,可能导致端口耗尽。处理方式包括设置SO_REUSEADDR、使用TCP头部时间戳选项,以及调整Linux内核参数net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycel。不过,net.ipv4.tcp_tw_recycel可能导致问题,特别是在NAT或负载均衡场景下。
摘要由CSDN通过智能技术生成

1. TIME_WAIT状态

主动关闭方在收到被动关闭方的FIN包后并返回ACK后,会进入TIME_WAIT状态,TIME_WAIT状态又称2MSL状态,每个TCP连接都必须有一个最大报文段生存时间MSL,在网络传输中超过这个时间的报文段将被丢弃。当TCP连接发起一个主动关闭,并发出最后一个ACK时,必须在TIME_WAIT状态停留两倍MSL时间,在2MSL等待期间,定义这个连接的插口(客户端IP地址和端口号,服务器IP地址和端口号的四元组)将不能再被使用。2MSL状态存在有两个理由:

  • 1.允许老的重复报文分组在网络中消逝。

  • 2.保证TCP全双工连接的正确关闭。

第一个理由是假如我们在192.168.1.1:500039.106.170.184:6000建立一个TCP连接,一段时间后我们关闭这个连接,再基于相同插口建立一个新的TCP连接,这个新的连接称为前一个连接的化身。老的报文很有可能由于某些原因迟到了,那么新的TCP连接很有可能会将这个迟到的报文认为是新的连接的报文,而导致数据错乱。为了防止这种情况的发生TCP连接必须让TIME_WAIT状态持续2MSL,在此期间将不能基于这个插口建立新的化身,让它有足够的时间使迟到的报文段被丢弃。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值