TCP/IP协议簇学习笔记(12)TCP的4个定时器

对于每个TCP连接,TCP会管理4个不同的定时器

  • 超时重传定时器
  • 坚持定时器
  • 保活定时器
  • 2MSL定时器
超时重传定时器

目的:为了防止报文丢失,希望在超时时间内收到ACK
2个方面

  • 超时时间确定
  • 重传机制

超时时间确定以后结合lwip讲解,本篇介绍重传机制
有3种情况需要发送端重传,分别对应下图

  • 发送端数据丢失失
    在这里插入图片描述
  • 接收端确认应答丢失
    在这里插入图片描述
  • 发送端收到3个同样的确认应答(快速重传)
    在这里插入图片描述
坚持定时器

在这里插入图片描述
目的:解决滑动窗口为0可能导致的死锁
当接收方由于某些原因处理不过来数据时,缓冲区填满,此时滑动窗口为0,过段时间后,当滑动窗口不为0时,接收方会发送一个串口更新通知给发送方告知对方可以发送数据流,但是如果这个更新通知丢失的话就无法继续发送数据了,为了避免这种情况,发送方会再收到滑动窗口为0时启动坚持定时器,时间间隔是超时重传定时器的时间,当时间到时就发送一个窗口探测报文,该报文不需要确认,用来提醒接收端,窗口更新报文已经丢失,请重发。若依然没反应,则加倍时间间隔,最大到60s发送一个窗口探测报文。

保活定时器

目的:检测TCP双方在长时间没有数据交互情况下连接故障问题
服务器每收到一次客户端tcp数据就重置保活定时器,如果2小时没有收到客户端数据,就发送一个探测报文,以后每75s发送一次,如果连续10次发送探测报文都没有收到客户端回应则服务器可以断开连接。

2MSL定时器

在这里插入图片描述
目的:等待足够的时间,防止已失效的连接出现在下一次连接中。
主动发起关闭的一方在接收到对方发送的FIN+ACK后进入TIME_WAIT状态,此时,主动发起关闭的一方发送ACK应答,让对方有足够的时间收到ACK,并且,如果ACK丢失的话,对方会再次发送FIN+ACK,此时,主动关闭的一方会重发ACK,并重启2MSL定时器,直到,直到双方动进入CLOSE状态。如果超过2MSL,任何状态都将丢弃。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值