0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文带你了解QUIC协议

讯维官方公众号 来源:LiveVideoStack_ 作者:Anubhab Sahu 2021-09-02 09:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当通过网络传输数据时,一种新的协议QUIC(Quick UDP Internet Connection,快速UDP互联网连接)正在成为FAANG的默认选择。本篇文章描述了QUIC协议是如何克服其他版本HTTP的限制脱颖而出的。

FAANG是美国市场上五大最受欢迎和表现最佳的科技股的首字母缩写,即Facebook、Apple、Amazon、Netflix和Google。

HTTP的演进

HTTP属于应用层传输协议,运行于TCP/IP之上。现在它已成为万维网中数据交换的基础。HTTP包括4个稳定版本:HTTP/0.9、HTTP/1.0、HTTP/1.1 和HTTP/2。HTTP/3于2018年首次提出,目前已获得全球2/3 web浏览器的支持。

HTTP/0.9(1991)

HTTP/0.9是HTTP的第一个版本,用作W3C的底层通信协议。它是一个非常简单的客户端-服务器、请求-响应、使用Telnet的协议,只支持GET命令(作为请求方法)和超文本协议(作为响应类型)。该协议不包含HTTP消息头,且发送响应后,连接会立即断开。

HTTP/1.0(1996)

HTTP/0.9极其简单,且使用非常受限。新的HTTP版本HTTP/1.0引入了很多新特性,使它更加通用。这些新的特性包括:

每次HTTP 请求/响应都会重新建立TCP连接

添加了对 POST 和 HEAD 方法的支持

协议头带有版本号、协议类型、状态码字段

响应类型:超文本、脚本、媒体、样式表

支持keep-alive连接,但默认情况下它是“关闭”的

HTTP/1.1(1997)

HTTP/1.0的主要缺陷是:它在每次请求响应时都要建立新的TCP连接。这种做法非常耗时,且影响客户端和服务器的性能。HTTP/1.1的出现解决了这一问题:

单个TCP连接上可以传送多个HTTP请求和响应

添加了对 PUT、DELETE、TRACE、OPTIONS 方法的支持

默认持久连接

HTTP/2(2015)

随着流媒体内容的增加,网站也开始变得越来越复杂。为了满足这种需求,HTTP/1.1的功能不断扩展:首次支持多个TCP连接,并试验性地引入了管道机制(pipelining),即在同一个TCP连接里面,客户端可以同时发送多个请求。但扩展不可能无止境,最终需要采用一个新的协议,于是HTTP/2出现了,该协议包括如下重大改进:

多路复用:这是HTTP/2的一个特性,允许同时通过单个TCP连接发起多重请求-响应消息。每次HTTP请求-响应都被分割成二进制帧,客户端和服务器都以二进制帧为基本单位发送消息(请求和响应)。通过多路复用,客户端无需再等待上一个请求完成就可以发送多重请求。这样,HTTP/2便解决了HTTP队头阻塞(HoL)的问题。如图所示:

b9a5eb7a-f5e8-11eb-9bcf-12bb97331649.png

头部压缩:使用 HPACK 压缩消息头

非阻塞下载

支持服务器推送

采用二进制分帧,不再是纯文本

解决了队头阻塞问题

HTTP/3(2018)

通过多路复用,HTTP/2解决了队头阻塞问题。但如果TCP流中出现了丢包,根据TCP的拥塞控制机制,其他数据流就只能等待丢包被重新发送和接收。所以,TCP的队头阻塞问题在HTTP/2中依然存在。

HTTP/3通过使用基于UDP的传输协议QUIC解决了这一问题。

HTTP/3是自HTTP/2之后最新且最主要的HTTP版本。因为HTTP/3本身就是为QUIC协议设计的,所以也被描述为基于QUIC的HTTP/2。HTTP/3的目标是通过使用谷歌的QUIC协议提供快速、可靠安全的网络连接。HTTP/3包括以下特性:

使用基于UDP的QUIC作为传输协议

解决了TCP队头阻塞问题

使用QPACK头部压缩机制

提供更快页面加载时间

HTTP/2 VS HTTP/3

相同点:

HTTP/2 和 HTTP/3 使用相同的语法和语义结构,并且适用于同一请求/响应方法、状态码和协议字段。此外,两者都使用设计相似的头部压缩算法(HPACK 和 QPACK)。

不同点:

特性 HTTP/2 HTTP/3
传输层协议 TCP 基于UDP的QUIC
头部压缩算法 HPACK QPACK
队头阻塞问题 解决HTTP队头阻塞 同时解决HTTP和TCP 队头阻塞
握手协议 TCP + TLS QUIC
加密协商 可通过TLS(默认版本为1.2,后续版本可选)与ALPN协议扩展进行协商 使用用于QUIC协议的Alt-Svc(以 TLS 1.3 作为 TLS 的最低版本)
握手时间 因为需要TCP和TLS 握手,所以更慢 QUIC协议直接处理数据流,所以更快

