翻译:刘通
现今,因为应用变得越来越有交互性,所以延时成为了互联网中最重要的数据。Ergo这个网络社区一直在传输协议上做工作来改善延时。举个例子,在2009年,作为“让网页更快”提议的一部分,Google宣布了一个实验性的协议SPDY,一个HTTP协议的进化版。他们设定这项协议的主要目标是将网页加载时间减少50%,并且通过换用新的应用层协议来降低开发难度。
SPDY有四个主要特性:
# 复用技术:SPDY在每个子域中只建立一个TCP连接,数据流在一个单一的TCP连接上进行复用传输。这避免了在资源层上的HOL阻挡,降低了创建一个新TCP连接的的时间,并且减少了TCP“慢启动”的影响。
# 报头压缩:使用报头压缩可以避免来回传输多余的报头信息。请求和响应报头的大小会通过报头压缩而极大的缩小。
# 请求优先化:所有高优先级的资源会早于其他资源被请求。这会使网页在带宽有限的情形下更快的呈现出来。
# 服务器推送和服务器提示:有些资源甚至在用户发出请求之前就得送给他们了。这会极大地加强用户体验度,因为用户在想要他们之前就已经被呈现出来了。在服务器提示情景中,一些资源被服务器标记了高优先级,用户可以根据带宽的限制情况而选择发送还是不发送请求。
当SPDY展现了对HTTP/1.1重大改进的时候,IETF的HTTP工作组开展了标准化HTTP/2(H2)的工作来改善此项协议。
HTTP/1.1和HTTP/2连接
HTTP/2可以向下兼容HTTP/1.1,也就是说如果H2失效了,连接可以退回到HTTP/1.1。除了向下兼容性以外,H2还打算通过使用报头域压缩来更高效地使用网络资源,以及允许在同一个连接上使用多个并发的数据交换。
除此之外,H2使用通用事件传输机制来进行服务器推送,其是基于订阅的,并且用户代理订阅的是不同的服务。应用服务器将消息推送给订阅的用户代理,而不是发送未经请求的消息给他们。
SPDY |
HTTP/2 |
Advantages |
复用 |
复用 |
没有HOL阻挡 |
报头压缩 |
报头压缩 |
降低数据包大小 |
请求优先化 |
请求优先化 |
快速呈现 |
服务器推送和服务器提示 |
服务器推送和服务器提示 |
提醒 |
– |
二进制帧 |
快速分析 |
SPDY vs. HTTP/2
HTTP/2和SPDY之间的主要区别是他们的报头压缩算法。HTTP/2使用HPACK算法进行报头压缩,相对于SPDY其大大地降低了GET请求消息的大小,SPDY使用的是DEFLATE算法。
HTTP/2和SPDY都使用TCP作为传输层协议。TCP的“慢启动”迫使应用创建多个TCP连接来达到平行性以及更好的表现。举个例子,TCP起始拥塞窗口(IW)决定发送多少数据给起始TCP传输阶段。如果IW值很小,会花多个来回传输时间(RTT)进行TCP来达到其最大通量。
朝着使用UDP而不是TCP的演变
在前几年,协议堆栈的僵化已经讨论过了好几次—HTTP已经成为了互联网的瓶颈—HTTP/TCP/IP被作为默认堆栈。有些保守的堆栈限制了网页和互联网的发展,因为应用汇或多或少地被可用的功能特性所限制。这导致了很多组织进行试验和开发基于UDP的新协议。
现在业内的普遍认知是换做UDP会加快开发和传输协议的进化协议,因为用户空间新协议的实现会对快速开发起到帮助作用。短期的进展会导致更短的连接建立时间,更好的数据流控制效果,一般而言,会使用近20年所知道的开发最完全的实践。QUIC(快速UDP互联网连接)是一个基于UDP建立的HTTP/2传输。Jana Lyenger在柏林IETF96会议上的演示文稿展现了设计的目标以及使用UDP的QUIC的好处。
Jana Lyenger陈述中的QUIC提议
最初的结果是Google,Akamai,和Microsoft所承诺的。之前Google承诺的结果,93%的连接是使用QUIC设定的。同一份报告中显示,5%的页面加载时间得到减少,YouTube的重缓存事件减少了30%。Akamai和Microsoft也展示了所承诺的结果。QUIC最近作为IETF工作组的任务得到了特许,并且对其的说明工作正在进行。