基于quic协议的http/3

author author     2023-02-22     378

关键词:

HTTP/2 存在一些比较严重的与 TCP 协议相关的缺陷,但由于 TCP 协议僵化,我们几乎不可能通过修改 TCP 协议自身来解决这些问题,那么解决问题的思路是绕过 TCP 协议,发明一个 TCP 和 UDP 之外的新的传输协议。但是这也面临着和修改 TCP 一样的挑战,因为中间设备的僵化,这些设备只认 TCP 和 UDP,如果采用了新的协议,新协议在这些设备同样不被很好地支持。

HTTP/3 选择了一个折衷的方法——UDP 协议,基于 UDP 实现了类似于 TCP 的多路数据流、传输可靠性等功能,我们把这套功能称为 QUIC 协议。关于 HTTP/2 和 HTTP/3 协议栈的比较。

基于QUIC

基于QUIC通过上图我们可以看出,HTTP/3 中的 QUIC 协议集合了以下几点功能。

  • 实现了类似 TCP 的流量控制、传输可靠性的功能。虽然 UDP 不提供可靠性的传输,但 QUIC 在 UDP 的基础之上增加了一层来保证数据可靠性传输。它提供了数据包重传、拥塞控制以及其他一些 TCP 中存在的特性。
  • 集成了 TLS 加密功能。目前 QUIC 使用的是 TLS1.3,相较于早期版本 TLS1.3 有更多的优点,其中最重要的一点是减少了握手所花费的 RTT 个数。
  • 实现了 HTTP/2 中的多路复用功能。和 TCP 不同,QUIC 实现了在同一物理连接上可以有多个独立的逻辑数据流。实现了数据流的单独传输,就解决了 TCP 中队头阻塞的问题。
  • 实现了快速握手功能。由于 QUIC 是基于 UDP 的,所以 QUIC 可以实现使用 0-RTT 或者 1-RTT 来建立连接,这意味着 QUIC 可以用最快的速度来发送和接收数据,这样可以大大提升首次打开页面的速度。

通过上面的分析,我们相信在技术层面,HTTP/3 是个完美的协议。不过要将 HTTP/3 应用到实际环境中依然面临着诸多严峻的挑战,这些挑战主要来自于以下三个方面。

第一,从目前的情况来看,服务器和浏览器端都没有对 HTTP/3 提供比较完整的支持。Chrome 虽然在数年前就开始支持 Google 版本的 QUIC,但是这个版本的 QUIC 和官方的 QUIC 存在着非常大的差异。

第二,部署 HTTP/3 也存在着非常大的问题。因为系统内核对 UDP 的优化远远没有达到 TCP 的优化程度,这也是阻碍 QUIC 的一个重要原因。

第三,中间设备僵化的问题。这些设备对 UDP 的优化程度远远低于 TCP,据统计使用 QUIC 协议时,大约有 3%~7% 的丢包率。


google的quic华丽转身成为下一代网络协议:http/3.0

...,HTTP/3.0标准就要被制定了。据IETF透露,HTTP-over-QUIC实验协议将被重命名为HTTP/3,并成为HTTP协议的第三个正式版本。IETF是InternetEngineeringTaskForce的缩写,意思是互联网工程任务小组,主要负责互联网标准的开发和推动。被他们“... 查看详情

WebSocket 是不是与 HTTP/3 兼容

...:2019-08-0614:20:38【问题描述】:即将到来的HTTP/3标准不再基于TCP,而是基于QUIC协议。WebSocket基于TCP,作为HTTP更新启动。WebSocket连接是否以基于QUIC而不是TCP的HTTP/3更新启动?还是无法将HTTP/3连 查看详情

关于http/3的小知识点

...。“HTTPoverQUIC”就是HTTP协议的下一个大版本,HTTP/3。QUIC基于UDP,而UDP是“无连接”的,根本就不需要“握手”和“挥手”,所以天生就要比TCP快。就像TCP在IP的基础上实现了可靠传输一样,QUIC也基于UDP实现了可靠传输,保证数... 查看详情

http/2都还没上用,http/3又是什么鬼?

...作组主席MarkNottingham提出了将HTTP-over-QUIC更名为HTTP/3QUIC是基于用户数据包协议(UDP)连接的复用版本的传输层协议。与TCP不同,UDP不遵循TCP三向交握,而是使用单个UDP往返。因此,在用户代理和Web服务器之间的... 查看详情

http/2都还没上用,http/3又是什么鬼?

