TCP超时重传
2016-09-07 11:21
288 查看
什么是超时重传
往返时间RRT和超时重传时间RTO
新的平均往返时间RTO的计算
RTTnew=αRTTold+(1−α)RTT新样本
此处α称为平滑因子,通常α=0.9。
重传时间的计算
重传时间采用退避机制,每次退避时间为前一次的二倍,直至64s
初始值:RTO=2∗RTT
更新值:RTO=β∗RTO
β通常为2。
karn算法
如果在一个报文段中的数据被一次性地成功传输和确认,那么发送端可以准确得到该报文段传输的RTT样本。但若出现了重传,情况就会变得很复杂。例如,一个报文段发送后出现超时,TCP将在另一个报文段中重传。由于这两个报文段包含了同样的数据,发送方接收到确认信息时将无法分辨出确认信息到底是针对哪个报文段的,因为这两个报文段产生的确认信息可能是完全相同的,确认信息既可能是针对原始报文段的(这种情况可能是由于原报文段或确认在传输中被延迟造成的),也可能是对重传报文段的确认。这种现象称为确认二义性(Acknowledgement Ambiguiity)。确认的二义性将导致TCP无法准确地估算RTT。
解决方案:重传所得到的RTT不作为新的RTT来计算平均RTT,只利用非重传样本,使得平均RTT比较稳定,不会出现较大波动。为了避免确认二义性带来的问题,TCP采用了Karn算法来维护RTT的估计值。Karn算法规定,TCP只能利用没有确认二义性(既无重发、一次发送成功并得到确认的报文段)的RTT样本来对RTT的估计值进行调整。
往返时间RRT和超时重传时间RTO
新的平均往返时间RTO的计算
RTTnew=αRTTold+(1−α)RTT新样本
此处α称为平滑因子,通常α=0.9。
重传时间的计算
重传时间采用退避机制,每次退避时间为前一次的二倍,直至64s
初始值:RTO=2∗RTT
更新值:RTO=β∗RTO
β通常为2。
karn算法
如果在一个报文段中的数据被一次性地成功传输和确认,那么发送端可以准确得到该报文段传输的RTT样本。但若出现了重传,情况就会变得很复杂。例如,一个报文段发送后出现超时,TCP将在另一个报文段中重传。由于这两个报文段包含了同样的数据,发送方接收到确认信息时将无法分辨出确认信息到底是针对哪个报文段的,因为这两个报文段产生的确认信息可能是完全相同的,确认信息既可能是针对原始报文段的(这种情况可能是由于原报文段或确认在传输中被延迟造成的),也可能是对重传报文段的确认。这种现象称为确认二义性(Acknowledgement Ambiguiity)。确认的二义性将导致TCP无法准确地估算RTT。
解决方案:重传所得到的RTT不作为新的RTT来计算平均RTT,只利用非重传样本,使得平均RTT比较稳定,不会出现较大波动。为了避免确认二义性带来的问题,TCP采用了Karn算法来维护RTT的估计值。Karn算法规定,TCP只能利用没有确认二义性(既无重发、一次发送成功并得到确认的报文段)的RTT样本来对RTT的估计值进行调整。
相关文章推荐
- 聊聊TCP超时
- TCP的超时和重传
- 《TCP/IP详解 卷1:协议》 读书笔记 第21章 TCP的超时与重传
- TCP的超时与重传
- TCP-IP详解卷1-21:TCP的超时与重传(Timeout and Retransmission)
- TCP/IP详解-TCP的超时与重传
- linux的TCP超时重传--一次数据断开连接分析
- linux tcp select 超时 自查文档
- TCP 超时重传
- TCP超时重传算法
- TCP/IP编程基础——超时、多路复用、非阻塞
- TCP/IP的三次握手和四次分手以及超时机制
- C指针原理(90)-LINUX应用(4)-带超时处理的tcp服务
- 转载:TCP/IP编程基础——超时、多路复用、非阻塞
- Android TCP通信的简单实例以及常见问题[超时/主线程阻塞]
- 带超时时间的telnet该怎么玩?------检测tcp是否可连接时经常用到(本文仅给出linux版本,之前博客也有Windows版本的)
- java 处理tcp超时优化
- tcp超时与重传(转)
- tcp超时重传
- TCP/IP 详解卷一学习笔记(六):TCP 超时与重传