🔶借助Cloudflare为网站开启HTTP/3

2024-8-28|2025-1-1
Yawatasensei
Yawatasensei
type
status
date
slug
summary
tags
category
icon
password
😀
现在大多数的DNS都已经开始支持HTTP/3了(例如Alibaba、Google、Cloudflare等等),H3在优化网络资源传输,加载多资源场景等等领域的表现也有目共睹,相比HTTP/2,速度是真的确实快了很多。所以趁着博客正好最近刚刚迁移完,也准备给这个博客用上HTTP/3,体验一下新技术带来的快乐。
notion image

📝 付费内容

什么是HTTP/3

HTTP/3是超文本传输协议(HTTP)的第三个主要版本,它是HTTP/2的继任者,旨在提高网络通信的速度和可靠性。与前两个版本相比,HTTP/3最显著的变化在于它基于QUIC协议,而不是TCP。以下是HTTP/3的一些关键特点和相关背景:

1. 基于QUIC协议

  • QUIC 协议:HTTP/3构建在QUIC之上,而QUIC是由Google开发的一种新的传输层协议。QUIC结合了TCP、TLS和HTTP/2中的许多功能,提供了类似TCP的可靠传输,但具有更低的延迟和更快的连接建立时间。
  • 连接建立:与TCP不同,QUIC采用了 0-RTT(零往返时间)连接建立,这意味着在大多数情况下,客户端和服务器之间的通信可以在第一次数据包传输时开始,不需要像TCP那样经过多次握手过程。

2. 多路复用和无队头阻塞

  • 多路复用:类似 HTTP/2,HTTP/3允许多个请求在单一连接中并发进行。这意味着浏览器可以在同一个连接中请求多个资源(如图片、脚本、样式表等),而无需为每个请求建立单独的连接。
  • 无队头阻塞:HTTP/3通过QUIC协议解决了HTTP/2中的队头阻塞问题。在HTTP/2中,如果某个数据包丢失,所有后续的数据包都必须等待重新传输。而在HTTP/3中,每个数据流是独立的,即使某个数据包丢失也不会阻塞其他数据的传输。

3. 内置安全性

  • 集成加密QUIC协议将TLS集成到传输协议中,这意味着所有HTTP/3的通信都是加密的,从而提高了安全性。此外,QUIC的加密和握手过程比传统的 TLS/SSL更高效。
  • 更好的隐私保护:由于QUIC的设计,某些元数据暴露的情况得到了改善,如源IP地址和端口号,这些数据在网络中传输时更加私密。

4. 优化移动网络性能

  • 快速恢复连接:QUIC允许设备在网络环境变化时快速恢复连接,这对于移动设备在切换Wi-Fi和蜂窝网络时尤为重要。传统的TCP连接在网络环境改变时往往需要重新建立,而QUIC则可以在无需重新连接的情况下继续传输数据。

5. 更好的拥塞控制

  • 改进的拥塞控制算法:QUIC支持多种拥塞控制算法,允许更好地适应不同网络条件,提高数据传输的效率。

