全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解TCP的四种定时器

详解TCP的四种定时器

在TCP协议中有的时候需要定期或者按照某个算法对某个事件进行触发,那么这个时候,TCP协议是使用定时器进行实现的。在TCP中,会有四种定时器:

(1)重传定时器
(2)坚持定时器
(3)保活定时器
(4) 时间等待计时器

这四个定时器都有各自的具体作用。

一:重传定时器

重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间。当TCP发送报文段时,就创建这个特定报文段的重传计时器,可能发生两种情况:若在计时器超时之前收到对报文段的确认,则撤销计时器;若在收到对特定报文段的确认之前计时器超时,则重传该报文,并把计时器复位;
重传时间=2*RTT;

RTT的值应该动态计算。常用的公式是:RTT=previous RTT*i + (1-i)*current RTT。i的值通常取90%,即新的RTT是以前的RTT值的90%加上当前RTT值的10%.

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

二:坚持定时器

坚持定时器是使用在一方滑动窗口为0之后,另外一方停止传输数据,进入坚持定时器的轮询,直到滑动窗口不再为0了。
说说术语,首先是滑动窗口,可以简单理解为缓冲区剩余空间大小。不管是写缓冲还是读缓冲,一旦一方通告了自己的滑动窗口大小,另外一方就会根据滑动窗口大小传递窗口大小的数据了。但是,当被通告,一方的滑动窗口大小为0的时候,另外一方就会启动坚持定时器,基本也是使用TCP指数退避方法,第一次1.5秒,第二次1.5x2秒,第三次1.5x4…
其次是糊涂窗口综合症。这个症状是滑动窗口引起的。病因是发送方和接收方在一个很小的滑动窗口的时候就开始数据传输,传输结束之后,读写的消费速度也并没有那么快,导致下次传输的时候,滑动窗口还是那么小。然后现象就是每次传输的数据都非常小。就好比每次开出去的火车载货量只有一节车厢,其实我们是希望能攒够n节车厢才开始传输。
糊涂窗口综合症有解决办法,还不止一种,在接收方或者发送方都可以解决。大致就是如果接收方解决,那么接收方在接收窗口小于一定大小的时候,对所有的接收请求都返回窗口为0的包,来触发另外一方的坚持定时器。同样发送方也是,在可以发送的数据大于一定窗口的时候才发送。

三:保活定时器

这个就是我们经常说的tcp的keepalive了。实际使用场景是在应用层没有数据进行传输的时候,一定时间(tcp_keepalive_time,默认每2个小时)发送一次保持心跳的包,如果发送成功,则继续保持端口活跃,如果没有正常返回,则在指定次数内(tcp_keepalive_probes,默认是9次),指定间隔(tcp_keepalive_intvl,默认是17s)发送心跳包。如果最后都没有获得正常的ACK,那么才算连接失败。

当然,tcp是否需要提供keepalive机制,是有争议的,我们可以为每个tcp连接设置是否启用keepalive和启用keepalive的各个指标设置。

四:时间等待定时器

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

补充:

2MSL定时器:MSL是报文段做大生存时间(Maximum Segment Lifetime),设置这个定时器有两个目的:

其一是为了测量连接处于TIME_WAIT状态的时间.这样可以让TCP再次发送最后的ACK以防止这个ACK丢失(如果丢失,另一端会重传FIN)。

其二,为允许老的重复分节在网络中消逝。具体可以解释为,如果一个TCP连接在断开之前有迷途分节尚未消逝,在断开该TCP连接之后立刻重启一个同样的连接(双方的IP地址和端口port相同),这时之前的迷途的老分节可能对新的新的TCP连接接收,从而造成未定义的错误。为了避免这种情况,TCP规定在TIME_WAIT状态,不能启动一个连接的化身。既然TIME_WAIT状态维持2MSL,这就保证了一个连接上的分组及其应该在 2MSL内都会消失。

以上就是关于 TCP 的四种定时器的讲解,如果大家有疑问可以留言或者到本站社区讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# TCP的四种定时器  # TCP  # 定时器  # TCP 四种定时器(重传定时器  # 坚持计时器  # 保活定时器  # 时间等待计时器)  # 计时器  # 四种  # 就会  # 希望能  # 自己的  # 是在  # 都有  # 会有  # 是有  # 一是  # 两种  # 我们可以  # 这就  # 如果没有  # 这种情况  # 这个时候  # 谢谢大家  # 重启  # 设置为  # 则在 


相关文章: 如何快速搭建高效简练网站?  个人网站制作流程图片大全,个人网站如何注销?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何通过万网虚拟主机快速搭建网站?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  ppt制作免费网站有哪些,ppt模板免费下载网站?  油猴 教程,油猴搜脚本为什么会网页无法显示?  如何快速建站并高效导出源代码?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  网站专业制作公司有哪些,做一个公司网站要多少钱?  如何在服务器上配置二级域名建站?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何通过山东自助建站平台快速注册域名?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  微信推文制作网站有哪些,怎么做微信推文,急?  建站之星如何保障用户数据免受黑客入侵?  如何通过IIS搭建网站并配置访问权限?  重庆市网站制作公司,重庆招聘网站哪个好?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何用美橙互联一键搭建多站合一网站?  如何用西部建站助手快速创建专业网站?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  高防服务器租用如何选择配置与防御等级?  建站之星如何优化SEO以实现高效排名?  如何用花生壳三步快速搭建专属网站?  建站之星如何快速生成多端适配网站?  如何确认建站备案号应放置的具体位置?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  建站之星多图banner生成与模板自定义指南  公司网站制作需要多少钱,找人做公司网站需要多少钱?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  音响网站制作视频教程,隆霸音响官方网站?  利用JavaScript实现拖拽改变元素大小  昆明网站制作哪家好,昆明公租房申请网上登录入口?  IOS倒计时设置UIButton标题title的抖动问题  高端智能建站公司优选:品牌定制与SEO优化一站式服务  建站之星会员如何解锁更多建站功能?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在IIS7上新建站点并设置安全权限?  如何选择PHP开源工具快速搭建网站?  如何选择适配移动端的WAP自助建站平台?  如何在Golang中指定模块版本_使用go.mod控制版本号  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何零基础在云服务器搭建WordPress站点?  济南网站制作的价格,历城一职专官方网站?  股票网站制作软件,网上股票怎么开户?  寿县云建站:智能SEO优化与多行业模板快速上线指南  如何在腾讯云服务器上快速搭建个人网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。