进阶通信协议
HTTP/2 多路复用
单连接并发传输的帧协议
HTTP/1.1 的队头阻塞(Head-of-Line Blocking)问题:一个 TCP 连接上的请求必须串行,浏览器只能开 6 条并发连接。HTTP/2 引入帧(Frame)和流(Stream)概念:同一连接上的多个请求/响应被拆成小帧,交错传输,互不阻塞。HPACK 压缩用静态表+动态表+霍夫曼编码将头部体积压缩 85%+。Server Push 让服务器主动推送资源。二进制分帧让解析更快更可靠。但 TCP 层的队头阻塞依然存在(丢包会阻塞所有流),HTTP/3 用 QUIC 彻底解决。
HTTP/2多路复用HPACKServer Push二进制分帧流
STEP_1
二进制分帧让 HTTP 从「人类可读」变为「机器高效」文本协议 ��� 二进制协议 — PROCESSING
binary-framing.log
# HTTP/2 帧结构(9字节帧头 + 载荷)
+-----------------------------------------------+
| Length (24) |
+---------------+---------------+---------------+
| Type (8) | Flags (8) |
+-+-------------+---------------+--------------+
|R| Stream Identifier (31) |
+=+=============+==============================+
| Frame Payload ... |
+-----------------------------------------------+
# 帧类型
DATA (0x0): 传输请求/响应体
HEADERS (0x1): 传输压缩后的头部
PRIORITY (0x2): 流优先级
RST_STREAM (0x3): 终止单个流
SETTINGS (0x4): 连接配置
PUSH_PROMISE (0x5): 服务器推送预告
PING (0x6): 心跳/测延迟
GOAWAY (0x7): 优雅关闭连接二进制分帧��:HTTP/1.x 是文本���议,解析需要扫描换行符,效率低且易出错。HTTP/2 在 HTTP 语义(方法、状态码、头部)之下增加了二进制分帧层:每条消息被切分为多个帧(Frame),帧头固定 9 字节(长度3B + 类型1B + 标志1B + 流ID4B),帧类型包括 HEADERS、DATA、SETTINGS、PING、GOAWAY 等。二进制格式解析更快、更紧凑、更不易出错。
实时沙盒SANDBOX
NOMINAL
快速场景
手动调节
并发流数量
同时进行的请求数
100 个
并发流数量合理
请求头大小
压缩前的原始大小
800 B
头部大小正常
TCP 丢包率
模拟不稳定网络
0%
网络稳定,多路复用流畅
启用 Server Push
Server Push 关闭,客户端主动请求