TIME_WAIT状态
2016-05-20 19:05
351 查看
TCP中,执行主动关闭的那一端会进入TIME_WAIT状态,该端停留在这个状态的持续时间是最长分节生命期(MSL)的两倍,即2MSL。
MSL的大小RFC1122建议为2分钟,不过Berkeley的实现传统为30分钟,所以TIME_WAIT的持续时间为1-4分钟。
MSL为任何IP数据报在因特网上存活的最长时间。
迷途的分组:
分组的迷途通常由路由异常引起(崩溃,路由间链路断开)。
路由协议需要数秒种到数分钟才能稳定并找出另一条通路,在这个寻找过程中,可能发生路由循环(a->b,b->a),于是产生迷途的分组。
迷途期间,发送端TCP超时重传该分组,若重传的分组到达接收端,但是不久后迷途的重复分组(也称漫游的重复分组),也到达接收端,问题出现了,分组重复问题。
TCP必须能够处理这种分组重复。
TIME_WAIT存在的理由:
1 可靠实现TCP全双工连接的终止。
假设4次握手中的最后一个ACK分节丢失,服务器将重新发送它的最终那个FIN分节,因此客户端必须能够维护状态信息,否则它将响应一个RST分节,它被服务器解释为一个错误。如果TCP打算执行完所有必要工作以关闭全双工,那么它必须正确处理连接终止序列4个分节中任何一个分节丢失的情况。为什么执行主动关闭的那一端是处于TIME_WAIT状态呢?因为它可能重传最终那个ACK。
2 允许老的重复分节在网络中消逝。
假设我们有一个TCP连接A,然后我们关闭它,多一段时间后在相同的ip地址和端口之间建立一个新的连接B,B成为A的化身,因为它们地址和端口相同。TCP必须防止来自A的老的重复分组在A终止后再现,从而被误解成新连接B的分节。为此TCP不允许处于TIME_WAIT状态的连接发起新的化身。TIME_WAIT状态的持续时间是2MSL,而某一方向的分组最多存活MSL,所以它将会被丢弃,另一方向上的应答最多存活MSL秒也被丢弃。由此保证建立新连接时,来自该连接先前化身的老的重复分组都已在网络中消失。
MSL的大小RFC1122建议为2分钟,不过Berkeley的实现传统为30分钟,所以TIME_WAIT的持续时间为1-4分钟。
MSL为任何IP数据报在因特网上存活的最长时间。
迷途的分组:
分组的迷途通常由路由异常引起(崩溃,路由间链路断开)。
路由协议需要数秒种到数分钟才能稳定并找出另一条通路,在这个寻找过程中,可能发生路由循环(a->b,b->a),于是产生迷途的分组。
迷途期间,发送端TCP超时重传该分组,若重传的分组到达接收端,但是不久后迷途的重复分组(也称漫游的重复分组),也到达接收端,问题出现了,分组重复问题。
TCP必须能够处理这种分组重复。
TIME_WAIT存在的理由:
1 可靠实现TCP全双工连接的终止。
假设4次握手中的最后一个ACK分节丢失,服务器将重新发送它的最终那个FIN分节,因此客户端必须能够维护状态信息,否则它将响应一个RST分节,它被服务器解释为一个错误。如果TCP打算执行完所有必要工作以关闭全双工,那么它必须正确处理连接终止序列4个分节中任何一个分节丢失的情况。为什么执行主动关闭的那一端是处于TIME_WAIT状态呢?因为它可能重传最终那个ACK。
2 允许老的重复分节在网络中消逝。
假设我们有一个TCP连接A,然后我们关闭它,多一段时间后在相同的ip地址和端口之间建立一个新的连接B,B成为A的化身,因为它们地址和端口相同。TCP必须防止来自A的老的重复分组在A终止后再现,从而被误解成新连接B的分节。为此TCP不允许处于TIME_WAIT状态的连接发起新的化身。TIME_WAIT状态的持续时间是2MSL,而某一方向的分组最多存活MSL,所以它将会被丢弃,另一方向上的应答最多存活MSL秒也被丢弃。由此保证建立新连接时,来自该连接先前化身的老的重复分组都已在网络中消失。
相关文章推荐
- 2016 Tencent Disclaimer
- 谷歌约束控件(ConstraintLayout)扁平化布局入门
- linux系统下一个冷门的RAID卡ioc0及其监控mpt-status
- http://blog.csdn.net/nightelve/article/details/17453689
- Shiro配置filterChainDefinitions
- 图像处理工具类、Bitmap处理、理解ThumbnailUtils
- DeepMind背后的人工智能:深度学习原理初探
- 跨域DOMAIN实现原理
- ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint......
- ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint......
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- DllMain操作不当造成死锁
- x265main函数流程图