tcp超时重传
来源:互联网 发布:vb selectcase 编辑:程序博客网 时间:2024/06/13 01:20
重传定时器:TCP 必须维护一个重传定时器,以进行超时重传
Jacobson 算法只用于处理正常的情况,但是当发生重传后,如果收到一个确认,这时候就不用这个算法来调整 RTO 值了。因为你无法判断这个确认是针对第一次传输,还是后来的重传。在这种情况下,采用 Karn 算法来调整 RTO 的值 。
Karn 算法很简单:
1)、 对于发生重传的数据段,在收到确认后,不更新 RTT
2)、在重传的时候,RTO 是倍增的,直到达到最大值的限制。如果重传超过一定的次数,TCP 连接会断开
3)、在重传并收到确认后,如果下一次的数据段没有发生重传(即一次性收到确认),则又恢复 Jacobson 算法
¨ 问题:如何设置超时时间间隔 RTO?
时间间隔太短则可能导致大量不必要的重传;太长则导致性能下降;
¨ TCP 采用了一个高度动态的算法,来不断的调整时间间隔,这个算法就是 Jacobson 1988 算法
在此算法中, TCP 需要维护几个变量:
1)、RTT:对往返时间的当前最佳估计值
当一个数据段被发送出去后,TCP 启动定时器,如果在定时器过期之前确认数据段回来的话,则 TCP 测量一下这次确认所花的时间 M,然后根据如下公式更新 RTT。
RTT = aRTT + (1-a)M
其中 a 是平滑因子,典型的值是 7/8
这个公式的意思就是说,旧的 RTT 占有 7/8 的权重,新的往返时间占有 1/8 的权重
2)、D:平滑的平均偏差
有了 RTT, 如何选择 RTO 仍然需要考量,
它的计算公式是:
D = aD + (1-a)|RTT-M|
¨ RTO 的计算公式: RTO = RTT + 4D
这个算法简单高效,
¨ Karn 算法:
Jacobson 算法只用于处理正常的情况,但是当发生重传后,如果收到一个确认,这时候就不用这个算法来调整 RTO 值了。因为你无法判断这个确认是针对第一次传输,还是后来的重传。在这种情况下,采用 Karn 算法来调整 RTO 的值 。
Karn 算法很简单:
1)、 对于发生重传的数据段,在收到确认后,不更新 RTT
2)、在重传的时候,RTO 是倍增的,直到达到最大值的限制。如果重传超过一定的次数,TCP 连接会断开
3)、在重传并收到确认后,如果下一次的数据段没有发生重传(即一次性收到确认),则又恢复 Jacobson 算法
0 0
- TCP 超时重传
- tcp超时重传
- TCP超时重传
- TCP超时重传
- tcp超时重传
- tcp超时重传
- TCP超时重传机制
- TCP超时重传机制
- TCP超时重传算法
- linux TCP超时重传
- TCP超时重传算法
- TCP超时重传机制
- TCP超时与重传
- TCP超时重传机制
- TCP超时与重传
- TCP超时与重传
- TCP/IP详解学习笔记-TCP的超时与重TCP的超时与重传
- (转)TCP的超时与重传
- matlab更改默认路径
- 微型js加载库
- jQuery的deferred对象详解
- hdu 2524
- 地址栏隐藏后面的action名和路径及参数
- tcp超时重传
- 微信开发经常使用的东西
- opencv中的SVM图像分类(一)
- 【读书笔记】程序员的自我修养:链接、装载与库 第二章 编译与链接
- 利用console学习和调试JavaScript~.~
- 快快快!27个提升效率的iOS开源库推荐
- ionic轮播side box学习
- AngularJS ng-if ng-repeat下使用ng-model
- Qt项目中遇到的一些小问题汇总