详解TCP的四种定时器.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
详解 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.5x4hellip; 其次是糊涂窗口综合症。 这个症状是滑动窗口引起的。 病因是发送方和接收方在一个很 小的滑动窗口的时候就开始数据传输, 传输结束之后, 读写的消费速度也并没有那么快, 导 致下次传输的时候, 滑动窗口还是那么小。 然后现象就是每次传输的数据都非常小。 就好比 每次开出去的火车载货量只有一节车厢,其实我们是希望能攒够 n 节车厢才开始传输。 糊涂窗口综合症有解决办法, 还不止一种, 在接收方或者发送方都可以解决。 大致就是 如果接收方解决, 那么接收方在接收窗口小于一定大小的时候, 对所有的接收请求都返回窗 口为 0 的包, 来触发另外一方的坚持定时器。 同样发送方也是, 在可以发送的数据大于一定 窗口的时候才发送。 三 :保活定时器 这个就是我们经常说的 tcp 的 keepalive 了。实际使用场景是在应用层没有数据进行传 输的时候,一定时间 (tcp_keepalive_time ,默认每 2 个小时 )发送一次保持心跳的包,如果发 送成功,则继续保持端口活跃,如果没有正常返回,则在指定次数内 (tcp_keepalive_probes , 默认是 9 次 ),指定间隔 (tcp_keepalive_intvl ,默认是 17s)发送心跳包。如果最后都没有获得 正常的 ACK ,那么才算连接失败。 当然, tcp 是否需要提供 keepalive 机制,是有争议的,我们可以为每个

文档评论(0)

wyl1921 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档