HTTP/3 来了,你了解它么?

简介: 作为我们网上冲浪最为常见,也经常被人忽视的 HTTP 已经更新换代到了 HTTP/3,是时候去学习下 HTTP/3 相关知识了。要深入了解 HTTP/3,那首先要知道什么是 HTTP/3。

作为我们网上冲浪最为常见,也经常被人忽视的 HTTP 已经更新换代到了 HTTP/3,是时候去学习下 HTTP/3 相关知识了。要深入了解 HTTP/3,那首先要知道什么是 HTTP/3。  


如图所示,HTTP/3 是基于 QUIC 的协议。而 QUIC 协议是 Google 提出的一套开源协议,它基于 UDP 来实现,直接竞争对手是 TCP 协议。


另外,要聊 HTTP/3,HTTP 的发展历程是怎么也绕不过去的,而且可以讲很久。

4886135999c3343e663d0cbe51881521_881e282d75c03a2a825328b6c3344e3d.png


HTTP/3 的优点及不足


今天我们在这里简单说一下 HTTP/3 相比较 HTTP/2 进步的那些点,相比 HTTP/2 而言 HTTP/3 有以下几点提升:

HTTP/3 使用 stream 进一步扩展了 HTTP/2 的多路复用。

在 HTTP/3 模式下,一般传输多少个文件就会产生对应数量的 stream。当这些文件中的其中一个发生丢包时,你只需要重传丢包文件的对应 stream 即可。

HTTP/3 不再是基于 TCP 建立的,而是通过 UDP 建立,在用户空间保证传输的可靠性,相比 TCP,UDP 之上的 QUIC 协议提高了连接建立的速度,降低了延迟。 通过引入 Connection ID,使得 HTTP/3 支持连接迁移以及 NAT 的重绑定。

HTTP/3 含有一个包括验证、加密、数据及负载的 built-in 的 TLS 安全机制。 拥塞控制。TCP 是在内核区实现的,而 HTTP/3 将拥塞控制移出了内核,通过用户空间来实现。这样做的好处就是不再需要等待内核更新可以实现很方便的进行快速迭代。 头部压缩。

HTTP/2 使用的 HPACK,HTTP/3 更换成了兼容 HPACK 的 QPACK 压缩方案。QPACK 优化了对乱序发送的支持,也优化了压缩率。

没有哪项技术是完美无缺的,更不用说是还在发展中的 HTTP/3 了。

HTTP/3 建立传输用的是 UDP 协议,而在 HTTP/3 出现前 UDP 的通常出现地点是类似《计算机网络》这样的书面理论,即便是实际应用也大多和网络攻击一起出现,这就导致 UDP 的名声不太好。名声差了自然在硬件上的支持也捉襟见肘,大部分互联网服务也就理所当然的对 UDP 的访问进行限制。

准备好迎接 HTTP/3 了吗?

但是毫无疑问的,HTTP/3 是目前最前沿的互联网标准,它的缺点可以通过不断的改进来完善。相比与 HTTP/3 本身的缺陷问题,作为一项新技术最致命的问题是能否获得足够多的有效支持,从而进行大范围推广。  


那么当前的环境已经有迎接 HTTP/3 的能力了么? HTTP/3 作为互联网的标准革新之一,在支持方面无非两点,一个是服务端,一个是客户端。


先来看一下客户端,大家所熟悉的浏览器 Chrome 以及常用 Curl 命令行工具都已经支持 HTTP/3 特性。在 Chrome 的开发者工具一栏里你可以看到一项显示为“HTTP/2+quic/99”,这就是 Chrome 已经支持 HTTP/3 的证据。毕竟 HTTP/3 的组成离不开 QUIC 协议。


而在 Curl 命令行工具[https://github.com/curl/curl] 的最新版本, 你只需在常规的命令末尾添加“--HTTP/3”即可使用 HTTP/3,如果目标服务器支持,它会自然的返回“HTTP/3 200”。


确认了客户端的支持,我们接下来看一下服务端。


自 2013 年 QUIC 被正式公开以来,到 2020 年已经发展了差不多7年,目前网上已经有了不少热门开源的项目,除去带头大哥 Google 在完成了对自身搜索引擎的支持,还同时拉上了 Gmail 、YouTube 等站点。但对于国内的绝大部分站点来说,HTTP/3 之路,似乎还停留在东土大唐,即使 nginx 已经公开声明:“我们已经支持 QUIC 协议“。  


我们可以看到,虽然目前环境还没有全面迭代到 HTTP/3 ,但是 HTTP/3 的发展是不可阻拦的。  


相关文章
|
缓存 网络协议
01JavaWeb基础 - HTTP介绍
01JavaWeb基础 - HTTP介绍
50 0
|
2月前
|
缓存 安全 网络协议
HTTP中如何正确使用Via
【10月更文挑战第20天】Via`首部字段记录报文途中每个代理或网关信息,助于诊断问题和避免循环。
|
3月前
|
网络协议 前端开发 算法
什么是HTTP/2?
HTTP/2作为HTTP协议的重要进化,通过一系列技术创新显著提升了Web性能和用户体验。随着技术的普及和成熟,它已成为现代Web开发和部署的标准组成部分。尽管面临一些实施挑战和持续的性能优化空间,HTTP/2无疑代表了Web通信协议的一个重要里程碑,为未来协议的演进奠定了基础。
76 2
|
8月前
|
算法 数据安全/隐私保护 UED
什么是HTTP2
【4月更文挑战第12天】HTTP/2是1999年后HTTP协议的首次重大更新,由IETF的httpbis小组开发。关键特性包括头部压缩(使用HPACK算法)、多路复用(提高效率,减少延迟)、二进制传输(更灵活高效)和支持服务器推送(优化用户体验)。虽然语义不变,但HTTP/2已广泛应用于gRPC等服务,并强制要求使用HTTPS。这一更新显著提升了Web性能和用户体验。
53 5
|
8月前
|
网络协议 Linux Shell
http“超级应用与理解”
http“超级应用与理解”
|
JSON 缓存 前端开发
|
缓存 网络协议 C++
HTTP1.0 vs HTTP1.1 vs HTTP2.0
HTTP1.0 vs HTTP1.1 vs HTTP2.0
109 0
|
网络协议 前端开发 JavaScript
什么是http?
“超文本”这个词经常会引起误解,让人以为HTTP只能传输文本文件,个人觉得可能改名叫“超媒体传输协议”更加恰当。 本文对“协议”的解释比较通俗,严格来说协议应该包括语法、语义、同步规则和错误处理 我们通常使用浏览器访问的实际上是万维网(WWW),他是互联网(Internet)的一部分,但现在几乎很少有人能区分两者。
185 0
什么是http?
介绍 HTTP
本篇文章主要介绍了HTTP报文、HTTP请求方法、HTTP响应的状态码、Cookie技术
127 0
介绍 HTTP
|
存储 网络协议 安全
HTTP详解
HTTP详解
591 0