HTTP/2
HTTP协议的第二个主要版本,2015年正式标准化,引入多路复用、二进制分帧、头部压缩(HPACK)和服务端推送等特性,是gRPC的底层传输协议
核心事实
时间轴 (近 90 天)
自2023年以来,HTTP/2等协议漏洞的变种攻击显著增多。
HTTP2Shell将HTTP/2的帧处理与Brotli解压串联起来,放大了单点缺陷的影响。
http2shell 指的是一类通过 HTTP/2 协议触发的远程代码执行(RCE)风险,影响范围覆盖 Node.js、Python 等主流运行时。
HTTP/2 相比 HTTP/1.1 引入了二进制分帧、头部压缩与多路复用。
HTTP/2 的二进制分帧层将通信拆分为 HEADERS、DATA、SETTINGS、RST_STREAM 等帧类型,每个流有独立的 ID 和状态机(idle、open、half-closed 等)。
HTTP/2 多路复用允许同一连接上交错传输多个流,流优先级、窗口更新等机制可能成为资源耗尽入口。
在边缘层对异常 HTTP/2 帧与超大头部做拦截与限流,可降低 http2shell 类攻击风险。
QPACK是HTTP/3中用于头部压缩的算法,类似于HTTP/2的HPACK。
Claude 曾反对为 jpm 实现 HTTP/2,但作者坚持;实测显示 HTTP/2 在家用连接上快约 17%,但在 GitHub runner 上持平或更差,冷启动 nuxt 安装最慢可达 2 倍,大 tarball 上多消耗 8% 到 15% CPU,并增加 60KB 二进制体积,最终 3671 行 HTTP/2 代码被删除。
SSE运行在标准HTTP/1.1分块传输编码或HTTP/2、HTTP/3多路复用流之上
还有 3 条时间轴事件
全部知识事实 (17)
相比WebSocket,SSE实现更轻量、天然支持断线重连,在只需服务端推送的单向场景下是更优的工程选择
75%已验证HTTP/2通过多路复用技术允许在单条TCP连接上并发传输多个请求,HTTP/3将传输层从TCP切换到QUIC协议
75%待验证HTTP/2相比HTTP/1.1支持多路复用、头部压缩和服务端推送,解决了HTTP/1.1的队头阻塞问题
65%待验证HTTP/2是IETF于2015年发布的HTTP协议(RFC 7540),核心创新是二进制分帧和多路复用,解决了HTTP/1.1的队头阻塞问题
60%待验证自2023年以来,HTTP/2等协议漏洞的变种攻击显著增多。
50%待验证HTTP2Shell将HTTP/2的帧处理与Brotli解压串联起来,放大了单点缺陷的影响。
50%待验证在边缘层对异常 HTTP/2 帧与超大头部做拦截与限流,可降低 http2shell 类攻击风险。
50%待验证http2shell 指的是一类通过 HTTP/2 协议触发的远程代码执行(RCE)风险,影响范围覆盖 Node.js、Python 等主流运行时。
50%待验证HTTP/2 相比 HTTP/1.1 引入了二进制分帧、头部压缩与多路复用。
50%待验证HTTP/2 的二进制分帧层将通信拆分为 HEADERS、DATA、SETTINGS、RST_STREAM 等帧类型,每个流有独立的 ID 和状态机(idle、open、half-closed 等)。
50%待验证HTTP/2 多路复用允许同一连接上交错传输多个流,流优先级、窗口更新等机制可能成为资源耗尽入口。
50%待验证QPACK是HTTP/3中用于头部压缩的算法,类似于HTTP/2的HPACK。
50%待验证Claude 曾反对为 jpm 实现 HTTP/2,但作者坚持;实测显示 HTTP/2 在家用连接上快约 17%,但在 GitHub runner 上持平或更差,冷启动 nuxt 安装最慢可达 2 倍,大 tarball 上多消耗 8% 到 15% CPU,并增加 60KB 二进制体积,最终 3671 行 HTTP/2 代码被删除。
50%待验证SSE运行在标准HTTP/1.1分块传输编码或HTTP/2、HTTP/3多路复用流之上
50%待验证CVE-2026-92392 是一个 use-after-free 漏洞,源于 curl 错误处理服务器发来的 HTTP/2 RST_STREAM,当原因为 HTTP_1_1_REQUIRED 或 REFUSED_STREAM 时,会导致 struct Curl_easy 的 use-after-free。
50%待验证HTTPX支持HTTP/2协议,而requests仅支持HTTP/1.1
50%待验证HTTP/2 头部压缩采用 HPACK 算法
50%