TCP中的time_wait状态

TCP连接的建立三次握手,连接的断开需要四次挥手。

TCP连接在四次挥手的过程中,主动关闭的一端往往会进入一个叫time_wait的状态。

这个状态是被动关闭端发出FIN分节以后,被动端就会进入Last_ack状态,主动关闭端接受到这个FIN分节以后就会发出最后一个ack分节,并进入time_wait状态,一般是持续2MSL时间,MSL时间是说最长分节生命存活期,每个IP数据包在因特网中存活的时间都是有限的,每个数据包都含有一个叫跳限的字段,任何一个TCP实现都需要为MSL设定一个值。

RFC文档中建议为2分钟,不过实现传统上一般认为是30秒,所以一般time_wait状态维持的一个时间就是在1分钟到4分钟之间。

time_wait状态存在的两个理由:

1、保证tcp全双工能够完全终止。

2、允许老的重复分节在互联网中消逝。

但是我们可以通过修改内核的参数去缩短这个时间,加速tcp连接的快速回收复用。

但是这会带来两个问题:

1、如果最后一个ack包丢掉了,可能导致server端并没有接收到最后一个ack,那么过一段时间会进行重传FIN分节,就会导致这个新连接接收到这个分节而终止。

2、可能上一个连接在互联网中仍然存在着一些分节,在这个新连接建立以后,就会突然接收到这些上一个连接的数据。

通过time_wait状态就能够保证上个连接的数据在网络中都已经消逝了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值