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 】
相关推荐:
使用Dockerfile构建java web环境
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
Python图片处理进阶教程_Pillow滤镜与图像增强
详解Android图表 MPAndroidChart折线图
Python文件流缓冲机制_IO性能解析【教程】
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
网站图片在线制作软件,怎么在图片上做链接?
Mybatis 中的insertOrUpdate操作
制作公司内部网站有哪些,内网如何建网站?
Thinkphp 中 distinct 的用法解析
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
Laravel如何使用模型观察者?(Observer代码示例)
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
微信小程序 input输入框控件详解及实例(多种示例)
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
linux写shell需要注意的问题(必看)
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何在自有机房高效搭建专业网站?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
Linux系统运维自动化项目教程_Ansible批量管理实战
javascript基于原型链的继承及call和apply函数用法分析
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何用搬瓦工VPS快速搭建个人网站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
JavaScript如何操作视频_媒体API怎么控制播放
zabbix利用python脚本发送报警邮件的方法
如何快速完成中国万网建站详细流程?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
如何在云主机上快速搭建多站点网站?
如何正确选择百度移动适配建站域名?
如何快速生成高效建站系统源代码?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何获取免费开源的自助建站系统源码?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Laravel如何与Pusher实现实时通信?(WebSocket示例)
再谈Python中的字符串与字符编码(推荐)
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
如何获取上海专业网站定制建站电话?
如何用PHP工具快速搭建高效网站?