QUIC是一种新的多路传输层网络协议标准,建立在 UDP 之上。QUIC的主要目标是通过减少页面加载时间提升用户体验,并提高HTTPS的传输性能。它在本质上是TCP+TLS+HTTP/2。

设计HTTP/3的目的就是要充分利用 QUIC 的优势。QUIC 协议本身可以处理数据流,所以排除了 TCP 队头阻塞问题。

QUIC 的一些关键特性包括:

基于UDP

使用没有队头阻塞的连接复用

重构TCP的关键机制(连接复用、连接建立、拥塞控制、可靠性),并成为可靠的传输协议

交换数据包

对于典型的QUIC协议,客户端和服务器之间交换了三种类型的数据包,如下图所示:

b9e0a166-f5e8-11eb-9bcf-12bb97331649.png

1. 安全的首包

首先,客户端在一个CRYPTO帧中传输包含TLS 1.3 Client Hello的首包。Client Hello包含不同类型的的扩展项,如目标服务器的SNI(Server Name Indication,服务器名称指示 )、QUIC 传输参数、压缩证书等,以及客户端支持的压缩方法和不同的加密套件。

如果服务器接受QUIC和TLS 1.3参数,它也会在CRYPTO帧中发送包含对客户端首包确认信息和TLS 1.3 Server Hello的首包信息。Server Hello中包含被服务器接收的加密套件和不同的扩展(如密钥共享、支持的版本等)。在客户端接收到 Server Hello后,会向服务器发送一个ACK确认包。

这三个首包都可能包含一个填充帧,以根据需要增加数据包的大小。

2. 握手包

客户端和服务器之间的首包被交换以后,服务器会发送一个握手数据包,其中包含余下的服务器端消息,如证书、与服务器身份验证相关的加密扩展。客户端会验证这些证书,然后QUIC 握手以客户端发送的握手消息结束。

3. 安全的净荷包

一旦安全的QUIC连接建立,客户端与服务器之间的信息便可以安全传输。

QUIC 0-RTT

为了缩短建立新连接的时间,QUIC采用0-RTT。在这里,如果客户端之前使用1-RTT连接到服务器,则服务器必须存储与流量控制相关的传输参数的副本,如 initial_max_data、initial_max_stream_data_bidi_local 等。

下一次,在QUIC 0-RTT模式中,客户端立即开始与服务器的数据传输,不需要等待握手完成。

然而,0-RTT也有设计上的缺陷:允许重放攻击。

我们为什么要用QUIC?

传统的TCP协议是建立在操作系统层和中间路由模块之上实现的,它的握手阶段信息很容易被这些中间模块篡改而变得不安全。

但QUIC协议是在UDP之上的用户级(如浏览器)中实现的,因此它更加灵活、对用户更友好,并且能够在短时间内支持更多设备。

在 QUIC 中,传输相关的信息被不同的保护层加密,握手包在传输链路上不容易被识别和修改。因此它提供了更安全的网络数据传输。

翻译/ Alex 技术Review / 袁荣喜 原文链接: https://blogs.keysight.com/blogs/tech/nwvs.entry.html/2021/07/16/road_to_quic-DGa5.html 特别说明:原作者Anubhab Sahu已授权本文的翻译与发布,特此感谢。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    13

    文章

    10094

    浏览量

    90879
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1418

    浏览量

    83013
  • UDP
    UDP
    +关注

    关注

    0

    文章

    331

    浏览量

    35211
  • Quic
    +关注

    关注

    0

    文章

    25

    浏览量

    7513

原文标题:QUIC协议的演进之路

