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

作为我们网上冲浪最为常见,也经常被人忽视的 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 带来的变革。

推荐阅读
从 HTTP/1 到 HTTP/2,以及即将到来的 HTTP/3
随机推荐
- The Google File System(论文阅读笔记)
概述 GFS:一个可扩展的分布式文件系统,用于大型分布式数据相关应用,TB级的数据,成千上万的并发请求. 设计概览 假设 组件的失效比异常更加常见 多数的文件修改操作是追加数据而不是重写原来的数据 ...
- NodeJS 极简教程 <1> NodeJS 特点 & 使用场景
NodeJS 极简教程 <1> NodeJS 特点 & 使用场景 田浩 因为看开了所以才去较劲儿. 1. NodeJS是什么 1.1 Node.js is a JavaScri ...
- AutoWired注解和Lazy延迟加载
一.代码截图: @Lazy是延迟加载的意思, 容器启动时不创建对象, 当从容器中需要获取此对象时才创建. @Lazy//@Lazy注解可以用在类上, 还可以用在普通方法上,还可以用在构造方法上,还可以 ...
- 4.深入k8s:容器持久化存储
从一个例子入手PV.PVC Kubernetes 项目引入了一组叫作 Persistent Volume Claim(PVC)和 Persistent Volume(PV)的 API 对象用于管理存储 ...
- Python基础教程,流程控制语句详解
1.程序结构 计算机在解决问题时,分别是顺序执行所有语句.选择执行部分语句.循环执行部分语句,分别是:顺序结构.选择结构.循环结构.如下图: 很多人学习python,不知道从何学起.很多人学习pyth ...
- PHP入门之数组
前言 之前几篇文章分别介绍了PHP的运算符,流程控制,函数.有兴趣的可以去看看. PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 接下来简单介绍一下数组. 数组初探 为什么要引进数组 ...
- Javascript注意点
Javascript注意点 在img标签中的src如果为相对路径, 但是在js获取的时候会转为全路径 候选框中, 在执行onclick之前, 会由于html的特征先设置checked属性 为a标签添加 ...
- 【Python学习笔记】字符串拼接方法(5种)总结
字符串的 5 种拼接方法: “+”号 “,”号 直接连接 格式化 多行字符串拼接 第一种:“+”号 print("Hello"+"Python") 打印结果: ...
- 学习Hibernate5这一篇就够了
配套资料,免费下载 链接:https://pan.baidu.com/s/1i_RXtOyN1e4MMph6V7ZF-g 提取码:8dw6 复制这段内容后打开百度网盘手机App,操作更方便哦 第一章 ...
- git使用-分支管理
1.查看分支 git branch 2.创建分支 git branch name 3.切换分支 git checkout name 4.合并分支上的内容到master分支 切换到master分支上 g ...