什么是 HTTP/2 协议?完整指南

网站速度决定了客户是向您购买还是向您的竞争对手购买。HTTP/2 协议可将加载缓慢的网站转化为快速、响应迅速的体验,让访客始终参与其中。

HTTP2 概念

与 HTTP/1.1 过时的顺序加载不同,这种二进制协议通过一个连接同时发送多个请求。多路复用、标题压缩和服务器推送等功能可将页面加载速度提高 20-70%

我们将探讨 HTTP/2 的工作原理,以及为什么您的企业现在需要它。


目录

  1. 什么是 HTTP/2 协议?
  2. 从 HTTP/1.1 到 HTTP/2 的演变
  3. HTTP/2 协议的主要特点
  4. HTTP/2 和 HTTPS:安全考虑因素
  5. HTTP/2 与 HTTP/1.1:性能比较
  6. 在网站上实施 HTTP/2
  7. 浏览器支持和兼容性
  8. HTTP/2 与 HTTP/3:展望未来

今天从 SSL Dragon 订购 SSL 证书,可节省 10% 的费用!

快速发行、强大加密、99.99% 的浏览器信任度、专业支持和 25 天退款保证。优惠券代码SAVE10

龙飞行的详细图像

什么是 HTTP/2 协议?

HTTP/2是一种网络协议,允许通过单个连接同时发送多个请求和响应,从而提高网站性能。与 HTTP/1.1 相比,它使用二进制框架报头压缩流优先级来减少延迟并提高加载速度。

HTTP/2 如何工作

HTTP/1.1 以纯文本方式按顺序发送数据,而HTTP/2 是一种二进制协议。它引入了二进制框架层,将所有信息分割成小的、可管理的二进制框架,以提高传输效率。与早期版本基于文本的结构相比,这种设计提高了速度并减少了错误。

HTTP/2 使用单个TCP(传输控制协议)连接创建多个并行流。每个流都可以传输独立的请求和响应,而不会阻塞其他流,从而解决了拖慢 HTTP/1.1 速度的行头阻塞问题。这种方法允许浏览器同时获取多个资产,如图像、脚本和样式表。

另一项关键改进是头压缩。HTTP/2 不再为每个请求重复发送相同的 HTTP 头信息,而是对其进行压缩,以减少不必要的数据传输。HTTP/2 还包括服务器推送(允许服务器在浏览器请求之前发送资产)和流优先级(帮助管理资源加载顺序)等功能。

向后兼容性

尽管进行了重大升级,HTTP/2仍与现有网站完全兼容。它保留了 HTTP 方法、状态代码和报头结构,使开发人员可以在不改变网络应用程序构建方式的情况下从性能提升中获益。

通过引入高效的二进制框架和先进的数据处理技术,该网络协议大大改善了客户端与服务器之间的通信,并支持当今网络流量的高要求。


从 HTTP/1.1 到 HTTP/2 的演变

HTTP 的诞生始于1989 年,当时蒂姆-伯纳斯-李 创建了HTTP/0.9,这是一个只能检索基本网页的简单协议。

HTTP/1.01996 年推出,引入了标头和不同的内容类型,HTTP /1 .1则于1997 年出现,提供持久连接,允许在同一连接上发出多个请求。

尽管有了这些改进,HTTP/1.1 在现代网络环境中仍面临着严重的限制。该协议存在行头阻塞问题,即一个缓慢的资源请求会延迟后面排队的所有资源。

需要数十个文件、图像、样式表和脚本的网站迫使网络浏览器打开多个 TCP 连接,以达到可接受的性能。随着网页复杂性的增加,这种方法消耗了过多的网络资源,并造成了糟糕的用户体验。

谷歌推出 SPDY – HTTP/2 的前身

谷歌意识到了这些网络性能挑战,并于2010 年开发了 SPDY 协议作为实验性解决方案。SPDY 引入了多路复用报头压缩服务器推送等革命性概念,这些概念后来成为 HTTP/2 的基础。

SPDY 协议证明,多个数据流可通过单个 TCP 连接同时运行,从而无需多个连接,并大大改善了负载延迟。

互联网工程任务组 互联网工程任务组(IETF)HTTP 工作组研究了谷歌的创新以及微软Facebook 的贡献。2012 年,他们开始将这些概念正式纳入新标准。

经过广泛的测试和改进,他们于2015 年 5 月HTTP/2标准化,正式取代了老旧的 HTTP/1.1 架构。这一协议演进通过引入框架流并发等新机制,解决了 HTTP/1.1 的基本限制,取代了 HTTP/1.1 的僵化请求-响应模式。

新协议改变了客户端与服务器之间的通信周期,减少了内存和处理占用空间,并创建了一个能够处理现代网络应用程序的高效网络协议。

HTTP/2 是自万维网诞生以来网络通信协议领域最重大的进步。


HTTP/2 协议的主要特点

HTTP/2 引入了五项核心功能,以解决 HTTP/1.1 的局限性。这些创新共同打造了一个针对现代网络应用性能进行优化的高效网络协议。

1.二进制协议与文本协议

HTTP/2 使用二进制协议,而不是 HTTP/1.1 中的纯文本格式。这一改变大大提高了客户端与服务器通信的性能、可靠性和解析速度。

二进制协议更易于机器解释。二进制协议消除了因空白、大小写或行尾的变化而导致的解析不一致,而这种不一致一直困扰着基于文本的 HTTP。这就减少了错误,降低了 CPU 占用率,并加快了请求和响应的处理速度。

每个 HTTP/2 消息都被分解成二进制帧,更易于并行路由、优先排序和处理。这些框架包括元数据,可帮助服务器和浏览器快速确定数据的归属,从而实现多路复用和流优先级排序等高级功能。

开发人员无需重写现有应用程序,因为 HTTP/2 保留了相同的 HTTP 语义。向二进制的转换发生在引擎盖下,提供了所有速度和效率方面的优势,而不需要对网络应用程序的构建或部署方式做出重大改变。


2.多路复用和并发请求

多路复用使多个数据流能在一个 TCP 连接上同时运行。HTTP/2 创建了独立发送和接收数据的单独数据流,消除了 HTTP/1.1 的顺序处理限制。

这一创新解决了head-of-line阻塞问题,即缓慢的资源请求会延迟队列中的所有资源。HTTP/2 允许客户端和服务器发起多个并行请求,而无需等待之前的请求完成。

与 HTTP/1.1 的多个 TCP 连接相比,单连接方法减少了内存和处理占用。每个 TCP 连接都需要大量的建立开销,消耗网络资源,造成可扩展性瓶颈。

多路复用允许 多个并发交换,以便对数据流进行独立管理。需要数十个资源的网页可以同时加载所有组件。通过并行加载,一个拥有 50 多个资源的典型电子商务网站的页面加载速度可提高 40-60%。

流量控制机制按数据流运行,根据网络条件管理数据传输。每个数据流可独立调整速度,避免拥塞。


3.使用 HPACK 压缩报头

随着网站变得越来越复杂,HPACK 压缩技术解决了HTTP 头元数据开销问题。HTTP/1.1 为每个请求传输相同的标头,造成带宽浪费。

HPACK 压缩算法维护客户端和服务器之间共享的先前传输的报头值动态表。后续请求只传输重建报头所需的索引值,从而将报头块碎片减少 95%。

HPACK 压缩使用哈夫曼编码进行高效字段编码。常见的标题值可压缩为较小的表示形式,这对含有大量 cookie 或授权数据的应用程序非常有利。

标题字段压缩可为大流量网站节省可观的带宽。该算法可抵御影响早期方法的基于压缩的安全攻击,在提高效率的同时确保敏感数据的安全。


4.确定河流优先次序

流优先级允许网络浏览器通过依赖关系和权重分配来指定资源请求的加载顺序。每个数据流的权重从 1 到 256 不等,权重值越高表示优先级越高。

HTTP/2 创建了流依赖树,其中流依赖于父流。共享同一父流的依赖流会根据分配的权重按比例获得资源分配。该系统先加载关键资源,然后再加载装饰元素。

网站开发人员可以通过优先处理折叠上方的内容,而不是用户不会立即看到的图片,来优化页面加载速度。可见内容的 CSS 和 JavaScript 优先于分析脚本或社交媒体小部件。

浏览器会根据资源类型自动分配优先级,但服务器可以根据应用程序的特定要求覆盖这些决定。这种灵活性可以为不同的网站架构定制优化策略。


5.服务器推送

服务器推送使服务器能够在收到明确请求之前主动向网络浏览器发送资源。当服务器收到 HTML 请求时,它们会识别可能的资源请求,并立即传输这些资源。

它消除了 HTTP/1.1 中使用的资源内嵌,即开发人员在 HTML 中嵌入 CSS 或 JavaScript。服务器推送具有相同的性能优势,同时将推送的资源分开,从而实现更好的缓存策略。

