TCP/IP 计时器

  保持计时器 keep timer

 
用来防止TCP连接处于长时间空闲!
如果client端建立到Server端的连接,传输一些数据然后停止传输,可能是Client端出现故障。在这种情况下,这个连接将永远处于Open状态!
为了解决这个问题,在多数实现中都在Server端设置保持计时器,,当Server端收到Client端的报文时,就将保持计时器复位。
如果Server端过了设定的时间还没有收到client端的Message。Server端就Send探测报文,如果发送10个探测报文(每个相隔75秒)还没有响应,就假设Client端出现故障,进而终止该连接!
 
 

时间等待计时器 Time-Wait timer

 
 为了保证TCP连接释放过程正常的进行,TCP设置了时间等待计时器 Time-Wait timer 。
 当TCP关闭一个连接时,它并不认为这个连接马上就真正的关闭。这时Client端进入“Time-Wait” status,需要在等待两个最长报文寿命 Maximum Segment Lifetime MSL)时间之后,才真正进入CLose 状态!
 Client 和Server端进行四次握手之后,确认双方已经同意释放连接,Client端仍然需要采用延迟2MSL time ,确保Server在最后阶段send给Client 的Data,已经Client发送给Server的最后一个ACK报文都能
 正确的被接收,防止因个别报文传输错误导致连接释放fail
 
 

 重传计时器 Retransmission Timer 

 
  Retransmission Timer 用来控制报文确认与等待重传的time。
  当sender TCP发送一个报文时,首先将它的报文的副本放到重传队列,同时启动一个重传计时器。Retransmission Timer设定一个值,然后开始倒计时。在Retransmission Timer倒计时到0
  之前收到ACK,表示该报文传输成功;如果在计时器倒计时到0之前没收到ACK,表示该报文传输失败,准备重传该报文。
  对于一个TCP连接,TCP维护一个变量,它代表当前最佳往返时间RTT估算值,当一个Message被发送时,启动一个Retransmission Timer,重传计时器有两个作用:
  1:测量该报文从发送到被确认的往返时间,2如果出现超时,启动重传。
  RTO: Retransmission Time-Out  RTO=RTT=4*RTTD  RTT: 最佳往返时间 RTTD: RTT的偏差加权平均值
  
  

  坚持计时器 Persistence Timer 

  为了防止非零窗口通知丢失造成 死锁的现象出现!
  在执行滑动窗口控制的过程中,要求发送端在接收到零窗口通告之后就停止发送,这个过程直到接收端的TCP在发送出一个非零窗口通知为止,如果下一个非零窗口通知丢失,
  那么发送端将无休止的等待接收端的通知,造成死锁
   当发送端的TCP收到一个零窗口通知书=时,就启动坚持计时器,当坚持计时器时间到,发送端的TCP就发送一个零窗口探测报文。这个报文只有一个字节数据,它有一个序号,
但它的序号不需要确认。零窗口探测报文的作用是提示接收端,非零窗口通知丢失,必须重传。
坚持计时器的值设置为重传时间的数值,最大为60秒。如果发送出的第一个零窗口探测报文没有收到应答,则需要发送第二个零窗口探测报文,直到收到非零窗口为止


    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Farmwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值