TCP 四种定时器(重传定时器,坚持计时器,保活定时器,时间等待计时器)

发布时间 - 2026-01-11 00:06:47    点击率:

TCP 四种定时器

重传定时器

主要为了防止报文丢失或者阻塞。当A向B发送报文时,就会启动重传定时器,若在定时器到达之后,仍没有收到B的确认报文,则A会重新发送上次发送的报文。同时,令重传定时器复位。继续计时。

坚持计时器

此计时器针对下面场景:

当B向A发送了0窗口报文,B此时已经没有空间接受A发送的数据了,通知A停止发送。A在收到后即停止发送,等待一段时间后,B有了一些空间,可以继续接收了。此时再向A发送非0窗口报文。如果此非0窗口报文在网络中阻塞或者丢失了,那么A将永远以为B没有空间接收数据,B也永远在等待A发来的数据。这样就会造成死锁的局面。

在A接收到B发送的0窗口报文后,就设立坚持定时器,当定时器到达后,A就像B发送一个探测报文。B收到探测报文后会给出A确认报文。

* 确认报文中的窗口值不是0,则死锁局面打开。
* 确认报文中的窗口值是0,则重置坚持定时器,并将时间翻倍,但是最大不能超过60秒。(到达60后,以后都是60秒)
* A在发送探测报文后,启动重传定时器,若没有收到B的确认报文,则重传探测报文。

保活定时器

应用场景:客户机因为某些故障退出,而服务器并不知道,还在一直等待客户机发来的数据,这样就白白浪费了计算机资源。

在服务器端设置保活计时器,服务器每收到客户机的一次消息,就重置保活计时器,时间通常为2小时。若2个小时都没有收到客户机发来的消息,服务器就像客户机发送一个探测报文,以后每隔75分钟发送一次。若连续发送了10个探测报文后客户机仍无响应,则服务器就会认为客户机故障,并断开这次连接。

时间等待计时器

时间等待及时器用于TCP“四次挥手”阶段。当客户端向服务器发送最后一次确认报文时,就设定一个时间等待及时器,等待2MSL时间后再结束连接。

MSL:最长报文段寿命,大小为30s~2分钟。根据不同的应用有不同的设置。

客户机为什么要等待2MSL时间?

①为了保证服务器能够收到客户机发送的最后一个确认报文。

因为这个最后报文可能丢失,服务器收不到客户机的确认信息,就无法进入CLOSED状态。就会在重传定时器到达后重新发送上一次的报文(此时会重置时间等待计时器,再次等待2MSL时间),这样客户机在等待2MSL时间过程中就可以收到这个重传报文,并重新发送确认报文。

②防止出现“已失效的连接请求报文”再次出现的情况。

客户机在等待的这2MSL时间中,就可以使此次连接的所有报文都从网络中消失,这样在下一次新的连接中就不会出现旧的连接请求报文。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# TCP  # 四种定时器  # 几种定时器  # 定时器详解  # Android进程保活之提升进程优先级  # C# 定时器保活机制引起的内存泄露问题解决  # Android 后台运行白名单实现保活  # node后端服务保活的实现  # 详解Android 8.0以上系统应用如何保活  # Android应用保活实践详解  # 详解Android进程保活的方法  # 详解App保活实现原理  # 计时器  # 死锁  # 就会  # 在等待  # 就像  # 送了  # 就可以  # 都是  # 会在  # 上一  # 翻倍  # 希望能  # 并将  # 在一  # 四种  # 谢谢大家  # 后会  # 中就  # 每隔  # 不能超过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  打造顶配客厅影院,这份100寸电视推荐名单请查收  个人摄影网站制作流程,摄影爱好者都去什么网站?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel如何实现数据库事务?(DB Facade示例)  如何快速建站并高效导出源代码?  Laravel如何自定义错误页面(404, 500)?(代码示例)  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  详解Android图表 MPAndroidChart折线图  Thinkphp 中 distinct 的用法解析  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  如何在Windows 2008云服务器安全搭建网站?  如何在服务器上配置二级域名建站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  EditPlus 正则表达式 实战(3)  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  网站制作免费,什么网站能看正片电影?  黑客如何通过漏洞一步步攻陷网站服务器?  iOS验证手机号的正则表达式  Python并发异常传播_错误处理解析【教程】  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  移动端脚本框架Hammer.js  利用vue写todolist单页应用  如何在景安服务器上快速搭建个人网站?  Laravel Session怎么存储_Laravel Session驱动配置详解  网站建设要注意的标准 促进网站用户好感度!  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Swift中循环语句中的转移语句 break 和 continue  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  做企业网站制作流程,企业网站制作基本流程有哪些?  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何基于云服务器快速搭建个人网站?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  昵图网官网入口 昵图网素材平台官方入口  Android滚轮选择时间控件使用详解  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在阿里云购买域名并搭建网站?  创业网站制作流程,创业网站可靠吗?  Android自定义控件实现温度旋转按钮效果  如何在IIS管理器中快速创建并配置网站?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  详解Android——蓝牙技术 带你实现终端间数据传输