【计算机网络】第3章:传输层—TCP 拥塞控制

目录

一、PPT

二、总结

[TCP 拥塞控制详解](#TCP 拥塞控制详解)

[⭐ 核心机制与算法](#⭐ 核心机制与算法)

[1. 慢启动(Slow Start)](#1. 慢启动(Slow Start))

[2. 拥塞避免(Congestion Avoidance)](#2. 拥塞避免(Congestion Avoidance))

[3. 快速重传(Fast Retransmit)](#3. 快速重传(Fast Retransmit))

[4. 快速恢复(Fast Recovery)](#4. 快速恢复(Fast Recovery))

[🔧 关键参数与行为](#🔧 关键参数与行为)

[🌟 现代优化算法](#🌟 现代优化算法)

[CUBIC(Linux 默认算法)](#CUBIC(Linux 默认算法))

[BBR(Bottleneck Bandwidth and RTT)](#BBR(Bottleneck Bandwidth and RTT))

[📊 拥塞控制流程总结](#📊 拥塞控制流程总结)

[💡 核心设计原则](#💡 核心设计原则)


一、PPT

二、总结

TCP 拥塞控制详解

核心目标 :防止网络因过载而崩溃,公平分配带宽资源,最大化网络吞吐量。
核心思想 :通过动态调整发送速率(拥塞窗口 cwnd)探测网络容量上限。


⭐ 核心机制与算法

1. 慢启动(Slow Start)
  • 目的:初始阶段快速探测可用带宽。

  • 机制

    • cwnd 初始值 = 1 MSS(最大报文段大小)。

    • 每收到 1 个 ACKcwnd 指数增长cwnd *= 2)。

    • 增长上限 :达到 慢启动阈值(ssthresh) 后进入拥塞避免。

  • 触发场景

    • 新连接建立时

    • 超时重传(RTO)后

2. 拥塞避免(Congestion Avoidance)
  • 目的:接近网络容量时转为线性增长,避免拥塞。

  • 机制

    • 每收到 1 个 ACKcwnd 线性增长cwnd += 1/cwnd → 约每 RTT 增加 1 MSS)。
  • 退出条件

    • 发生丢包(超时或收到 3 个重复 ACK)
3. 快速重传(Fast Retransmit)
  • 触发条件 :收到 3 个重复 ACK(即发送方连续收到 4 个相同 ACK)。

  • 行为

    • 立即重传丢失报文,无需等待超时。

    • 进入 快速恢复 阶段(避免降为慢启动)。

4. 快速恢复(Fast Recovery)
  • 目的:在部分丢包时维持较高吞吐量。

  • 机制

    • ssthresh 设为 max(cwnd/2, 2 MSS)(减半窗口)。

    • cwnd = ssthresh + 3 MSS(补偿已确认的 3 个重复 ACK)。

    • 每收到一个重复 ACK,cwnd += 1 MSS(维持窗口大小)。

    • 收到新数据的 ACK 后,将 cwnd 设为 ssthresh,退出快速恢复。

经典算法组合 :以上 4 步统称为 Tahoe (含慢启动+拥塞避免)和 Reno(增加快重传+快恢复)。


🔧 关键参数与行为

参数 作用 调整时机
cwnd 发送方可发送的最大数据量(动态调整) 根据 ACK 或丢包事件更新
ssthresh 慢启动与拥塞避免的切换阈值 丢包时设为 max(cwnd/2, 2)
丢包判定 超时重传 → 网络严重拥塞 直接重置 cwnd=1,进入慢启动
3 个重复 ACK → 部分丢包 触发快重传+快速恢复

🌟 现代优化算法

CUBIC(Linux 默认算法)
  • 三次函数 替代线性增长,更公平且适应高带宽延迟积(BDP)网络。

  • 核心特点:

    • 窗口增长与 时间 而非 ACK 数量相关。

    • 在拥塞避免阶段更平滑地逼近最大容量。

BBR(Bottleneck Bandwidth and RTT)
  • 主动测量网络路径的 最大带宽(BtlBw)最小 RTT,动态调整发送速率。

  • 避免传统算法依赖丢包作为拥塞信号(在高丢包率网络中更高效)。


📊 拥塞控制流程总结

💡 核心设计原则

  1. 保守启动 :初始 cwnd 较小,避免冲击网络。

  2. 加性增,乘性减(AIMD)

    • 增长阶段:线性/指数增加带宽利用率(公平性)。

    • 减少阶段:乘性降窗快速响应拥塞(稳定性)。

  3. 快速响应:通过重复 ACK 尽早检测丢包,减少超时等待。


总结一句话 :TCP 拥塞控制通过 动态调整发送窗口(慢启动探测 → 拥塞避免维稳 → 快重传/快恢复止损),在公平性与效率之间取得平衡,确保网络高吞吐、低延迟、高可靠性。

相关推荐
是小满满满满吗3 小时前
传输层:udp与tcp协议
linux·服务器·网络
努力敲代码呀~3 小时前
前端高频面试题2:浏览器/计算机网络
前端·计算机网络·html
小刘同学++3 小时前
ECB(电子密码本,Electronic Codebook) 和 CBC(密码分组链接,Cipher Block Chaining)区分于用途
网络·ssl
CryptoPP3 小时前
使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
后端·python·websocket·网络协议·区块链
猎板PCB厚铜专家大族4 小时前
多层PCB技术解析:从材料选型到制造工艺的深度实践
网络·制造
FakeOccupational5 小时前
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
网络·游戏
fei_sun7 小时前
【计算机网络】三报文握手建立TCP连接
网络·tcp/ip·计算机网络
Johny_Zhao8 小时前
2025年6月Docker镜像加速失效终极解决方案
linux·网络·网络安全·docker·信息安全·kubernetes·云计算·containerd·yum源·系统运维
PypYCCcccCc8 小时前
支付系统架构图
java·网络·金融·系统架构