一、常见的四种TCP定时器
1、超时重传计时器
2、坚持计时器
3、保活计时器
4、时间等待计时器
二、四个定时器的特点和应用场景
1、超时重传计时器(Retransmission Timer)
超时重传计时器:为了控制丢失的报文段,设置的一种定时器。发送端在将TCP报文发送出去之后会等待目标端对该报文的确认,此时等待的结果有两种:当超过定时器设置的时间还没有收到确认的话,则认为刚才发送的报文丢失了,需要重新传送,并将定时器复位,如果重新传送之后还是没有收到对端的确认,则进行再次重传,一般第一次重传是在发现超时后1s,第二次重传是在第一次重传后3s,第三次重传是在第二次重传后6s…;如果在重传定时器到期之前收到了对端的确认,则撤销已经设置好的重传定时器。
几点注意事项:
(1)发送端在发送完报文段之后,必须保留该报文段的副本,为发生超时重传时使用,之后在收到对端确认之后,才可以销毁该副本。
(2)发送出去的报文段和确认报文段都要进行编号,这样才能确定是哪一个报文段收到了对端确认,哪一个报文段没有收到对端确认。
(3)超时重传定时器设置的重传时间应该比报文段传输的往返时间更长一些。但是重传时间应该如何设定呢?
重传时间=2*RTT
RTT的值应该动态计算:RTT=previous RTT*i+current RTT *(1-i) 其中i通常等于90%,这个公式的意思是RTT的值等于上一次RTT值的90%加上当前RTT值的10%
Karn算法:对于重传报文,在计算新的RTT值时,不考虑重传报文的RTT值,因为无法确认发送端的确认是对上一次传送保温==报文的确认还是对重传报文的确认。
2、坚持计时器(persistent timer)
坚持计时器是专门为零窗口设立的,它的具体应用场景是,当接收端的滑动窗口为0时,发送端就停止传输数据并进入坚持计时器的轮询,直到接收端的滑动窗口不再为0。
当坚持计时器的时间到期之后,发送端就给接收端发送一个探测报文段,该探测报文段中只有一个字节,并且该探测报文段是有序号的,意思是告诉接收端,对零滑动窗口的确认已经失效,必须重传。
坚持计时器的定时时间设置为重传时间,当定时时间到了之后还没有收到对端的确认就继续发送探测报文段,并将定时时间加倍并复位,依此类推,直到定时间超过阈值(60s)之后,就每隔60s发送一个探测报文段,知道接收端的窗口打开为止,
3、保活计时器(keeplive timer)
该计时器侧重保持客户端和服务端的连接,当一方断开连接时,另一方超过保活定时器的定时时间(2小时)还没有收到对端的消息时就会发送探测报文段给另外一方,当发送了10个报文段(每隔75s发送一个)还没有收到对方的消息就断开连接。设想一下,如果tcp层没有keepalive的机制,一旦一方断开连接却没有发送FIN给另外一方的话,那么另外一方会一直以为这个连接还是存活的,几天,几月。那么这对服务器资源的影响是很大的。
4、时间等待计时器(Time_Wait Timer)
因为TCP连接是双向的,因此在关闭连接时,双方都需要关闭,。先发FIN包的一方执行的是主动关闭;后发FIN包的一方执行的是被动关闭。主动关闭的一方会进入TIME_WAIT状态,并且在此状态停留两倍的MSL(报文的最大生存周期,在Linux下一般为30s)时长。
为什么主动关闭的一方不直接进入CLOSED状态,而是进入TIME_ WAIT状态,并且停留两倍的MSL时长呢?这是因为TCP是建立在不可靠网络上的可靠的协议。例子:主动关闭的一方收到被动关闭的一方发出的FIN包后,回应ACK包,同时进入TIME_ WAIT状态,但是因为网络原因,主动关闭的一方发送的这个ACK包很可能延迟,从而触发被动连接一方重传FIN包。极端情况下,这一去一回,就是两倍的MSL时长。如果主动关闭的一方跳过TIME_ WAIT直接进入CLOSED,或者在TIME_WAIT停留的时长不足两倍的MSL,那么当被动关闭的一方早先发出的延迟包到达后,就可能出现类似下面的问题:
旧的TCP连接已经不存在了,系统此时只能返回RST包
新的TCP连接被建立起来了,延迟包可能干扰新的连接
不管是哪种情况都会让TCP不再可靠,所以TIME_WAIT状态有存在的必要性。
相关推荐
TCP重传计时器浅析
在一个TCP连接中,TCP每发送一个报文段, 就对此报文段设置一个超时重传计时器。 那么当发送多个报文段时,究竟有几个重传计时器?
TCP详解之重传机制
TCP可靠性之超时重传
UDS诊断入门第一课:手把手教你玩转0x10会话控制服务(附ISO14229实战解析)
刚接触汽车电子诊断的工程师们,往往会被厚厚的ISO 14229标准文档和各种专业术语吓退。但就像学习编程要从"Hello World"开始一样,掌握UDS协议的最佳切入点就是0x10诊断会话控制服务。这个看似简单的服务,实际上是整个诊断系统的"钥匙"——它决定了ECU(电子控制单元)当前处于何种工作模式,直接影响着其他诊断服务的可用性。 在实际车辆诊断中,ECU默认处于DefaultSession模式,这种模式下许多高级诊断功能是被禁用的。想象一下你正在开发一个需要刷写ECU固件的工具,如果连最基本的会
TCP的定时器系列 — 保活定时器
主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现。 内核版本:3.15.2 我的博客:http://blog.youkuaiyun.com/zhangskd 原理 HTTP有Keepalive功能,TCP也有Keepalive功能,虽然都叫Keepalive,但是它们的目的却是不一样的。 为了说明这一点,先来看下长连接和短连接的定义。 连接的“长短”...
图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标
如果代码对你的研究有所帮助,请为该仓库点上小星星。
Excel地理探测器实战:5分钟搞定空间分异性分析(附完整数据集)
本文详细介绍了如何使用Excel地理探测器插件进行空间分异性分析。通过5分钟实战教程,手把手指导数据格式准备、软件操作及四大探测器(分异及因子、交互作用、风险区、生态探测器)的结果解读,帮助规划师、研究者快速验证地理因素对现象分布的影响,大幅降低GIS分析门槛。
5.8.7 TCP可靠传输(三)定时器
中的窗口字段)通知而设置的,如果接收方缓存满了,就可能给发送方发送一个窗口字段值为零的报文段,当接收方缓存有了空闲时,就会向发送方发送窗口值更新报文段,这时我们又要考虑一种情况,如果窗口更新报文段丢失,此时接收方又有了缓存空间等待发送方进行数据发送,而发送方没有等到窗口更新报文,所以不能发送数据,也处于等待状态。如果服务器超过两个小时还没有收到来自于客户端的信息,此时就发出一个试探的报文段,但是如果发送了10个探测报文段对方仍然没有应答,此时的TCP的连接就终止了。这种定时器是专门对付零窗口(
数据标注的下一代SOP,可能不是Word,而是一段Prompt
再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。
TCP的定时器系列 — 超时重传定时器
主要内容:TCP定时器开篇,超时重传定时器、ER延迟定时器、PTO定时器的实现。 内核版本:3.15.2 我的博客:http://blog.youkuaiyun.com/zhangskd Q:一条TCP连接会使用多少个定时器呢? A:目前的答案是9个: 超时重传定时器,持续定时器,ER延迟定时器,PTO定时器,ACK延迟定时器, SYNACK定时器,保活定时器,FIN_WAIT2定时器,CL
【零基础学习CAPL】——弹窗信息提示
不用手动制作Panel窗口,直接使用CAPL脚本实现弹窗提示。//没有wait超时,等待测试人员确认//有wait超时,对话框在超时后自动终止//有wait超时,可以显示一个资源,即对话框可以显示额外的信息。/*参数说明text:显示在弹窗中的内容,长度限制在4096字符timeout:弹窗自动结束的时间,单位:ms。若为0,则无超时控制heading:对话框文本上方的标题。字符串最大长度限制在256个字符。resource:URL或文件路径。字符串的最大长度是有限的(512个字符)。
华为OD机试双机位C卷:采购订单 (Py/Java/C/C++/Js/Go)
华为OD机试双机位C卷 采购订单,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,并提供在线OJ模拟做题。华为OD机试真题【采购订单】
TCP的四种定时器
TCP提供可靠的端到端数据传输,保证端到端的方法之一就是确认从另一端收到的数据。但数据和ACK在传输的过程中有可能会丢失。TCP通过在发送时设置一个定时器来解决这种问题。 对于每个连接,TCP管理4个不同的定时器。 1,重传定时器:适用于希望收到另一端的确认ACK 2,坚持定时器:使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口 3,保活定时器:可检测一个空闲连接的另一端何时崩溃或重启 4,2M...
Sentaurus TCAD建模:宽温区n型FinFET模型校准与低温仿真分析
本文基于Sentaurus TCAD平台,建立了n型FinFET的宽温区(233K-393K)仿真模型,解决了低温(73K-193K)仿真失效问题。研究对比了Sprocess工艺仿真与SDE几何建模两种方法,分析了载流子冻析效应、不完全电离和迁移率退化等低温物理机制。通过优化模型参数,实现了在233K、313K和393K条件下仿真误差小于10%,并建立了符合物理趋势的低温外推模型。研究提供了完整的Sentaurus TCAD代码实现,包括器件结构定义、物理模型配置和温度相关参数校准,为宽温区FinFET仿真
TCP的定时器
7种定时器 建立连接定时器(connection-establishment timer) 重传定时器(retransmission timer) 延迟应答定时器(delayed ACK timer) 坚持定时器(persist timer) 保活定时器(keepalive timer) FIN_WAIT_2定时器(FIN_WAIT_2 timer) TIME_WAIT定时器 (TIME_WAI...
YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
一、本文介绍 本文记录的是基于 GhostNetV3 的 YOLOv11 轻量化改进方法研究。GhostNetV3的轻量模块采用重参数化方法,训练时为深度可分离卷积和1×1卷积添加线性并行分支,推理时通过逆重参数化移除分支、折叠操作,能够在不增加推理成本的同时提高性能,从而实现YOLOv11的轻量化改进。 专栏目录:YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进 专栏地址:YOLOv11改进专栏——以发表论文的角度,快速
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
TCP中的7种定时器详解
TCP中的7种定时器:建立连接定时器、重传定时器、延迟应答定时器、坚持定时器、FIN_WAIT_2定时器、TIME_WAIT定时器
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
tcp定时器
我们都知道,TCP发送的报文段是要交给IP层传送的,但IP层只能提供尽最大努力服务。也就是说TCP下面的网络所提供的是不可靠传输。因此TCP必须采取适当的策略。而定时器就发挥作用。 TCP管理的4个不同的定时器:1.重传定时器:用于当希望收到另一端的确认。2.坚持定时器:使窗口大小信息保持不断流动。3.保活定时器:检测TCP空闲连接的另一端何时崩溃或重启。4.2MSL定时器:测量一个连接处于TIM
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
TCP中的定时器
1、建立连接定时器(connection-establishment timer) 顾名思义,这个定时器是在建立连接的时候使用的, 我们知道, TCP建立连接需要3次握手, 如下图所示: 建立连接的过程中,在发送SYN时, 会启动一个定时器(默认应该是3秒),如果SYN包丢失了, 那么3秒以后会重新发送SYN包的(当然还会启动一个新的定时器, 设置成6秒超时),当然也不会一直没...
深入浅析TCP的四大定时器——TCP四大定时器
重传定时器是用来计算TCP报文段的超时重传时间的,每发送一个报文段就会启动重传定时器,如果在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位,重新计算;如果在规定时间内收到了对该报文段的确认,则撤销该报文段的重传定时器。 在流量控制窗口中,为了应付零窗口大小通知可能导致的死锁问题。如果接收端在向发送端发送了零窗口报文段后不久,接收端的接收缓存又有了一些存储空间,于是接收端向发送端发送了一个非零窗口大小的报文段,然而这个报文段在传送过程中丢失了,发送端没有收到该报文段,
TCP状态机与定时器
本文中部分内容引用自以下文章列表: https://blog.youkuaiyun.com/wdscq1234/article/details/52505191https://blog.youkuaiyun.com/whgtheone/article/details/80970292https://blog.youkuaiyun.com/u013929635/article/details/82623611https://blog.youkuaiyun.com/xiaofei0859/article/details/52794576https://ww
TCP—定时器简介
本系列文章是博主学习TCP协议以来的个人笔记。博主不能保证本文所述内容绝对正确, 所以请读者抱着怀疑的态度阅读本博客内的文字。如果读者因本博客内的文字造成损失, 本人无力负责。如果有任何谬误或者问题,希望读者不吝赐教。 定时器在TCP可靠传输的过程中起着举足轻重的作用。TCP在建立连接之后可能(保活 keep-alive定时器是可选的)会 启动四个定时器,分别是: 重传定时器:为了
4703



被折叠的 条评论
为什么被折叠?



