QUIC
了解HTTP3之前,先阐述一个协议quic,全称为 Quick UDP Internet Connections
(快速UDP网络链接),位于传输层。
现代互联网的连接都基于TCP协议,诸如HTTP与邮件等。QUIC却率先采用了不可靠的UDP协议,他在2013年由 Google 提出,其旨在于建立快速的SSL/TLS连接,减少数据传输及延迟时间,双向控制带宽做到避免网络拥塞。2015年6月,QUIC草案被提交至互联网工程小组(IETF)
2018 年 10 月,互联网工程任务组 IETF 中 HTTP 及 QUIC 工作小组正式将基于 QUIC 协议的 HTTP (HTTP over QUIC) 重命名为 HTTP/3
以为确立下一代规范做准备。
TLS握手过程
部分图片及文字来源:https://halfrost.com/https_tls1-2_handshake/
一张直观的图
前五个方块是TCP握手过程,不多阐述,从TLS握手阶段开始,整个过程经历了如下时间段
[table id=3 /]
对于客户端距离服务器较近距离来说,10个RTT时间并不算长,40ms的延迟102也就是800ms即可完成整个握手过程,倘若单趟延迟在200ms呢?
QUIC
QUIC的整个握手过程如下
由于UDP协议不需要经过TCP的握手,直接简化了流程,并大幅提高了TLS的握手速度,且提供了多路复用的支持,多个数据在TCP连接上传输时,若一个数据包出现问题,TCP需要等待该包重传后,才能继续传输其它数据包。但在QUIC中,因为其基于UDP协议,UDP数据包在出问题需要重传时,并不会对其他数据包传输产生影响。
目前TCP与SSL/TLS(1.0,1.1,1.2)每次建连需要TCP三次握手+安全握手,需要4~5个RRT
而QUIC,是0RTT。
总结
对于HTTP/3,Rhyland会持续追踪,倘若其正式发布,本站也会第一时间进行跟进!