背景:网络协议与网络延时

现在,HTTP和TCP是web的两种协议。TCP是一般的,可靠的传输层协议,能够提供可靠的传输,避免出错,按顺序传输,流量控制,冲突避免以及其他的传输特性。而HTTP是一种应用层协议,提供记本的连接、响应语法。我们可能有机会在传输层提高延时性能,但是我们最开始的调查还是关注在应用层,即HTTP。

不幸的是,HTTP并不是为了时延而设计的。进一步说,现在的网页传输与10年前的网页有着典型的不同,因而需要改进在开发HTTP协议时没有提前注意到的地方。下面是HTTP协议可以优化的地方:

1.每个连接多需要请求;因为HTTP只能一次取得一个资源(HTTP采用了流水线,但仍然是采用FIFO队列),服务器延时500ms来阻止其他请求重用TCP信道。浏览器使用了多连接来解决这个问题。直到2008年,大部分浏览器才最终从每个域名2个连接发展到每个域名6个连接。

2.额外的初始客户请求;在HTTP协议中,只有客户端能初始化一个请求。尽管服务器知道客户端需要资源,但是它没有机制来通知客户端,而且必须等待客户端发来资源请求。

3.未压缩的请求以及响应头部。现在请求头部的大小从200bytes到2kb不等。当应用使用更多的cookies以及用户代理扩展特性时,典型的头部大小是700-800bytes。对于ADSL或者modems连接,上行的带宽相对较低,因此延时比较明显。在头部减少数据能够在发送请求时直接提高串行化的延时。

4.冗余的头部。有一些头部在同一个信道的请求中多次发送。然而,例如用户代理、主机以及接收的头部一般是固定的,而且不需要重复发送。

5.优化数据压塑。HTTP使用了数据优化压缩编码。内容总是以一种压缩的形式来发送。

过往的方法:

SPDY不是唯一的让HTTP更快的研究。这里有其他的方案来解决网络延时,大部分都是在传输层或者会话层。

1.流控制传输协议(tream Control Transmission Protocol (SCTP))——一种用来取代TCP的传输层协议,能够提供多数据流以及流感知冲突控制。

2.HTTP over SCTP——在SCTP的基础上运行HTTP协议。在高延时网络中比较HTTP over SCTP和HTTP over TCP(Comparison of HTTP Over SCTP and TCP in High Delay Networks)中描述了传输协议的性能对比研究。

3.结构化的流传输(Structured Stream Transport (SST))——采用结构化的流的协议:在一种普通的传输协议上加载轻量、独立的流。它取代了TCP或者是运行在UDP协议的上层。

4.MUX和SMUX——中间层协议(即在应用层和传输层之间的协议)能够提供多种流服务。这种协议与HTTP/1.1使用的时间差不多。

上面的方法能够解决一些网页延时问题,但不能解决所有的。不管HTTP使用的是什么传输层协议,HTTP存在的内在问题(压缩、优先次序等)应该得到解决。在任何情况下,在实际的情形中,改变传输层是比较困难的。因此,我们相信在应用层解决这些缺陷是比较容易的。这样尽可能较小的改变现有的基础设施,以及能够获得显著的性能改善。

SPDY的目标:

SPDY的目标是定义和实现一种能够降低延时而服务于网页的应用层协议。SPDY的主要目标是:

1.在网页加载时间上降低50%的时间。我们的预期结果基本上接近这个目标。

2.尽可能减少铺设复杂度。SPDY使用TCP协议作为其传输层协议,因此不需要对现有的基础设施进行任何改变。

3.避免改变网站作者的内容。支持SPDY需要的唯一的改变是客户使用代理以及网络服务器应用。

4.吸引有志向相同的组织,一起来开发协议解决延时问题。我们希望与开源社区和工业组织一起来开发这种新的协议。

一些具体的技术目的有:

1.在单个TCP会话上允许更多的并行HTTP请求;

2.通过压缩HTTP头部以及减少不必要的头部信息来减少带宽;

3.定义一种容易实现以及服务器有效的协议。我们希望通过砍掉边界情况来降低HTTP的复杂性,以及定义容易解析的消息格式;

4.为了在现有的网络基础设施上提供更安全和兼容性,让SSL作为底层传输协议。尽管SSL引入了时延,我们相信未来的网页更加依赖于安全的网络连接。除此之外,确保现有的代理间的通信不会断裂,使用SSL是必须的。

SPDY设计及其特点

SPDY在允许多并行的SSL上添加了会话层,在单个TCP连接上添加交叉流。而且一般的HTTP 的GET和POST消息格式仍然一样。然而,SPDY给有线的数据传输和编码指定了一种新的框架格式。

流数据是双向的,例如在客户端和服务器都能够初始化。

SPDY的目的是通过基本和高级的特征来获得低时延。

基本特征:

1.多路复用流:SPDY允许在单个TCP连接上使用没有限制的并行流。因为在单个信道上,请求是交叉的,TCP的效率更高:更少的网络连接以及更少但高密度的数据包;

2.请求优先级:尽管非限制的平行流解决了串行问题,但SPDY引入了另外一种方法:如果信道的带宽受限,客户端可能因为防止阻塞信道而阻断请求。为了克服这种问题,SPDY实现了请求优先级:客户端能够向服务器请求它想要的多种条目,以及给每个请求分配优先级。当一种较高优先级的请求未解决时,能够有效防止了网络信道在非重要资源发送冲突。

3.HTTP头部压缩:SPDY对HTTP请求以及响应的头部进行压缩,实现更少的数据包以及更少的比特传输。

高级特征:

除了上面的基本特征外,SPDY提供一些高级特征,服务器端发起的流。它能够在客户端没有请求发送内容的时候发送内容给客户端(Server-initiated streams can be used to deliver content to the client without the client needing to ask for it.)。web开发者可以有下面两种方式来设置:

