TIME_WAIT状态存在的必要性

来源:互联网 发布:鼠尾草与海盐 知乎 编辑:程序博客网 时间:2024/05/16 09:36

                                              TIME_WAIT状态

        是谁有TIME_WAIT状态呢?为什么?

        执行主动关闭的那一端、因为可能不得不重传最终那个ACK的就是这一端

        TIME_WAIT有多久呢?

        最长分节生命期的两倍。2MSL。MSL:任何IP数据报能够在因特网上存活的最长时间

        什么是迷途的重复分组呢?

        假设迷途的分组是一个TCP分节,他在迷途期间,发送端TCP超时并重传该分组,而重传的分组却通过某条候选路径到达最终目的地。然后不久后(自迷途的分组开始其迷途旅程起最多MSL)路由循环修复,早先迷失的分组最终也被送到目的地。这样的分组就叫迷途重复分组。

        TIME_WAIT存在的理由:

        (1)可靠地实现TCP全双工连接的终止

         假设上一节TCP连接分组交换中的最后一个ACK丢失了。服务器将重新发送他的最终的那个FIN,因此客户必须维护状态信息,以允许他重新发送最终那个ACK。客户如果不维护状态信息,它将响应一个RST,该分节被服务器解释成一个错误。如果要全双工关闭(执行所有必要的工作以彻底终止某个连接上两个方向的数据流),那么连接终止序列四个分节中的任何一个分节丢失的情况都得正确处理。

        (2)允许老的重复分节在网络中消逝

         假设一个套接字对之间建立了一个连接,我们关闭该连接后在相同的套接字对又建立了一个连接。后一个连接成为前一个的化身,TCP必须防止来自某个连接的老的重复分组在该连接已经终止后再现。为了不接受老的分组,TCP将不给处于TIME_WAIT状态的连接发起新的化身。TIME_WAIT状态持续时间为2MSL这就足以让某个方向上的分组最多存活MSL即被丢弃,另一个方向上的应答也最多存活MSL秒被丢弃。

       

       

        

0 0
原创粉丝点击