TCP四次挥手终止连接的TIME_WAIT状态

匿名 (未验证) 提交于 2019-12-02 22:56:40

(1)存在TIME_WAIT状态的原因

  • 原因一:保证TCP全双工连接的可靠释放

解析:假设场景为客户端主动向服务器发起断开连接,假如在主动方(客户端)最后一次发送的ACK在网络中丢失,根据TCP的超时重传机制,被动方(服务器)需要重新向客户端发送FIN+ACK,在FIN未达到之前,必须维护这条连接;并且要接收到客户端发出的ACK确认后才能终止连接;如果直接在重传的FIN到达之前而关闭连接,当FIN到达后会促使客户端TCP传输层发送RST重新建立连接,而本质上这是一个正常断开连接的过程。

另一种解释是:

  • 原因二:为了使就得数据包在网络中因过期而失效


(2)TIME_WAIT状态过多有何危害?如何解决TIME_WAIT过多情况?

  • 危害:占用太多资源,阻塞其他正常连接;
  • 解决方法



第二种:修改内核参数来减少time_wait状态?

编辑文件/etc/sysctl.conf,加入以下内容




(3)如果修改修改time_wait的时间有什么影响?

如果修改time_wait的时间会造成上一个连接的数据没有完全接收到,会重建连接错误;另一个是造成新建的连接出现错误,收到不期望收到的数据;
注意:Linux是无法修改tcp的time_wait值的;

(4)netstat 命令的使用

  • netstat -rn 打印路由表信息





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!