当前位置: 首页 > news >正文

HTTP协议版本对比

四个版本详细对比表格

特性/版本HTTP/1.0HTTP/1.1HTTP/2HTTP/3
出现时间1996199920152022
底层协议TCPTCPTCPUDP + QUIC
连接复用❌ 每次请求一个连接✅ 长连接(Keep-Alive)✅ 多路复用✅ 多路复用(无队头阻塞)
请求并发❌ 串行⚠️ 管道化但阻塞✅ 并发(同一连接)✅ 并发(更低延迟)
请求头压缩❌ 无❌ 无✅ HPACK 压缩✅ QPACK(适用于QUIC)
服务端推送❌ 不支持❌ 不支持✅ 支持(Server Push)✅ 支持
加密要求❌ 可选(HTTP)❌ 可选(HTTP)❌ 可选(HTTP)✅ 默认 强制加密(TLS 1.3)
传输机制文本文本二进制帧二进制帧 + QUIC流
队头阻塞✅ 存在✅ 存在⚠️ TCP级别阻塞仍存在❌ 彻底消除(基于QUIC)
启动速度慢(TCP + TLS握手)慢(TCP + TLS握手)更快(连接复用)✅ 快(0-RTT连接建立)
部署难度简单简单中等(需服务端支持)⚠️ 较高(需QUIC支持)
  • HTTP/1.0(1996)
    • 每个请求都要建立一次TCP连接,请求结束即关闭(短连接)。
    • 只能串行请求,不支持并发(浏览器会并发多个TCP连接绕过这个限制)。
    • 无 Host 头,不支持虚拟主机。
    • 请求头无缓存控制、冗余。
    • 只支持纯文本请求/响应。
  • HTTP/1.1(1999)
    • 默认使用长连接(Connection: keep-alive),同一个 TCP 连接可复用多个请求。
    • 支持管道化(Pipelining):可以连续发送多个请求,但必须顺序接收响应,存在队头阻塞(Head-of-line Blocking)问题。
    • 支持 Host 头,实现虚拟主机功能(一个 IP 多个站点)。
    • 新增了缓存控制(Cache-Control、ETag)。
    • 新增了分块传输编码(Transfer-Encoding: chunked),支持动态内容。
    • 大量请求头仍重复,尤其是 Cookie、User-Agent 等字段。
  • HTTP/2(2015)
    • 二进制协议:相比 HTTP/1.x 的文本协议,解析更快、更高效。
    • 多路复用(Multiplexing):一个连接上可同时处理多个请求-响应,不再按顺序排队,无队头阻塞问题。
    • 头部压缩(HPACK):减少冗余,提高传输效率。
    • 服务器推送(Server Push):服务器可主动推送资源给客户端(如提前发送CSS/JS)。
    • 问题:仍使用 TCP,一旦丢包,会阻塞所有流。
  • HTTP/3(2022)
    • 底层彻底抛弃 TCP → 使用基于 UDP 的 QUIC 协议。
    • 彻底解决 TCP 队头阻塞。
    • 建立连接更快:支持 0-RTT 握手。
    • 自带 TLS 1.3 加密,默认启用 HTTPS。
    • 更强的多路复用、更低延迟、更可靠丢包处理。
    • 缺点是部署复杂、设备兼容性和网络策略限制(如防火墙拦UDP)。

HTTP/3 与 HTTP/2 对比详解

HTTP/3 = HTTP/2 语义 + QUIC(取代 TCP + TLS)作为传输层

  1. 使用 UDP + QUIC 替代 TCP
    • TCP 是面向连接的,需要三次握手,连接建立慢。
    • QUIC 是基于 UDP 的协议,支持 0-RTT/1-RTT 握手,速度快。
    • QUIC 本身就内置加密(TLS 1.3),无需额外 TLS 握手。
  2. 真正解决队头阻塞(Head-of-line blocking)
    • 在 TCP 连接中,如果一个数据包丢了,必须等它重传,后续的都得等。
    • QUIC 支持 独立流(streams),丢一个包不影响其他流,彻底解决队头阻塞问题。
  3. 内建 TLS 1.3
    • 安全性强,不允许明文传输。
    • 与 HTTP/2 类似,但QUIC 直接把加密集成进协议层,更高效也更安全。
  4. 新的头部压缩机制 QPACK
    • HTTP/2 使用的是 HPACK,有“阻塞风险”。
    • HTTP/3 使用 QPACK,避免了这种阻塞问题。

HTTP/3 的部署现状

  • 浏览器支持:
    • Chrome、Edge、Firefox、Safari 均已支持
  • 服务器支持:
    • Cloudflare、Google、Facebook、nginx(使用 quiche 模块)等都支持
  • 网络环境:
    • 由于基于 UDP,有些老旧网络环境(如公司内网、部分防火墙)可能不支持。
http://www.lryc.cn/news/587880.html

相关文章:

  • Apache部署
  • Ubuntu-25.04 Wayland桌面环境安装Anaconda3之后无法启动anaconda-navigator问题解决
  • Can201-Introduction to Networking:Data Plane数据平面
  • vue2/3生命周期使用建议
  • hive的相关的优化
  • Linux 系统管理基础教程
  • 图像分割论文中的评价指标
  • 从零实现一个基于 mem0的具有长期记忆的Text2SQL代理
  • R 语言科研绘图第 64 期 --- 哑铃图
  • 当前(2024-07-14)视频插帧(VFI)方向的 SOTA 基本被三篇顶会工作占据,按“精度-速度-感知质量”三条线总结如下,供你快速定位最新范式
  • 设计模式》》门面模式 适配器模式 区别
  • js与vue基础学习
  • Linux 基础命令详解:从入门到实践(1)
  • 基于Hadoop的竞赛网站日志数据分析与可视化(上)
  • STM32介绍和GPIO
  • Spring Boot启动原理:从main方法到内嵌Tomcat的全过程
  • Datawhale AI夏令营-基于带货视频评论的用户洞察挑战赛
  • [Python] -实用技巧4-Python中浅拷贝与深拷贝的区别详解
  • 工业软件加密锁复制:一场技术与安全的博弈
  • 借助DeepSeek编写输出漂亮表格的chdb客户端
  • 终端安全最佳实践
  • IIS错误:Service Unavailable HTTP Error 503. The service is unavailable.
  • SpringAi笔记
  • OpenCV 视频处理与摄像头操作详解
  • MySQL Innodb Cluster配置
  • 【CV综合实战】基于深度学习的工业压力表智能检测与读数系统【3】使用OpenCV读取分割后的压力表读数
  • DiffDet4SAR——首次将扩散模型用于SAR图像目标检测,来自2024 GRSL(ESI高被引1%论文)
  • vue-v-model进阶-ref-nextTick
  • 网络安全核心定律
  • 5G 到 6G通信技术的革新在哪里?