TIME_WAIT状态是什么?

TIME_WAIT状态是主动关闭TCP连接的一方(即先发起FIN包的一方),在发送完最后一个ACK包后进入的状态。系统需要在TIME_WAIT状态下等待2MSL(maximum segment lifetime )后才能释放连接(端口)。根据RFC 793 MSL是2分钟,一般的TCP实现有30秒、1分钟和2分钟不等。

进入TIME_WAIT状态等待2MSL主要有两个目的:

一方面是主动关闭连接的一方在对方没有收到最后一个ACK包时(这时对方还会重发FIN,收到两个FIN的时间间隔一定小于2MSL)有时间可以重发ACK包;

另一方面处于TIME_WAIT的连接(IP和端口组合)不能重用,这样可以保证被重新分配的socket不会受到之前残留的延迟重发报文影响。

分析

由于主动关闭TCP连接的一方才会进入TIME_WAIT状态,一般情况服务器端不会出现TIME_WAIT状态,因为大多数情况都是客户端主动发起连接并主动关闭连接。但是某些服务如pop/smtp、ftp却是服务端收到客户端的QUIT命令后主动关闭连接,这就造成这类服务器上容易出现大量的TIME_WAIT状态的连接,而且并发量越大处于此种状态的连接越多。另外,对于被动关闭连接的服务在主动关闭客户端非法请求或清理长时间不活动的连接时(这种情况很可能是客户端程序忘记关闭连接)也会出现TIME_WAIT的状态。

什么情况下服务器会进行主动关闭的情况?

1)短连接的方式。如http服务器。

2)已经进入了瓶颈。即连接数已经达到了极限值。

更多详细参见:https://blog.csdn.net/u013616945/article/details/77510925

网络:为什么会出现大量的time_wait状态相关推荐

  1. php closewait,Linux网络tcp连接大量CLOSE_WAIT和TIME_WAIT状态的出现和解决方法

    关于CLOSE_WAIT和TIME_WAIT状态,服务器端都有可能出现,TIME_WAIT出现应该是短连接较多,需要通过修改内核参数解决,CLOSE_WAIT状态则是服务器程序可能有问题,服务器需要主 ...

  2. 网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?

    在进行TCP高并发服务器开发时,有些规则仿佛是约定俗成的,很多朋友会依据这些规则去做,比如高并发TCP服务器中进行主动关闭的一方最好是客户端.服务器端程序最好启用SO_REUSEADDR选项,但是很多 ...

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

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

  4. 网络:TCP通讯之 time_wait 状态

    基于TCP协议的通讯流程 1.TCP建立连接 2.TCP断开连接 3.TCP状态转换 TCP状态解释: SYN-RECVD:再收到和发送一个连接请求后等待对方对连接请求的确认 ESTABLISHED: ...

  5. 【网络编程】time_wait状态产生的原因,危害,如何避免

    转自:https://blog.csdn.net/u013616945/article/details/77510925  做略微修改  仅供个人学习 1. time_wait状态如何产生? 在tcp ...

  6. 网络基础问题整理:为什么TCP四次挥手最后需要TIME_WAIT状态?

    一:首先奉上 TCP三次握手的过程 TCP三次握手的过程 TCP连接释放的过程: TCP连接释放的过程 二: 1.为什么两次就建立连接还要三次握手呢?这主要是为了防止已失效的连接请求报文又突然传递服务 ...

  7. Linux C/C++ or 嵌入式面试之《网络编程系列》(7) time_wait状态的若干问题

    文章目录 1. 什么是TIME_WAIT状态? 2. 为什么需要TIME_WAIT状态? **①可靠地实现TCP全双工连接的终止** **②允许老的重复分节在网络中消逝** 保活计时器的引入 3. T ...

  8. 为什么TCP的TIME_WAIT状态要保持2MSL?

    TIMEWAIT状态也称为 2MSL等待状态. 每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime). 它是任何报文段被丢弃前在网络内的最长时间. ...

  9. Linux-TCP/IP TIME_WAIT状态原理

    TIME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动关闭连接时,会发送最后一个 ...

最新文章

  1. sqlmap tamper脚本编写
  2. Use Asynchronous Apex
  3. 案例代码:sprimngboot备份数据库
  4. 云谊网-赴日人才社交网络
  5. 软件测试项目计划书总结,软件测试项目计划书.doc
  6. 【华为云技术分享】Spark中的文件源(上)
  7. Android深入理解Fragment
  8. java二进制命令_Java二进制指令代码解析
  9. 编写安装配置DNS服务脚本
  10. 路由器刷机教程图解_路由器变砖怎么办救活成功修复TFTP详细图文教程
  11. 数字滤波器 matlab 仿真,基于MATLAB的经典数字滤波器的设计与仿真
  12. dxp全称_Protel DXP 2004 分立元件库元件名称中英对照表
  13. 计算机课ppt插入图片,ppt2010官方基础教程:插入照片-powerpoint技巧-电脑技巧收藏家...
  14. 雷达多普勒频率计算公式_智能驾驶之眼-毫米波雷达技术详解
  15. thinkphp使用paypal进行支付的做法详细步骤
  16. 【复】一次流量分析经历
  17. 从普朗克黑体辐射定律到真正的黑
  18. EngineerCMS利用梦想CAD控件MXdraw进行图纸在线编辑,保存到服务器
  19. 骂谷歌,怼百度,批腾讯,吴军为何DISS互联网公司没得怕的?
  20. linux-3.4 电源管理框架(1)

热门文章

  1. ios网络学习------8 xml格式数据的请求处理 用代码块封装
  2. -Wl,-rpath=
  3. 网页全终端视频流媒体视频直播/点播播放器EasyPlayer.js实现WEB播放H265/HEVC视频方案介绍
  4. 【机器学习入门笔记11:numpy模块实现矩阵的增删改查】20190217
  5. html border阴影效果_HTML | 简易相册制作
  6. python 余数_python中两数相除取余数怎么运算
  7. python define graph_Python数据结构与算法之图结构(Graph)实例分析
  8. pythonfor循环break_python 中 for 循环 if循环 break
  9. ifstream note
  10. linux kernel 中mdelay() 与msleep()的区别