美文网首页
TIME_WAIT状态

TIME_WAIT状态

作者: Arya鑫 | 来源:发表于2017-08-18 21:49 被阅读22次

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秒被丢弃。

在TCP连接中,当被动关闭连接的一方(图中client)发送的FIN报文到达时,被动关闭连接 的一方会发送ACK确认报文,并且进入TIME_WAIT状态,并且等待2MSL时间段(MSL:maximum segment life)。这么做有下述两个原因:

1、被动关闭连接的一方(图中的server)在一段时间内没有收到对方的ACK确认数据包,会重新发送FIN数据包,因而主动关闭连接的一方需要停留在等待状态以处理对方重新发送的FIN数据包。否则他会回应一个RST数据包给被动关闭连接的一方,使得对方莫名其妙。

2、在TIME_WAIT状态下,不允许应用程序在当前ip和端口上和之前通信的client(这个client的ip和端口号不变)建立一个新的连接。这样就能避免新的连接收到之前的ip和端口一致的连接残存在网络中的数据包。这也是TIME_WAIT状态的等待时间被设置为2MSL的原因,以确保网络上当前连接两个方向上尚未接收的TCP报文已经全部消失。


http://blog.csdn.net/yangliuhepanpan/article/details/51597851

http://blog.csdn.net/rain_qingtian/article/details/9977249

http://www.cnblogs.com/bethal/p/5292112.html

http://www.cnblogs.com/bethal/p/5292112.html



相关文章

  • TIME_WAIT状态存在的理由

    TIME_WAIT状态肯定是要存在的,否则TCP的会存在半关闭的状态,这里主要讨论下TIME_WAIT状态为什么要...

  • GO学习笔记(8)TCP的TIME_WAIT状态

    1.何为TIME_WAIT time_wait实际上是TCP关闭连接4次挥手时的一种状态 TIME_WAIT is...

  • TCP连接状态详解及TIME_WAIT过多的解决方法[转]

    TIME_WAIT状态原理 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态。 客户端主...

  • TIME_WAIT状态

    一.TIME_WAIT状态如何产生及必要性 从TCP握手协议中,TIME_WAIT状态是主动断开的一方,发送完最后...

  • TIME_WAIT状态

    TIME_WAIT状态 是谁有TIME_WAIT状态呢?为什么? 执行主动关闭的那一端、因为可能不得不重传最终那个...

  • 大量TIME_WAIT解决方案

    问题 TIME_WAIT状态是主动断开连接的一方产生的,客户端处于TIME_WAIT状态的话问题不大,如果服务器产...

  • Golang 优化之路——HTTP长连接

    写在前面 压测的是否发现服务端TIME_WAIT状态的连接很多。 TIME_WAIT状态多,简单的说就是服务端主动...

  • time_wait状态

    如图所示,执行 主动关闭的那端经历了time_wait状态,该端点停留在这个状态的持续时间是最长分节生命期的两倍,...

  • TCP中的TIME_WAIT

    为什么要有TIME_WAIT? TIME_WAIT是TCP主动关闭连接一方的一个状态,TCP断开连接的时序图如下:...

  • [转]关于tcp中time_wait状态的4个问题

    转载自 关于tcp中time_wait状态的4个问题 time_wait是个常问的问题。tcp网络编程中最不eas...

网友评论

      本文标题:TIME_WAIT状态

      本文链接:https://www.haomeiwen.com/subject/rtmrrxtx.html