浏览器-http1.X和http2.0区别总结
对HTTP1.0、HTTP1.1和HTTP2.0的区别做出一个总结
一 特点
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

影响http的因素如下:
- 浏览器阻塞(HOL blocking):早期的浏览器会限制同一个域名的最大连接数,超过将会被阻塞住;
- DNS 查询(DNS Lookup):通过浏览器缓存,本地hosts文件,DNS服务器将域名转为IP地址的过程;
- 建立连接(Initial connection):TCP的三次握手;
二 对比
1. 连接管理
HTTP/1.0默认短连接:每次请求都要建立 TCP 连接 → 传输数据 → 断开连接。缺点:频繁的 TCP 三次握手、四次挥手带来巨大性能开销,尤其在多资源请求场景下(如一个页面加载几十张图片),效率极低。
HTTP/1.1引入长连接(Keep-Alive):默认开启,一个 TCP 连接可承载多个 HTTP 请求 / 响应,连接会在空闲一段时间后才断开。补充:支持
Connection: keep-alive头显式声明长连接,解决了 1.0 的短连接性能问题。HTTP/2基于二进制分帧层实现 多路复用:在单个 TCP 长连接上,同时并行传输多个请求 / 响应,互不阻塞。优势:彻底解决 HTTP/1.1 的队头阻塞问题(1.1 中同一连接上的请求需按顺序执行,前一个请求慢会阻塞后续请求)。
2. 头部处理
- HTTP/1.0 & 1.1头部是明文文本格式,且每次请求都会携带完整头部(包括重复的
User-Agent、Cookie等字段),冗余度高,增加传输体积。 - HTTP/2引入头部压缩(HPACK 算法):
- 维护客户端和服务器的静态字典(内置常见头部字段,如
:method、:path)和动态字典(记录通信过程中出现的自定义头部); - 用字典索引代替重复的头部字段,大幅减少头部传输大小。
3. 性能优化特性
HTTP/1.1 新增特性
- 请求管道化:允许在一个 TCP 连接上同时发送多个请求,但响应仍需按顺序返回,无法解决队头阻塞,实际应用中很少被浏览器支持。
- 分块传输编码(Chunked):支持服务器边生成数据边发送,无需提前知道响应长度,适合动态内容。
- 缓存优化:新增
Cache-Control、ETag、If-None-Match等缓存字段,比 1.0 的Expires更灵活精准。 - 支持断点续传:通过
Range请求头实现。
HTTP/2 新增特性
服务器推送(Server Push):服务器可主动向客户端推送相关资源(如页面引用的 CSS/JS),无需等待客户端请求,提前缓存,提升页面加载速度。

二进制分帧:将请求 / 响应数据拆分为二进制帧,每个帧标记所属的流 ID,实现多路复用的核心基础。
流优先级:客户端可给不同请求流设置优先级,服务器优先处理高优先级资源(如页面核心 CSS 比图片优先级高)。
4. 核心差异总结表

| 特性 | HTTP/1.0 | HTTP/1.1 | HTTP/2 |
|---|---|---|---|
| 连接方式 | 短连接 | 长连接(Keep-Alive) | 多路复用(单连接多流) |
| 队头阻塞 | 存在(短连接放大问题) | 存在(请求需顺序执行) | 不存在(二进制帧并行传输) |
| 头部处理 | 明文,无压缩 | 明文,无压缩 | HPACK 算法压缩 |
| 关键优化 | - | 管道化、缓存、断点续传 | 服务器推送、流优先级 |
| 传输格式 | 文本 | 文本 | 二进制 |
三 总结
HTTP 协议的演进核心是 提升性能、降低开销:从 1.0 的短连接到 1.1 的长连接,解决了连接复用问题;再到 HTTP/2 的二进制分帧和多路复用,彻底解决队头阻塞,同时通过头部压缩、服务器推送进一步压榨性能
四 扩展
| 特性 | HTTP/2 | HTTP/3 |
|---|---|---|
| 传输层 | 基于 TCP 协议 | 基于 QUIC 协议(UDP 之上的可靠传输协议) |
| 核心依赖 | 依赖 TCP 三次握手建立连接,依赖 TLS 1.2+ 实现加密 | 内置加密(无需额外 TLS 握手),QUIC 握手与协议协商合并 |
| 握手耗时 | 加密场景下需 TCP 三次握手 + TLS 握手,至少 2~3 个 RTT(往返时延) | 仅需 1 个 RTT 即可完成连接建立与协议协商,支持 0-RTT 快速重连 |
| 协议协商 | 基于 TLS ALPN 扩展 | 内置在 QUIC 握手阶段,无需依赖 TLS ALPN |
| 头部压缩 | 采用 HPACK 算法 | 采用 QPACK 算法(HPACK 的优化版,解决了 HPACK 的队头阻塞问题) |
| 兼容性 | 支持广泛,主流浏览器 / 服务器均已适配 | 支持度逐步提升,部分老旧服务端尚未兼容 |
| 部署成本 | 可基于现有 TCP/TLS 基础设施部署 | 需要升级服务端支持 QUIC 协议,部署成本略高 |