预测资源请求可减少往返次数。关键的 CSS、JavaScript 和图片可在浏览器解析 HTML 之前到达。这种主动方法可缩短 整个往返周期的延迟。

客户端决定是否接受推送的资源,并可禁用服务器推送。浏览器会维护推送的资源缓存,并可拒绝重复推送,从而在保持性能优势的同时防止带宽浪费。


HTTP/2 和 HTTPS:安全考虑因素

虽然 HTTP/2 在技术上并不强制要求加密,但每个主要浏览器都要求加密。这意味着在实际应用中,HTTP/2 总是通过TLS运行,从而使 HTTPS成为默认设置,而不是例外。

这种由浏览器驱动的执行方式提高了整个网络的安全标准。以 TLS 为基准,每个 HTTP/2 连接默认都经过加密,从而阻止了被动窥探和中间人攻击。但 HTTP/2 增加的不仅仅是加密。

它的二进制框架层消除了请求解析中的模糊性,使攻击者更难利用头注入响应分割等老把戏,而这些问题在 HTTP/1.1 基于文本的格式中很常见。这种结构上的刚性减少了攻击面,简化了服务器逻辑。

启用 TLS 的握手过程还使用ALPN(应用层协议协商协商协议支持。如果 HTTP/2 可用,浏览器会立即升级,不会出现重定向或额外的往返。

HTTP/2 的单个加密连接可重复用于多个数据流,避免了重复 TLS 协商的开销。这样可以减少 CPU 负载,加快安全连接,并在不影响安全性的情况下提高网站的整体性能。

对于开发人员来说,这一点很简单:SSL 证书不再仅仅是信任的需要,更是速度的要求。没有 HTTPS 就意味着没有 HTTP/2,而没有 HTTP/2 就意味着你将性能和保护都丢在了一边。


今天从 SSL Dragon 订购 SSL 证书,可节省 10% 的费用!

快速发行、强大加密、99.99% 的浏览器信任度、专业支持和 25 天退款保证。优惠券代码SAVE10

龙飞行的详细图像

HTTP/2 与 HTTP/1.1:性能比较

实际测试表明,在各种类型的网站和连接速度上,HTTP/2 都优于 HTTP/1.1。它的多路复用、报头压缩和单一连接模式消除了 HTTP/1.1 的瓶颈。

以下是 HTTP/2 与 HTTP/1.1 的对比情况

性能基准

  • 简单网站(5-10 个资源):加载速度提高15-25
  • 中等复杂性(20-40 个资源):提高30-50
  • 重型应用程序(50 个以上资源):速度提升40-70
  • 电子商务平台:负载延迟平均降低45

用户体验改进

  • 首次内容喷涂:快 200-800ms
  • 互动时间:300-1200 毫秒的改进
  • 全页面加载:减少 500-2000ms
  • 跳出率:在 SaaS 平台上最高下降 31
  • 转换率:Shopify 商店的转化率提高了 23
  • 会话长度:新闻网站报道+18

资源效率

  • 服务器 CPU 使用率:下降 35
  • 节省带宽:得益于 HPACK 标头压缩
  • 更少的 TLS 握手:一个连接,多个数据流
  • 更好的移动支持:更快的加载速度,更低的电池使用率

请查看下面的快速比较表,以轻松了解概况:

特点HTTP/1.1HTTP/2
每个资源的连接数多个 TCP 连接单 TCP 连接(多路复用)
页眉压缩HPACK
TLS 要求可选浏览器要求
并行请求受 TCP 限制一个连接上的真正并行
延迟因堵塞而增加因多路复用而降低
移动性能速度更慢,电池使用率更高更快、更高效
服务器负载更高(更多连接、握手)较低(打开的插座较少)

在网站上实施 HTTP/2

以下是对服务器类型的最低 HTTP/2 要求:

阿帕奇实施步骤

Apache的服务器配置需要系统激活模块:

1.安装所需模块

sudo a2enmod http2
sudo a2enmod ssl

2.在 .conf 文件中配置虚拟主机

<VirtualHost *:443>
ServerName yourdomain.com
Protocols h2 http/1.1
SSLEngine on
SSLCertificateFile /path/to/certificate.crt
SSLCertificateKeyFile /path/to/private.key
</VirtualHost>

3.重新启动 Apache 服务

sudo systemctl restart apache2

4.验证配置

apache2ctl configtest

Nginx 实施步骤

Nginx通过服务器配置提供更简单的 HTTP/2 激活:

1.将 Nginx 更新到支持的版本:

sudo apt update && sudo apt install nginx

2.修改nginx.conf 中的服务器块

server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
}

