Jorgen's blog Jorgen's blog
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

jorgen

Love it, make mistakes, learn, keep grinding.
首页
  • 平台架构
  • 混合式开发记录
  • 推送服务
  • 数据分析
  • 实时调度
  • 架构思想

    • 分布式
  • 编程框架工具

    • 编程语言
    • 框架
    • 开发工具
  • 数据存储与处理

    • 数据库
    • 大数据
  • 消息、缓存与搜索

    • 消息队列
    • 搜索与日志分析
  • 前端与跨端开发

    • 前端技术
    • Android
  • 系统与运维

    • 操作系统
    • 容器化与 DevOps
  • 物联网与安全

    • 通信协议
    • 安全
    • 云平台
newland
  • 关于我
  • 终身学习
  • 关于时间的感悟
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • MQTT
  • WebSocket:构建实时双向通信的桥梁
  • HTTP/2-加速Web通信的新时代
  • HTTP/2-加速现代Web通信的引擎
  • HTTP/2-加速现代Web通信的新协议
  • HTTP/2与HTTP/3:现代Web协议的性能革命
    • 前言
    • HTTP/2:多路复用的革命
      • 多路复用(Multiplexing)
      • 头部压缩
      • 服务器推送
    • HTTP/3:QUIC 的崛起
      • 从 TCP 到 QUIC
      • HTTP/3 的核心特性
    • HTTP/2 与 HTTP/3 的对比
    • 实际应用中的选择
      • 何时选择 HTTP/2?
      • 何时选择 HTTP/3?
    • 如何启用 HTTP/2 和 HTTP/3?
      • 服务器端配置
      • 浏览器支持
    • 结语
  • HTTP/HTTPS-Web通信的基石
  • HTTP/HTTPS-万维网通信的基石
  • HTTP/HTTPS - 万维网通信的基础协议
  • HTTP Server-Sent Events - 服务器推送的简单实现方式
  • RESTful API - 现代Web服务的基石
  • SSE-服务器推送事件的轻量级解决方案
  • SSE-构建服务器推送的实时数据流
  • Server-Sent Events (SSE) - 轻量级服务器推送技术
  • WebRTC-构建点对点实时通信的利器
  • gRPC-构建高性能RPC服务的利器
  • 实时通信协议对比:WebSocket vs SSE vs gRPC
  • 服务器发送事件(SSE)- 简单高效的实时通信方案
  • 长轮询:在WebSocket时代之前实现实时通信的古老技艺
  • GraphQL-现代API查询语言的革命
  • QUIC协议:HTTP/3的新基石
  • API网关与服务网格-微服务架构的通信基石
  • WebSocket断线重连机制-构建健壮实时通信的关键
  • WebSocket安全:构建安全实时通信的关键考量
  • 消息队列-构建分布式系统的异步通信基石
  • WebSocket子协议-为实时通信定制应用层协议
  • Web通信协议全景图-从HTTP到WebTransport的选择指南
  • WebTransport-HTTP/3时代的下一代实时通信协议
  • 实时通信协议监控与故障排查-保障实时通信系统的稳定性
  • 移动端实时通信协议选择与优化指南
  • 实时通信协议的兼容性与降级策略-构建跨平台的健壮实时应用
  • protocol
Jorgen
2023-11-15
目录

HTTP/2与HTTP/3:现代Web协议的性能革命

# 前言

在之前的文章中,我已经介绍了 WebSocket 和 MQTT 这两种重要的实时通信协议。WebSocket 为我们提供了全双工的实时通信能力,而 MQTT 则以其轻量级特性在物联网领域大放异彩。🚀

但是,当我们谈论现代 Web 应用时,还有一个非常重要的协议家族常常被忽略——那就是 HTTP/2 和 HTTP/3。它们不仅仅是 HTTP 协议的简单版本更新,更是对整个 Web 架构的重新思考。今天,我想和大家一起深入探讨这两个协议,看看它们如何改变我们的 Web 开发方式。

提示

HTTP/2 和 HTTP/3 的出现,解决了 HTTP/1.1 中存在的许多性能瓶颈,为现代 Web 应用提供了更快、更高效的通信基础。

# HTTP/2:多路复用的革命

HTTP/2 是 HTTP 协议的重大更新,于 2015 年正式发布。它引入了许多革命性的特性,彻底改变了浏览器和服务器之间的通信方式。

# 多路复用(Multiplexing)

🏗 HTTP/1.1 的限制

在 HTTP/1.1 中,浏览器对同一域名下的并发连接数有限制(通常为 6 个)。这意味着如果页面需要加载 20 个资源,浏览器需要排队发送请求,导致页面加载速度变慢。

sequenceDiagram
    participant 浏览器
    participant 服务器
    loop HTTP/1.1 请求-响应
        浏览器->>服务器: 请求资源1
        服务器-->>浏览器: 返回资源1
        浏览器->>服务器: 请求资源2
        服务器-->>浏览器: 返回资源2
        ...
    end
1
2
3
4
5
6
7
8
9
10

🚀 HTTP/2 的解决方案

HTTP/2 引入了二进制分帧层,允许在单个 TCP 连接上并行处理多个请求和响应,彻底解决了队头阻塞问题。

