一、快速重传机制

上一篇讲到了TCP 的超时重传,但是超时重传往往会带来许多微妙的问题,比如说:

  • 当一个报文段丢失时,会等待一定的超时周期然后才重传分组,增加了端到端的时延。
  • 当一个报文段丢失时,在其等待超时的过程中,可能会出现这种情况:其后的报文段已经被接收端接收但却迟迟得不到确认,发送端会认为也丢失了,从而引起不必要的重传,既浪费资源也浪费时间。

幸运的是,由于TCP采用的是累计确认机制,即当接收端收到比期望序号大的报文段时,便会重复发送最近一次确认的报文段的确认信号,我们称之为冗余ACK(duplicate ACK)。
如图所示,报文段1成功接收并被确认ACK 2,接收端的期待序号为2,当报文段2丢失,报文段3失序到来,与接收端的期望不匹配,接收端重复发送冗余ACK 2。

这样,如果在超时重传定时器溢出之前,接收到连续的三个重复冗余ACK(其实是收到4个同样的ACK,第一个是正常的,后三个才是冗余的),发送端便知晓哪个报文段在传输过程中丢失了,于是重发该报文段,不需要等待超时重传定时器溢出,大大提高了效率。这便是快速重传机制。


二、为什么是3次冗余ACK

首先要明白一点,即使发送端是按序发送,由于TCP包是封装在IP包内,IP包在传输时乱序,意味着TCP包到达接收端也是乱序的,乱序的话也会造成接收端发送冗余ACK。那发送冗余ACK是由于乱序造成的还是包丢失造成的,这里便需要好好权衡一番,因为把3次冗余ACK作为判定丢失的准则其本身就是估计值。
假定通信双方如下:

A为发送端,B为接收端
A的待发报文段序号为 N-1,N,N+1,N+2
假设报文段N-1成功到达

`

从以上罗列的情况可以看出,
在没丢失的情况下,有40%的可能出现3次冗余ACK
在乱序的情况下必定是2次冗余ACK
在丢失的情况下,必定出现3次冗余ACK

基于这样的概率,选定3次冗余ACK作为阈值也算是合理的。在实际抓包中,大多数的快速重传都会在大于3次冗余ACK后发生。

三、快速重传应用实例

快速重传机制比较好理解,这里贴上笔者做的两幅图供大家学习参考,若有建议可以提出。第一幅图是在某报文段的超时重传定时器溢出前重传丢失报文段,第二幅图是对应的接收端缓存队列的窗口移动示意。

TCP的快速重传机制相关推荐

  1. 【计算机网络】传输层 : TCP 可靠传输 ( 可靠传输机制 | 快速重传机制 )

    文章目录 一.TCP 可靠传输 二.TCP 可靠传输机制 三.TCP 快速重传 机制 一.TCP 可靠传输 可靠性 : 保证 接收方进程 从 TCP 缓冲区 中读取的数据 与 发送方进程 发送的数据 ...

  2. 通过packetdrill构造的包序列理解TCP快速重传机制

    TCP的逻辑是极其复杂的,其学习曲线虽然很平缓但其每一步都是异常艰难,好在这些都是体力活,只要肯花时间也就不在话下了.想彻底理解一个TCP的机制,有个四部曲: 1.读与其相关的RFC: 2.看Linu ...

  3. TCP超时与重传机制与拥塞避免

    TCP超时与重传机制 TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制. 基本原理:在发送一个数据之后,就开启一个定时器,若是 ...

  4. TCP超时与重传机制

    TCP超时与重传机制    TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错,超时丢包等问题TCP设计的超时与重传机制.其基本原理:在发送一个数据之后,就开启一个定时器 ...

  5. TCP之超时重传机制

    TCP协议是一种面向连接的可靠的传输层协议,它保证了数据的可靠传输,对于一些出错.超时丢包等问题TCP设计了超时重传机制,其基本原理:在发送一个数据之后,就开启一个定时器,若是在这个时间内没有收到发送 ...

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

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

  7. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)

    TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...

  8. (七)深入浅出TCPIP之深入浅出TCPIP之TCP重传机制

    目录 TCP重传机制 超时重传机制 快速重传机制 专栏其他文章: 理论篇: (一)深入浅出TCPIP之理解TCP报文格式和交互流程 (二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上) (三 ...

  9. linux tcp 阻塞时间,TCP的阻塞和重传机制

    网络拥堵 现在网络上大部分的网络请求都是以TCP的方式进行传输的了.网络链路是固定的,各种链路情况也是不一样的.网络拥堵一直是TCP协议设计和使用的时候尽力要避免的.比如,从TCP协议的网络包协议设计 ...

  10. 关于TCP快速重传的细节-重传优先级与重传触发条件

    这篇文章写的有点过于细节,因此考虑到可读性和日后的可查阅性,我以两个问题作为引子.作为TCP相关项目的招聘,也可以作为面试题,不过,我敢肯定,大多数人都不能回答第一个问题,第二个问题可能会模棱两可. ...

最新文章

  1. corrplot包绘制相关性图
  2. 乐变黄杲:当前如何选择App热更新服务
  3. 三层架构的原理及实现
  4. 【转载】优酷网首席执行官兼创始人古永锵演讲
  5. 我是Leader,我被降职成了普通员工,HR说:公司要梯队年轻化
  6. C#解决Webservice第一次访问特别慢的问题
  7. 如何在Java应用中提交Spark任务?
  8. auto CAD 常用快捷键指令
  9. react routers路由地址 F5刷新白屏
  10. 批量创建钱包地址并保存私钥
  11. “青少年编程能力等级”第一、第二部分:图形化编程 Python编程 含测试样题
  12. kali 去windows共享数据--smbclient使用方法_原水_新浪博客
  13. 数学建模用python好吗_用 Python 做数学建模
  14. 2022年虚拟电厂行业研究报
  15. OpenGL编程轻松入门之使用颜色
  16. 旧上海老大杜月笙语录
  17. springboot基于javaweb的社区留守儿童帮扶系统毕业设计源码101603
  18. 陌陌走向全面衰退真怪不得疫情
  19. phpnow安装apache失败及phpnow绑定域名解决方法,网站发布到外网
  20. springboot+rocketmq(6):实现消息过滤

热门文章

  1. Log4cxx使用小结
  2. Sky Blue And Black
  3. 如何把分布式远程总线IO应用到项目中
  4. 戴尔卡耐基《人性的弱点》
  5. 播布客 视频教学文件下载方法
  6. 最新《播布客李明新概念C语言作品》
  7. 提升技能,升级思维,你学知识我送T恤,订阅专栏免费领51CTO定制T恤
  8. java怎么求偏态函数_树的不同形态
  9. promise is not a constructor
  10. 【高数】交换二次积分次序时,为什么要观察上下限大小关系?