三版全面对照

1.1 / 2 / 3 在成帧、多路复用、压缩、连接管理与安全上的逐项差异表。

作者 David更新于 第 15 篇(共 16 篇)

分层归属

层HTTP/1.1HTTP/2HTTP/3
语义(方法/状态码/字段)RFC 9110RFC 9110RFC 9110
成帧RFC 9112RFC 9113RFC 9114
头部压缩无HPACK (7541)QPACK (9204)
传输TCPTCPQUIC (9000) / UDP
加密TLS 可选TLS 事实必需TLS 1.3 内建强制

报文与成帧

项1.123
编码文本,CRLF 分行二进制帧二进制帧
帧头无固定 9 字节变长,通常 2 字节
起始行GET / HTTP/1.1伪头 :method :path同 h2
Host必需字段:authority:authority
字段名大小写不敏感强制小写强制小写
体的定界Content-Length / chunked帧长 + END_STREAM帧长 + QUIC FIN
Transfer-Encoding有禁用禁用
chunked有无无
trailer分块尾区末尾 HEADERS 帧末尾 HEADERS 帧
reason-phrase有删除删除
请求走私风险高(靠扫描定界)低(长度前置)低

并发与阻塞

项1.123
并发方式多条 TCP 连接(浏览器每域 6)单连接多流单连接多流
流标识无31 位流 ID62 位 QUIC 流 ID
响应顺序必须与请求同序任意任意
HTTP 层队头阻塞有无无
传输层队头阻塞有(每连接独立)有(全部流共享)无
取消单个请求不能(只能断连接)RST_STREAMQUIC RESET_STREAM
域名分片有效优化反模式反模式

头部压缩

项1.123
机制无(明文全量重发)HPACKQPACK
静态表—61 项99 项
动态表—有,默认 4096 字节有,默认容量 0(禁用)
字符串编码—Huffman(可选)Huffman(同表)
乱序容忍—不容忍容忍(RIC + 阻塞流)
典型头部字节~700~10–30(复用后)~10–30
失步后果—COMPRESSION_ERROR 杀连接QPACK_DECOMPRESSION_FAILED 杀连接

连接管理

项1.123
持久连接默认(Connection: close 关闭)恒持久恒持久
协议协商Upgrade 字段ALPN(h2)ALPN(h3)+ Alt-Svc / DNS HTTPS
参数协商无SETTINGS + ACK,可重发控制流首帧 SETTINGS,不可重发
保活Keep-Alive(提示)h2 PINGQUIC PING
优雅关闭Connection: closeGOAWAY + Last-Stream-IDGOAWAY(双向语义)
「未处理」保证无REFUSED_STREAMH3_REQUEST_REJECTED
逐跳字段Connection 列出概念取消概念取消
握手 RTTTCP 1 + TLS 1–2同 1.11(复访 0)
换网络断连断连连接迁移,不断

流量控制与优先级

项1.123
流量控制靠 TCPHTTP 层两级窗口 + TCPQUIC 两级(无 HTTP 层)
窗口更新—WINDOW_UPDATE(增量)QUIC MAX_DATA(绝对值)
默认窗口—65535(常需调大)QUIC 传输参数
优先级无依赖树(已废弃)无内建
现行优先级方案—RFC 9218 priority 字段RFC 9218(同一套)

已废弃 / 已删除的特性

特性状态
HTTP/1.1 流水线浏览器默认禁用
h2c 明文升级(Upgrade: h2c)RFC 9113 废弃
HTTP2-Settings 字段RFC 9113 废弃
h2 优先级树 / PRIORITY 帧RFC 9113 废弃
服务端推送(h2 与 h3)浏览器已移除支持
Warning 字段RFC 9111 移除
Accept-CharsetRFC 9110 废弃
305 Use Proxy废弃

该用哪个

场景建议
公网站点h3 + h2 并存,1.1 兜底
移动端占比高h3 收益最大(连接迁移 + 弱网抗丢包)
内网服务间(低丢包、高带宽)h2 足够;h3 的 CPU 开销未必划算
gRPCh2(生态标准),h3 支持在推进中
简单 API、低并发1.1 完全够用,别为协议而协议
大文件单流下载三者差异小,瓶颈在拥塞控制而非协议

下一篇:迁移注意事项。

本页目录