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

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

    关注

    12

    文章

    9123

    浏览量

    85328
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1353

    浏览量

    79055
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33931
  • Quic
    +关注

    关注

    0

    文章

    25

    浏览量

    7297

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

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

收藏 人收藏

    评论

    相关推荐

    带你了解FIB技术

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

    带你了解什么是SD NAND存储芯片

    的简单介绍:   什么是SD NAND?很简单顾名思义就是内部集成了SD卡或TF卡(这里有必要说明SD卡和TF卡除了大小不同,引脚不同之外驱动,功能等内容都是样的使用SD协议)功能的NAND存储芯片
    发表于 11-13 15:20

    智慧公交是什么?带你详解智慧公交的解决方案!

    智慧公交是什么?带你详解智慧公交的解决方案!
    的头像 发表于 11-05 12:26 271次阅读
    智慧公交是什么?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b>详解智慧公交的解决方案!

    带你了解透过率测量

    透过率的定义光透过能力,即透光率,描述的是特定条件下,物体透过的光量与其接收的入射光量之间的比例。在光的传播过程中,部分光线会被物体吸收,而另部分则能够穿透物体,这种透过现象被称作透光率。金鉴
    的头像 发表于 11-04 13:00 129次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>透过率测量

    带你了解SCP快充协议

    SCP快充协议作为华为公司自主研发的种快充技术,以其高效、安全、稳定的特点赢得了广大用户的认可和喜爱。随着技术的不断进步和应用场景的拓展,SCP快充协议将继续在快充领域发挥重要作用。
    的头像 发表于 10-27 09:19 738次阅读

    带你了解IP地址别名

    、什么是IP地址别名 IP地址别名是将多个IP地址与个网络接口关联起来的种方式。实现在网络上的个节点可以与网络建立多个连接,每个连接可以用于不同的用途。 就像在
    的头像 发表于 09-05 14:11 209次阅读

    带你了解IP版本

    、IP地址有哪些版本 互联网协议的原始版本于1983年在互联网的前身ARPANET中首次部署,也就是互联网协议版本4(IPv4)。在发展过程中,IPv4逐渐成为了互联网的基础协议
    的头像 发表于 09-05 13:36 252次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>IP版本

    了解TCP/IP协议

    TCP/IP协议是现代计算机网络通信的基础,是互联网及局域网广泛使用的协议。TCP/IP协议集包括许多协议,其中最重要的是传输控制
    的头像 发表于 08-07 15:38 1831次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>了解</b>TCP/IP<b class='flag-5'>协议</b>

    带你详细了解工业电脑

    扇设计、承受振动和恶劣环境的能力、轻松配置、全面的I/O选项、延长生命周期、耐用的组件。了解如何为您的应用选择工业电脑对提高设施的生产力和效率至关重要。详细了解
    的头像 发表于 06-12 14:24 401次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b>详细<b class='flag-5'>了解</b>工业电脑

    5.8G WiFi和2.4G WiFi如何选择?带你深度了解

    在无线网络的世界中,5.8GWiFi和2.4GWiFi作为两种常见的无线通信技术,各自具有独特的特点和优势。本文将带你深入了解这两种技术的区别、优势以及适用场景,帮助你更好地选择适合自己的无线通信
    的头像 发表于 04-18 09:49 3286次阅读
    5.8G WiFi和2.4G WiFi如何选择?<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b>深度<b class='flag-5'>了解</b>

    带你了解NVIDIA Jetson

    计算机发展成为今天的机器有着悠久的历史,今天看到的许多计算机都遵循类似的设计结构,至少包含CPU、GPU、内存和存储。迄今为止,我们对计算机设计的了解大部分都是基于这些使计算机正常运行的关键组件
    的头像 发表于 04-09 11:49 627次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>NVIDIA Jetson

    带你了解PWM原理、频率与占空比

    什么是PWM脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的种非常有效的技术,广泛应用在从测量
    发表于 03-27 14:12

    带你了解红墨水实验!

    、什么是红墨水实验? 将焊点置于红色墨水或染料中, 让红墨水或染料渗入焊点的裂纹之中,干燥后将焊点强行分离, 焊点般会从薄弱的环节(裂纹处)开裂。 因此,红墨水实验可以通过检查开裂处界面的染色
    的头像 发表于 02-26 11:24 2180次阅读
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>带你</b><b class='flag-5'>了解</b>红墨水实验!

    pcb应变测试有多重要?了解

    pcb应变测试有多重要?了解
    的头像 发表于 02-24 16:26 1081次阅读

    带你了解FPGA直方图操作

    直方图概念和分类 图像直方图用作数字图像中色调分布的图形表示。它绘制了每个色调值的像素数。通过查看特定图像的直方图,观看者将能够目了然地判断整个色调分布。 图表的水平轴代表色调变化,而垂直轴代表该
    发表于 01-10 15:07