zoukankan      html  css  js  c++  java
  • 【学习总结】网络-TCP拥塞控制

    tcp拥塞控制

    • 出现拥塞的条件:

      • 对资源需求的总和>可用资源。
    • 后果

      • 网络中许多资源同时呈现供应不足 -- 网络性能变坏 -- 网络吞吐量将随着输入负荷增大而下降。
    • 定义:

      • 拥塞控制,可以防止过多数据注入网络,以使网络中的路由器或链路不致过载。

    为什么有了滑动窗口还需要有拥塞窗口?

    • 滑动窗口是对发送接收双方的流量控制,如果中间的网络设备的转发性能达到极限是无法感知到的,而tcp除了针对自身的收发能力做调整,还根据整体的网络情况做调整,所以有了拥塞窗口。

    tcp拥塞控制与流量控制的区别

    • 概述:

      • 拥塞控制:全局性;流量控制:点对点。
    • 详述:

      • 拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。
      • 流量控制是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使得接收端来得及接收。

    tcp拥塞控制的算法

    • 拥塞控制的算法:慢开始、拥塞避免,快重传,快恢复。

    慢开始和拥塞控制

    • 图示:慢开始 -- 拥塞避免算法 -- 网络拥塞的处理 -- 慢开始 -- 拥塞避免算法 -- ...

    • 慢开始详述:

      • 以最大报文段长度MSS为拥塞窗口cwnd的增长单位。
      • 初始零拥塞窗口cwnd=1,然后每经过一个传输轮次(往返时延RTT),拥塞窗口都呈指数增大。
      • 规定一个慢开始门限ssthread-slow start thread
      • 一直增大拥塞窗口cwnd,直到慢开始门限ssthread,然后改用拥塞避免算法。
    • 拥塞避免算法详述:

      • 加法增大:发送端的拥塞窗口cwnd每次经过一个传输轮次,就只增大一个MSS大小,即按照线性规律缓慢增大。
      • 乘法减小:当出现网络拥塞(即一次超时)时,令慢开始门限ssthread减小为当前cwnd的一半,但不小于2
        • 注意:更新慢开始门限,参考值是当前cwnd的一半,不是当前门限的一半!
      • cwnd不同大小时,执行不同算法:
        • cwnd<ssthread:慢开始
        • cwnd=ssthread:可以慢开始,也可以拥塞避免(通常做法)
        • cwnd>ssthread:拥塞避免
    • 网络拥塞的处理

      • 更新ssthread值
      • 拥塞窗口重新设置为1,并重新开始执行慢开始算法。
        • 目的:迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够的时间把队列中积压的分组处理完。

    快重传和快恢复

    • 图示:在慢开始和拥塞避免基础上改进,慢开始 -- 快重传 -- (跳过慢开始)快恢复 -- 拥塞避免 --

    • 快重传

      • 快重传:使用了冗余ACK来检查丢包的发生。
      • 当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待重传计时器超时。
      • 注:快重传并非取消重传计时器,而是在某些情况下,可更早地重传丢失的报文段。
    • 快恢复

      • 当发送端收到连续三个冗余ACK(即重复确认)时,先乘法减小,把慢开始门限ssthread减小为出现拥塞时发送方cwnd的一半。
      • 不同之处:跳过了cwnd=1起始的慢开始过程,而是将cwnd的值设置为慢开始门限ssthread改变后的值,然后开始执行拥塞避免算法(加法增大)
      • 跳过了cwnd=1起始的慢开始过程,因此称为快恢复。

    综述

    • 拥塞控制中,发送方发送窗口的大小 = min(接收端窗口rwnd, 拥塞窗口cwnd)
    • 慢开始、拥塞避免、快重传、快恢复是同时应用在拥塞控制机制之中的
      • 当发送方检测到超时:慢开始和拥塞避免;
      • 当发送方接受到冗余ACK时:快重传和快恢复。

    END

  • 相关阅读:
    bzoj 1053
    bzoj 1004 组合
    字符串哈希
    bzoj 1015 并查集
    bzoj 1003 最短路+dp
    HDU 4352 数位dp
    bzoj 1879 状压dp
    codeforces 55D 数位dp
    Codeforces 830B
    组合计数 && Stirling数
  • 原文地址:https://www.cnblogs.com/anliux/p/12873372.html
Copyright © 2011-2022 走看看