TCP的四种计时器

版权声明:guojawee https://blog.csdn.net/weixin_36750623/article/details/84950479

TCP共使用以下四种计时器,即重传计时器、坚持计时器、保活计时器和时间等待计时器。这几个计时器的主要特点如下:
1、重传计时器
目的:防止数据丢失,丢失了就重传
TCP每发送一个报文段,就对此报文段设置一个超时重传计时器。可能发生两种情况:
(1)若在计时器截止时间到(通常是60秒)之前收到了对此特定报文段的确认,则撤销此计时器。
(2)若在收到了对此特定报文段的确认之前计时器截止期到,则重传此报文段,并将计时器复位。
2、坚持计时器
目的:为了防止接收方发送0窗口后,再次发送的非0窗口丢失,造成发送接收方“死等”现象。
假定A式发送端,B是接收端。① B向A发送一个0窗口告诉A,此时缓冲区满了不能够接收数据了,因此A将停止发送数据给B,直到A收到B发来地非0窗口才会继续向B发送数据。② B向A发送了非0窗口的数据包,但是该数据包丢失 ==> ==> 因为非0窗口的数据包丢失了,所以A将一直等待B发送非0窗口;同时B发送完了非0窗口给A,B将会一直等待A发送数据过来 ==> ==> 形成A、B相互等待,死锁。

分析可知,产生该现象的原因是B发送给A的0窗口后,再次发送的非0窗口丢失导致的,顺理成章的解决方案就是:①当A收到B发送来的非0窗口时,立即启动坚持计时器 ②当坚持计时器到时时,A就向B发送探测报文段,探测报文段的作用是提醒B,非0窗口的确认已经丢失,必须重传
③假设A依然没收到B发来的非0窗口的确认,则发送端A仍需要继续向B再次发送一个探测报文段,并将坚持定时器的值加倍,直到这个值增大到门限值(通常是60s)为止。在这以后,发送端A每隔60s就发送一个探测报文段,直到窗口重新打开。
3、保活计时器
目的:在长连接中,检测无响应的连接并将其断开,防止占用过多的连接资源
保活计时器使用在某些实现中,用来防止在两个TCP之间的连接出现长时期的空闲。假定客户打开了到服务器的连接,传送了一些数据,然后就保持静默了。也许这个客户出故障了。在这种情况下,这个连接将永远地处理打开状态。
要解决这种问题,在大多数的实现中都是使服务器设置保活计时器。每当服务器收到客户的信息,就将计时器复位。保活计时器通常设置为2小时。若服务器过了2小时还没有收到客户的信息,它就发送探测报文段。若发送了10个探测报文段(每一个相隔75秒)还没有响应,就假定客户出了故障,因而就终止该连接。
4、时间等待计时器
目的:时间等待计时器是在四次挥手/连接终止期间使用的。
在这里插入图片描述
该计时器就是TIME_WAIT计时器,即当主动方A发送FIN给对方B后,被动方B回复ACK后,主动方A将进入TIME_WAIT状态(用来等待B发送FIN+ACK)。如果在计时器时间内没有接收到B发来的FIN+ACK,A将会重启TIME_WAIT计时器继续等待B发来的FIN+ACK。保证全双工管道的安全断开。

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/84950479