HTTP/2 协议的问题 & HTTP/3的意义

简介: HTTP/2 协议的问题 & HTTP/3的意义

HTTP/2 协议相比于 HTTP/1 协议来说有很多优点,但是 HTTP/2 也有很多问题,谷歌基于 HTTP/2 协议的问题制定了一种基于 UDP 的低时延的互联网传输层协议 QUIC 协议,这篇文章就来讨论一下 HTTP/2 有哪些问题,以及 HTTP/3 诞生的意义。

1.HTTP/2 的问题简单描述

基于 TLS 协议握手的 HTTP/2 被称为 h2,直接在 TCP 协议之上运行的 HTTP/2 被称为 h2c,下面讨论一下 TCP 以及 TCP+TLS 建立握手过多的问题,另外还有多路复用与 TCP 队头阻塞问题:

1.1 h2c(基于 TCP 建立的 HTTP/2)示意图


Tips:基于 TCP 建立的h2c 连接需要三次握手。

1.2 h2(基于 TLS 建立的 HTTP/2)示意图

基于 TLS 建立的 h2 连接,因为 TLS 是运行在 TCP 连接之上的,除了需要建立 TCP 握手之外,还要需要建立多次 TLS 握手:

Tips:基于 TLS 建立的h2 连接需要 TLS+TLS 多次握手。


1.3 多路复用与 TCP 队头阻塞示意图

如下图 红色蓝色绿色分别对应三个不同的 Stream,它们之间是在同一个 TCP 连接之上,就会存在队头阻塞的问题:

Tips:另外还会存在操作系统内核版本更新缓慢的问题


2.QUIC 协议示意图

为了解决上述问题,谷歌制定了一种基于 UDP 协议的低时延的互联网传输层协议 QUIC 协议,示意图如下图:

3.Chrome 浏览器如何支持 QUIC


Chrome 浏览器输入 chrome://flags/#enable-quic,将 Experimental QUIC protocol 这一栏设置改为 Enabled 可以开启 QUIC(HTTP3) 协议的支持:

打开有支持 QUIC 的站点开始抓包(之前 bilibili 支持能抓到包,现在好像抓不到了):

Wireshark 抓取到未解密的报文:

Wireshark 抓取基于 GQUIC 解密报文:

Tips:IETF QUIC 协议草案地址 https://tools.ietf.org/html/draft-ietf-quic-http-20

4.HTTP3 新特性-连接迁移


在客户端 ip 地址和端口号变了(如手机流量切换到 wifi),不需要断开连接,可以复用之前的连接,QUIC 相关的格式如下:

5.HTTP3 解决 TCP 队头阻塞问题示意图



Tips:QUIC 基于 UDP 实现这正意义的多路复用,并且 QUIC 大大优化了握手流程。

相关文章
|
2月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
145 7
|
18天前
|
域名解析 缓存 网络协议
Web基础与HTTP协议
通过掌握这些基础知识和技术,开发者可以更加高效地构建和优化Web应用,提供更好的用户体验和系统性能。
68 15
|
14天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
16天前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
16天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
71 1
|
2月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
2月前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
2月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
75 11
|
2月前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
50 8
|
2月前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
130 4