...作组主席MarkNottingham提出了将HTTP-over-QUIC更名为HTTP/3QUIC是基于用户数据包协议(UDP)连接的复用版本的传输层协议。与TCP不同,UDP不遵循TCP三向交握,而是使用单个UDP往返。因此,在用户代理和Web服务器之间的... 查看详情

聊聊quic协议的发展

...c;快速UDP互联网连接)是一种新的“更快”的通用网络传输协议。相比于TCP和TLS,QUIC提供了许多改进来提升网络传输的性能。随着QUIC协议的标准化,QUIC之上的HTTP/3协议已经被众多浏览器所支持,其中包括Chrome、Microsoft... 查看详情

地推http3和quic

...全的Web连接。为此,它使用了一种不同的传输层网络协议,称为QUIC,该协议最初由Google开发的。感慨一下,虽然最近中国在系统的应用方面有了一定的进步,但是看看这些底层的协议,还都是外国人搞出... 查看详情

地推http3和quic

...全的Web连接。为此,它使用了一种不同的传输层网络协议,称为QUIC,该协议最初由Google开发的。感慨一下,虽然最近中国在系统的应用方面有了一定的进步,但是看看这些底层的协议,还都是外国人搞出... 查看详情

基于.net7的webtransport实现双向通信(代码片段)

...据,也支持可靠的StreamAPI发送数据。因为HTTP/3使用了基于UDP的QUIC协议,所以WebTransport可以在一个连接上创 查看详情

http3.0来了,udp取代tcp成为基础协议,tcp究竟输在哪里?

...c;TCP究竟“输”在哪里? HTTP/3采用了谷歌多年探索的基于UDP的QUIC协议,原名叫HTTP-over-QUIC,在2018年被IETF批准更名为HTTP/3。目前,Cloudflare、GoogleChrome、FirefoxNightly均表示支持HTTP/3。为什么我们需要HTTP/3?很多... 查看详情

QUIC 多路复用与 HTTP/2 的多路复用有何不同

...用有何不同?【问题讨论】:【参考方案1】:好问题!基于TCP的HTTP/2受到TCP造成的轻微低效率的影响。考虑以下示例:假设您有3个流A 查看详情

quic协议初探-ios实践(代码片段)

...f09;QUIC(QuickUDPInternetConnections)协议是一种全新的基于UDP的web开发协议。可以用一个公式大致概括:TCP+TLS+HTTP2=UDP+QUIC+HTTP2’sAPI从公式可看出:QUIC协议虽然是基于UDP,但它不但具有TCP的可靠性、... 查看详情

asp.netcore6新特性,支持http/3端点发布(代码片段)

????序言Http3协议构建在UDP的基础上,是的,就这么神奇,以前被誉为不稳定大神的UDP,现在承担起可靠通讯协议的底层协议。为了消除UDP的不确定性,在UDP协议之上,新增了QUIC协议。使用QUIC协议代替TCP协... 查看详情

2023年01月.netcore工具案例-.net7中的webtransport通信(代码片段)

...ff1a;https://blog.csdn.net/aa2528877987/article/details/1277441863.HTTP/3.0基于QUIC协议:天然复用QUIC的各种优势;新的HTTP头压缩机制:QPACK,是对HTTP/2中使用的HPACK的增强。在QPACK下&# 查看详情

quic协议文档翻译——什么是quic

...且几乎不需要应用更改。QUIC和TCP+TLS+HTTP2十分相似,但是基于UDP实现。使用QUIC作为一个独立的协议可以做到一些别的协议做不到的创新,因为它们受到传统客户端和中间件的阻碍。和TCP+TLS+HTTP2相比,QUIC的核心优势有以下几点:... 查看详情

mqttoverquic:下一代物联网标准协议为消息传输场景注入新动力

...迟的同时,为现代移动互联网提供了有效灵活的传输层。基于QUI 查看详情

http/3,它来了。(代码片段)

HTTP3.0是HTTP协议的第三个主要版本,前两个分别是HTTP1.0和HTTP2.0,但其实HTTP1.1我认为才是真正的HTTP1.0。如果你对HTTP1.1和HTTP2.0不太了解的话,可以阅读笔者的这两篇文章。看完这篇HTTP,跟面试官扯皮就没问题了HTTP... 查看详情

http/3,它来了。(代码片段)

HTTP3.0是HTTP协议的第三个主要版本,前两个分别是HTTP1.0和HTTP2.0,但其实HTTP1.1我认为才是真正的HTTP1.0。如果你对HTTP1.1和HTTP2.0不太了解的话,可以阅读笔者的这两篇文章。看完这篇HTTP,跟面试官扯皮就没问题了HTTP... 查看详情