http3文章自译

自译-仅为自己学习,不喜勿喷~(文末有原文链接)

HTTP已经被chrome的canary和curl支持了,可以下载自行体会

chrome:latest Canary build,启动时需要设置参数“--enable-quic” 和 “--quic-version=h3-23”,不知道怎么设置的,直接点击跳转 command-line arguments.

curl: brew install--HEAD -s https://raw.githubusercontent.com/cloudflare/homebrew-cloudflare/master/curl.rb

为什么要使用HTTP3(http的1.0,1.1,2.0对比)?

  在深入讨论HTTP/3前让我们先大概过一下HTTP的发展历程,以便说明HTTP/3为什么是必须的

1996年HTTP/1.0的发布定义了今天HTTP报文的基本格式(假定HTTP/0.9不存在).在HTTP/1.0中clients和servers的每个request/response都会创建TCP连接,这意味着所有的请求都必须经过TCP和TLS握手才能传递数据,这中间的消耗是很大的.(这个问题在1.1中的解决方案是keep-alive保持连接,在2中的解决方案是concurrently multiplex并发多路复用)

比较难受的是HTTP/1.0不是在建立连接之后立即传输数据,而是强制执行一个叫“slow start”的预热期(搞得和冬天开车一样,热车.传说中的慢启动).“start slow”出现时为了解决网络拥塞问题(这个问题时什么以后在看吧).但是因为每个连接都需要慢启动,那肯定就很慢了

在HTTP/1.1引入了一个全新的东西:“keep-alive”,clients可以复用TCP连接了.虽然多个请求可以公用一个连接了,但是必须按序序列化:也就是一个连接在同一刻只能处理请求/响应(还不是很完美).

  随着互联网的发展,并发请求/返回的需求更强烈了:浏览器访问网站获取更多的资源(css,js,images,font…).但是请记住HTTP/1.1,在同一时间,同一TCP连接上只能处理一个请求.当然在网络层它可以并发的创建多个TCP连接去处理同一个源的请求,但是这样一来使用“keep-alive”的意义就没那么大了.

在10年之后,SPDY和HTTP/2引入了“stream”的概念:本质上是实现在同一个TCP连接上并发处理多个不同的HTTP的抽象,这样浏览器确实可以更有效的复用TCP.

但是HTTP/2依然不是好的解决方案.HTTP/2确实解决了低效使用单TCP连接的问题.但是还会引出了新的问题:“head-of-line blocking”(这个问题也是随后在理解).

聊聊HTTP3

这就是为什么HTTP/3诞生的原因:HTTP/3使用了一个新的网络传输协议QUIC在传输层引入了streams作为一等公民取代TCP作为会话的传输层.QUIC流共享同一个QUIC连接,所以在创建新的QUIC流时不需要额外的握手和慢启动,但因为QUIC streams时独立传递的所以一个流丢包并不会影响其他的流.这可能是因为QUIC数据包是基于UDP数据包的.UDP的使用较TCP有更大的灵活性,且能使QUIC实现在用户空间中完全生存-就像TCP一样协议的更新和操作系统没有绑定关系.使用QUIC,HTTP级的流能被完全的映射到QUIC流上,这样可以获得HTTP/2的全部好处而不是“head-of-line blocking”

QUIC还结合了典型的TCP三次握手和TLS 1.3握手,结合这些步骤意味着加密和身份认证是被默认提供的,同时也是为了更快的建立连接.换句话说,即使是全新的QUIC连接被初始化建立,也比TCP+TLS快

  但是,为什么不仅仅使用基于QUIC的HTTP/2,而是创造一个权限的HTTP修订版?毕竟HTTP/2也提供了流复用的特性.事实证明,这比全新QUIC要复杂的多.

尽管某些HTTP/2的特性能很容易映射到QUIC上,但不是所有哦(有时间再看不是的有哪些).



http3过去-现在-未来:https://blog.cloudflare.com/http3-the-past-present-and-future/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址HTTP/3(QUIC)技术演变 https://mojotv.cn/cloudflare-http3-p...
    MojoTech阅读 3,012评论 1 5
  • 最近对计算机网络相关的知识进行了复习,包括对之前不太熟悉的部分重新学习了一次,做了一些总结。移除了大部分偏向物理层...
    hexiaoxiao阅读 4,170评论 0 2
  • 1. 引言 建立在 TCP 基础之上的 HTTP 是互联网上应用最为广泛的一种网络协议,诞生之初,主要就是为了...
    gnolizuh阅读 9,140评论 0 0
  • QUIC(快速UDP互联网连接)协议是一种新的默认加密的互联网通信协议,它提供了许多改进,旨在加速HTTP通...
    jinwangkeji阅读 15,879评论 0 7
  • 引流渠道有下面几点: 1)朋友圈引流,因为好多顾客用产品好多年了,还有在朋友圈的微友有好几年了,有一定的信任度。 ...
    四眼姐吃货广惠阅读 1,371评论 0 0