TCP知识4

F-RTO(ForwardRTORecovery)

根据TCP采取的拥塞控制机制,如果出现了超时,则就会进入拥塞避免算法,而且对于超时的情形会执行“慢启动”,这会极大的降低TCP的吞吐量。
但是由于TCP是建立在IP之上的,IP是无连接的,不同的IP数据报可能走不同的路径,因而属于一个TCP连接的不同的报文段可能走的是不同的路径,这意味着它们可能乱序到达。因此超时可能是因为报文段在IP中走了一条低速路径,并不是真的出现了丢包。考虑以下情景,两个主机A和B之间进行TCP通信,A要发送TCP报文段a,b,c,d,e到B:
  1. A发送报文段a,这时候IP网络选择的路径是path1,它是一个“正常”的路径
  2. IP网络路由发生变化,A和B之间的路径变成了path2,它是一个“低速”路径
  3. A发送报文段b,这时候IP网络使用新的“低速”路径path2
  4. IP网络路由发生变化,A和B之间的路径又变回了path1,它是一个“正常”路径
  5. A发送报文段c,这时候IP网络选择的路径是path1
  6. B收到报文段a,并对它进行确认
  7. A发送报文段d,并使用路径path1
  8. A发送报文段e,并使用路径path1
  9. B收到报文段c,报文乱序,不进行确认
  10. A发现报文段b超时,并开始执行拥塞算法
  11. B收到报文段b,并对报文段b和c进行确认
  12. B收到报文段d,并对它进行确认
  13. B收到报文段e,并对它进行确认
这个简单的场景中,很明显报文不是丢弃了,只是因为IP网络的路由变动出现了延时抖动,从而出现了一个虚假的超时。在实际网络中,延时抖动是不可避免的,因而应该要避免这种抖动导致TCP执行拥塞避免算法。TCP采用了F-RTO来解决该问题。
F-RTO的基本思想是判断RTO是否正常,从而决定是否执行拥塞避免算法。方法是观察RTO之后的两个ACK。如果ACK不是冗余ACK,并且确认的包不是重传的,会认为RTO是虚假的就不执行拥塞避免算法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值