1、建立连接
浏览器首先发送一个 UDP 数据包,其中包含一个 QUIC Client Hello 帧,用于与服务器协商 QUIC 协议的版本、加密套件和其他参数;服务器收到后,回复一个 UDP 数据包,其中包含一个 QUIC Server Hello 帧,用于确认协商的结果,并发送服务器的证书和密钥;浏览器验证证书和密钥后,就完成了 QUIC 和 TLS 的握手,建立一个安全连接
2、发送请求
浏览器在 QUIC 连接上创建一个或多个 QUIC Stream,用于传输 HTTP/3 的请求和响应数据。每个 QUIC Stream 都有一个唯一的 ID,用于标识数据的来源和目的地。浏览器将 HTTP/3 请求头部和正文封装成 HTTP/3 Header 帧和 HTTP/3 Data 帧,并发送到对应的 QUIC Stream 上
3、接收响应
服务器收到浏览器的请求后,进行处理,并将 HTTP/3 响应头部和正文封装成 HTTP/3 Header 帧和 HTTP/3 Data 帧,发送到对应的 QUIC Stream 上。浏览器收到服务器的响应后,解析 HTTP/3 帧,并根据内容进行渲染或处理
4、关闭连接
当浏览器或服务器不再需要使用 QUIC 连接时,可以发送一个 QUIC Connection Close 帧,用于通知对方关闭连接,当双方都收到对方的 Connection Close 帧后,就可以释放连接相关的资源