sequenceDiagram
    participant 浏览器
    participant 服务器
    loop HTTP/2 多路复用
        par 并行请求
            浏览器->>服务器: 请求资源1 (stream 1)
            浏览器->>服务器: 请求资源2 (stream 2)
            浏览er->>服务器: 请求资源3 (stream 3)
        end
        par 并行响应
            服务器-->>浏览器: 返回资源1 (stream 1)
            服务器-->>浏览器: 返回资源2 (stream 2)
            服务器-->>浏览器: 返回资源3 (stream 3)
        end
    end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 头部压缩

HTTP/2 使用 HPACK 算法对请求头进行压缩,大大减少了数据传输量。在 HTTP/1.1 中,每个请求都可能包含大量重复的头部信息,而在 HTTP/2 中,这些信息只需发送一次。

# 服务器推送

服务器推送允许服务器在客户端请求之前主动发送资源。例如,当客户端请求 HTML 时,服务器可以主动推送 CSS 和 JS 文件,减少客户端等待时间。

THEOREM

HTTP/2 的核心优势在于它解决了 HTTP/1.1 中的队头阻塞问题,通过多路复用实现了真正的并行请求处理。

# HTTP/3:QUIC 的崛起

虽然 HTTP/2 解决了许多 HTTP/1.1 的问题,但它仍然依赖于 TCP 协议,而 TCP 本身也存在一些性能瓶颈,特别是在移动网络环境下。为了解决这些问题,HTTP/3 应运而生。

# 从 TCP 到 QUIC

HTTP/3 最大的变化是放弃了 TCP,转而使用基于 UDP 的 QUIC(Quick UDP Internet Connections)协议。QUIC 结合了 TCP 的可靠性和 UDP 的低延迟特性。

🤔 为什么需要 QUIC?

  1. 连接建立更快:QUIC 使用 0-RTT(零往返时间)握手,可以立即发送数据,大大减少了连接建立时间
  2. 更好的移动性:当网络切换时,QUIC 连接可以无缝迁移,而 TCP 需要重新建立连接
  3. 内置加密:QUIC 默认加密,类似于 HTTPS,但性能更高
  4. 避免队头阻塞:QUIC 在应用层解决了队头阻塞问题,即使某些数据包丢失,也不会影响其他数据包的传输

# HTTP/3 的核心特性

  1. 基于 UDP:摆脱了 TCP 的限制,提供了更好的性能和可靠性
  2. 0-RTT 和 1-RTT 握手:显著减少了连接建立时间
  3. 连接迁移:支持网络切换时保持连接
  4. 前向纠错:通过冗余数据包恢复丢失的数据

# HTTP/2 与 HTTP/3 的对比

特性 HTTP/2 HTTP/3
底层协议 TCP QUIC (基于 UDP)
连接建立时间 1-RTT 0-RTT / 1-RTT
队头阻塞 在 TCP 层存在 在应用层解决
加密 可选 (推荐 HTTPS) 默认加密
连接迁移 不支持 支持
移动网络性能 一般 优秀

# 实际应用中的选择

# 何时选择 HTTP/2?

HTTP/2 已经被广泛支持,并且在大多数情况下表现良好。如果你的应用主要面向桌面用户,或者你的服务器环境不支持 HTTP/3,HTTP/2 是一个很好的选择。

# 何时选择 HTTP/3?

HTTP/3 特别适合以下场景:

  1. 移动应用:网络切换频繁,HTTP/3 的连接迁移特性非常有用
  2. 高延迟网络:QUIC 的 0-RTT 握手可以显著减少等待时间
  3. 需要高可靠性的应用:QUIC 的前向纠错机制提供了更好的数据传输可靠性

# 如何启用 HTTP/2 和 HTTP/3?

# 服务器端配置

大多数现代 Web 服务器都支持 HTTP/2:

Nginx

listen 443 ssl http2;
1

Apache

Protocols h2 h2c http/1.1
1

HTTP/3 的支持相对较新,需要特定版本的 Nginx 或 Caddy:

Caddy (自动支持 HTTP/3)

example.com {
    tls your-email@example.com
}
1
2
3

# 浏览器支持

目前,所有主流浏览器都支持 HTTP/2,而 HTTP/3 的支持也在不断增加:

  • Chrome:支持 HTTP/3
  • Firefox:支持 HTTP/3
  • Safari:部分支持 HTTP/3
  • Edge:支持 HTTP/3

# 结语

HTTP/2 和 HTTP/3 的出现,标志着 Web 协议的又一次重大进步。它们不仅解决了 HTTP/1.1 中的性能瓶颈,还为未来的 Web 应用奠定了更坚实的基础。

正如 WebSocket 和 MQTT 各自在实时通信领域扮演着重要角色一样,HTTP/2 和 HTTP/3 则是现代 Web 应用的基石。理解这些协议的工作原理,对于我们构建高性能、低延迟的 Web 应用至关重要。

在未来的 Web 开发中,随着 HTTP/3 的普及,我们可能会看到更多基于 QUIC 协议的创新应用。作为开发者,我们应该持续关注这些技术的发展,并将其应用到实际项目中,为用户提供更好的体验。

"协议的演进,始终围绕着如何在有限的带宽下,实现更快、更可靠的数据传输。"

#HTTP/2#HTTP/3#网络协议#性能优化
上次更新: 2026/01/28, 13:30:02
HTTP/2-加速现代Web通信的新协议
HTTP/HTTPS-Web通信的基石

← HTTP/2-加速现代Web通信的新协议 HTTP/HTTPS-Web通信的基石→

最近更新
01
LLM
01-30
02
intro
01-30
03
intro
01-30
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jorgen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式