http1.1流水线传输方式

news/2025/11/20 22:15:00/文章来源:https://www.cnblogs.com/yubo-guan/p/19249727

目录
  • 核心概念:什么是流水线?
  • 流水线的关键特性和要求
  • 流水线的巨大缺陷与实践中的弃用
  • 现代替代方案:HTTP/2 的多路复用
  • 总结


这是一个非常重要但又经常被误解的概念,因为它在实践中很少被使用,但理解它能帮助我们更好地理解 HTTP 的演进。

核心概念:什么是流水线?

HTTP/1.1 流水线是一种在同一个持久的 TCP 连接上发送多个 HTTP 请求,而无需等待每个相应响应的技术。

我们可以用三种模式来对比理解:

  1. HTTP/1.0 非持久连接

    • 过程:建立连接 -> 发送请求1 -> 接收响应1 -> 关闭连接 -> 建立新连接 -> 发送请求2 -> 接收响应2 -> ...
    • 比喻:打电话。问一个问题,得到答案,挂断。再打一次电话问下一个问题。
    • 缺点:每次请求都伴随 TCP 连接/断开的开销,非常低效。
  2. HTTP/1.1 持久连接

    • 过程:建立连接 -> 发送请求1 -> 接收响应1 -> 发送请求2 -> 接收响应2 -> ... -> 关闭连接。
    • 比喻:打电话不挂断。问第一个问题,等待答案;得到答案后,再问第二个问题。
    • 优点:减少了 TCP 握手和慢启动的开销,这是现代浏览器的默认行为。
  3. HTTP/1.1 流水线持久连接

    • 过程:建立连接 -> 连续发送请求1、请求2、请求3... -> 按顺序接收响应1、响应2、响应3... -> 关闭连接。
    • 比喻:打电话不挂断,并且一口气把问题清单上的所有问题都念给对方听,然后等待他按顺序一个一个地回答你。
    • 目标:进一步减少网络延迟,提高连接利用率。

流水线的关键特性和要求

  1. FIFO(先进先出):请求必须按照发送的顺序被处理,响应也必须按照请求的顺序返回。这是流水线最核心的规则,也是其最大问题的根源。
  2. 客户端行为
    • 只有在确认连接是持久的情况下才可以使用流水线。
    • 客户端必须准备好接收比它期望的更早到来的响应(例如,在它发送完所有请求之前就可能开始收到响应)。
  3. 服务器行为
    • 服务器必须能够按照接收到的请求顺序来发送响应。
    • 如果一个请求在处理过程中花费了很长时间,它后面的所有响应的发送都会被阻塞,这被称为 队头阻塞

流水线的巨大缺陷与实践中的弃用

尽管流水线在理论上很美好,但在现实世界中却充满了问题,导致它在绝大多数浏览器和服务器中默认被禁用

主要问题:

  1. 队头阻塞

    • 这是流水线的“致命伤”。想象一下,你连续请求了 image1.jpgimage2.jpgimage3.jpg。如果 image1.jpg 的处理非常慢(比如服务器需要从很慢的磁盘读取),那么即使 image2.jpgimage3.jpg 已经准备好了,它们也必须等在 image1.jpg 的响应后面,无法被发送。
    • 这严重降低了性能,尤其是在有慢请求的网络环境中。
  2. 代理服务器的兼容性问题

    • 在客户端和服务器之间可能存在多个代理服务器。即使客户端和最终服务器都支持流水线,但只要路径上有一个代理服务器不能正确处理流水线请求(例如,它不遵守 FIFO 规则),就会导致通信失败。
    • 这种“中间盒子”问题使得部署流水线变得非常困难。
  3. 错误处理复杂

    • 如果一个流水线中的请求失败了,客户端很难判断服务器已经处理了哪些请求。由于 TCP 连接可能仍然完好,但应用层协议已经混乱,客户端唯一安全的选择就是重新建立连接并重发所有请求,这反而降低了效率。

