QUIC协议是什么?
QUIC 全称:Quick UDP Internet Connections,是一种基于 UDP 的传输层协议。 由 Google 自研,2012 年部署上线,2013 年提交 IETF,2021 年 5 月,IETF 推出标准版 RFC9000。
QUIC = HTTP/2 + TLS + UDP
如果有一个协议能让你的上网速度,在不需要任何修改的情况下就能提升 20%,特别是网络差的环境下能够提升 30% 以上; 如果有一个协议可以让你在 WiFi 和蜂窝数据切换时,网络完全不断开、直播不卡顿、视频不缓冲;你愿意去了解一下它吗?它就是 QUIC 协议。
HTTP/3 是第三个主要版本的 HTTP 协议。与其前任 HTTP/1.1 和 HTTP/2 不同,在 HTTP/3 中,弃用 TCP 协议, 改为使用基于 UDP 协议的 QUIC 协议实现。所以,HTTP/3 的核心在于 QUIC 协议。 显然,HTTP/3 属于应用层协议,而它使用的 QUIC 协议属于传输层协议
QUIC 协议的优秀特性:
-
建连快,初次建连只需要 1 个 RTT 即可完成建连。后续再次建连就可以使用 0-RTT 特性, 整个握手过程需要 2 次握手(第三次握手是带了数据的),所以整个握手过程只需要 1-RTT(RTT 是指数据包在网络上的一个来回)的时间。
-
多路复用:QUIC升华了HTTP/2中的多路复用技术,实现了基于互相独立的多流(多通道)数据传输,从根本上解决了TCP存在的队头阻塞问题。
-
内生安全:TCP报文的整个头部是通过明文进行传输的,且如果需要在建立TCP连接过程中需要额外进行TLS握手, 而对QUIC来说,除了例如目的ID等个别字段外,报文头部中的大部分字段也进行了加密;
-
网络质量较好的链路上QUIC的表现可能还不如TCP:这一点早在2017年的SIGCOMM会议上,从谷歌发表的论文中就可以看出来[1], 其中特别提到在高带宽(超过100Mbps)、低时延(几毫秒)和低丢包率的网络中,QUIC的性能有时还不如TCP。另外在2020年的SIGCOMM会议上, 谷歌专门针对QUIC的CPU使用率情况做了相关汇报[2]:2017年所做的实验可以表明,同等流量下,(2017年的)QUIC的CPU消耗是TCP/SSL的2倍左右, 即使后续进行了一些优化,但是仍然要高于使用了SSL的TCP。
从公开的数据来看,国内各个厂(腾讯、阿里、字节、华为、OPPO、网易等等)使用了 QUIC 协议后,都有很大的提升, 比如网易上了 QUIC 后,响应速度提升 45%,请求错误率降低 50%;比如字节火山引擎使用 QUIC 后,建连耗时降低 20%~30%; 比如腾讯使用 QUIC 后,在腾讯会议、直播、游戏等场景耗时也降低 30%;