tangyuxian
文章93
标签43
分类6

文章分类

文章归档

浏览器-http1.X和http2.0区别总结

浏览器-http1.X和http2.0区别总结

对HTTP1.0、HTTP1.1和HTTP2.0的区别做出一个总结

一 特点

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

img

影响http的因素如下:

  1. 浏览器阻塞(HOL blocking):早期的浏览器会限制同一个域名的最大连接数,超过将会被阻塞住;
  2. DNS 查询(DNS Lookup):通过浏览器缓存,本地hosts文件,DNS服务器将域名转为IP地址的过程;
  3. 建立连接(Initial connection):TCP的三次握手;

二 对比

1. 连接管理

  1. HTTP/1.0默认短连接:每次请求都要建立 TCP 连接 → 传输数据 → 断开连接。缺点:频繁的 TCP 三次握手、四次挥手带来巨大性能开销,尤其在多资源请求场景下(如一个页面加载几十张图片),效率极低。

  2. HTTP/1.1引入长连接(Keep-Alive):默认开启,一个 TCP 连接可承载多个 HTTP 请求 / 响应,连接会在空闲一段时间后才断开。补充:支持 Connection: keep-alive 头显式声明长连接,解决了 1.0 的短连接性能问题。

  3. HTTP/2基于二进制分帧层实现 多路复用:在单个 TCP 长连接上,同时并行传输多个请求 / 响应,互不阻塞。优势:彻底解决 HTTP/1.1 的队头阻塞问题(1.1 中同一连接上的请求需按顺序执行,前一个请求慢会阻塞后续请求)。

img

2. 头部处理

  1. HTTP/1.0 & 1.1头部是明文文本格式,且每次请求都会携带完整头部(包括重复的 User-AgentCookie 等字段),冗余度高,增加传输体积。
  2. HTTP/2引入头部压缩(HPACK 算法)
  3. 维护客户端和服务器的静态字典(内置常见头部字段,如 :method:path)和动态字典(记录通信过程中出现的自定义头部);
  4. 用字典索引代替重复的头部字段,大幅减少头部传输大小。

3. 性能优化特性

HTTP/1.1 新增特性

  1. 请求管道化:允许在一个 TCP 连接上同时发送多个请求,但响应仍需按顺序返回,无法解决队头阻塞,实际应用中很少被浏览器支持。
  2. 分块传输编码(Chunked):支持服务器边生成数据边发送,无需提前知道响应长度,适合动态内容。
  3. 缓存优化:新增 Cache-ControlETagIf-None-Match 等缓存字段,比 1.0 的 Expires 更灵活精准。
  4. 支持断点续传:通过 Range 请求头实现。

HTTP/2 新增特性

  1. 服务器推送(Server Push):服务器可主动向客户端推送相关资源(如页面引用的 CSS/JS),无需等待客户端请求,提前缓存,提升页面加载速度。

    img

  2. 二进制分帧:将请求 / 响应数据拆分为二进制帧,每个帧标记所属的流 ID,实现多路复用的核心基础。

  3. 流优先级:客户端可给不同请求流设置优先级,服务器优先处理高优先级资源(如页面核心 CSS 比图片优先级高)。

4. 核心差异总结表

img

特性 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 协议,部署成本略高

HTTP1.0、HTTP1.1和HTTP2.0的区别 - 简书 (jianshu.com)

HTTP协议演进与各版本特性 - 知乎 (zhihu.com)

本文作者:tangyuxian
本文链接:https://www.tangyuxian.com/2022/07/29/qian-duan/liu-lan-qi/liu-lan-qi-http1-x-he-http2-0-qu-bie-zong-jie/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
糖糖的AI分身(BETA)
如果加载时间过长,可尝试打开系统代理