NiceLeeのBlog 用爱发电 bilibili~

浏览器是怎样访问支持HTTP3协议的网站的?

2023-11-29
nIceLee

阅读:


就现阶段而言,大部分浏览器的默认行为应该是这样的:
默认是以HTTP2优先于HTTP1.1建立TCP连接,当发现网站支持HTTP3时,转而建立QUIC连接。
那么,具体又是如何的呢?

前言

对于支持HTTPS的网站来说(不支持的不做讨论),具体要使用什么协议,在建立TCP连接后,通过Client HelloServer Hello消息,这些是可以协商好的,基本上不需要啥额外的步骤。

但是HTTP3是基于UDP的啊,难道我每次盲猜网站支持HTTP3,然后不支持就回落吗?就现状而言,这不太现实。

相较来说,先尝试以TCP建立HTTP2/HTTP1.1的连接,获知对HTTP3的支持性后再升级,这是比较稳妥的。

一个简单的header

RFC7838, 我们可以得知这么一个header,它叫Alt-Svc, 它可以告诉浏览器:”瞧,我在xx host的 xx端口用 xx协议运行了同样的服务。(所以你下次请求就用它吧。)”

简单点,可以查看MDN文档

举例来说,Alt-Svc回复可以长成这样:

Alt-Svc: h2="alt.example.com:443"
Alt-svc: h3=":443"; ma=86400

详情

当浏览器通过HTTP/2甚至HTTP/1访问了某个网站,而它又支持HTTP/3的话,它会返回一个Alt-Svc的header。

在下一次访问时,浏览器会按照指示使用HTTP3协议访问内容。

你可以在下面网址进行测试:
https://cloudflare-quic.com/


内容
隐藏