首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么http应该添加二进制帧来实现多路复用?

为什么http应该添加二进制帧来实现多路复用?
EN

Stack Overflow用户
提问于 2022-01-13 10:00:36
回答 1查看 84关注 0票数 0

本文声称二进制帧层成为http中TCP连接多路复用的基础,这让我感到困惑。

https://developers.google.com/web/fundamentals/performance/http2#design_and_technical_goals

令人困惑的是,HTTP客户端可以在一个TCP连接中发送更多请求,而无需等待响应并接收相应请求的响应。那就是“框架”是请求和回应。那么它为什么要添加二进制帧呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 10:16:42

让我们看看你的建议:

客户端可以在一个TCP连接中发送更多请求,而无需等待响应。

到目前为止,很好:我可以在同一个连接上发送"GET /foo“,然后立即"GET /bar”。

并接收对应请求的响应。

因此,服务器用一些HTML内容回复"200 OK“,并且.等等,是"/foo“还是"/bar"?在你自己的描述中,关键词是“对应的”--我们需要某种方式来表达“这个回应对应于请求#1”。

然后,在发送第一个响应的过程中,服务器完成了对另一个请求的处理,并准备发送部分不同的响应;但是,如果它跳入"200 OK",这将似乎是它已经发送的响应的一部分。因此,我们还需要能够说“这是一个新响应的开始”,以及“这个内容是响应#2的延续”。

要做到这一点,我们需要一个新的抽象:一个框架,它的头部可以编码细节,比如“接下来的100个字节是响应#2的开始,它对应于请求#1”。(我不确定HTTP/2框架是否就是这样工作的,但我认为这是一个粗略的原则。)

我们可以这样做,并且仍然保持协议的人类可读性(这就是我们所说的“基于文本的”与“二进制”的真正含义),但是会有很多这样的帧头,所以我们可以使它们变得越短,越好。因此,如果我们对性能感兴趣,我们可以放弃将“人类可读性”作为一种要求,而最终得到一个像HTTP/2这样的二进制框架协议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70694652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档