---
title: "一个例子搞懂 TCP 拥塞控制"
description: "概念先解释下什么叫拥塞“当某一路由器在单位时间内接收到的数据量多于其可发送的数据量时，它就需要把多余的部分存"
date: 2022-07-01T08:43:59Z
canonical: https://xiaobox.github.io/p/2022-07-01-yi-ge-li-zi-gao-dong-tcp-yong-se-kong-zhi/
author: 小盒子
categories: ["系统底层"]
tags: ["算法", "网络"]
source: https://mp.weixin.qq.com/s/zY4mwcpupz8HQcBgMiuKVQ
license: CC BY-NC-SA 4.0
license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/
---

# 一个例子搞懂 TCP 拥塞控制

## 概念

先解释下什么叫**拥塞**

> “
> 
> 当某一路由器在单位时间内接收到的数据量多于其可发送的数据量时，它就需要把多余的部分存储起来。假如这种状况持续，最终存储资源将会耗尽，路由器因此只能丢弃部分数据。路由器因无法处理高速率到达的流量而被迫丢弃数据信息的现象称为拥塞。当路由器处于上述状态时，我们就说出现了拥塞。
> 
> ”

什么是**拥塞控制？**

> “
> 
> 即使仅有一条通信连接，也可能造成一个甚至多个路由器拥塞。若不采取对策，网络性能将大受影响以致瘫痪。在最坏的情况下，甚至形成拥塞崩溃。为避免或者在一定程度上缓解这种情况，TCP 通信的每一方实行拥塞控制机制。不同的TCP版本采取的行为有所差异。
> 
> ”

## 拥塞控制方法

虽然我们聊的是 TCP 协议的拥塞控制，但也要知道其实有不止一种拥塞控制方法。在最为宽泛的级别上，可以根据**网络层是否为传输层拥塞控制提供了显示帮助**来区分。

具体来说有两种：

-   端到端拥塞控制，即 TCP 采用的方式，网络层没有为传输层拥塞控制提供显示帮助。
-   网络辅助的拥塞控制，路由器向发送方提供关于网络中拥塞状态的显示反馈信息。

## TCP 拥塞控制算法

该算法主要包括三个部分：

-   慢启动
-   拥塞避免
-   快速恢复

TCP 拥塞控制常常被称为 **加性增、乘性减（Additive-Increase,Multiplicative-Decrease,AIMD)** 拥塞控制方式。AIMD拥塞控制引发了锯齿行为。

![Image](https://pub-f29bf2b53160470c9a85250116509a24.r2.dev/post/2022-07-01-yi-ge-li-zi-gao-dong-tcp-yong-se-kong-zhi/001-76a565b0.jpg)

**重点来了** ，下面通过中国科学技术大学 郑烇教授的精彩视频讲解，通过一个例子生动且彻底地理解 TCP 拥塞控制。

