博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
总结TCP协议中的定时器
阅读量:4150 次
发布时间:2019-05-25

本文共 1116 字,大约阅读时间需要 3 分钟。


ForeWord


上回说到TCP协议保持数据传输可靠性的一种手段就是定时器(详情戳。

那么本文就总结一下TCP协议中用到的定时器及其作用。

~tips:全文阅读仅需3min~**

1


Timer


TCP协议共有四种定时器(Timer,也称为“计时器”)

1.超时重传计时器:Retransmission Timer

为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:

  1. 若在计时器超时之前收到对报文段的确认,则撤销计时器
  2. 若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位

计算重传时间:

重传时间=2*RTT

RTT的值应该动态计算。常用的公式是:

RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.

Karn算法:对重传报文,在计算新的RTT时,不考虑重传报文的RTT。因为无法推理出:发送端所收到的确认是对上一次报文段的确认还是对重传报文段的确认。干脆不计入。

2.坚持计时器:Persistent Timer

专门为对付零窗口通知而设立的。

当发送端收到零窗口的确认时,就启动坚持计时器,当坚持计时器截止期到时,发送端TCP就发送一个特殊的报文段,叫探测报文段,这个报文段只有一个字节的数据。

探测报文段有序号,但序号永远不需要确认,甚至在计算对其他部分数据的确认时这个序号也被忽略。探测报文段提醒接收端TCP,确认已丢失,必须重传。

Attention:

坚持计时器的截止期设置为重传时间的值,但若没有收到从接收端来的响应,则发送另一个探测报文段,并将坚持计时器的值加倍和并复位,发送端继续发送探测报文段,将坚持计时器的值加倍和复位,直到这个值增大到阈值为止(通常为60秒)。

之后,发送端每隔60s就发送一个报文段,直到窗口重新打开为止。

3.保活计时器:Keeplive Timer

每当服务器收到客户的信息,就将keeplive timer复位,超时通常设置2小时,若服务器超过2小时还没有收到来自客户的信息,就发送探测报文段,若发送了10个探测报文段(没75秒发送一个)还没收到响应,则终止连接。

4.时间等待计时器:Time_Wait Timer。

  在连接终止期使用,当TCP关闭连接时,并不认为这个连接就真正关闭了,在时间等待期间,连接还处于一种中间过度状态。这样就可以时重复的fin报文段在到达终点后被丢弃,这个计时器的值通常设置为一格报文段寿命期望值的两倍。

The End


本文转载自:

你可能感兴趣的文章
经典实战教程!闭关60天学懂NDK+Flutter,值得收藏!
查看>>
给Android程序员的一些面试建议,实战解析
查看>>
给Android程序员的一些面试建议,已开源
查看>>
网易资深安卓架构师:Android开发经验的有效总结,醍醐灌顶!
查看>>
网络优化软件apk,金九银十怎么从中小企业挤进一线大厂?我先收藏为敬
查看>>
美团Android开发工程师岗位职能要求,知乎上已获万赞
查看>>
android结束进程,卧薪尝胆70天内推入职阿里,附答案
查看>>
android自学教程!BAT等大厂必问技术面试题,BAT大厂面试总结
查看>>
Android自定义View详解,知乎上已获万赞
查看>>
android路由器app,Android权限处理,2年以上经验必看
查看>>
android路由表,我了解到的面试的一些小内幕!附超全教程文档
查看>>
android路由跳转,Android面试资料集合,完整PDF
查看>>
android进程共享,记一次字节跳动Android社招面试,全网最新
查看>>
Android进程管理,有了这些中高端面试专题-大厂还会远吗?使用指南
查看>>
android适配屏幕大小,Android-MVP模式详解,全网疯传
查看>>
Android面试中常问的MMAP到底是啥东东?终局之战
查看>>
Android开发者跳槽面试,积累总结
查看>>
Android开发者面试如何系统复习?帮你突破瓶颈
查看>>
android开发面试题,分享一些行业经验,写给正在求职的安卓开发
查看>>
Android最强保活黑科技的最强技术实现,满满干货指导
查看>>