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

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

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

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

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

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

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

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

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

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

关于tcp连接中timewait的作用相关推荐

  1. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)

    TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...

  2. TCP连接中time_wait在开发中的影响-搜人以鱼不如授之以渔

    根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),T ...

  3. TCP状态中 time_wait 的作用?

    TCP状态中 time_wait 的作用 前言 这么做有两个理由 前言 客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间. ...

  4. 【网络通信与信息安全】之深入解析TCP连接中如何确定客户端的端口号

    一.前言 在 TCP 连接中,客户端在发起连接请求前会先确定一个客户端的端口,然后用这个端口去和服务器端进行握手建立连接.那么在 Linux 上,客户端的端口到底是如何被确定下来的呢? 事实上,我们平 ...

  5. TCP连接中TIME_WAIT连接过多

    2019独角兽企业重金招聘Python工程师标准>>> TCP连接中TIME_WAIT连接过多 转载于:https://my.oschina.net/meowmeow/blog/36 ...

  6. 几种TCP连接中出现RST的情况

    UNIX网络编程上说:产生RST的三个条件是:目的地为某端口的SYN到达,然而在该端口上并没有正在监听 的服务器:TCP想取消一个已有链接:TCP接收到一个根本不存在的连接上的分节. 几种TCP连接中 ...

  7. 【Tcp】TCP连接中存在大量TIME_WAIT、CLOSE_WAIT的原因【转】

    TCP连接中存在大量TIME_WAIT.CLOSE_WAIT的原因 TCP通信图 TIME_WAIT CLOSE_WAIT TCP通信图 TIME_WAIT 表示客户端主动关闭socket. 原因: ...

  8. TCP连接中的ACK与ack

    在TCP协议三报文握手建立连接的过程中,TCP请求报文段中存在ACK和ack两个数值.要搞清楚这两个数值的含义,得了解TCP报文段的首部格式: 1.TCP报文段的首部格式: TCP报文段分为首部与数据 ...

  9. Linux数据链路tcp失败,TCP连接中的异常断开情况处理

    1.TCP连接中可能出现的异常断开情况 假设存在这样一种情况:在两个不同的主机Machine1.Machine2系统上分别运行两个应用程序Application1.Application2,在Appl ...

最新文章

  1. python commands模块_python commands模块在python3.x被subprocess取代
  2. jquery ajax 序列化表单传参提交实体对象到后台action
  3. 为什么中国程序员水平一直上不了层次?无非是这些原因!
  4. android.mk 优化编译,android下ndk编译c优化
  5. Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (6)
  6. Android CardView卡片布局 标签: 控件
  7. 用C#编写Linux守护进程
  8. 关于CNN图像分类的一份综合设计指南
  9. linux mount 日志,mount
  10. 记账本小程序7天开发记录(第三天)
  11. openwrt nas_真牛气,矿渣蜗牛星际也能玩软路由Openwrt和NAS虚拟一体机
  12. WinCC界面中通过插件打开pdf文件
  13. SuperMap iClient3D for WebGL之BIM模型爆炸
  14. WinForm分页控件
  15. 【猿说VUE】事件处理,Vue奠基之石
  16. 《乌云背后的幸福线》
  17. PHP 规则引擎 Hoa\Ruler
  18. 永中的免费office,集成开发第一步
  19. 全光网+Wi-Fi 6,北方民族大学将全光智慧校园照进现实
  20. 【汇智学堂】-python系列小游戏开发准备工作

热门文章

  1. Java之类的主动使用和被动使用
  2. Unity 免费的高亮插件——QuickOutline
  3. 一文了解币圈面临的七大新法律问题
  4. 立创开源|相机赤道仪 星空摄影 星河拍摄工具低成本ARDUINO
  5. WPS之excel:对表格进行各种快捷操作
  6. html文件修改后无法访问,【已解决】Idea点击右上角Chrome打开html文件出现无法访问的问题...
  7. 华为ensp 解决40错误,完美方式(当你所有方法都试过了,不妨试试这个)
  8. 〖Python语法进阶篇⑧〗- 异步关键字与gevent包
  9. Tomcat下的startup.bat启动失败解决方法(闪退)
  10. 2021秋招Java面试八股文让629人成功进入大厂,堪称2021最强