TCP的四种定时器

一、重传计时器

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

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

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

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

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

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

二、坚持计时器

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

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

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

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

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

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

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

三、保活计时器

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

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

四、时间等待计时器

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

posted @ 2017-07-14 12:01  Linux专题站  阅读(527)  评论(0编辑  收藏  举报