3.测试配置语法

sudo nginx -t

4.重新加载 Nginx 服务

sudo systemctl reload nginx

测试 HTTP/2 实现

使用多种方法验证您的 HTTP/2 部署:

浏览器开发工具

  1. 在 Chrome/Firefox DevTools 中打开网络 选项卡
  2. 启用协议 列以查看连接类型
  3. 在协议字段中查找“h2“标识
  4. 刷新页面,查看同时加载的多个数据流

在线测试工具:

命令行验证:

curl -I --http2 -s https://yourdomain.com | grep HTTP

常见的实施挑战

网络开发人员经常会遇到这些障碍:

  • SSL 证书错误导致无法激活
  • 混合 HTTP/HTTPS 内容阻止 HTTP/2 功能
  • 过时的服务器软件缺乏 HTTP/2 支持模块
  • 阻止 TLS 握手过程的防火墙规则
  • 未为 HTTP/2 直通配置 CDN 服务
  • 传统应用程序与二进制协议要求不兼容

故障排除步骤:

  • 验证SSL 证书的有效性和正确安装
  • 检查服务器错误日志,查看特定 HTTP/2 激活失败情况
  • 确保所有资源请求都使用 HTTPS 协议
  • 将网络服务器软件更新到支持的版本
  • 配置 CDN 提供商以启用 HTTP/2 转发

浏览器支持和兼容性

HTTP/2 在所有主要网络浏览器中得到广泛采用,ChromeFirefoxSafariEdge自 2015 年起已全面支持 HTTP/2。目前的浏览器统计数据显示,超过97%移动桌面浏览器原生支持 HTTP/2 协议,这使得几乎所有用户都能安全地实施该协议。

Chrome 浏览器率先采用 HTTP/2,实施最为积极,在有 SSL 证书的情况下会自动协商 HTTP/2 连接。火狐浏览器紧随其后,在所有平台上都提供了强大的支持,而 Safari 浏览器则在 iOS 和 macOS 设备上提供了出色的性能。Edge 以全面的 HTTP/2 功能取代了 Internet Explorer 的有限支持。

移动浏览器表现出对 HTTP/2 的强大支持,Android ChromeiOS SafariSamsung Internet提供了完全的协议兼容性。这些移动网络浏览器从 HTTP/2 在延迟较高的蜂窝网络上的多路复用功能中获益匪浅。

当 HTTP/2 不可用时,回退机制可确保无缝兼容。在 TLS 握手过程中,网络浏览器会自动协商最高支持的协议版本,对于较旧的服务器,则回退到 HTTP/1.1。这一透明过程无需用户干预或开发人员配置。


HTTP/2 与 HTTP/3:展望未来

HTTP/3是网络协议的下一步,基于QUIC 而不是传统的TCP连接。虽然 HTTP/2 解决了 HTTP/1.1 的许多问题,但它仍然面临着 TCP 的 “线头阻塞 “所带来的延迟,即一个丢失的数据包会导致多个数据流变慢。

QUIC通过UDP 运行,即使某些数据包丢失,数据流也能独立继续传输。它还将加密直接集成到传输层中,通过减少往返次数来加快连接设置。

包括谷歌、Facebook 和 Cloudflare 在内的约25%的网站已经使用 HTTP/3。不过,由于浏览器的广泛支持和成熟的工具,HTTP/2 仍然是大多数开发人员的首选。

是否应该等待 HTTP/3?

其实不然。HTTP/2 目前可大幅提升性能,并为您的网站将来的轻松升级做好准备。现在就开始使用 HTTP/2,立即享受更快的加载速度和更好的用户体验。


利用 SSL Dragon 提升 HTTP/2 性能

HTTP/2 仅适用于有效的 SSL 证书。 SSL Dragon通过 经济实惠、值得信赖的证书可立即激活 HTTP/2。

使用 SSL Dragon,您获得的不仅仅是一个证书,而是更流畅、更安全的网络体验。我们的证书经过优化,具有快速部署和广泛的兼容性,可确保您的网站在快速运行的同时不影响安全性。

我们的专家支持将逐步指导您充分利用 HTTP/2 的速度和安全优势。今天就选择 SSL Dragon,开启更快、更流畅的网站性能。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.