1.http3知识

HTTP/3通过一系列创新的设计和技术改进显著提升了Web性能,其加速原理可以从多个角度来理解。以下是对HTTP/3加速机制的深入解析:

1. 基于UDP而非TCP

HTTP/3选择UDP作为传输层协议,而不是传统的TCP。这一决策背后有几个关键原因:

  • 减少连接建立延迟:TCP需要三次握手才能建立连接,而UDP不需要这种握手过程,因此可以立即开始数据传输。这意味着在高延迟网络环境中,HTTP/3能够更快地启动会话
  • 无队头阻塞(Head-of-Line Blocking, HOLB):当使用TCP时,如果一个数据包丢失或乱序到达,所有后续的数据包都会被阻塞直到丢失的数据包被重新发送和接收。而在QUIC中,由于每个数据包都独立编号且带有自己的错误校验信息,即使某些数据包丢失也不会影响其他数据包的处理,从而减少了HOLB问题

2. 多路复用与流控制

HTTP/3不仅继承了HTTP/2的多路复用特性,而且进一步优化了它:

  • 更高效的多路复用:虽然HTTP/2也支持多路复用,但在同一连接上的多个流共享相同的TCP拥塞控制窗口,导致一个流的阻塞会影响其他流。HTTP/3中的QUIC允许多个流独立进行,每个流都有自己的拥塞控制,因此提高了并发性和响应速度

  • 消除流间的依赖关系:QUIC彻底解决了TCP队头阻塞问题,即使某个流的数据丢失,也不会影响其他流的传输。对于网页加载、视频播放等任务,这种机制带来了显著的性能提升

3. 更快的连接建立

HTTP/3引入了0-RTT(Zero Round Trip Time)连接恢复机制:

  • 零握手延迟:QUIC通过合并TLS加密与连接建立过程,实现了“零握手”的初始连接速度。相比HTTP/2必须经历多次握手过程,QUIC在高延迟网络中表现尤为突出

  • 首次连接仅需1 RTT:QUIC从请求连接到正式接发HTTP数据一共花费1 RTT,这1个RTT主要是为了获取Server Config,后面的连接如果客户端缓存了Server Config,则可以直接发送HTTP数据,实现0 RTT建立连接

4. 内置的安全性

HTTP/3将安全性深度集成到协议设计中:

  • 简化安全连接:QUIC将加密机制集成到协议本身,而不是像HTTPS那样依赖于额外的应用层协议(如TLS)。这不仅简化了配置,还减少了因添加额外加密层带来的开销
  • 更高的安全标准:HTTP/3采用了TLS 1.3标准,简化了加密过程,并提升了安全性。相比HTTP/2在TCP基础上额外实现TLS,HTTP/3的安全机制更为高效

5. 更好的丢包恢复

QUIC提供了先进的丢包恢复机制:

  • 前向纠错(FEC):QUIC可以在应用层实现前向纠错,允许接收端根据冗余信息自行修复丢失的数据包,而不需要请求重传,从而降低了延迟
  • 精确的丢失检测:QUIC能够更准确地检测哪些数据包丢失,并只重传这些数据包,而不是整个窗口的数据,进一步减少了带宽浪费

6. 连接迁移

QUIC支持跨网络无缝切换:

  • 保持会话连续性:QUIC使用标识符(Connection ID)来跟踪连接,而不是依赖于IP地址和端口。这意味着当用户的网络环境发生变化(例如从Wi-Fi切换到蜂窝数据),QUIC可以保持连接不断开,提供更流畅的用户体验

7. 自适应拥塞控制

QUIC实现了更加智能的拥塞控制算法:

  • 优化网络利用:QUIC能够在应用层操作改变拥塞控制方法,提供更大的灵活性来适应不同的网络条件,提高吞吐量同时避免网络拥塞

2.配置nginx http3服务(需要nginx1.25版本以上)

1.在首个server中配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
...
listen 443 quic reuseport;

# http3 优化

quic_gso on;

ssl_stapling on;

ssl_stapling_verify on;

ssl_early_data on;

add_header Alt-Svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"';
...

}

2.注意:

1.非首个server 注意去掉reuseport
2.防火墙记得开放443 udp端口协议

3.检查生效

使用下面这个是跳过cdn,直接到对应服务ip检查的,可以看到是成功的
https://http3check.net/
image.png

3.关于CDN http3问题

https://http3.wcode.net/ 检查

1.关于又拍云CDN http3

quic支持,http3不支持的问题:
如果使用了cdn加速,需要对应在cdn上配置支持http3,才可以使用,但是部分cdn商家不一定支持http3,比如又拍云的(2025年1月9号),他们的技术还没升级http3

image.png
image.png

2.关于在cloudflare开启http3

网站主页-域
image.png

速度-优化-协议优化-http3启用
image.png