关于tcp连接中timewait的作用

关于tcp连接中timewait的作用今天简单的谈一下tcp连接中timewait的作用,如果没有timewait会发生什么呢?我们知道首先请求关闭连接的一方会存在timewait状态。首先我们来看一下tcp四次挥手的过程示意图:客户端首先发起FIN请求,所以客户端会进入time_wait状态。如果没有time_wait或者用户自己通过调整tcp_tw_recycle缩短了time_wait的时间会出现生什问题呢?

大家好,又见面了,我是你们的朋友全栈君。

今天简单的谈一下tcp连接中timewait的作用,如果没有timewait会发生什么呢?

我们知道首先请求关闭连接的一方会存在timewait状态。

首先我们来看一下tcp四次挥手的过程示意图:

关于tcp连接中timewait的作用

客户端首先发起FIN请求,所以客户端会进入time_wait状态。

如果没有time_wait或者用户自己通过调整tcp_tw_recycle缩短了time_wait的时间会出现生什问题呢?

1.我们都知道的是time_wait太短或者取消,可能会使上一个连接延迟的数据包(关闭连接,但是没有关闭完全),所以延迟的数据包可能被新的连接收到,从而影响到新连接的数据。我们结合图示:

关于tcp连接中timewait的作用

我们看到哦上一个连接的3号数据包并不是丢失而是在网络传输过程中由于某种原因发生了延迟,由于tcp的重传机制,发送端重新发送了新的3号数据包给接收端,随后发送端和接收端开始了四次挥手,这是因为系统回收time_wait太快,导致time_wait时间太短,引得连接建立后,上个连接在网络中延迟的数据包被新的连接收到了,从而破坏了新的tcp连接的可靠性。

在linux中,time_wait时间定死了为1分钟,也就是2MSL,这个时间会保证延迟的数据包在网络中消失,也会保证没有丢失的数据包在这个时间内到达指定端,所以在这个时间这样据不会存在上一个连接的数据包被新的连接收到的情况了。

2.第二个作用是采用正常的time_wait机制会防止最后一个对FIN的ACK丢失,我们看下面这张图:

关于tcp连接中timewait的作用

当最后一个ACK丢失后,服务端一直处于last_ack状态,因为没有收到客户端的ACK所以服务端就会认为这个连接还是有效的,就可能继续给客户端发送消息,而且当该服务端收到新的连接请求时,由于服务端还在等待上个连接的ACK,这时由于它等待的seq值和新的请求的seq不符,所以客户端会发送rst请求重新连接,所以新的连接无法建立,最终报错终止。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133410.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea如何进行debug调试_idea debug怎么用

    idea如何进行debug调试_idea debug怎么用远程调试,特别是当你在本地开发的时候,你需要调试服务器上的程序时,远程调试就显得非常有用。JAVA支持调试功能,本身提供了一个简单的调试工具JDB,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信。此篇是IntellijIDEA远程调试的教程汇总和原理解释,知其然而又知其所以然。本机IntellijID…

    2022年9月11日
    0
  • floyed「建议收藏」

    floyed「建议收藏」#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>usingnamespacestd;constintmaxn=405;constintinf=4000005;intd1[maxn][m…

    2022年6月15日
    24
  • 男生pun是什么意思_pun怎么读

    男生pun是什么意思_pun怎么读PUN介绍入门PhotonUnityNetworking(首字母缩写PUN)是一个Unity多人游戏插件包。它提供了身份验证选项、匹配,以及快速、可靠的通过我们的Photon后端实现的游戏内通

    2022年8月6日
    5
  • iPhone 开发分辨率 持续更新

    iPhone4s:320*480iPhone5s/SE:320*568iPhone6/6s/7/8:375*667iPhone6/6s/7/8Plus414*736iPhoneX375*812以上是开发分辨率,不是物理分辨率。

    2022年4月8日
    109
  • Ubuntu下使用SSH 命令用于登录远程桌面

    Ubuntu下使用SSH 命令用于登录远程桌面问题描述基础:ssh命令连接step1:SSH程序的安装step2:服务器启动ssh服务step3:查询服务器的ip地址step4:在本地主机端ssh远程登录服务器step5:退出远程登录进阶:利用公钥省去口令输入step1生成密钥对step2复制公钥至服务器参考资料问题描述做DL的经常需要在一台电脑(本地主机)上写代码,另一台电脑(服务器…

    2022年10月21日
    0
  • UML类图关系全面剖析

    UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:

    2021年12月25日
    85

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号