文章目录

  • 超时重传
    • 超时重传时间RTO
    • 重传二义性
    • 如果多次超时呢?——超时时间间隔加倍
  • 快速重传
  • 超时重传和快速重传的对比

超时重传

重传机制会设定一个定时器,当超过指定的时间后,没有收到对方的 ACK 确认应答报文,就会重发该数据,这就是超时重传

超时重传时间RTO

假设在重传的情况下,超时时间 RTO 过长或过短时,会发生什么事情呢?

  • 当超时时间 RTO 较大时,重发就慢,丢了老半天才重发,没有效率,性能差;
  • 当超时时间 RTO 较小时,会导致可能并没有丢就重发,于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。

所以精确的测量超时时间 RTO 的值是非常重要的,这可让我们的重传机制更高效。

那RTO该如何设置最高效呢?
设置成略大于报文往返时间RTT
具体做法:取多个RTT的取平均值
比如第一次 RTT 为 500ms,第二次 RTT 为 800ms,那么第三次发送时,各让一步取平均值 RTO 为 650ms。

重传二义性

重传必然会有重传二义性
重传二义性:当重传一方收到重传请求中的某个请求的应答时,它不能区分该应答对应哪一次请求。

  • 如果算作对第一次的应答,就会出现如下图 1 和图 2 中的问题,RTT 时间明显是大于实际值
  • 如果算作对第二次的应答,,就会出现图 3 中的问题,RTT 时间明显小于实际值

那么如何解决呢?
在TCP头加入重传序列号,用序列号来唯一标识这次请求。

如果多次超时呢?——超时时间间隔加倍

如果超时重发的数据,再次超时的时候,TCP 的策略是超时时间间隔加倍
也就是每当遇到一次超时重传的时候,都会将下一次超时时间间隔设为先前值的两倍。两次超时,就说明网络环境差,不宜频繁反复发送。

快速重传

超时重传最大的问题就是太慢了,需要一直等到超时了才重传,
「快速重传」可以解决超时重发的时间等待问题。

快速重传机制是如何工作的?
快重传要求,接收者如果接收到一个乱序的分组的话,就返回对前一个正确分组的确认应答,
当发送方连续收到三个冗余ACK,就会马上快速重传丢失数据,不必等到超时时间再重传。

图示如下:

超时重传和快速重传的对比

超时重传缺点是太慢了,RTO的设置不好把握
快速重传解决了超时重传的慢速缺点,但是多发了好几个ACK会导致网络更加拥塞

TCP-超时重传和快速重传相关推荐

  1. TCP的拥塞避免、超时重传、快速重传、快速恢复

    转自:http://blog.csdn.net/itmacar/article/details/12278769 感谢博主的辛勤成果! 为了防止网络的拥塞现象,TCP提出了一系列的拥塞控制机制.最初由 ...

  2. 计算机网络之(2):TCP 相关知识——累积确认,三次握手,四次挥手,滑动窗口,超时重传、快速重传

    文章目录 TCP 概述 socket 的作用和存在意义 如何保证传输的可靠性 累积确认机制 TCP 三次握手建立连接 总结三次握手 四次挥手 总结四次挥手 TCP 连接突然终止 滑动窗口机制 总结滑动 ...

  3. 以太网 TCP协议交互过程中出现丢包时的解决机制,超时重传、快速重传、SACK与DSACK

    2.7.3 以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分) 参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写. 一.超时重传机制 ...

  4. TCP 滑动窗口(快速重传)

    目录 一.滑动窗口的来由 二.滑动窗口 1.滑动窗口模型 2.滑动窗口可能出现的状况 (1) 客户端发送的报文丢了(快重传机制) (2) 服务端发送的ACK丢了(先收到了排序靠后的ACK) 三.滑动窗 ...

  5. pandas算加权平均值_4000 字详解TCP超时与重传,看完没收获算我输

    专注于Java领域优质技术,欢迎关注 作者: tobe 来自:tobe的呓语 上一篇介绍 TCP 的文章「TCP 三次握手,四次挥手和一些细节」反馈还不错,还是蛮开心的,这次接着讲一讲关于超时和重传那 ...

  6. 计算机网络超时重传时间,TCP超时重传机制

    超时重传是TCP协议保证数据可靠性的另一个重要机制,其原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止.[1] 中文名 ...

  7. TCP-IP详解:快速重传与快速恢复

    快速重传算法 快速重传算法在之前的文章中有介绍,如果收到一个out-of-order的报文段时, TCP需要立刻产生一个ACK,这个ACK不应该被延时,目的在于让对方知道收到一个失序的报文,并告诉对方 ...

  8. 计算机网络TCP拥塞控制窗口大小变化、重传、滑动窗口、流量控制等

    转载自:[计算机网络] - TCP 重传.滑动窗口.流量控制.拥塞控制_3000~3500的数据早已被接收了,因为 ack 都到了 4000 了,已经意味着 4000 之前__浮生_的博客-CSDN博 ...

  9. TCP/IP学习笔记(四)TCP超时重传及拥塞控制

    TCP是可靠的传输层协议,但这并不意味着一端发送的数据一定可以到达另一端,因为传输过程中遇到的情况是不可控的,很有可能就有某些数据发生丢失,所以"可靠"其实并不可靠. 不过毕竟现如 ...

最新文章

  1. 《评人工智能如何走向新阶段》后记(再续8)
  2. 2019年企业新增长 从雇佣“机器人员工”开始
  3. PHP JSON_ENCODE 不转义中文汉字的方法
  4. vscode安装本地服务器_如何用本地的VSCode连接极链AI的GPU服务器
  5. 003_SQL语言简介
  6. js条件语句初步练习
  7. Java黑皮书课后题第5章:*5.14(计算最大公约数)下面是求两个整数n1和n2的最大公约数的程序清单5-9的另一种解法:...提示用户输入两个正整数,然后显示最大公约数
  8. 如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha
  9. java中字符编码详解
  10. android view stop,android – onDestroyView片段永远不会在onStop之后调用
  11. python机器学习库sklearn——多类、多标签、多输出
  12. 宏想固态无法格式化,SM2258XT主控开卡成功经验,SM2259XT可参考
  13. Cityscapes数据集介绍
  14. 软件测试非功能性需求,什么是非功能测试?非功能测试包括哪些类型?
  15. 各层电子数排布规则_原子核外电子排布规则
  16. 代码规范 : 关于注释和日志
  17. 1.java exception handing
  18. UCB——上界置信算法
  19. TZT3822EN静态信号测试分析系统
  20. 人工智能语言--PROLOG

热门文章

  1. CSS 过度中ease与ease-in-out的区别(ease曲线)
  2. 2019高考河北计算机分数线,2019河北软件职业技术学院各省录取分数线是多少
  3. 文件去重复 相同文件搜索易语言源码 附成品
  4. C++学习(五):SOL2库的使用
  5. RestTemplat
  6. 开发疣猪飞行摇杆A10C(第一章)
  7. ESP32使用Arduino环境开发摇杆
  8. 宽带安装经验、教训及宽带对打游戏的影响及游戏电脑推荐
  9. java 结束调试快捷键_键盘快捷键-Eclipse终止调试/运行的捷径是什么?
  10. 使用VMware Player在Ubuntu中运行Windows