1.为什么TCP避免测量重传报文段SampleRTT?展示一下会产生不良结果的示例

有了超时就要有重传,但是就算是重传也是有策略的,而不是将数据简单的发送。数据在传输的时候不能只使用一个窗口协议,还需要有一个拥塞窗口来控制数据的流量,使得数据不会一下子都跑到网路中引起“拥 塞”。
例如,在进行重传时可能引入冗余的分组,因为被重传的分组可能已经正确的被接收了。

2.TCP为什么一直等到它收到三个重复的ack后才执行快速重传。

(1)为什么TCP设计人员在第一次收到重复ACK片段之后选择不执行快速重传
(2)举例说明三个重复的ack仍然会产生虚假的重传。

(1)有两种可能:丢包(网络拥塞) 和分组乱序
例如, ABC分组被先后发送到接收方,分组A顺利达到接收方,接收方发送了确认ACK,假定是ACK_A,并顺利地被发送方收到。而分组B很不幸,在中途丢了,没有到达接收方。分组C同A一样顺利到达了接收方,于是接收方看到了C分组的编号,发现缺少了B(因为A-B-C是按顺序的一组编号)的编号的分组,于是它只能再次发送ACK_A给发送方,以此提示发送方:自己此时并没有收到B分组。这是从发送方的角度看问题,同是也是“上帝视角”看问题。(所谓上帝视角,是因为我们已经知道了分组B是在中途丢失了)

于是继续这种情况,我们把视角切换到发送方,发送方这时候收到了第一个冗余的ACK_A,它觉得此时有两种可能性:第一种可能性是B分组丢失了(也即我们的上帝视角);然后还有第二种可能性,这种可能性就是,C分组可能先于B分组到达。这种情况听起来不大可能(因为按理来说B先发送,应当是B先到达),然而在分组传输过程中,其它层可能会改变分组的顺序,也即可能出现B和C的顺序被交换的可能性,于是第二种可能性也是成立的。

所以基于前面的论述,既然C分组可能先到达,那么传回来的冗余ACK就不一定是说明B丢失了,而是可能说明B的位置被切换了。于是TCP的设计者就设计了一个三次机制,也就是说当B被换到C分组后面的时候,第一个冗余ACK到达,先等一等看看B会不会刚好在C的后面,于是第一次的冗余没有引发立刻重传。然而B也有可能又被D分组(假设C后面有分组D和分组E)交换次序,因而再等一个D分组到达的冗余分组,再等一个E分组到达的冗余分组。当三个B后面的分组都到达了,这时候发送方收到了三个冗余的ACK之后,它终于认定不是因为被交换了次序,而是因为确实是丢了(第一种情况),于是它执行重传。

(2) 三次重复的ACK,可能是丢包引起的,丢包可能是网络拥塞造成的,也可能是信号失真造成的。也有可能是乱序引起的,而乱序和网络拥塞没有直接关系。
例如,分组A在超过重传最大时间间隔的时间后到达,此时接收端已经发生了一个希望得到分组A的ACK,发送端重传分组A,由于网络延迟,分组A又在超过重传超时间隔的时间后到达,接收端又已经发送了一个希望得到A分组的重复ACK,这样进行三次,仍然会产生虚假的重传。

TCP为什么避免测量重传报文段SampleRTT;TCP为什么等到三个重复的ack后才快速重传相关推荐

  1. TCP-F(orward)ACK:植入快速重传灵魂的强制快速重传

    纸上学来终学浅,绝知此事要躬行. 今日和友人争辩快速重传,只拿着书本上的东西和人对飙近20分钟,还自认为略有取胜,真是汗颜加羞愧. 中文版计算机网络,书上还写着接收到3次重复ACK启用快速重传.TCP ...

  2. TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,

    TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体, 一.TCPsocket 1.TCP是面向连接的 ...

  3. 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

    文章目录 一.TCP 协议 特点 二.TCP 报文段首部格式 三.TCP 报文段首部 666 控制位 一.TCP 协议 特点 TCP 协议 特点 : ① 面向连接 : TCP 协议的连接是 " ...

  4. 5.3 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接---三次握手、tcp连接释放---四次握手)

    文章目录 1.TCP协议特点 2.TCP报文段的首部格式 3.TCP连接管理 (1)连接的建立 - - - 三次握手 (2)SYN泛洪攻击 4.TCP连接释放----四次握手 5.TCP连接建立和释放 ...

  5. TCP/IP学习笔记(八)复位报文段

    TCP报文首部中存在一个RST位,如果该位被置1则表示这是个复位报文段.当一个报文段从一端发往一个不存在或者处于异常状态的另一端时,就会以一个复位报文段应答发送端,告知发送端连接出现错误,应当被关闭 ...

  6. TCP协议特点和TCP报文段

    TCP协议的特点 TCP是面向连接(虚连接)的传输层协议 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的 TCP提供可靠交付的服务,无差错.不丢失.不重复.按序到达. TCP提供全双工 ...

  7. TCP报文段中的URG和PSH

    一:TCP报文段的首部格式 首先明白TCP虽然是面向字节流的,但TCP传输的数据单元确实报文段,一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中的个字段的作用,因此只有弄清楚T ...

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

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

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

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

  10. 传输层 TCP 拥塞控制(3):快速重传与快速恢复

    当出现丢包的时候,我们将重新执行慢启动,此时意味着拥塞窗口大幅度下降发送速率也会大幅度下降,当丢包场景并不是很严重的时候,我们还可以采用快速重传,与快速恢复这样一个阶段. 为何会接收到一个失序数据段? ...

最新文章

  1. 基于Mixin Network的PHP比特币开发教程 之一:创建机器人
  2. Linux之文件管理命令
  3. 训练大规模语音数据集后的结果分析报告
  4. ise仿真添加信号_西门子TIA+PLCSIM+MCD,构建自动化仿真系统
  5. bash history 命令记录日志 实时发送到syslog server
  6. Python 一个判断对象是否是一个已知类型的函数-isinstance()
  7. 7-Zip将一个大文件压缩成多个小的压缩包
  8. 职场中的那点事--小领导大智慧
  9. LSI_阵列卡操作手册
  10. java vo转map_Java后端必备的开发规范
  11. 选择对话框 android_Android日期时间选择器对话框
  12. 如何压缩tiff图片?tif图片太大了怎么压缩?
  13. OpenHarmony学习笔记——南向开发环境搭建
  14. 详解p=q->next和p->next=q的区别,附代码
  15. Ubuntu编辑文档和查看文档
  16. BZOJ 3653: 谈笑风生
  17. 计算机中系统更新是指,Mac电脑操作系统更新了什么功能
  18. 如何用python画出自己喜欢的表情包
  19. android 手绘地图,发现一款新App:「Pott」能一键制作你的手绘足迹地图,爱旅行的你别错过...
  20. 你好,我们可以认识一下吗?

热门文章

  1. TF2.0—tf.keras.losses.BinaryCrossentropy
  2. 4.3 朴素贝叶斯分类实战——新闻分类、垃圾邮件识别
  3. 统计学习方法读书笔记5-感知机代码实现
  4. 数据预处理之独热编码
  5. 机器学习入门——分类算法的评价
  6. To程序员:要写出好代码,你需要懂点儿“底层思维”
  7. 从 Netflix 到 Alibaba,Spring Cloud 更好了吗?
  8. 让DB2跑得更快——DB2内部解析与性能优化
  9. 编码——隐匿在计算机软硬件背后的语言
  10. 【SimpleITK】医疗影像分割结果评价指标计算