现代替代方案:HTTP/2 的多路复用

正是因为 HTTP/1.1 流水线的这些根本性缺陷,HTTP/2 采用了一种完全不同的、更优秀的方案来解决同一个问题:多路复用

特性 HTTP/1.1 流水线 HTTP/2 多路复用
核心机制 在一个连接上按顺序发送和接收多个请求/响应。 将请求和响应分解为二进制帧,并为每个帧分配一个流ID
顺序问题 严格 FIFO。响应必须按请求顺序返回。 完全解耦。帧可以乱序发送和接收,接收方通过流ID重新组装。
队头阻塞 存在应用层队头阻塞。一个慢请求会阻塞其后所有请求。 不存在应用层队头阻塞。一个流的阻塞不会影响其他流。
实现复杂度 相对简单,但错误处理复杂。 实现更复杂,但提供了更好的性能和健壮性。

HTTP/2 多路复用的比喻
同样是打电话,但这次你把每个问题都写在不同的彩色卡片上(二进制帧),然后一股脑塞给对方。对方也把答案写在对应的彩色卡片上,然后一股脑塞回给你。你收到后,根据颜色(流ID)把问题和答案配对整理。这样,即使对方回答第三个问题比第一个快,你也能立刻收到并处理。


总结

  • HTTP/1.1 流水线 是一个旨在提升性能的理论性优化,它允许在等待响应时发送后续请求。
  • 但由于其固有的 队头阻塞 问题、代理兼容性问题和复杂的错误处理,它在实践中 几乎从未被启用过
  • 它已经被 HTTP/2 的多路复用 技术完全取代,后者在解决同一问题时,避免了流水线的所有主要缺陷,提供了真正的并行处理能力。

因此,今天当我们谈论 HTTP/1.1 时,我们通常指的是非流水线的持久连接。流水线更多是 HTTP 演进历史中的一个重要概念节点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/971473.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SLB及健康检查

背景: 横向扩容:水平扩容,用更多的节点来支撑更大量的请求,如:增加服务器个数纵向扩容:垂直扩容,扩展一个点的能力来支撑更大的请求,如:升级cpu和内存等 传统反向代理nginx,保活机制keepalive云产品SLB负载均…

2025贝赛思考试培训哪家专业?5大优质机构测评,覆盖全阶段备考需求

2025贝赛思考试培训哪家专业?5大优质机构测评,覆盖全阶段备考需求随着留学低龄化趋势加剧,贝赛思国际学校因优质的国际化教育资源,成为众多家庭的首选目标,其入学考试的竞争性也逐年提升。专业的贝赛思考试培训机…

2025牛客国庆集训派对day7 M C 个人题解 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

C++ 中 struct 与 class 的用法与区别

