`
jiagou
  • 浏览: 2525839 次
文章分类
社区版块
存档分类
最新评论

tcp 协议TIME_WAIT状态详解

 
阅读更多


上一篇文章提到执行主动关闭的一端进入 tcp TIME_WAIT状态,关于原因,unix网络编程卷一中给出两点:


1. 实现终止TCP全双工链接的可靠性,即保证tcp连接可靠断开。

2. 让老的重复分节在网络中消失
第一个原因的解释,执行主动关闭的一端最终会发ACK给对端,如果这个ACK最终丢失,那么发FIN的对端将由于在等待ACK超时后重发FIN分节,而如果主动关闭的一端在发完最终的ACK后清除此连接上状态信息,当再次收到对端的FIN分节时由于找不到对应的连接而报错,所以,如果TCP想彻底终止某个连接上两个方向的数据流(即全双工关闭),那么它必须处理连接终止序列四个分节中任何一个分节丢失的情况,这就是为何执行主动关闭的一端进入TIME_WAIT状态的第一个原因,因为它可能不得不重发最终的ACK分节给对端。

第二个原因,假设在一对ip及port上有一个连接,关闭这个连接后立即又建立起新的连接(同ip port),后一个连接为前一个的化身,因为ip port相同,tcp 必须防止来自某个连接的老分组在连接终止后再现,从而影响新连接的数据交互,所以tcp不能给处于TIME_WAIT状态的连接启动新的化身,从而被误解成属于同一连接。
TIME_WAIT状态的持续时间是最长分节生命期MSL(max segment lifetime)的2倍,即2MSL,既然tcp规定一个分节在网络中最大生存时间是 MSL,这足够让某个方向上的分节最多存活MSL秒即被丢弃,另一个方向的应答最多存活MSL秒也被丢弃,通过这个规则,就能保证当成功建立一个tcp连接时,来自该链接的之前所有连接的老的重复分组在网络中已消失。


每个TCP/IP 协议栈必须选择一个 MSL值,rfc 1122建议值为2分钟,而源自berkely的实现是30秒,需要注意的是如果此值过大,则在高并发服务器中tcp/ip协议栈必然要维护大量的TIME_WAIT状态的连接而消耗资源,所以一般作网络服务器优化时通常经过改小此值来减少维护此状态的资源。

详细设置及解决如下:

timeout_timewait 参数
描述:确定 TCP/IP 在释放已关闭的连接并再次使用其资源前必须经过的时间。关闭与释放之间的这段时间称为 TIME_WAIT 状态或者两倍最大段生存期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。通过减少此条目的值,TCP/IP 可以更快地释放关闭的连接,并为新连接提供更多资源。如果正在运行的应用程序需要快速释放连接、创建新的连接,并且因为许多连接处于 TIME_WAIT 状态而导致低吞吐量,那么调整此参数。
如何查看或设置:
在我的ubuntu系统上此值为:
#cat /proc/sys/net/ipv4/tcp_fin_timeout
60
发出以下命令,将 timeout_timewait 参数设置为 30 秒:

#echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
分享到:
评论

相关推荐

    解决linux下大量TIME WAIT的方法详解

    问题描述:在Linux系统中高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。解决方法:通过修改Linux内核参数,可以减少linux服务器的IME_WAIT套接字数量。vi /etc/sysctl.conf...

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议.rar

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议.rar是TCP-IP系列的第三卷,已全部上传完毕,超清晰 目 录 译者序 前言 第一部分 TCP事务协议 第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 ...

    TCP/IP详解 卷3:TCP事务协议、HTTP、NNTP和UNIX域协议

    4.2 客户的端口号和TIME_WAIT状态 4.3 设置TIME_WAIT状态的目的 4.4 TIME_WAIT状态的截断 4.5 利用TAO跳过三次握手 4.6 小结 第5章 T/TCP协议的实现:插口层 5.1 概述 5.2 常量 5.3 sosend函数 5.4 小结 第6章 T/TCP...

    TCP-IP详解卷3:TCP事务协议

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP-IP详解卷三

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议——高清文字(china-pub经典系列)

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议

    《TCP-IP详解》共3卷,其他卷请到我的空间去下载。第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面: T/TCP (TCP事务协议),这是对TCP的扩展,使客户--服务器间的事务传输更快更...

    TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议.rar

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP_IP详解卷1

    《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输...

    TCP-IP详解卷3.rar

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCPIP详解--共三卷

    TCP/IP详解 卷1:协议 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 ...

    TCPIP协议详解卷3-事务协议

    TCPIP协议详解卷3-事务协议 目 录 译者序 前言 第一部分 TCP事务协议 第1章 T/TCP概述 1 1.1 概述 1 1.2 UDP上的客户-服务器 1 1.3 TCP上的客户-服务器 6 1.4 T/TCP上的客户-服务器 12 1.5 测试网络 15 1.6 时间测量...

    TCPIP协议详解卷二:实现

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCPIP协议详解卷三.rar

    4.2 客户的端口号和TIME_WAIT状态 43 4.3 设置TIME_WAIT状态的目的 45 4.4 TIME_WAIT状态的截断 48 4.5 利用TAO跳过三次握手 51 4.6 小结 55 第5章 T/TCP协议的实现:插口层 56 5.1 概述 56 5.2 常量 56 5.3 sosend...

    TCP/IP详解part_2

    《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输...

    Linux高性能服务器编程清晰PDF+源码

    3.4.2 TIME_WAIT状态 3.5 复位报文段 3.5.1 访问不存在的端口 3.5.2 异常终止连接 3.5.3 处理半打开连接 3.6 TCP交互数据流 3.7 TCP成块数据流 3.8 带外数据 3.9 TCP超时重传 3.10 拥塞控制 ...

    python基础超强总结

    Python Python深拷贝和浅拷贝的区别 Python的内存管理机制(垃圾回收+内存池) ⼀、引用计数 ⼆、垃圾回收 三、内存池机制 ...S 为什么TIME_WAIT状态需要经过OMSL才能返回到CLOSE状态? TCP VS UDP ⼀、TCP/IP网络

    TCPIP详解卷[1].part04

    《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输...

Global site tag (gtag.js) - Google Analytics