TCP的四种定时器

Posted 草里藏珠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP的四种定时器相关的知识,希望对你有一定的参考价值。

一、重传计时器

  TCP提供可靠机制,因此对于丢失的报文需要进行重传!

  那么,发送一个数据出去之后,什么时候进行重传呢?用到了重传定时器.

  在发送数据后,便立刻创建一个该报文段的重传定时器.

  如果定时器还没结束,收到了确认报文,则撤销该定时器.

  如果定时器结束,还没收到确认报文,则进行重发.

  定时器时间为动态计算的,常见公式新RTT=旧RTT的90%+当前RTT*10%

二、坚持计时器

  接受方窗口为0,则发送端会停止发送,直至收到接受方窗口不为0的通告.

  但是,如果接受方窗口不为0的通告丢失了,则会产生死锁!!!!

  接受方等发送方发送数据,发送方等接受方发送窗口不为0的通告(窗口不为1的通告报文丢失).......

  因此,需要一个计时器来解决这个问题.

  当接受方窗口为0,发送方激活该计时器,如果计时器结束,还没收到接受方窗口不为0的通告.

  此时,发送方会向接受方发送探测报文.如果接受方窗口依然为0,则计时器的值加倍复位,直到计时器的值达到一个阙值.

  如果接受方窗口不为0,则继续传输数据...

三、保活计时器

  每次服务器收到客户端数据时,重置保活定时器,

  如果保活定时器为0,则发送探测报文段,若发送10个报文段还是没有响应,则终止链接.

四、时间等待计时器

  当断开连接后,主动断开的一方会进入TIME_WAIT状态,防止一些超时、游离报文、重复的FIN报文被丢弃。

以上是关于TCP的四种定时器的主要内容,如果未能解决你的问题,请参考以下文章

java中定时器的四种方法

Java实现定时器的四种方式

.net Framework 中的四种计时器

解读TCP 四种定时器

linux c的四种定时方式(sleep/usleep/select/ioctl)

浅谈TCP/IP四种计时器慢启动拥塞避免快速重传快速恢复