当前位置: 首页 > news >正文

Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0

006tNbRwly1fx7wjepg30j30rs0btt9d.jpg

HTTP/2.0 还没有普及,HTTP/3.0 标准就要被制定了。

据 IETF 透露,HTTP-over-QUIC 实验协议将被重命名为 HTTP/3,并成为 HTTP 协议的第三个正式版本

IETF 是 Internet Engineering Task Force 的缩写,意思是互联网工程任务小组,主要负责互联网标准的开发和推动。被他们“钦定”,HTTP-over-QUIC 成为HTTP/3.0 算是没跑了。

QUIC

先来了解一下什么是 QUIC。

QUIC(Quick UDP Internet Connections),是快速 UDP 互联网连接的缩写,这是一种实验性的传输层协议,由 Google 开发,在 2013 年实现。

QUIC 是基于 UDP 协议,它在两个端点之间创建连接,且支持多路复用。在设计之初 QUIC 希望能够提供等同于 SSL/TLS 层级的安全保障的同时,减少数据传输及创建连接时的延迟时间,双向控制带宽,从而达到更快速的体验。

QUIC 相比现在广泛应用的 HTTP2 + TCP + TLS 协议有如下的优势:

  1. 减少 TCP 三次握手及 TLS 握手时间。
  2. 改进的拥塞控制。
  3. 避免队头阻塞的多路复用。
  4. 连接迁移。
  5. 前向冗余纠错。

HTTP-over-QUIC 算是 QUIC 协议的一种应用实现,而在 IETF 开始标准化该协议时,也有意将它分为两层:传输HTTP 部分。

这个想法也是想将 QUIC 传输的部分独立出来,这样可以方便的用于其他场景下的数据传输,而不仅仅为 HTTP 或者其他类 HTTP 的协议使用。

Google 与 QUIC

Google 一直在对协议标准上做努力,早年间提出的 SPDY 协议,被 IETF 标准化之后推出了类似于 SPDY 的 HTTP/2.0 协议标准,Google 立即宣布放弃对 SPDY 的支持,转而支持 HTTP/2。而 QUIC 也是 Google 提出的一种基于 UDP 的传输协议。

Google 希望 QUIC 能够慢慢取代 TCP 和 UDP,成为移动互联网上,二进制数据传输的新协议。通过 Google 的测试证明,QUIC 更快也更安全。

006tNbRwly1fx7vseisqbj30aa05i74b.jpg

QUIC 即 HTTP/3.0

QUIC 虽然在 2013 年就被 Google 提出,但是直到 2015 年才被提议作为 IETF 的标准草案,并在一年之后,就是 2016 年 7 月,提出了 HTTP-over-QUIC。

006tNbRwly1fx7whzheedj30lc0cj0t8.jpg

在上个月的邮件讨论中,IETF HTTP 和 QUIC 工作组主席 Mark Nottingham 正式提出将 HTPP-over-QUIC 重命名为 HTTP/3.0。随后的几天讨论中,此项提议被 IETF 成员接受,并给出了官方认可。

自此,HTTP-over-QUIC 正式成为 HTTP/3.0,为 HTTP 协议的下一个主要版本。

QUIC 还有多远

虽然 Chrome 从 29 版本开始就添加了 HTTP-over-QUIC 的支持,并且今年开始 Facebook 也开始采用这项技术。

但是这个在 HTTP/2.0 还不是主流的环境下,HTTP/3.0 已经确定,它就在未来的某个地方。

据 W3Techs 统计,截止到 2018 年 11 月,前 1000 万网站在中,有 31.2% 支持了 HTTP/2.0,而 QUIC 只有 1.2%,从趋势上看,可以说离我们还很远。

006tNbRwly1fx7wad1hkyj30gq0beq2u.jpg

小结

HTTP/3.0 是一个仍在开发中的协议,计划在今年内完成,但是可以预见的,它离普及还很远。

很多协议的设计思想是非常值得我们借鉴与学习的,对协议有兴趣的朋友,我找了一篇腾讯团队的资深研发工程师写的一篇 QUIC 协议的原理分析,通俗易懂,有兴趣可以点击“阅读原文”查看。

觉得有帮助记得点赞和分享哦,谢谢。

参考:
https://www.zdnet.com/article/http-over-quic-to-be-renamed-http3
https://daniel.haxx.se/blog/2018/11/11/http-3
https://zhuanlan.zhihu.com/p/32553477


公众号后台回复成长『成长』,将会得到我准备的学习资料,也能回复『加群』,一起学习进步;你还能回复『提问』,向我发起提问。

推荐阅读:

图解 Chrome,架构篇 | 利用预处理脚本,管理小程序代码| 分词,科普及解决方案| 图解:HTTP 范围请求 | 小程序学习资料 |HTTP 内容编码 | 辅助模式实战 | 辅助模式玩出花样 | 小程序 Flex 布局

006tKfTcly1fpzmg0hppuj30rs0b474v.jpg

相关文章:

  • eclipse 设置python 界面为默认展示
  • HTTP那些事
  • Java浅Copy的一些事
  • Java Log4j 配置文件
  • C++ 编译器
  • Haskell写的Parser
  • Java String.getBytes()编码
  • smm架构的优势
  • 不学无数——SpringBoot入门Ⅲ
  • 比特币的暴跌史
  • 微信小程序直播,腾讯云直播+微信小程序实现实时直播
  • POI导出数据以Excel的方式录入,下载
  • 如何实现MetaMask签名授权后DAPP一键登录功能?
  • 双十一流量洪峰 支撑阿里核心业务的云数据库揭秘
  • python编程入门----测试与类编写
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • es6--symbol
  • Go 语言编译器的 //go: 详解
  • JavaScript中的对象个人分享
  • Java-详解HashMap
  • Vue.js源码(2):初探List Rendering
  • Web Storage相关
  • zookeeper系列(七)实战分布式命名服务
  • 产品三维模型在线预览
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端之React实战:创建跨平台的项目架构
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 树莓派 - 使用须知
  • 数据仓库的几种建模方法
  • 一道面试题引发的“血案”
  • 再谈express与koa的对比
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​Spring Boot 分片上传文件
  • #include到底该写在哪
  • $jQuery 重写Alert样式方法
  • (1)常见O(n^2)排序算法解析
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (分享)自己整理的一些简单awk实用语句
  • (学习日记)2024.01.09
  • (转)3D模板阴影原理
  • **PHP二维数组遍历时同时赋值
  • .net 4.0发布后不能正常显示图片问题
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .Net Redis的秒杀Dome和异步执行
  • .Net 知识杂记
  • .net访问oracle数据库性能问题
  • [2]十道算法题【Java实现】
  • [2016.7 test.5] T1
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [C/C++] -- 二叉树
  • [c++] 自写 MyString 类
  • [CLickhouse] 学习小计
  • [loj#115] 无源汇有上下界可行流 网络流