位置: 编程技术 - 正文

详解TCP的四种定时器

编辑:rootadmin

推荐整理分享详解TCP的四种定时器,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

详解TCP的四种定时器

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

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

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

一:重传定时器

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

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

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

详解TCP的四种定时器

二:坚持定时器

坚持定时器是使用在一方滑动窗口为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,默认是s)发送心跳包。如果最后都没有获得正常的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的四种定时器

本文链接地址:https://www.jiuchutong.com/biancheng/378229.html 转载请保留说明!

上一篇:Linux中的搜索文件命令(linux系统搜索文件内容)

下一篇:shell脚本学习之调用脚本将文件打包zip的方法示例(shell脚本入门详解)

  • 什么原始凭证可以填写
  • 物业公司物业费收入会计分录
  • 电子发票打小了可以报销吗
  • 资产报废需要税务登记吗
  • 项目部电缆属于固定资产吗
  • 长期投资算资产负债表吗
  • 滞留票怎么做账务处理
  • 所得税纳税申报表在哪里打印
  • 增值税留抵怎么填申报表
  • 资本公积的核算内容不包括
  • 公司人事怎么办公积金提取流程?
  • 经营租赁不动产发票备注栏
  • 公司注销取不到采购发票怎么汇算清缴?
  • 小规模商业企业税率
  • 退回多交的所得税怎么做分录小规模
  • 未达起征点的增值税要交所得税吗
  • 生产型企业出口非自产产品能享有退税吗
  • 金融业营业税改增值税
  • 不动产60%和40%抵扣时间
  • 一个十图
  • 公司购买理财产品的收益计入什么科目
  • 融资租赁哪些项目可以增值税抵扣
  • 餐饮店工装
  • 其他综合收益会计科目编码
  • 实收资本怎样入账
  • window1020h2更新问题
  • 鼠标玩游戏飘怎么回事
  • 计提跌价准备会影响利润吗
  • 专设销售机构的各项经费应列支什么科目
  • 承租人对经营租赁和融资租赁会计处理方式
  • 华硕路由器登录地址
  • 无形资产的摊销年限不得低于多少年
  • vue项目使用
  • 担保公司代偿账户是什么
  • members-area.exe是什么进程 members-area进程查询
  • wordpress文章分页插件
  • 固定资产报废后的处理程序
  • php毫秒转换时分秒
  • PHP:imagefilledarc()的用法_GD库图像处理函数
  • 货物运输业增值税专用发票
  • 实收资本明细账模板
  • 公司员工的车加油可以开公司发票吗
  • 对方开了红字信息表我们开发票怎么做账
  • 不跳槽怎么形容
  • 工伤保险赔偿范围和企业承担范围
  • 代开增值税发票需要预交所得税吗
  • 终止劳动合同赔偿N+1
  • 失控发票要补交所得税吗
  • 汇算清缴银行手续费扣除比例是多少
  • 回购股票不注销如何发可转债
  • 如何计算保费合同未规定加成比例
  • 给供应商支付货款的付款申请由谁提出
  • 租来设备本身原因致人损害
  • 工会筹备金该按什么计算
  • 生产型企业账务处理方法
  • 凭证上的数字金额怎么填
  • mysql8.0并行复制
  • Windows Server 2008脱机文件配置攻略
  • vc运行程序exe停止工作怎么办
  • ubuntu20.04问题
  • linux怎么用root运行命令
  • centos ftp上传文件
  • centos安装rz命令
  • win7 64位旗舰版如何实现快速删除U盘?win7快速删除U盘的设置方法
  • thinkpade431升级内存多大好
  • 批处理setlocal
  • Linux base shell重定向详解
  • shell脚本获取进程pid
  • recycleview使用
  • 安卓绘图软件推荐
  • python操作数据库语句
  • windows ipython
  • 广西国家税务局官网
  • 税务局风险防控形成长远
  • 小规模出售不动产怎么交税
  • 一般纳税人开票的税率是多少
  • 南京江宁区地税局待遇(南京各个区税务局待遇)
  • 河南省郑州市巩义市籍贯怎么写
  • 如何推进社会治理
  • 四川税务专管员查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设