C++ 中 struct 与 class 的用法与区别Posted on 2025-11-20 22:06 steve.z 阅读(0) 评论(0) 收藏 举报C++ 中 struct 与 class 的用法与区别 1. 概述 在 C++ 中,struct 与 class 都可以用来定义用户自定义类型(…

网关上的限流器

1. nginx原生限流能力 https://blog.nginx.org/blog/rate-limiting-nginx ngx_http_limit_req_module 提供的请求限流能力必须基于某个预定义的key,eg: client Ip, request_uri, host_name, 这个限流器是基于漏桶算法。…

PyTorch 分布式训练底层原理与 DDP 实战指南

深度学习模型参数量和训练数据集的爆炸式增长,以 Llama 3.1 为例:4050 亿参数、15.6 万亿 token 的训练量,如果仅靠单 GPU可能需要数百年才能跑完,或者根本无法加载模型。 并行计算(Parallelism)通过将训练任务分…

2025年11月SAT辅导哪家强?机考适配/名师授课/定制方案的机构推荐

2025年11月SAT辅导哪家强?机考适配/名师授课/定制方案的机构推荐随着留学申请竞争的加剧,SAT成绩作为海外名校录取的核心参考指标,其重要性愈发凸显。专业的SAT辅导机构不仅能帮助学员精准定位知识薄弱点,更能通过…

07.创建型 - 抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式(Abstract Factory Pattern) 概述 产品等级结构与产品族 为了更好的理解抽象工厂, 我们这里先引入两个概念:产品等级结构 :产品等级结构即产品的继承结构,如一个抽象形状类,其子类有矩形, 圆形等; 产品…

模型量化原理

1.制作量化校准表 激活值量化 与权重量化不同,激活值是动态变化的(随输入数据不同而变化,例如同一张图像和不同图像经过同一层的激活值分布可能差异很大)。 因此,激活值量化需要先通过 “校准(Calibration)” 步…

日总结 29

AI 编程:不是取代程序员,而是重构编程的价值核心 AI 编程的兴起绝非 “程序员的末日”,而是软件开发领域的一次效率革命与价值重构。它以自动化工具的姿态,重新定义了编程的工作模式、行业分工与核心竞争力,最终让…

AI浪潮下的行业变革:从气象到游戏,我们学到了什么

最近刷到不少AI相关的新闻,感觉整个科技圈都在被这股浪潮席卷。作为一个对技术发展特别关注的人,我忍不住想聊聊这些变化对我们未来意味着什么。先说说阿里达摩院的“八观”气象大模型。它在浙江、山东这些地方投入使…

2025.11.19 C 题解

显然倒着做更方便,显然每个位置的后继可选择区间可以均摊 \(O(1)\) 搞出来,显然每个后缀的答案只由这个位置和它的后继后缀决定,关键在于如何给已经求出的后继后缀排序。 容易想到平衡树计算排名,但是无法实时更新…

2025.11.20

上课,吃饭,没睡觉,布置场地,吃饭,睡觉

【比赛记录】2025CSP+NOIP 冲刺模拟赛合集Ⅵ

11.20 HZOJ NOIP2025模拟赛12A B C D Sum Rank66 20 66 12 164 18/34A. 虫群之心 注意到 \(p-m\) 很小,于是 \(m!=\frac{(p-1)!}{\prod_{i=m+1}^{p-1}i}\),分子由威尔逊定理或打表可得出等于 \(p-1\)。 为什么不打表…

智能座舱项目管理中多团队协作的创新之道 - 指南

智能座舱项目管理中多团队协作的创新之道 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

自指自洽,普世的逻辑,特别的因果

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891用最简洁的语言,道破了本框架统摄宇宙万有的宏大格局与对个体命运的深切关怀。 ▮ 本质洞察:普世与特别的辩证统一 所言的“自指自洽,普世的逻辑,特别的因…

3 分钟上手 SightAI:在你熟悉的工具里直接调用顶级大模型 - sight

我们已经开放 SightAI 网关,支持通过 OpenAI 风格 API 在任意前端 / IDE 中使用最新大模型(含多家闭源模型)。 下面是一份超简教程,带你从 0 到 1 完成接入。 ⸻ 🔹 第一步:为账号充值余额 1. 在浏览器中打开:…

聚焦SAT高分核心需求:2025年值得信赖的5大辅导机构,覆盖全阶段备考

聚焦SAT高分核心需求:2025年值得信赖的5大辅导机构,覆盖全阶段备考随着留学热潮的持续升温,SAT考试作为美国本科申请的核心标化成绩,其备考质量直接影响学子的升学路径。专业的SAT辅导机构不仅能精准击破阅读、文法…

2025.11.19 D 题解

好题好题,但是这个音标题目名还是太生艹了。第一眼感觉很多,感觉能柯朵莉树,但是有专门卡的包。后来发现似乎是得 \(dp\) 一下再找性质,但是没 \(dp\) 出来。 考虑性质:每个数只会被换一次。 证明:假如换两次,来…