文章出处:【微信号:xunwei201508,微信公众号:讯维官方公众号】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ALM(应用生命周期管理)解析:了解其概念、关键阶段及Perforce ALM工具推荐

    什么是ALM(应用生命周期管理)?它远不止是SDLC!了解其概念、关键阶段以及如何借助Perforce ALM这类工具,实现端到端的可追溯性、加速发布并保障合规性。
    的头像 发表于 09-19 11:03 1250次阅读
    ALM(应用生命周期管理)解析:<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>其概念、关键阶段及Perforce ALM工具推荐

    【干货】带你了解CAN、Modbus与LoRa三种通信协议的区别

    在工业自动化与物联网领域,CAN、Modbus和LoRa是三种主流通信技术。而亿佰特在该行业具有丰富的产品供客户选择与使用,帮助客户进步确定需求,本文将结合技术细节与实际案例解析其核心区别。
    的头像 发表于 08-28 19:32 1814次阅读
    【干货】<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>CAN、Modbus与LoRa三种通信<b class='flag-5'>协议</b>的区别

    带你了解海凌科毫米波雷达

    什么是毫米波雷达?毫米波雷达有什么特点?毫米波雷达有什么作用?海凌科有哪些系列毫米波雷达?带你了解!毫米波的定义毫米波是指频率在30GHz至300GHz之间、波长为1~10毫米的电
    的头像 发表于 08-11 12:04 1090次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>海凌科毫米波雷达

    带你了解什么是机器视觉网卡

    千兆以太网或万兆以太网相机产生的大量图像数据流。万兆网卡能提供更高的带宽,满足高分辨率、高帧率相机的需求。支持GigEVision协议:这是机器视觉领域最重要的工业
    的头像 发表于 07-09 16:18 416次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>什么是机器视觉网卡

    带你了解电源测试系统的功能!

    在当今电子与电力技术飞速发展的时代,各类电子设备、电力系统以及新能源相关产品的研发、生产和维护过程中,电源测试系统扮演着至关重要的角色。本文将带你了解源仪电子的电源测试系统的功能。
    的头像 发表于 07-02 09:10 623次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>电源测试系统的功能!

    了解电压谐波

    我们经常会听到谐波,到底什么是谐波,怎么定义的?为什么要关注谐波?什么时候关注谐波?谐波如何计算或标准规定的谐波的算法是怎样的?GB关于电压谐波又是如何评估的?带着诸多的问题,我们一起来了解
    的头像 发表于 06-28 17:23 3825次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>电压谐波

    带你了解工业计算机尺寸

    项艰巨的任务。本博客将指导您了解关键的工业计算机尺寸、使用案例。关键工业计算机外形要素及其使用案例、工业微型PC尺寸范围:宽度:100毫米-180毫米深度:10
    的头像 发表于 04-24 13:35 790次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>工业计算机尺寸

    带你了解芯片开封技术

    芯片开封的定义芯片开封,即Decap,是种对完整封装的集成电路(IC)芯片进行局部处理的工艺。其目的是去除芯片的封装外壳,暴露出芯片内部结构,同时确保芯片功能不受损。芯片开封是芯片故障分析实验
    的头像 发表于 04-07 16:01 1005次阅读
    <b class='flag-5'>带你</b><b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>芯片开封技术

    【干货】什么是Node-RED?带你了解

    什么是Node-RED?首先我们来认识下什么是Node-RED。Node-RED是个基于Node.js的开源可视化编程工具,于2013年由IBM公司推出。它可以通过浏览器的图形化界面进行编程
    的头像 发表于 03-13 19:32 1511次阅读
    【干货】什么是Node-RED?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>!

    带你了解什么是灯具检测测试

    在灯具制造业中,技术检验是确保产品符合安全和质量标准的基石。本文将深入探讨灯具产品在技术检验中需遵循的各项测试要求和行业标准,以保障其在市场上的可靠性和竞争力。两种规格的高压测试1.UL/cUL普通固定式灯具需经受1500V/1.0mA/1秒的高压测试,可移动式灯具则为1500V/0.5mA/1秒。测试频率应处于40~70Hz区间,且泄漏电流上限为0.5mA
    的头像 发表于 01-15 15:34 2050次阅读
    <b class='flag-5'>带你</b><b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>什么是灯具检测测试

    带你了解arm主板

    当您听到“ARM主板”词时,您可能会想知道它与大多数个人计算机中使用的典型x86主板有何不同。事实是,ARM主板在从智能手机和平板电脑到服务器和嵌入式系统等各种应用中越来越受欢迎。但是什么让它们
    的头像 发表于 01-02 10:51 964次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>arm主板

    了解Android UDP通信

    了解UDP通信协议 UDP(User Datagram Protocol,用户数据报协议)是种无连接、不可靠的传输层
    发表于 12-30 10:56

    UVLED光固化机常用术语和单位简介,篇文章带你全面了解

    全面、简洁的文章,带你了解UVLED光固化机的常用术语和单位!‌、光通量(Φ)‌光通量是指发光体每秒发射的光的总量,单位为流明(Lm)。在UVLED行业中,光通
    的头像 发表于 12-24 13:27 1484次阅读
    UVLED光固化机常用术语和单位简介,<b class='flag-5'>一</b>篇文章<b class='flag-5'>带你</b>全面<b class='flag-5'>了解</b>!

    带你了解FIB技术

    FIB技术定义聚焦离子束(FocusedIonBeam,FIB)技术是种先进的微纳加工技术,它利用高度聚焦的离子束对材料进行精确的加工、分析和成像。FIB技术能够在纳米尺度上实现材料的去除、沉积
    的头像 发表于 12-20 12:55 3949次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>FIB技术

    了解三菱电机高压SiC芯片技术

    三菱电机开发了高耐压SiC MOSFET,并将其产品化,率先将其应用于驱动铁路车辆的变流器中,是家在市场上拥有良好业绩记录的SiC器件制造商。本篇带你了解三菱电机高压SiC芯片技术。
    的头像 发表于 12-18 17:35 1812次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>三菱电机高压SiC芯片技术