作为我们网上冲浪最为常见,也经常被人忽视的 HTTP 已经更新换代到了 HTTP/3。本文简单明了的带你认识 HTTP/3 的作用。

最近二狗子看到自己存储女神婷婷照片所用的云服务商——又拍云推出了 HTTP/3 尝鲜功能。作为爱好学习的二狗子同学既惊喜又好奇,他对 HTTPS、HTTP/2 非常熟悉,但是对于 HTTP/3 却是少了一些了解。

“HTTP/2 都还没普及,没想到又拍云竟然连 HTTP/3 功能都上了,真不愧是业界良心,果然他们常说的技术氛围不只是说说的。看样子这段时间自己不够勤快,是时候去学习下 HTTP/3 相关知识了。”二狗子一边心里想着,一边就开始找资料学习了。

HTTP/3 是什么?

要深入了解 HTTP/3,那首先要知道什么是 HTTP/3。

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

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

如果想要详细了解 HTTP 的前世今生与发展历程,可以查看之前的内容《当我谈 HTTP 时,我谈些什么》。

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 的发展是不可阻拦的。

作为一家极客氛围极强的公司,又拍云在不少厂商还没准备好时,苦心钻研,现已推出 HTTP/3 尝鲜服务,您可以切身体验 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 的发展是不可阻拦的。

作为一家极客氛围极强的公司,又拍云在不少厂商还没准备好时,苦心钻研,现已推出 HTTP/3 尝鲜服务,您可以切身体验 HTTP/3 带来的变革。

立即体验

推荐阅读

QUIC/HTTP3 协议简析

从 HTTP/1 到 HTTP/2,以及即将到来的 HTTP/3

随机推荐

  1. PHP tempnam() 函数

    定义和用法 tempnam() 函数在指定的目录中创建一个具有唯一文件名的临时文件. 该函数返回新的临时文件名,如果失败则返回 FALSE. 语法 tempnam(dir,prefix) 参数 描述 ...

  2. loj #6247. 九个太阳 k次单位根 神仙构造 FFT求和原理

    LINK:九个太阳 不可做系列. 构造比较神仙. 考虑FFT的求和原理有 \(\frac{1}{k}\sum_{j=0}^{k-1}(w_k^j)^n=[k|n]\) 带入这道题的式子. 有\(\su ...

  3. 4.9 省选模拟赛 生成树求和 变元矩阵树定理 生成函数 iDFT 插值法

    有同学在loj上找到了加强版 所以这道题是可以交的.LINK:生成树求和 加强版 对于30分 爆搜 可实际上我爆搜只过了25分 有同学使用按秩合并并茶几的及时剪枝通过了30分. const int M ...

  4. log4j2 自动删除过期日志文件配置及实现原理解析

    日志文件自动删除功能必不可少,当然你可以让运维去做这事,只是这不地道.而日志组件是一个必备组件,让其多做一件删除的工作,无可厚非.本文就来探讨下 log4j 的日志文件自动删除实现吧. 0. 自动删除 ...

  5. JavaScript 你真的了解this指向吗

    JavaScript 你真的了解this指向吗 前言 终于开始写this指向了,相信这对很多JavaScript的学习者来说是一个非常恐怖的环节,个人认为也算是JavaScript中最难理解的一个知识 ...

  6. ThreadLocal面试六连问

    转自:码农沉思录 中高级阶段开发者出去面试,应该躲不开ThreadLocal相关问题,本文就常见问题做出一些解答,欢迎留言探讨. ThreadLocal为Java并发提供了一个新的思路, 它用来存储T ...

  7. Java自学-JDBC 数据库连接池

    数据库连接池 与线程池类似的,数据库也有一个数据库连接池. 不过他们的实现思路是不一样的. 本章节讲解了自定义数据库连接池类:ConnectionPool,虽然不是很完善和健壮,但是足以帮助大家理解C ...

  8. Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署

    最近尝试引入阿里云的短信验证码,阿里云的core sdk是maven就有的,但是短信相关的jar包却不是放在maven的,所以得引入本地的下载回来的jar包.本地开发直接引入,idea是可以直接跑调用 ...

  9. 博客主题推荐——复杂&简单

    首先感谢原作者cjunn提供的主题autm,以下配置都基于此主题设定.很多小伙伴喜欢现在的样式,分享如下.只需简单几步即可. 如果你想使用本博客主题样式,并希望能得到远程推送更新,只需查看 快速部署. ...

  10. ALGEBRA-3 线性映射

    不求甚解 [零空间] 零空间对加法和标量乘法封闭,因此属于子空间: