news 2026/4/30 15:11:26

你的 TCP 连接正在和其他连接抢带宽——从 Reno 慢启动到 BBR 带宽探测,拆解拥塞控制的 4 代算法博弈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
你的 TCP 连接正在和其他连接抢带宽——从 Reno 慢启动到 BBR 带宽探测,拆解拥塞控制的 4 代算法博弈

1988 年 10 月,互联网差点死掉。

那一年,从 LBL(劳伦斯伯克利国家实验室)到 UC Berkeley 的链路,正常吞吐量应该是 32Kbps,实际跑出来只有 40bps。不是打错了小数点——是真的只有正常值的千分之一。数据包发出去,绝大多数在中间路由器的缓冲区里排队、溢出、被丢弃,然后发送端超时重传,制造更多数据包,堵得更厉害。这个正反馈循环有个学名:拥塞崩溃(congestion collapse)。

Van Jacobson 在那一年写了那篇改变互联网命运的论文,提出了慢启动和拥塞避免两个算法。从那以后,TCP 的每一个连接都不再是"想发多快就发多快",而是被一套精密的拥塞控制机制管着——你能拿到多少带宽,取决于你和同一条链路上的其他连接怎么博弈。

这篇文章从 1988 年的 Reno 讲起,经过 NewReno 的修补、CUBIC 的重新设计,一直到 Google 在 2016 年推出的 BBR。四代算法,核心问题始终只有一个:多个连接如何公平且高效地共享一条链路的带宽?

每一代给出了不同的答案。每一个答案都带来了新的问题。


在开始之前:先搞清楚拥塞控制在控制什么

很多讲拥塞控制的文章上来就甩公式,但如果不先搞清楚一个前提问题,后面所有的算法细节都是悬浮的:TCP 的发送速率到底由什么决定?

答案是两个窗口取最小值:

发送窗口 = min(rwnd, cwnd)

rwnd是接收窗口,由对端通告,告诉你"我的接收缓冲区还剩多少空间"。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 15:10:38

什么是嵌入式向量数据库?一起深入Zvec的架构设计与实现

在大规模语言模型(LLM)应用蓬勃发展的今天,向量检索已成为语义搜索、RAG(检索增强生成)、推荐系统等场景的核心技术。传统的向量数据库通常以独立服务形式存在,需要额外部署和维护,这在一定程度…

作者头像 李华
网站建设 2026/4/30 15:08:51

OpenClaw多智能体系统极简监控面板:零依赖部署与核心功能解析

1. 项目概述:一个为OpenClaw多智能体系统打造的极简监控面板如果你和我一样,正在本地运行一个或多个OpenClaw智能体来处理日常任务,比如自动回复邮件、定时爬取数据、或者管理GitLab上的issue,那你肯定遇到过这样的问题&#xff1…

作者头像 李华
网站建设 2026/4/30 15:01:39

Python 异常处理 完整学习笔记

(从基础、规范写法、常用异常、自定义异常、实操避坑 全整理,适配你的代码习惯)一、异常核心基础概念什么是异常代码运行时出现的错误、逻辑非法、参数不合法等,导致程序强制终止的报错,就是异常。主动抛出异常关键字只…

作者头像 李华
网站建设 2026/4/30 15:01:34

告别理论推导!用STM32CubeMX+Keil5,10分钟搞定SVPWM七段式算法代码生成

10分钟实战:用STM32CubeMXKeil5快速生成SVPWM七段式驱动代码 当你拿到一块无刷电机开发板,老板要求明天就演示PWM波形时,没人愿意花三天时间推导空间矢量方程。作为在电机控制领域踩过无数坑的工程师,我想分享一个跳过数学推导、直…

作者头像 李华
网站建设 2026/4/30 15:00:29

在Node.js后端服务中集成多模型API以应对不同任务需求

在Node.js后端服务中集成多模型API以应对不同任务需求 1. 多模型API接入的核心价值 现代后端服务常需要根据任务特性选择不同的大模型能力。Taotoken提供的统一API层允许开发者通过单一接入点调用多种模型,无需为每个供应商单独维护认证与计费逻辑。这种架构特别适…

作者头像 李华