HTTP/3 简单概述

  • 2020-01-04
  • 76
  • 2

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握手过程
前五个方块是TCP握手过程,不多阐述,从TLS握手阶段开始,整个过程经历了如下时间段

流程 消耗时间 总计
1. DNS 解析网站域名 1-RTT
2. 访问 HTTP 网页 TCP 握手 1-RTT
3. HTTPS 重定向 302 1-RTT
4. 访问 HTTPS 网页 TCP 握手 1-RTT
5. TLS 握手第一阶段 Say Hello 1-RTT
6. 【证书校验】CA 站点的 DNS 解析 1-RTT
7. 【证书校验】CA 站点的 TCP 握手 1-RTT
8. 【证书校验】请求 OCSP 验证 1-RTT
9. TLS 握手第二阶段 加密 1-RTT
10. 第一个 HTTPS 请求 1-RTT
10-RTT 10-RTT 10-RTT

对于客户端距离服务器较近距离来说,10个RTT时间并不算长,40ms的延迟102也就是800ms即可完成整个握手过程,倘若单趟延迟在200ms呢?

QUIC

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会持续追踪,倘若其正式发布,本站也会第一时间进行跟进!

浙ICP备19007906号