您的位置:首页 > 大数据 > 人工智能

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秒也被丢弃。由此保证建立新连接时,来自该连接先前化身的老的重复分组都已在网络中消失。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: