首页/计算机网络/04-network/拥塞控制 🔗 在 Obsidian 中打开
计算机网络 · 04-network

拥塞控制

难度 ★★★重要度 ★★★★★ 考查频率 低题型 选择 / 简答 拥塞拥塞控制开环控制闭环控制
速查
拥塞是网络中分组过多导致性能下降的全局性问题。分为开环控制(预防,不考虑当前状态)闭环控制(反馈,据状态调整);流量整形常用漏桶(恒定输出)令牌桶(允许突发)

核心概念

拥塞的定义与表现

网络中分组数量过多,导致网络性能下降的现象。表现随程度递进:

轻度拥塞:延迟增大
中度拥塞:开始丢包
严重拥塞:吞吐量急剧下降(死锁)

拥塞 vs 流量控制

特性拥塞控制流量控制
范围整个网络端到端(发送方-接收方)
原因网络资源不足接收方处理能力不足
方法减少注入网络的流量减少发送给接收方的流量
层次网络层+传输层数据链路层+传输层
核心区别拥塞控制面向整个网络,流量控制面向端到端,两者范围与原因都不同。

拥塞控制方法

1. 开环控制(预防)

在拥塞发生前采取措施,不考虑网络当前状态

方法:
- 流量整形(Traffic Shaping):漏桶 / 令牌桶
- 资源预留
- 拒绝新连接(准入控制)
- 分组丢弃策略

2. 闭环控制(反馈)

根据网络当前状态动态调整

过程:
1. 监测网络状态(利用率、队列长度、丢包率)
2. 将状态信息传送给相关节点
3. 调整注入网络的流量

方法:
- 显式拥塞通知(ECN)
- ICMP源站抑制(已弃用)
- TCP拥塞控制
两类对比开环=预防(事前,不考虑当下);闭环=反馈(事后,据状态调整)。

流量整形算法

漏桶算法(Leaky Bucket)

原理:分组进入漏桶,以恒定速率流出
分组 → [漏桶] → 恒定速率输出
特点:
- 输出速率恒定,消除突发流量
- 桶满时丢弃分组(或标记)
- 平滑流量

令牌桶算法(Token Bucket)

原理:以恒定速率生成令牌,分组发送需消耗令牌
令牌生成 → [令牌桶] → 分组到达时消耗令牌发送
特点:
- 允许一定的突发流量(桶中积累令牌)
- 平均速率受令牌生成速率限制
- 比漏桶更灵活
特性漏桶令牌桶
输出速率恒定可变(允许突发)
突发流量不支持支持
平滑效果中等
实现简单稍复杂

常见考法

题型分布拥塞控制 vs 流量控制、漏桶 vs 令牌桶、开环 vs 闭环、拥塞死锁是高频考点。
考点说明
拥塞控制 vs 流量控制范围和原因的区别
漏桶 vs 令牌桶输出特性、是否允许突发
开环 vs 闭环控制预防 vs 反馈
拥塞的死锁现象网络吞吐量降为零

易错点

必记
  • 拥塞控制 ≠ 流量控制,两者范围不同
  • 令牌桶允许突发,漏桶不允许。
  • 拥塞是网络层问题,但控制可在传输层实现(如 TCP)。
  • 开环控制是预防性的,闭环控制是反应性的。

核心结论

  1. 拥塞是网络资源供不应求导致的全局性问题。
  2. 拥塞控制分开环(预防)闭环(反馈)两类。
  3. 漏桶平滑流量,令牌桶允许突发
  4. TCP 的拥塞控制是互联网中最主要的闭环拥塞控制

记忆卡片

拥塞控制和流量控制的区别?
拥塞控制针对整个网络,流量控制针对端到端。
漏桶和令牌桶的核心区别?
漏桶输出恒定,令牌桶允许突发。
开环和闭环控制的区别?
开环是预防(不考虑当前状态),闭环是反馈(据状态调整)。
拥塞严重时会怎样?
吞吐量急剧下降甚至死锁。

交互动画 · 吞吐量—负载曲线

负载 吞吐量 膝点 悬崖
点击选择拥塞程度,查看吞吐量—负载曲线的对应阶段
膝点:轻度→中度(开始丢包);悬崖:严重拥塞(吞吐骤降)
手动模式
TCP 拥塞窗口增长 慢开始 拥塞避免 快重传 快恢复
慢开始拥塞避免快重传/快恢复回到慢开始
点击「开始」演示拥塞窗口增长四阶段
ssthresh = 16(初始);慢开始指数增长、拥塞避免线性增长

相关知识点

tcp-flow-and-congestion routing-and-forwarding

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。