--
:
--
:
--
1216 字
4 分钟
-- 次
http2
最后更新于:
http2是什么?
HTTP/2(超文本传输协议第二版,简称h2,非加密连接为h2c)是HTTP协议的第二个主要版本,由IETF于2015年5月正式标准化(RFC 7540),基于Google的SPDY协议发展而来,旨在解决HTTP/1.1的性能瓶颈,大幅提升Web传输效率和用户体验。
一、核心定位:兼容语义,重构传输
HTTP/2完全保留HTTP/1.1的核心语义(请求方法、状态码、头部字段、Cookie等),仅在应用层与传输层之间增加了二进制分帧层,彻底重构了数据传输机制,解决了HTTP/1.x的三大核心痛点:
- 队头阻塞(Head-of-Line Blocking)
- 头部冗余大,带宽浪费
- 连接数限制(浏览器同域仅6-8个并行TCP连接)
二、五大核心特性
1. 二进制分帧(Binary Framing)
HTTP/2将所有传输内容拆分为固定格式的二进制帧(每个帧9字节头部+数据载荷),而非HTTP/1.x的文本格式:
- 帧头部包含:类型、流ID、标志位、长度等关键信息
- 帧类型:HEADERS(头部)、DATA(数据)、PRIORITY(优先级)、PUSH_PROMISE(服务器推送)等
- 优势:解析更快、错误率更低、传输更高效,为多路复用奠定基础
2. 多路复用(Multiplexing)
HTTP/2最核心的性能突破:允许在单个TCP连接上并行交错传输多个请求/响应,每个请求分配独立的流ID,帧可乱序发送,接收端通过流ID重组:
- 彻底解决HTTP层队头阻塞:一个请求阻塞不影响其他请求
- 减少TCP连接数:降低握手开销和资源消耗
- 类比:HTTP/1.1是单车道隧道,HTTP/2是多车道高速公路
3. 头部压缩(HPACK)
使用HPACK算法对HTTP头部进行双向压缩,解决HTTP/1.x头部冗余大的问题:
- 建立静态字典(常见头部如:method, :path)和动态字典(传输过程中学习新增头部)
- 对重复头部只传输索引,大幅减少头部数据量(尤其适合移动端和频繁请求场景)
- 实验数据:头部压缩率可达60%-90%,显著降低延迟
4. 服务器推送(Server Push)
服务器可主动推送客户端可能需要的资源(如CSS、JS、图片),无需等待客户端请求:
- 推送资源通过PUSH_PROMISE帧通知客户端,客户端可选择接收或拒绝
- 优势:减少请求次数,消除额外网络延迟,尤其适合首屏加载
- 注意:推送资源需缓存,避免重复传输
5. 流优先级与流量控制
- 流优先级:客户端可为请求设置优先级(1-256级),服务器根据优先级调度帧传输,确保关键资源(如HTML)优先加载
- 流量控制:基于滑动窗口机制,客户端和服务器可独立控制对方的发送速率,防止接收端被压垮
三、其他重要特性
- TLS加密普及:主流浏览器(Chrome、Firefox等)仅支持基于TLS 1.2+的h2协议,非加密的h2c协议支持有限
- 首部阻塞缓解:HTTP/2解决了HTTP层队头阻塞,但TCP层队头阻塞依然存在(这也是HTTP/3基于QUIC协议的原因)
- 向后兼容:HTTP/2可透明降级到HTTP/1.1,确保旧客户端正常访问
四、应用现状与实践
- 兼容性:全球主流浏览器(Chrome 40+、Firefox 36+、Safari 9+)和服务器(Nginx 1.9.5+、Apache 2.4.17+)均已支持HTTP/2
- 部署建议:
- 配置HTTPS证书(Let’s Encrypt免费证书),启用h2协议
- 优化服务器推送策略,避免过度推送
- 合理设置资源优先级,提升用户体验
- 结合HTTP缓存策略,最大化性能收益
五、HTTP/2 vs HTTP/1.1 核心对比
| 特性 | HTTP/1.1 | HTTP/2 |
|---|---|---|
| 协议格式 | 文本 | 二进制帧 |
| 连接模型 | 多连接并行(6-8个) | 单连接多路复用 |
| 队头阻塞 | 严重(HTTP层) | 无(HTTP层) |
| 头部压缩 | 无 | HPACK算法 |
| 服务器推送 | 无 | 支持 |
| 流优先级 | 无 | 支持(1-256级) |
总结
HTTP/2是Web性能的一次革命性升级,通过二进制分帧、多路复用、头部压缩等核心技术,在不改变HTTP核心语义的前提下,显著提升了网络传输效率,降低了延迟,改善了用户体验。如今,HTTP/2已成为现代网站的标配,而HTTP/3(基于QUIC协议)则在HTTP/2基础上进一步解决了TCP层队头阻塞问题,正在快速普及中。
需要我把HTTP/2的关键特性整理成一份可用于面试或技术分享的速记清单吗?
📡
👤
作者:
余温Gueen
🌐
版权:
本站文章除特别声明外,均采用
CC BY-NC-SA 4.0
协议,转载请注明来自
余温Gueen Blog!
推荐使用微信支付

推荐使用支付宝

- 01eo边缘函数 2026-01-07
- 02http2 2026-01-07
- 03Linux数据盘不分区可以直接挂载使用吗 2026-01-04