为啥 Google.com 切换到 SPDY (HTTP/2+QUIC/35) 而不是 HTTP/2
Posted
技术标签:
【中文标题】为啥 Google.com 切换到 SPDY (HTTP/2+QUIC/35) 而不是 HTTP/2【英文标题】:Why did Google.com switch to SPDY (HTTP/2+QUIC/35) instead of HTTP/2为什么 Google.com 切换到 SPDY (HTTP/2+QUIC/35) 而不是 HTTP/2 【发布时间】:2017-07-27 03:15:43 【问题描述】:几天前我看到 Google.com 使用 HTTP/2,但昨天我发现 Google.com 已切换到 SPDY (HTTP/2+QUIC/35)。
两个问题:
-
如您所知,HTTP/2 扩展了 SPDY,为什么 Google.com 会回滚到 SPDY?
SPDY 和 SPDY (HTTP/2+QUIC/35) 有什么区别?
【问题讨论】:
【参考方案1】:http/2+quic/35
不是Speedy,它是一种新的通信协议,基于UDP而不是TCP,命名为QUIC。
让我们引用https://www.chromium.org/quic:
QUIC 相对于 TCP+TLS+HTTP2 的主要优势包括:
连接建立延迟 改进的拥塞控制 多路复用,没有行头阻塞 前向纠错 连接迁移
一个很好的演示is available in this blog article。
事实上,整个 QUIC 项目被用来绕过 TCP 标准,以一种更被动的方式。多年来,Google 一直在 QUIC 上进行试验,在数十亿用户的 Chrome 浏览器中透明地进行试验,并且现在默认切换到它,如果它工作的话(回退到 TCP 上的“经典”HTTP/2)。
从开发者的角度来看,QUIC 有一个 HTTP/2 接口,具有它的所有功能。
据我所知,只有 LiteSpeed 支持 Google 之外的 QUIC - 还不是 OpenLiteSpeed 版本(遗憾的是) - 和 go-based Caddy server。
【讨论】:
我认为 Opera 支持它,但您可能必须启用它。 谢谢,我现在知道了,所以 google、google photos、youtube 等,现在几乎所有的 Google 产品都使用了 quic 协议。【参考方案2】:你确定他们做到了吗?或者您用来显示此信息的工具 (this extension perhaps?) 是否选择这样显示?在 Chrome 的开发者工具中显示“网络”标签,看看 Chrome 真正认为它在说什么。
HTTP/2 是 SPDY 的标准版本,所以说“启用 SPDY (HTTP/2)”是没有意义的。除非这意味着它可以与 SPDY(“启用 SPDY”)通信,但在这种情况下选择与 HTTP/2 通信更好?
最后,QUIC 是 Google 正在试验的一种新协议,它取代了构建 SPDY 和 HTTP/2 的 TCP 网络层。所以两者都可以使用 QUIC 而不是 TCP,而且它通常比 TCP 更快(因此这个名字听起来像“quick”,是“Quick UDP Internet Connections”的首字母缩写)
【讨论】:
我也注意到了。网络选项卡显示“http/2+quic/35”。没有提到spdy。看起来他们在 QUIC 上使用 http/2。以上是关于为啥 Google.com 切换到 SPDY (HTTP/2+QUIC/35) 而不是 HTTP/2的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 SPDY SYN_STREAM 样本的标头显然未压缩?
为啥我必须在 AWS Application Load Balancer 中禁用 HTTP/2 以防止出现 ERR_SPDY_PROTOCOL_ERROR?