当前位置: 首页 > news >正文

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

目录

一、PPT

二、总结

TCP 拥塞控制详解

⭐ 核心机制与算法

1. 慢启动(Slow Start)

2. 拥塞避免(Congestion Avoidance)

3. 快速重传(Fast Retransmit)

4. 快速恢复(Fast Recovery)

🔧 关键参数与行为

🌟 现代优化算法

CUBIC(Linux 默认算法)

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

相关文章:

  • Bootstrap 5学习教程,从入门到精通,Bootstrap 5 容器(Container)语法知识点及案例代码详解(4)
  • matlab模糊控制实现路径规划
  • haribote原型系统改进方向
  • 153页PPT麦肯锡咨询流程管理及企业五年发展布局构想与路径规划
  • Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)
  • 通光散基因组-文献精读139
  • Mask篇 (含引导层、不规则遮罩)
  • 2025 Vscode插件离线下载方式
  • sql入门语句-案例
  • 【YOLOs-CPP-图像分类部署】04-项目优化(加速部署)
  • 网络编程之网络基础
  • C++ 新特性详解:Lambda 表达式全解析(含实战案例)
  • 概念全解析:结构化数据,半结构化数据,非结构化数据分别是什么意思?
  • 软珊瑚成分 CI-A:靶向口腔癌细胞的 “氧化利剑” 与 ERK 密码
  • http协议,get,post两种请求方式
  • STM32学习之看门狗(理论篇)
  • 使用ArcPy进行栅格数据分析
  • Linux——TCP和UDP
  • Elasticsearch中的刷新(Refresh)和刷新间隔介绍
  • 叠瓦盘(SMR)和垂直盘(CMR)的区别—「小白教程」
  • 字体设计在线转换器/seo研究中心倒闭
  • 上传的网站打不开/宁波网络推广软件
  • 成都必去的十大景点/西安优化排名推广
  • 网站开发与设计作业/seo长尾关键词优化
  • 网站做301还是302/爱站网关键词查询网站的工具
  • wordpress users/深圳外包seo