必威体育Betway必威体育官网
当前位置:首页 > IT技术

TIME_WAIT的意义

时间:2019-05-30 06:42:02来源:IT技术作者:seo实验室小编阅读:72次「手机版」
 

timewait

上图为TCP连接释放过程,在服务器A收到服务器B发送的FIN+ACK后,会向B发送ACK,进入到TIME_WaiT阶段,等待2MSL(MSL:Max segment Lifetime,最长报文段寿命,报文段在网络中能够存活的最长时间)。

TIME_WAIT的意义

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

为了保证A发送的最后一个ACK报文段能够到达B。

A给B发送的ACK可能会丢失,B收不到A发送的确认,B会超时重传FIN+ACK报文段,此时A处于2MSL时间内,就可以收到B重传的FIN+ACK报文段,接着A重传一次确认,重启2MSL计时器。最后,A和B都能够正常进入到CLOSED状态。

如果A在发完ACK后直接立即释放连接,而不等待一段时间,就无法收到B重传的FIN+ACK报文段,也就不会再次发送确认报文段,这样,B就无法按照正常步骤进入CLOSED状态。

(2)允许旧的报文段在网络中消逝  

A发送确认后,该确认报文段可能因为路由器异常在网络中发生“迷途”,并没有到达B,该确认报文段可以称为旧的报文段。A在超时后进行重传, 发送新的报文段,B在收到新的报文段后进入CLOSED状态。在这之后,发生迷途的旧报文段可能到达了B,通常情况下,该报文段会被丢弃,不会造成任何的影响。但是如果两个相同主机A和B之间又建立了一个具有相同端口号的新连接,那么旧的报文段可能会被看成是新连接的报文段,如果旧的报文段中数据的任何序列号恰恰在新连接的当前接收窗口中,数据就会被重新接收,对连接造成破坏。为了避免这种情况,TCP不允许处于TIME_WAIT状态的连接启动一个新的连接,因为TIME_WAIT状态持续2MSL,就可以保证当再次成功建立一个TCP连接的时,来自之前连接的旧的报文段已经在网络中消逝,不会再出现在新的连接中。

相关阅读

大量time-wait的处理方法

背景是我的php总有慢日志,但是dba那边没有慢查询日志。php-fpm.conf里设置的超时时间是1s,slb那边的超时时间是3s。 有如下几种情况

唯快不破:TCP/IP详解--TIME_WAIT状态详解

Socket中的TIME_WAIT状态在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如

TCP端口状态说明ESTABLISHED、TIME_WAIT

查看网络连接数: netstat -an |wc -l netstat -an |grep xx |wc -l        查看某个/特定ip的连接数 netstat -an |grep T

time_wait状态产生的原因,危害,如何避免

1.先来了解TCP四次挥手的过程:①第一次:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发

分享到:

栏目导航

推荐阅读

热门阅读