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


相关推荐

  • yum linux phpmyadmin,Linux centos7 下安装 phpMyAdmin的教程

    yum linux phpmyadmin,Linux centos7 下安装 phpMyAdmin的教程yuminstallhttpdphpmariadb-server–y搭建lamp运行环境之后安装phpMyAdmin遇到的一些问题记录一下1.官网下载phpMyAdmin压缩包wget-chttps://files.phpmyadmin.net/phpMyAdmin/4.9.3/phpMyAdmin-4.9.3-all-languages.tar.gz2.解压缩到/var/www/h…

    2022年5月31日
    28
  • linux 文件重命名_手机文件重命名

    linux 文件重命名_手机文件重命名没有专门的重命名命令用mvab就可以重命名了=========================================mv:move移动文件(延伸功能:重命名,linux系统没有专门的重命名命令)基本格式:移动文件:mv文件名移动目的地文件名重命名文件:mv文件名修改后的文件名…

    2022年9月10日
    3
  • cisco交换机基本配置命令(华为交换机保存命令是什么)

    一、调试命令思科:Switch#showrun显示所有配置命令Switch#showipinterbrief显示所有接口状态Switch#showvlanbrief显示所有VLAN的信息Switch#showversion显示版本信息华为:[Quidway]discur显示所有配置命令[Quidway]displayinterfaces显示所有接口状态[Quidway]displayvlanall显示所

    2022年4月17日
    90
  • Java安全之jar包调试技巧

    Java安全之jar包调试技巧调试程序首先还是创建一个工程,将jar包导入进来调试模式的参数启动中需要加入特定参数才能使用debug模式,并且需要开放调试端口JDK5-8:-agentli

    2021年12月12日
    50
  • 关于layuiAdmin 后台管理模板购买授权的问题

    关于layuiAdmin 后台管理模板购买授权的问题购买授权之前 建议认真阅读下述 解惑 以免造成不必要的困惑 另外也可以阅读 layui 付费产品服务条款 注意 layuiAdmin 受国家计算机软件著作权保护 登记号 2018SR 不得恶意分享产品源代码 二次转售等 违者必究 应该如何选择版本 通常我们推荐您选择 套餐版 它同时包含了 单页版 和 iframe 版 你随时可根据项目需求和团队情况 自由切换 但如果你

    2025年9月5日
    0
  • Oracle数据库性能优化(Hbase是什么数据库)

    所有数据库包括Oracle的sql优化都是针对程序员的,而不是针对dba的,第一,尽量防止模糊,明确指出,即用列名代替*,第二,在where语句上下工夫。第三多表查询和子查询,第四尽量使用绑定。根据计算机硬件的基本性能指标及其在数据库中主要操作内容,可以整理出如下图所示的性能基本优化法则:这个优化法则归纳为5个层次:1、减少数据访问(减少磁盘…

    2022年4月17日
    56

发表回复

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

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