文档章节

QUIC协议加速互联网

中成才
 中成才
发布于 2015/05/24 17:35
字数 2292
阅读 185
收藏 2

2015-04-21 12:06 | DevStore编辑 陈儿

最近Google开始考虑用改进版的UDP协议QUIC给web提速。根据它近日公布的性能评估,这一融合了UDP与TCP优势的协议似乎提升效果明显。

那QUIC与其他协议的区别和优势又在那里,谷歌究竟是怎么想的呢?

讨论这个问题前,先来普及一下网络协议的基础知识

网络协议

QUIC协议是怎么回事

QUIC,Quick UDP Internet Connections)的缩写,一种实验性的传输层网络传输协议,由Google公司开发,在2013年实现出来。QUIC使用UDP协议,在两个端点间创建连接,支持多路复用连接。在设计之初,QUIC希望能够提供等同于SSL/TLS层级的网络安全保护。减少数据传输及创建连接时的延迟时间,双向控制带宽,以避免网络拥塞。Google希望使用这个协议,来取代TCP协议,使网页传输速度加快。

以往典型的安全TCP连接(TCP+TLS)往往需要在发送与接收端先进行2、3轮的握手通信才能正式开始数据传输。而利用QUIC协议,如果双方此前通信过的话马上就可以对话(即便双方此前未通信过时延也只有100毫秒,是TCP+TLS用时的1/3)。此外,QUIC还增加了拥塞控制和自动重传等功能,所以可靠性上要比UDP更高。

QUIC比UDP更快,那UDP究竟怎样

TCP/IP协议族是互联网的基础。其中传输层协议包括TCP和UDP协议。与TCP协议相比,UDP更为轻量,但是错误校验也要少得多。这意味着UDP往往效率更高(不经常跟服务器端通信查看数据包是否送达或者按序),但是可靠性比不上TCP。通常游戏、流媒体以及VoIP等应用均采用UDP,而网页、邮件、远程登录等大部分的应用均采用TCP。

提到QUIC协议,就不能不说谷歌上一次的HTTP协议改进:HTTP 2,这也是万维网(WWW)的基础协议HTTP 16年来的首次重大升级,其中HTTP/2主要以SPDY技术为主。

SPDY协议

SPDY,一种开放的网络传输协定,由Google开发,用来传送网页内容。基于传输控制协议(TCP)的应用层协议 。Google最早是在Chromium中提出的SPDY协议。目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务。

SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准(现为互联网草案),HTTP/2主要以SPDY技术为主。Google Chrome,Mozilla Firefox,Opera和Internet Explorer均已支持SPDY协议。SPDY协议类似于HTTP,但旨在缩短网页的加载时间和提高安全性。SPDY协议通过压缩、多路复用和优先级来缩短加载时间。

2012年,谷歌推出改协议,今年2月IFTF HTTP工作组主席Mark Nottingham博客消息,HTTP 2正式定稿,已提交RFC Editor,开始全面标准化的工作。尽管HTTP/2的全面标准化尚未完成,但目前已有Firefox、Chrome(PC及Android版)、Safari、Opera、iOS版Safari、Windows 8 IE 11都已经支持HTTP/2.0。

关于谷歌为什么要推出QUIC,以及优化原理一些行业人士给出了自己的理解:

为什么要推出QUIC

新浪博客用户“逝去的青春”在他的一篇博文中有做介绍:

TCP、UDP都是计算机网络通信层的主要协议。TCP是面向连接的,更强调的是传输的可靠性,UDP是面向无连接的,也即在通信双方进行数据交换之前,无需建立连接,只要知道对方地址即可发送数据,由于UDP协议是无连接方式的协议,所以它的效率高,速度快,占资源少。为了集合两者的优点,谷歌公司推出了QUIC。

QUIC为什么能够在两者基础上进行优化?

Linux平台软件工程师Lenky则在个人站点上一篇文章中做了说明:

因为光速不变,而且抛开网络繁忙这些额外整体因素(因为我们这里考虑的是局部,要做的目标也是局部优化,因此整体因素属于更上一层的研究),那么在网络上,任意确定两端之间的往返时延RTTs(round trip times)基本上是固定的,因此,减少单个连接网络延迟的唯一办法就是让建立一条连接所需耗费的RTTs个数尽量的少。从这个需求可以看出,对于TCP协议本身而言,已经很难做到对应的优化了,一方面是因为TCP所要求的握手协议、拥塞控制等固定了其所必须的RTTs个数,而另一方面是因为TCP实现于操作系统协议栈内,要改变实际用户的操作系统必定是相当难的。
QUIC尝试解决那些SPDY无法涵盖的问题点。首先是TCP对头阻塞,其次是TCP拥塞阀门阻塞,也就是这两个点导致的SPDY优势无法充分发挥。

ChinaUnix博客用户Henrystark更为详尽地描述了优化原理:

基于一条TCP连接的SPDY复用连接会面临这样的情况:当有丢包发生时,所有连接都将阻塞,这是由TCP的拥塞控制特性决定的。丢包必须恢复,而恢复过程中,或早或晚,滑动窗口总有停等的时刻,耗费一个RTT。在广域网上,一个RTT相当于50-100ms。相比较而言,当x条并行HTTP连接中,有一条丢包,只会阻塞一条。
QUIC是和HTTP同一层的应用层协议,其核心是将丢包控制工作转移到应用层。由于QUIC基于UDP,可以不理会丢包,快速投递,再用丢包恢复方法保证可靠性。除此之外,基于一条TCP连接的SPDY和多条并行HTTP连接相比,没有优势可言。多条连接中,每个连接都有一个拥塞窗口,不受彼此丢包影响。

