带你读《2022技术人的百宝黑皮书》——HTTP3 RFC标准正式发布, QUIC会成为传输技术的新一代颠覆者吗?(2)

简介: 带你读《2022技术人的百宝黑皮书》——HTTP3 RFC标准正式发布, QUIC会成为传输技术的新一代颠覆者吗?(2)

带你读《2022技术人的百宝黑皮书》——HTTP3 RFC标准正式发布, QUIC会成为传输技术的新一代颠覆者吗?(1)https://developer.aliyun.com/article/1340580?groupCode=taobaotech


如何应用QUIC/HTTP3来提升传输性能表现

 

这次IETF发布的RFC9114和9204分别描述的是HTTP/3.0和配套的Header压缩算法QPACK的协议机制。HTTP/3.0相对于HTTP/2到底有什么本质提升?这需要从HTTP/3底层的QUIC传输机制讲起。

 

 

 

我们都知道,QUIC基于UDP之上的多流(Stream)传输,实现解决原来TCP大管道下的Head-of-Line问题[3],同时0-RTT等握手机制可以保证连接会话的快速建立和首包的加速。QUIC提供了两种传输模式,基于Steam的可靠传输,和基于Datagram的非可靠传输。基于Stream的模式下,发送方和接收方基于Steam的Offset进行流   数据的重排和有序还原,并确保投递给应用层的是有序可靠数据。基于Datagram的模式则适用于实时流媒体类型的场景,针对延迟有强诉求的同时不要求数据完全可靠有序的这类场景,Datagram提供了一种数据封装和ACK通  知的方式,帮助半可靠诉求的场景实现数据的快速投递,并向应用层反馈送达情况。

 

image.png

[3]   TCP  Head-of-line头部阻塞问题:原因是TCP是一条大的传输管道,基于TCP传输的数据,由于TCP的传输机制,需要等待前面的数据包完成送达,后续的数据包才能被完成送达和向应用层投递。这在多路复用的场景下, 会导致不同的流数据之间互相block,这在HTTP/2是一个没有被完全解决的问题。

QUIC在丢包检测和重传机制方面也有较大革新。在丢包检测方面,QUIC提供了两大类丢包检测方式,基于packet  number的阈值检测,和基于定时器的超时丢包检测。这两类机制相对于传统的TCP检测方式可以带来更快的丢包感知和恢复。在重传恢复方面,QUIC针对每一个packet分配独立的packet number,避免了过去TCP因重传包和原始包复用相同的sequence,导致的RTT测量不准确的问题。准确测量的RTT,作为拥塞控制算法的一维   重要输入,能够使得算法对瓶颈段拥塞状况的检测更加准确。

 

这次发布的HTTP3 RFC,则是在QUIC基础之上,描述了HTTP请求如何通过跟QUIC steam的映射,实现完整的HTTP语义,以及针对基于UDP的多流机制设计的专用头部压缩。因此所有QUIC在UDP之上实现的传输机制革新,HTTP3都可以享受到红利。

 

那么如何把这项革新的技术用起来呢?XQUIC针对QUIC和HTTP/3协议栈提供了完整的能力实现,并且完全符合IETF标准,并通过了IETF工作组的互通性验证[4]。在手机淘宝我们提供了整套的网络解决方案,包含客户端的SDK和服务端网关的能力支持,各类业务场景核心关注开关和放量情况即可。对于外部开发者,可以移步到XQUIC在github的开源仓库[5],开源仓库有相对完整的文档说明和RFC译文,同时后续开源版本我们也将逐步更

 

 

 

新IETF工作组版本的Multipath[8]多路传输能力,以及Tengine相关的适配版本和模块,方便外部开发者能够更方便地使用。

 

带你读《2022技术人的百宝黑皮书》——HTTP3 RFC标准正式发布, QUIC会成为传输技术的新一代颠覆者吗?(3)https://developer.aliyun.com/article/1340578?groupCode=taobaotech

相关文章
|
2月前
|
测试技术 网络架构
【技术干货连载 一】业务经过WAF HTTP 400问题排查
教你如何排查和解决业务经过WAF 七层代理HTTP 400问题原因?
42 1
|
3月前
|
安全 前端开发 网络协议
|
5天前
|
Go
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
|
14天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
15天前
|
前端开发 API UED
AngularJS的$http服务:深入解析与进行HTTP请求的技术实践
【4月更文挑战第28天】AngularJS的$http服务是核心组件,用于发起HTTP请求与服务器通信。$http服务简化了通信过程,通过深入理解和实践,能构建高效、可靠的前端应用。
|
17天前
|
存储 缓存 开发框架
Flutter的网络请求:使用Dart进行HTTP请求的技术详解
【4月更文挑战第26天】了解Flutter网络请求,本文详述使用Dart进行HTTP请求
|
2月前
|
存储 数据采集 负载均衡
建立HTTP代理IP池的技术和工具支持
建立HTTP代理IP池的技术和工具支持
55 0
|
3月前
|
网络协议 安全 数据安全/隐私保护
HTTP/2与HTTP/3:互联网传输协议的新旧交替
HTTP/2与HTTP/3:互联网传输协议的新旧交替
23 2
|
4月前
|
Go
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
深度探讨 Golang 中并发发送 HTTP 请求的最佳技术
96 0
|
5月前
|
网络协议 数据格式
HTTP鸡础(传输协议,特点,历史版本,请求消息数据格式)
HTTP鸡础(传输协议,特点,历史版本,请求消息数据格式)