HTTP/3对比HTTP/2的优势

 
比较项目
HTTP/2
HTTP/3
数据上的提升
基础传输协议
基于TCP(传输控制协议)
基于QUIC(快速 UDP 互联网连接)
在高丢包率条件下,HTTP/3的数据传输速度提升可达 10%-20%
连接建立时间
TCP连接通常需要1-2次握手,TLS加密需要额外的握手
0-RTT(零往返时间)握手,通常在一次往返中即可开始传输数据
初次连接延迟降低30%-50%,可将连接时间缩短100-200毫秒
队头阻塞
存在队头阻塞问题,丢失一个数据包会阻塞整个连接
无队头阻塞问题,每个数据流独立处理,丢包不会影响其他数据流
在丢包率为2%的情况下,HTTP/3 数据传输速度提升约 50%
多路复用
支持多路复用,多个流在同一连接上传输
支持多路复用,但由于无队头阻塞,性能更高
在实际场景中,HTTP/3的网页加载时间可比 HTTP/2快20%-30%
加密方式
通过TLS(通常为TLS 1.2或TLS 1.3)加密
QUIC内置加密,通常使用TLS1.3,提升了安全性和效率
加密握手时间缩短约50-100毫秒,数据传输启动更快
数据包重传
依赖于TCP进行数据包的重传
QUIC提供更灵活的数据包重传机制,只重传丢失的数据包,无需重新排序
在高丢包率(如5%)的网络中,HTTP/3数据传输效率提升约30%-50%
拥塞控制
使用TCP的拥塞控制算法,较为固定
QUIC支持多种拥塞控制算法,适应性更强,且可以优化网络性能
在拥塞网络环境下,HTTP/3的带宽利用率提升可达10%-15%
网络切换恢复
连接在网络切换(如 Wi-Fi 到蜂窝)时容易中断
QUIC支持快速恢复连接,网络切换时连接不中断
网络切换时的连接恢复时间缩短 80%-90%,几乎无数据传输中断
实现复杂性
需要单独处理TCP和TLS协议,复杂度较高
QUIC将传输和加密整合在一起,简化了实现
实现复杂度减少,但具体数值难以量化
延迟
因TCP的握手过程,初次连接延迟较大
因0-RTT握手,初次连接延迟显著降低
在典型网络条件下,HTTP/3的延迟减少约50-100毫秒
数据传输可靠性
高度可靠,但在高丢包率网络下性能不佳
提供类似TCP的可靠性,同时在高丢包网络下性能更好
在丢包率10%的情况下,HTTP/3的数据丢失率降低75%以上
服务器部署成本
通常需要单独的负载均衡器和防火墙配置
因为QUIC基于UDP,需要新的负载均衡器和防火墙配置
长期部署后,服务器端的数据传输效率提升,带宽利用率提高约10%
隐私保护
部分元数据(如IP地址、端口号)可能暴露在网络中
提供更好的隐私保护,减少了元数据暴露
隐私保护的提升难以直接量化,但数据传输中的安全性增强
应用场景
适用于大多数传统应用场景,尤其是稳定网络环境
适用于移动网络和高延迟、高丢包环境,尤其适合现代互联网应用
在不稳定网络环境下,HTTP/3 数据传输效率提升20%-30%
 

如何使网站开启HTTP/3(H3)

由于我的博客托管于Vercel,同时域名和CDN均由赛博大善人Cloudflare进行提供,所以并不需要复杂的服务器环境配置等等。只需要在Cloudflare进行对应操作即可使博客支持HTTP/3(H3)
目前Google能够检索到的开启教程大部分都是2021年左右的版本,H3的开启功能还位于Network下,目前已经变动了位置,最新的开启方法可以以本篇为准。
基于赛博大善人Cloudflare的HTTP/3开启方法非常简单,只需要下面三步。

1. 登录Cloudflare

登录后选择左侧Websites,并在中央区域选择需要开启HTTP/3的域名

2. Speed配置

在左侧功能菜单栏找到Speed功能模块,选择Optimization并下拉找到Protocol 栏目,HTTP/3的开关就在这里。
notion image
如果HTTP/3后面的按钮为disabled,需要点击进去HTTP/3旁边的链接符号,进入配置页面,将其中的HTTP/3(With Quic)开启。
notion image

3. 验证结果

打开你的网站或博客,打开开发者模式,选择NetWork,刷新你的网站或者博客,然后找到你域名的那一条,点击查看Header详细信息。如果你和我一样,在Alt-svc后面看到h3=”:443”,即表示开启成功,可以通过HTTP/3提供给访问者更好的速度和效率服务。
notion image

🤗 总结归纳

国内环境下可能开启HTTP/3效果并不会很好,网络运营商大部分会对UDP流量(QUIC基于UDP)进行不同程度的限制或过滤,同时UDP包可能被频繁丢弃或延迟,导致HTTP/3的连接性能下降或者无法稳定工作。而且在国内大部分运营商的策略角度,可能优先处理传统的TCP流量,这可能使得HTTP/3的优势无法充分发挥。
💡
有关博客SEO安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
OpenClash替换使用Mihomo内核在OpenWRT上使用Neovim
Loading...