TCP 慢启动、拥塞避免、快重传和快恢复算法

为什么使用慢启动算法

当主机开始发送数据时,如果立即将大量数据注入网络,就有可能引起网络拥塞。因此,较好的方法是由小到大逐渐增大发送窗口。
初始时,cwnd=1个最大报文段大小(MSS),每收到一个确认后+1。这样,每过一个传输轮次,cwnd的值变为2,4,8,···,指数型增加。

拥塞避免

当cwnd增大到可能会导致网络拥塞时,需要进行报文重传。引入慢启动阀值ssthresh。

慢启动阀值ssthresh = 当时窗口大小的一半。

重传有两种机制:超时重发机制和高速重发机制。两种机制对应的cwnd的值不同。

cwnd = ssthresh + 3 if 高速重传机制
cwnd = 1 if 超时重发机制

超时重发机制

超时重发机制cwnd=1,接着继续执行慢启动算法。当cwnd>=ssthresh时开始线性增加,即为拥塞避免。

高速重传机制

快重传

高速重传机制采用的算法为快重传算法。快重传算法没有超时,而是收到3个以上的重复的ACK即开始重传,随后进入快恢复算法。

快恢复

快恢复算法分3个步骤:

  1. 收到第3个重复确认的ACK时,sstresh=当前cwnd的一半,cwnd=ssthresh+3。发送重传数据。
  2. 没有收到新数据的ACK之前,cwnd+1 if 收到重复的ACK;发送一个报文段 if cwnd > 未确认的报文大小。
  3. 收到新数据的ACK,cwnd=ssthresh(重传时cwnd的一半),开始拥塞避免。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 21.1 引言 TCP提供可靠的运输层。它使用的方法之一就是确认从另一端收到的数据。但数据和确认都有可能会丢失。T...
    张芳涛阅读 3,069评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,143评论 6 174
  • 本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养。 一、TCP/...
    Ruheng阅读 7,596评论 6 174
  • 传输层-TCP, TCP头部结构 ,TCP序列号和确认号详解 TCP主要解决下面的三个问题 1.数据的可靠传输...
    抓兔子的猫阅读 4,559评论 1 46
  • 本书结构是自顶向下的,所以请按下列顺序阅读: 1.计算机网络自顶向下--应用层2.计算机网络自顶向下--运输层3....
    牛富贵儿阅读 2,908评论 0 3