TIME_WAIT状态的小总结

TCP建立连接和关闭的状态图
TIME_WAIT状态存在的原因:
1、保证TCP连接可靠的终止
如果用于确认报文段6的报文段7丢失,那么服务器将重发结束报文段,因此客户端要停留在某个状态来处理重复收到的结束报文段,否则,客户端以复位报文段来回应服务器,服务器则将认为这是一个错误,因为它期望的是报文段7那样的报文段
2、保证让迟来的TCP报文段有足够的时间被识别并丢弃
(1)一个TCP端口不能被重复打开多次,如果不存在TIME_WAIT的状态,应用程序能创建一个与刚结束的连接相似的连接(相似是指IP,端口都相同),新的连接可能接收到原来连接的携带原应用程序数据迟到的报文段,这显然是不应该发生的
(2)TCP报文端最大的生存时间是MSL,所以TIME_WAIT坚持的时间是2MSL,能够保证两端连接上尚未收到的、迟到的报文段都已经消失
如何避免TIME_WAIT状态:
首先服务器可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。在一个非常有用的场景就是,如果你的服务器程序停止后想立即重启,而新的套接字依旧希望使用同一端口,此时SO_REUSEADDR选项就可以避免TIME_WAIT状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值