美文网首页
time_wait状态

time_wait状态

作者: Felicia1993 | 来源:发表于2017-09-22 11:45 被阅读0次
TCP状态转换图

如图所示,执行 主动关闭的那端经历了time_wait状态,该端点停留在这个状态的持续时间是最长分节生命期的两倍,有时称为2MSL(MSL:任何IP 数据报能够在因特网中存活的最长时间)。

任何TCP都要给 MSL一个值,RFC建议是2分钟,但是传统上改用30秒这个值,意味着time_wait状态持续时间在1-4分钟之间。

分组在网络中“迷途”通常是由路由异常的结果。某个路由器崩溃或某两个路由器直接的某个链路断开时,路由协议需要花 数秒钟到数分钟的时间才能稳定并找出另一条通路,在这段时间内有可能发生路由循环(路由器A把分组发送给路由器B,而B再把它们发送回A)。假设迷途的分组是一个TCP分节,在它迷途 期间,发送端TCP超时并重传该分组,而重传的分组却通过某条候选路径到达最终目的地,然而不就好路由循环修复 ,早先迷失在这个循环中的分组最终也被送到目的地。这个原理的分组被称为迷途的重复分组或漫游的重复分组。

TIME_WAIT状态有两个存在的理由:

1)可靠的实现了TCP全双工连接的终止。

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

TCP连接 的分组交换

看上图 ,假设最终的ACK丢失,服务器将重新发送它最后的那个FIN,因此 客户必须维护状态信息,以允许它重新发送最终的那个ACK,要是客户不维护状态信息,它将响应一个RST(另外一种类型的TCP分节),该分节将被服务器解释成一个错误。如果TCP打算执行所有必要的工作以彻底终止某个连接上两个方向的数据流,那么它必须正确处理连接终止序列4个分节中任何一个分节丢失的情况。

TIME _WAIT存在的第二个理由:假设 在12.106.32.254的1500端口和206.168.112.219的第21端口之间有一个TCP连接,我们关闭这个连接,过一段时间后在相同的IP地址和端口直接建立另一个连接。后一个连接称为前一个连接的化身。TCP必须放在来做某个连接 的老的重复分组在该链接已经终止后再现,从而被误解为属于同意连接的某个新的化身。为做到这一点,TCP将不给处于TIME_WAIT状态的连接发起新的化身,既然 TIME_WAIT状态的持续时间是MSL 的2倍,这就足以让某个方向上的分组最多存活MSL秒即被丢弃。

摘自:UNIX网络编程卷1:套接字联网API

相关文章

  • 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/zgoxextx.html