浏览器原理 30 # HTTP/3

说明

浏览器工作原理与实践专栏学习笔记

HTTP/3 出现的背景

1999 年设计的 HTTP/1.1 已经不能满足需求,所以 Google 在 2009 年设计了基于 TCP 的 SPDY,后来 SPDY 的开发组推动 SPDY 成为正式标准,不过最终没能通过。不过 SPDY 的开发组全程参与了 HTTP/2 的制定过程,参考了 SPDY 的很多设计,所以我们一般认为 SPDY 就是 HTTP/2 的前身。无论 SPDY 还是 HTTP/2,都是基于 TCP 的,TCP 与 UDP 相比效率上存在天然的劣势,所以 2013 年 Google 开发了基于 UDP 的名为 QUIC 的传输层协议,QUIC 全称 Quick UDP Internet Connections,希望它能替代 TCP,使得网页传输更加高效。后经提议,互联网工程任务组正式将基于 QUIC 协议的 HTTP (HTTP over QUIC)重命名为 HTTP/3。

浏览器原理 30 # HTTP/3

TCP 丢包状态

如果有一个数据因为网络故障或者其他原因而丢包了,那么整个 TCP 的连接就会处于暂停状态,需要等待丢失的数据包被重新传输过来。

浏览器原理 30 # HTTP/3

随着丢包率的增加,HTTP/2 的传输效率也会越来越差。有测试数据表明,当系统达到了 2% 的丢包率时,HTTP/1.1 的传输效率反而比 HTTP/2 表现得更好。

TCP 建立连接的延时

网络延迟又称为 RTT(Round Trip Time):是反映网络性能的一个重要指标。

从浏览器发送一个数据包到服务器,再从服务器返回数据包到浏览器的整个往返时间称为 RTT。

浏览器原理 30 # HTTP/3

HTTP/3 中的 QUIC 协议实现的功能:

  1. 实现了类似 TCP 的流量控制、传输可靠性的功能
  2. 集成了 TLS 加密功能
  3. 实现了 HTTP/2 中的多路复用功能
  4. 实现了快速握手功能:QUIC 是基于 UDP, 可以实现使用 0-RTT 或者 1-RTT 来建立连接

QUIC 协议的多路复用

和 TCP 不同,QUIC 实现了在同一物理连接上可以有多个独立的逻辑数据流(如下图)。

浏览器原理 30 # HTTP/3

HTTP/3 的挑战

1. 从目前的情况来看,服务器和浏览器端都没有对 HTTP/3 提供比较完整的支持。

2.部署 HTTP/3 也存在着非常大的问题。

因为系统内核对 UDP 的优化远远没有达到 TCP 的优化程度,这也是阻碍 QUIC 的一个重要原因。

3.中间设备僵化的问题。

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

拓展

腾讯AlloyTeam:HTTP/3原理与实践

文章知识点与官方知识档案匹配,可进一步学习相关知识网络技能树首页概览22400 人正在系统学习中

来源:凯小默

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月8日
下一篇 2021年5月8日

相关推荐