`
gelongmei
  • 浏览: 209992 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

TCP拥塞控制-慢启动、拥塞避免、快重传、快启动

 
阅读更多
TCP拥塞控制-慢启动、拥塞避免、快重传、快启动

一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。

作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。

对比流量控制:拥塞控制是一个全局的过程,涉及到所有的主机、路由器、以及降低网络相关的所有因素。流量控制往往指点对点通信量的控制。是端对端的问题。



    拥塞窗口:发送方为一个动态变化的窗口叫做拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度。发送方让自己的发送窗口=拥塞窗口,但是发送窗口不是一直等于拥塞窗口的,在网络情况好的时候,拥塞窗口不断的增加,发送方的窗口自然也随着增加,但是接受方的接受能力有限,在发送方的窗口达到某个大小时就不在发生变化了。

    发送方如果知道网络拥塞了呢?发送方发送一些报文段时,如果发送方没有在时间间隔内收到接收方的确认报文段,则就可以人为网络出现了拥塞。

    慢启动算法的思路:主机开发发送数据报时,如果立即将大量的数据注入到网络中,可能会出现网络的拥塞。慢启动算法就是在主机刚开始发送数据报的时候先探测一下网络的状况,如果网络状况良好,发送方每发送一次文段都能正确的接受确认报文段。那么就从小到大的增加拥塞窗口的大小,即增加发送窗口的大小。

    例子:开始发送方先设置cwnd(拥塞窗口)=1,发送第一个报文段M1,接收方接收到M1后,发送方接收到接收方的确认后,把cwnd增加到2,接着发送方发送M2、M3,发送方接收到接收方发送的确认后cwnd增加到4,慢启动算法每经过一个传输轮次(认为发送方都成功接收接收方的确认),拥塞窗口cwnd就加倍。

   



    拥塞避免:为了防止cwnd增加过快而导致网络拥塞,所以需要设置一个慢开始门限ssthresh状态变量(我也不知道这个到底是什么,就认为他是一个拥塞控制的标识),它的用法:

                   1. 当cwnd < ssthresh,使用慢启动算法,

                   2. 当cwnd > ssthresh,使用拥塞控制算法,停用慢启动算法。

                   3. 当cwnd = ssthresh,这两个算法都可以。



   拥塞避免的思路:是让cwnd缓慢的增加而不是加倍的增长,每经历过一次往返时间就使cwnd增加1,而不是加倍,这样使cwnd缓慢的增长,比慢启动要慢的多。

    无论是慢启动算法还是拥塞避免算法,只要判断网络出现拥塞,就要把慢启动开始门限(ssthresh)设置为设置为发送窗口的一半(>=2),cwnd(拥塞窗口)设置为1,然后在使用慢启动算法,这样做的目的能迅速的减少主机向网络中传输数据,使发生拥塞的路由器能够把队列中堆积的分组处理完毕。拥塞窗口是按照线性的规律增长,比慢启动算法拥塞窗口增长块的多。

  实例:1.TCP连接进行初始化的时候,cwnd=1,ssthresh=16。

             2.在慢启动算法开始时,cwnd的初始值是1,每次发送方收到一个ACK拥塞窗口就增加1,当ssthresh =cwnd时,就启动拥塞控制算法,拥塞窗口按照规律增长,

             3.当cwnd=24时,网络出现超时,发送方收不到确认ACK,此时设置ssthresh=12,(二分之一cwnd),设置cwnd=1,然后开始慢启动算法,当cwnd=ssthresh=12,慢启动算法变为拥塞控制算法,cwnd按照线性的速度进行增长。

          

     AIMD(加法增大乘法减小)

          1. 乘法减小:无论在慢启动阶段还是在拥塞控制阶段,只要网络出现超时,就是将cwnd置为1,ssthresh置为cwnd的一半,然后开始执行慢启动算法(cwnd<ssthresh)。

         2. 加法增大:当网络频发出现超时情况时,ssthresh就下降的很快,为了减少注入到网络中的分组数,而加法增大是指执行拥塞避免算法后,是拥塞窗口缓慢的增大,以防止网络过早出现拥塞。

       这两个结合起来就是AIMD算法,是使用最广泛的算法。拥塞避免算法不能够完全的避免网络拥塞,通过控制拥塞窗口的大小只能使网络不易出现拥塞。

  

      快重传:

      快重传算法要求首先接收方收到一个失序的报文段后就立刻发出重复确认,而不要等待自己发送数据时才进行捎带确认。接收方成功的接受了发送方发送来的M1、M2并且分别给发送了ACK,现在接收方没有收到M3,而接收到了M4,显然接收方不能确认M4,因为M4是失序的报文段。如果根据可靠性传输原理接收方什么都不做,但是按照快速重传算法,在收到M4、M5等报文段的时候,不断重复的向发送方发送M2的ACK,如果接收方一连收到三个重复的ACK,那么发送方不必等待重传计时器到期,由于发送方尽早重传未被确认的报文段。



      快恢复:

       1. 当发送发连续接收到三个确认时,就执行乘法减小算法,把慢启动开始门限(ssthresh)减半,但是接下来并不执行慢开始算法。

       2. 此时不执行慢启动算法,而是把cwnd设置为ssthresh的一半, 然后执行拥塞避免算法,使拥塞窗口缓慢增大。

     

摘抄自:计算机网络(谢希仁第五版)。

分享到:
评论

相关推荐

    TCP拥塞控制例题-202004011

    本题考察的是TCP拥塞控制的三个主要阶段:慢启动、拥塞避免和快速恢复,以及如何根据拥塞窗口(cwnd)的变化来分析这些阶段。 1. **慢启动阶段**: 在TCP连接建立后,发送方的拥塞窗口初始设置为一个较小的值,通常...

    TCP拥塞控制算法慢启动,拥塞避免,快速重传,快速恢复

    要想更好的了解TCP端到端拥塞控制机制,首先要学习端到端拥塞控制的4个基本也是最主要的算法:slow_start, congestion avoidance, fast retransmit, fast recovery。

    TCP拥塞控制的典型算法分析

    TCP拥塞控制机制还包括慢启动、拥塞避免、快速重发和快速恢复四个阶段。在慢启动阶段,拥塞窗口逐渐增加,直到达到慢启动阈值时,进入拥塞避免阶段。在拥塞避免阶段,拥塞窗口逐渐增加,直到检测到有分组的丢失时,...

    TCP拥塞控制四个主要过程

    TCP拥塞控制主要包括四个阶段:慢启动阶段、拥塞避免阶段、快速重传和快速恢复阶段。 一、慢启动阶段 在TCP连接建立初期,源端会逐步增加发送的数据量,以避免网络拥塞。这是因为,新建立的TCP连接不能一开始就...

    TCP-congestion-window-control-.rar_TCP拥塞窗口_ns tcp_拥塞仿真_拥塞窗口

    TCP拥塞控制主要通过四种算法实现:慢启动(Slow Start)、拥塞避免(Congestion Avoidance)、快速重传(Fast Retransmit)和快速恢复(Fast Recovery)。以下是对这些算法的详细解释: 1. 慢启动:当TCP连接建立...

    TCP协议与拥塞控制

    - 慢启动阶段:TCP首次连接或重传超时后,cwnd初始化为一个较小值,然后每次接收到确认,cwnd会翻倍,直到达到阈值进入拥塞避免阶段。 - 拥塞避免:在拥塞避免阶段,TCP以较保守的方式增加cwnd,例如每次只增加1个...

    TCP-Congestion-Control-Algorithm.rar_TCP 拥塞控制_TCP拥塞控制_reno_tcp c

    本文件主要探讨了两种常用的TCP拥塞控制算法——Reno TCP和Vegas TCP,通过模拟实验来对比它们的性能。 首先,我们来看Reno TCP算法。Reno是TCP的一个经典版本,它的拥塞控制策略基于“慢启动”和“拥塞避免”两个...

    tcp拥塞控制

    在TCP协议中,拥塞控制主要通过四个算法来实现:慢启动、拥塞避免、快速重传和快速恢复。 **慢启动**: 慢启动算法是为了防止网络一开始就发送大量数据导致的拥塞。当一个新的TCP连接建立时,拥塞窗口(cwnd)被...

    tcp连接建立-关闭-窗口-慢启动1

    4. **慢启动** - 在TCP连接刚开始时,为了避免过快的数据发送导致网络拥塞,TCP引入了慢启动算法。在连接建立后,发送方设置一个较小的拥塞窗口cwnd(Congestion Window),然后逐步增加窗口大小,而不是一开始就...

    基于LwIP 的 TCP 拥塞控制方法的改进

    LwIP遵循RFC2581标准,集成了慢启动、拥塞避免、快速重传和快速恢复等拥塞控制算法,以实现高效且稳定的网络通信。 #### LwIP中的TCP拥塞控制方法 ##### 1. 慢启动算法与拥塞避免算法 慢启动算法在TCP连接建立...

    TCP网络拥塞控制

    2. **拥塞避免(Congestion Avoidance)**:当cwnd达到一定阈值,即慢启动阈值(ssthresh),TCP进入拥塞避免阶段,这时窗口的增长速度变为线性,以更谨慎的方式控制数据发送,避免突然引发拥塞。 3. **快速重传...

    基于机器学习的TCP拥塞控制算法识别研究.pdf

    "基于机器学习的TCP拥塞控制算法识别研究" 本文主要研究基于机器学习的TCP拥塞控制算法识别问题。目前,准确识别服务器端采用的拥塞控制算法对于预防和缓解TCP网络拥塞具有重要意义。但是,当前已有的对拥塞控制...

    TCP 拥塞控制 个人总结资料 PPT

    自己花了两周总结整理的关于TCP拥塞控制的PPT,包括背景,研究现状,慢启动、拥塞避免等算法描述,以及典型的四种拥塞控制策略的介绍,资料内容很详实,值得参考

    TCP拥塞控制TCP拥塞控制TCP拥塞控制

    TCP拥塞控制机制包括重传机制、滑动窗口、流量控制和拥塞控制等。 一、重传机制 TCP的重传机制是通过序列号与确认应答来实现的。在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个确认应答消息,表示...

Global site tag (gtag.js) - Google Analytics