HTTP/1.1
优点
-
简单易用
- 报文结构清晰:
Header(文本键值对) + Body(JSON等)
- 学习成本低,概念直观
- 报文结构清晰:
-
灵活扩展
- 支持自定义头字段与 URI 拓展
- 适配多种应用场景
-
兼容性高
- 早于 1997 年标准化,主流浏览器/客户端均支持
缺点
-
无状态特性
- 服务器不记录请求上下文
- 需依赖
Cookie
或Token
实现身份校验
-
明文传输风险
- 数据经中间节点时可能被窃取/篡改
- 安全凭证(如 Cookie)易遭中间人攻击
对 HTTP/1.0 的改进
特性 | 描述 |
---|---|
长连接 | 复用 TCP 连接,减少握手开销(默认启用 Connection: keep-alive ) |
管道传输 | 支持连续发送请求(未解决响应队头阻塞) |
Range 请求 | 通过 Range 头实现断点续传,降低带宽消耗 |
HTTP/2
核心改进
基于二进制分帧,彻底重构传输机制
优点
-
二进制分帧
- 报文拆分为
Headers 帧
和Data 帧
- 支持流量控制与请求优先级管理
- 报文拆分为
-
多路复用
- 同一 TCP 连接并行处理多个请求/响应
- 彻底解决 响应队头阻塞 问题
-
头部压缩
- 使用 HPACK 算法(静态表记录常用请求头部,动态表记录请求重复头部,哈曼夫编码字段值)
- 显著减少重复请求的header传输开销
-
服务器推送
- HTTP2引入的以上特性,使得服务器能够主动向客户端进行低时延的数据推送
缺点
-
TCP 队头阻塞残留
- 丢包时 TCP 层仍需等待重传,影响所有流
-
兼容性局限
- 部分老旧浏览器/中间件尚未支持
-
资源消耗高
- HPACK 表需额外内存与 CPU 开销
对 HTTP/1.1 的改进
- 解决了响应的队头阻塞
- 实现了服务器主动推送
- 提高了并发请求及响应性能
- 减少了请求头部的重复资源浪费
HTTP/3
核心架构
基于 UDP 的 QUIC 协议实现可靠传输,应用层握手与安全协议融合
HTTP3将HTTP2的帧改为了stream里的packet,一个请求(stream)被拆分为了多个packet
优点
-
彻底无队头阻塞
- 丢包仅影响单一流(Stream),其他流独立传输
-
极速连接建立
- 首次连接 1.5 RTT(集成 TLS 1.3)
- 会话复用实现 0 RTT 连接
-
网络迁移友好
- 基于连接 ID(Connection ID)维护会话状态
- 支持 IP 变更(如 WiFi 切 5G)无缝切换
缺点
-
UDP 传输风险
- 部分运营商限制 UDP 流量,可能影响稳定性
-
性能成本
- 用户态实现 QUIC 协议栈,CPU/内存消耗较高
对 HTTP/2 的改进
维度 | HTTP/2 | HTTP/3 |
---|---|---|
传输层协议 | TCP | UDP + QUIC |
队头阻塞 | 解决 HTTP 层,残留 TCP 层 | 全面消除 |
连接迁移 | 依赖 TCP 四元组 | 基于 Connection ID |
建连延迟 | 1 RTT(TLS)+ TCP 三次握手 | 1.5 RTT(含安全握手) |
0-RTT 支持 | 有限 | 原生支持 |