谷歌希望通过 QUIC 协议加速互联网
你可能从来没有听说过它,但如果你是 Chrome 浏览器的用户,那很有可能你已经用上了谷歌的 QUIC 协议。正如谷歌在本周 透露 的消息一样,在 Chrome 向谷歌服务器发送的所有请求中,现在大约有一半是通过 QUIC 协议进行传输。
那么,这有什么了不起的呢?QUIC 是谷歌基于 UDP(用户数据报协议)打造的一种具有低延迟优点的实验性互联网传输协议,UDP 常被游戏、流媒体和 VoIP 服务所使用。“QUIC”这个名称的含义是“快速的 UDP 网络连接”。
UDP(和 QUIC)在互联网传输协议世界的对手是基本的 TCP(传输控制协议,它跟 IP< 互联网协议> 一起构成互联网的核心通信语言)。UDP 要比 TCP 轻巧得多,但反过来,它要比 TCP 少了很多纠错服务。这意味着,发送请求的服务器不会不断地跟接收服务器保持通信,举例来说,以检查数据包是否已经到达以及是否按正确的顺序到达。这就是为什么 UDP 非常适合于游戏服务。对这些服务来说,你希望保持低网络开销来减少等待时间,如果服务器没有接收到你鼠标的最新移动位置,服务器并不需要花一两秒钟来解决那个问题,因为动作已经发生了。不过,你也不会想要使用 UDP 来访问一个网站,因为你不能保证所有的数据都获得了正确传输。
在 QUIC 身上,谷歌希望使用现代安全工具把 UDP 和 TCP 的最佳特性结合在一起。
在一个典型的安全 TCP 连接中,浏览器在真正开始接收数据前通常要经过两三次的往返通信。使用 QUIC,浏览器可以立即开始跟之前已经发生过数据交换的服务器进行对话。QUIC 还引入了数项新的功能,比如拥塞控制和自动重传,这是指比单纯的 UDP 更加可靠。
凭借 SPDY(译注:这是谷歌基于 TCP 开发的应用层协议,后来成为了 HTTP/2 标准的基础),谷歌已经开发出了另一种跟 QUIC 拥有很多相同目标的替代协议,但 HTTP/2 仍然基于 TCP 运行,它依旧存在一些相同的延迟问题。
我们有理由发问,那么谷歌为什么不干脆对 TCP 进行改进呢?该公司 指出 ,这里的问题在于,对 TCP 的支持往往是直接内置到操作系统内核的,而谷歌对那没有任何控制权。“QUIC 让我们可以测试和检验新的想法,并更快地获得结果。”谷歌的团队在解释其决定的文章中写道,“我们希望,QUIC 的功能将能被移植到 TCP 和 TLS(安全传输层协议)当中,如果它们被证明是有效的话。”鉴于 Windows XP 的装机量仍然十分可观,这显然不是什么一夜之间就能成为现实的事情。
如果谷歌设计出一种全新的协议,那么构成互联网骨干的所有机器设备也将需要能够理解它——不过,它们已经能够理解 UDP 了。
谷歌表示已经看到,在使用 QUIC 进行谷歌搜索时,页面平均加载时间得到了大约 3%的提升。这听起来不是很多,但你要知道,谷歌搜索已经尽可能地被优化了。其他站点——尤其是那些延迟严重的网页应用——可能会看到更大的提升效果。那些通过 QUIC 访问 YouTube 的用户报告称,他们在观看视频时遇到重新缓冲现象的机率减少了 30%,这得益于 QUIC 比 UDP 拥有更好的拥塞控制以及自动重传功能。此外,在使用 QUIC 时,一些网速不佳的用户同样看到页面加载时间缩短了。
谷歌称,它计划向 IETF (互联网工程任务组)提议,把 HTTP2-over-QUIC 作为未来的新互联网标准。
在某些方面,这跟谷歌在 SPDY 项目上的工作差不多。该公司最初也是利用 Chrome 和自家服务器开发这个协议的原型,然后提议把它作为新版 HTTP 标准的基础。
顺便说一句,如果你想知道自己的网络连接是否启用了 QUIC, 这里 有一个浏览器扩展,它可以给出指示。另外,你还可以在 Chrome 地址栏输入 chrome://net-internals/#quic 来查看 QUIC 使用情况的详情。
图片来源: FLICKR
翻译:王灿均( @何无鱼 )
Google Wants To Speed Up The Web With Its QUIC Protocol