关于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 概率论中常见分布总结以及python的scipy库使用:两点分布、二项分布、几何分布、泊松分布、均匀分布、指数分布、正态分布

    概率论中常见分布总结以及python的scipy库使用:两点分布、二项分布、几何分布、泊松分布、均匀分布、指数分布、正态分布

    2021年11月19日
    64
  • 详解C语言指针函数、函数指针、函数指针数组「建议收藏」

    详解C语言指针函数、函数指针、函数指针数组「建议收藏」在C语言中,指针是一个很重要但是又很容易弄错的概念,也可以说指针就是C语言的灵魂,所以说学好指针对于完全掌握C语言是一个必须的过程。而在指针中,指针函数、函数指针、指针函数数组、函数指针数组、指向函数指针数组的指针等等概念看着又绕又头疼。本问总结了一下以上一些概念以及用法,并给出例程深化理解。1.指针函数指针函数就是返回指针值的函数,本质是一个函数。所以指针函数等价于“返回值为指针的函数…

    2022年6月22日
    28
  • 睿智的目标检测26——Pytorch搭建yolo3目标检测平台[通俗易懂]

    睿智的目标检测26——Pytorch搭建yolo3目标检测平台[通俗易懂]睿智的目标检测26——Pytorch搭建yolo3目标检测平台学习前言源码下载yolo3实现思路一、预测部分1、主题网络darknet53介绍2、从特征获取预测结果3、预测结果的解码4、在原图上进行绘制二、训练部分1、计算loss所需参数2、pred是什么3、target是什么。4、loss的计算过程训练自己的yolo3模型学习前言一起来看看yolo3的Pytorch实现吧,顺便训练一下自己的…

    2022年9月18日
    3
  • 宽度学习系统:一种不需要深度结构的高效增量学习系统「建议收藏」

    宽度学习系统:一种不需要深度结构的高效增量学习系统「建议收藏」宽度学习系统:一种不需要深度结构的高效增量学习系统本文是对陈俊龙教授团队“BroadLearningSystem:AnEffectiveandEfficientIncrementalLearningSystemWithouttheNeedforDeepArchitecture”的中文综述,原文将在IEEETransactionsonNeuralNetwor…

    2022年5月21日
    32
  • 群晖nas 文件服务器,群晖nas挂到云服务器上

    群晖nas 文件服务器,群晖nas挂到云服务器上群晖nas挂到云服务器上内容精选换一换在公有云上部署SAPHANA所需要的云服务如下。无法直接从云备份控制台查看备份中的数据,您可以通过以下几种方式进行查看:云服务器备份使用云服务器备份创建镜像后,再使用镜像创建云服务器。登录云服务器,查看服务器中的数据。云硬盘备份使用云硬盘备份创建新的云硬盘后,将云硬盘挂载至云服务器上。登录云服务器,查看磁盘中的数据。SFSTurbo备份使用SFSTur…

    2022年6月26日
    42
  • sql中的联合查询「建议收藏」

    sql中的联合查询「建议收藏」我们在实际应用中,或许会用到关于sql的联合查询的应用,下面来总结一下联合查询的具体应用,做一下记录便于记忆。首先,通过一个实例来讲一下联合查询(关键词union)语法:select………unionselect……..union…….select*fromempoloyeeswhereemaillike”%a%”ordepartment_id>90;改用union的用法select*fromempol

    2022年5月12日
    39

发表回复

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

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