[点晴永久免费OA]从文本到二进制:HTTP/2不止于性能,更是对HTTP/1核心语义的传承与革新
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
云原生计算基金会(Cloud Native Computing Foundation,CNCF)是一个非盈利的开源组织,专注于推动云原生计算的发展和标准化。
而gRPC(Google Remote Procedure Call)是由Google发起并开源的高性能、跨语言RPC框架。 gRPC巧妙地结合了ProtoBuf、HTTP/2等成熟技术,为上述RPC三大问题提供了全面且标准化的解决方案。
HTTP/2协议
与HTTP/1.1的纯文本传输不同,HTTP/2引入了二进制分帧层 (Binary Framing Layer),所有HTTP消息(请求/响应)都被封装成一个个二进制编码的帧 (Frame) 进行传输。 HTTP/2的核心架构包含以下几个关键概念:
帧结构: 帧是一种长度前缀消息(Length-Prefixed-Message)。帧以固定的9字节作为帧头,后面跟着变长的帧载荷(Frame Payload),帧头包括如下公共字段:Type、Length、Flags, Stream Identifier。 +-----------------------------------------------+ | Length (24) | +---------------+---------------+---------------+ | Type (8) | Flags (8) | +-+-------------+---------------+-------------------------------+ |R| Stream Identifier (31) | +=+=============================================================+ | Frame Payload (0...) ... +---------------------------------------------------------------+
HTTP/2协议定义了10种不同类型的帧(Frame),其中通用格式包含以下几个关键类型,这些类型共同定义了帧的行为和内容。
消息的语义兼容性: HTTP/2 协议与 HTTP/1尽可能保持兼容。从应用程序的角度来看,协议的功能基本没有变化。 HTTP/1使用消息起始行(start-line)来传达目标 URI,请求方法和响应的状态代码,而HTTP/2为此使用以“:”字符开头的特殊字段(pseudo-header)来达到相同的目的。 可以看到在第一个请求中,前两个头通常类似与HTTP/1:
现在被拆分为一个标题框。
而其余的头则大致相同,都是lower-case字符。 HTTP/2尝试尽可能地最小化有效载荷大小。它将压缩与前一个请求中相同的头。在HTTP/1中,一个连续的请求看起来像是针对不同资源的初始请求。
而在HTTP/2中,对同一服务器的连续请求只需要:path头部信息。
因为所有其他头部信息都被标记并压缩缓存,并且可以通过“索引”进行还原。 参考文章:原文链接 该文章在 2025/8/28 17:06:05 编辑过 |
关键字查询
相关文章
正在查询... |