1.服务器推送:SPDY通过X-Associated-Content header使得服务器将数据传输给客户端。X-Associated-Content header在客户端没有请求数据时,通知客户端服务器有数据发送给客户端。对于页面发起的下载(例如用户第一次访问站点),这能显著提高用户体验。

2.服务器暗示:与自动推送资源给客户端不一样,在服务器提前知道客户端需要某个资源的情况下,,服务器使用X-Subresources header 来建议客户端是否请求该资源。然而,服务器在客户端发送请求之前仍然等待发送内容。

原文(翻译):

http://blog.csdn.net/dqjyong/article/details/7759612

SPDY:一种更快速web的实验协议(转)相关推荐

  1. Web端即时通讯实践干货:如何让WebSocket断网重连更快速?

    本文作者网易智慧企业web前端开发工程师马莹莹.为了提升内容质量,收录时有修订和改动. 1.引言 在一个完善的即时通讯IM应用中,WebSocket是极其关键的一环,它为基于Web的即时通讯应用提供了 ...

  2. html颜色主题,16 种更好看的 WEB 默认标准色 colors.css

    16 种更好看的 WEB 默认标准色 colors.css Sponsor 网页安全色有216中,但支持颜色名称作为颜色值的只有16种,分别是aqua, black, blue, fuchsia, g ...

  3. 从AI、加密货币到火星任务,一种更强大、更稳定的存储设备

    作者:贺佳 来源:数据实战派 所研究器件之一的显微镜图像,由两个尺寸相同的十字架组成,其中一个具有 IrMn3 柱,第二个仅由 Pt 组成.(来源:西北大学和墨西拿大学) 美国西北大学和意大利墨西拿大 ...

  4. Python+Dash快速web应用开发——基础概念篇

    作者:费弗里 来源:Python大数据分析 ❝本文示例代码与数据已上传至https://github.com/CNFeffery/DataScienceStudyNotes ❞ 1 简介 这是我的新系 ...

  5. 2018视频人物识别挑战赛冠军经验分享:在现有机器资源条件下更快速验证是关键...

    在2018年爱奇艺联合PRCV会议举办的第一届多模态视频人物识别挑战赛中,来自Infinivision的团队获得冠军.现在,该团队分享了他们在比赛中的经验心得,希望可以为对多模态领域研究感兴趣的朋友提 ...

  6. 快速web app之道

    我最近提到,一个快速的Web App的关键是Ajax架构.Javascript和缓存.虽然这样说是基于我的经验--我并没有每一项的贡献的实际数据或者量化的可能节省的性能.但请听我细说-- Ajax架构 ...

  7. 几种主流快速开发平台选择

    几种主流快速开发平台选择 公司准备做一个系统,想要通过奎快速开发平台进行系统开发,以减少项目开发时间.经过我们对一系列市场上主流的快速开发平台考察.综合评定,我们最终选择了更为专业,和适合我们开发的快 ...

  8. 贝叶斯优化: 一种更好的超参数调优方式

    简介 本文受 浅析 Hinton 最近提出的 Capsule 计划 启发,希望以更通俗的方式推广机器学习算法,让有数学基础和编程能力的人能够乐享其中. 目前人工智能和深度学习越趋普及,大家可以使用开源 ...

  9. 交互界面设计快速原型设计实验报告

    交互界面设计快速原型设计实验报告 一.实验目的 1.掌握软件开发原型模型的概念 2.练习Axure RP的原型设计 二.实验内容 1.界面改造:用Axure RP 9对热力学计算的界面实现三种风格的改 ...

最新文章

  1. 用 python print() 函数实现的三个特效
  2. fixed在微信下的BUG
  3. 图解分布式架构的演进过程!
  4. 【JS 逆向百例】当乐网登录接口参数逆向
  5. 计算机无法从硬盘启动怎么办,电脑不能从硬盘启动应该怎么解决
  6. Server JRE 简介
  7. 简单多边形的三角剖分相关技术
  8. html页面缩小图片缩小,如何缩小html页面中的图片大小?
  9. 杨亮词汇5500-课程导学
  10. java url 加号,URL中加号(+)转义问题
  11. [可联网]ps4共享屏幕到笔记本
  12. CAE软件安装包(百度网盘)
  13. 如何获客:3招做好触客营销实现高效获
  14. signature=0e936ad5c99bd8d603e71fa74e787bee,JavaScript 的 BASE64 算法 实现 完美解决中文乱码...
  15. 广东省佛山市谷歌卫星地图下载
  16. Java:从lambda 表达式引用的本地变量必须是最终变量或实际上的最终变量
  17. 自然语言处理综述(1)NLP
  18. 计算机应用与jaj,基于J2EE银鸽集团ERP系统的设计与应用-计算机应用技术专业论文.docx...
  19. 前端无法反序列化START\u数组标记-JSONCannot deserialize instance of `java.lang.String` out of START_ARRAY toke
  20. 一键换肤丨酷雷曼VR全景系统皮肤高燃登场

热门文章

  1. 【笔记】编译原理——第三章 词法分析
  2. 环信开发的坑(环信客户互动云)
  3. 【Transformers】第 3 章:Transformers剖析
  4. 嵌入式学习硬件篇------初识ARM
  5. ROS-Ardunio 点亮LED灯
  6. 35岁程序员人群被公司优化,你觉得合理吗?
  7. 短视频课堂丨传统工厂企业短视频打造之“三好人设”
  8. 东南亚电商平台 | Shopee 虾皮 入驻流程全解析
  9. 北京理工大学计算机学院学生数,金福生_北京理工大学计算机学院
  10. 简单c语言实现的成语接龙小游戏