QUIC优点:

看了这么多,有些内容确实是比较生涩难懂,那还是挑开说吧,它都有哪些特性或优点:

1) 拥有SPDY的所有优点(多路传输,支持优先级等等)

2) 零往返时间连接

3) 数据包同步,有效降低数据丢包率

4) 转发问题连接,有效减少重发延迟

5) 自适应拥塞控制(对TCP友好),有效减少移动客户端重新连接的次数

6) 与TLS等效的加密措施

7) Chrome支持与Google的QUIC通信

8) 前向纠错

从目标来看,QUIC跟SPDY(HTTP/2基础)很多方面是类似的,但是后者仍然基于TCP,所以仍然会存在部分相同的时延问题。

不过这样也许你会问为什么Google不干脆改进TCP?根据Google的解释,不这么做的原因是TCP往往直接内置到了操作系统内核当中,这是Google所无法控制的。所以他们就拿UDP改良版来开刀,以期更快地测试性能改进效果。

Google从去年开始就已经在Chrome浏览器上进行了实验,实际上目前Chrome到Google服务器的请求当中大概有一半已经在采用QUIC协议。

数据表明75%的连接均可利用QUIC的优势,哪怕预先建立的优化连接(Google搜索)采用QUIC后页面加载性能仍然能提高3个百分点。而时延严重的一些web应用,在采用QUIC后的改进效果则要更加明显。比如有用户报告YouTube重新缓冲次数减少了30%。

Google希望QUIC的性能得当证明后能够移植到TCP和TLS上面,称未来打算将HTTP2-over-QUIC作为新的协议提交给IETF。但是这显然需要与IETF的配合以及长期努力。这一套路跟SPDY很像,都是以Chrome为跳板展现协议原型和效果,然后再提出作为协议草案,但结果尚待观察。

一流的公司做标准,谷歌就是这样做的,一直以来,谷歌都在试图重塑各种互联网核心协议,以推进更快更可靠更安全的互联网,当然,谷歌费尽心力去优化底层协议,也是为自己考虑,只有更快、更可靠、更安全的互联网,才能让赖以搜索引擎为生的谷歌发展得更好。

本文转载自:http://m.devstore.cn/new/newInfo/1622.html

共有 人打赏支持
中成才
粉丝 54
博文 127
码字总数 49091
作品 0
海淀
架构师
私信 提问
Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0

HTTP/2.0 还没有普及,HTTP/3.0 标准就要被制定了。 据 IETF 透露,HTTP-over-QUIC 实验协议将被重命名为 HTTP/3,并成为 HTTP 协议的第三个正式版本。 IETF 是 Internet Engineering Task ...

承香墨影
2018/11/15
0
0
这些核心互联网协议,正逐渐发生变化

我们所熟悉的互联网过去主要使用 IPv4 协议路由包,TCP 协议连接,SSL/TLS 加密连接,DNS 查询主机和 HTTP 应用协议。IETF 的 HTTP 和 QUIC 工作组联席主席 Mark Nottingham 称,常用的互联网...

达尔文
2017/12/15
2.7K
19
下一代 HTTP 底层协议或将弃用 TCP 协议,改用 QUIC 协议

(给程序员的那些事加星标) 据 iThome.com.tw 报道,国际互联网工程任务组(Internet Engineering Task Force, IETF)将于近日商讨下一代 HTTP 底层协议,可能不再使用已经沿用多年的 TCP ...

程序员的那些事_
2018/11/15
0
0
下一代 HTTP/3 协议将弃用 TCP 改用 QUIC

据国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF )消息,HTTP-over-QUIC 实验性协议将被重命名为 HTTP/3,并有望成为 HTTP 协议的第三个正式版本。 QUIC (Quick...

王练
2018/11/17
7.2K
17
5G时代,HTTP和DNS协议将如何演进?

5G时代,HTTP和DNS协议将如何演进?HTTP和DNS几乎已经成为家喻户晓的两种协议,但5G时代的来临,这些协议都将发生巨大的变化。 互联网在过去三十年里发展非常迅猛,这得益于两个关键协议:代表...

5G时代
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(六十四)

资源整理。 1 Coding: 1.交互式瓦片编辑器。 tile playground 2.R语言包autokeras,autokeras的R接口。autokeras是一个开源的自动机器学习的软件。 autokeras 3.斯坦福网络分析平台,用于网络...

胖胖雕
35分钟前
0
0
最简单的cd命令是个大坑!

BASH Shell 是大多 Linux 发行版的默认 shell,BASH 有一些自己的内置命令,cd 就是其中的一个。 在centos6里面,系统中不存在 cd 的二进制文件。但是你仍然可以运行该命令,这是因为 cd 是 ...

gaolongquan
46分钟前
1
0
spring获取bean的几种方式

使用jdk:1.8、maven:3.3.3 spring获取Bean的方式 pom.xml文件内容: <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="......

Vincent-Duan
52分钟前
2
0
一段话系列-Linux中IO的同步、异步、阻塞、非阻塞

首先我们框定一下背景,我们探讨的是Linux系统下的IO模型。 同步和异步是针对内核操作数据而言的,同步是指内核串行顺序操作数据,异步是指内核并行(或并发)操作数据,然后通过回调的方式通...

EasyProgramming
57分钟前
4
0
好程序员web前端分享主流CSS image比较

好程序员web前端分享主流CSS image比较在还原设计图的时候,难免会碰到一些样式图片的引用。如何来对这些图片做优化呢?本文简单的梳理了一下目前几种比较常用的使用方式。   注: 1. 有更好...

好程序员IT
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部