写点什么

Google 与微软想要改进 HTTP

  • 2012-07-03
  • 本文字数:1991 字

    阅读完需:约 7 分钟

Google 与微软想要通过 SPDY 与 Speed+Mobility 改进 HTTP。本文将会介绍这两个提案并指出他们对广为使用的 Internet 协议带来了哪些好处。

目前, Internet 工程任务组(IETF)与 W3C 正在网络路由、传输与安全等问题上紧密合作,包括 1999 年由 Roy Fielding 与 T. Berners-Lee 等人联合签名的关于 HTTP 1.1 的 RFC 2616 规范提案。自从上一个 HTTP 版本发布以来已经过去了 12 年多的时间,一些人已经开始注意到这个广为使用的 Internet 协议需要进行增强以面对时代的需要。目前,针对 HTTP 2.0 已经有多份提案被提交到了IETF,这其中包括 Google SPDY 与微软的 HTTP Speed+Mobility 。这两个提案都向后兼容于前一个版本的协议,旨在构建在现有的基础设施之上。

Google 想要重点解决现有 HTTP 1.1 的速度问题:

HTTP 实现的一个瓶颈在于 HTTP 需要通过多个连接来解决并发问题。这会导致一些问题,比如说为了建立连接所需的额外的往返过程、慢启动的延迟以及客户端的连接配额,这是由于客户端会防止对任何一个服务器打开过多的连接。

出于以上原因,SPDY 旨在:

在一个单独的 TCP 连接(或是任何可靠的传输流)之上增加一个 Framing Layer 以实现多个并发的流。Framing Layer 会针对类似于 HTTP 请求响应的流进行优化,比如说现在运行在 HTTP 之上的应用也可以运行在 SPDY 之上,对于 Web 应用来说只需做很少的修改或是无需修改。

实际上,SPDY 对 HTTP 1.1 进行了 4 个主要的改进,分别是多路请求、对请求划分优先级、压缩头以及服务器的流推送。虽然目前 SPDY 还仅仅是个提案,但它已经被实现出来并形成了产品。Google 在其很多服务与 Chrome 中都使用到了 SPDY。其他的实现还有 Apache SPDY 模块、用于 node.js 的 SPDY 服务器、Netty、Firefox 与 Amazon Silk,Ngnix 很快也会跟进。

微软针对 HTTP 2.0 提出的规范将重点放在了速度问题与移动上,该提案从 SPDY 开始到 WebSockets 结束。在之前与 InfoQ 的一封邮件交流中,来自于微软开放技术的高级程序经理及微软提案的签署者 Adalberto Foresti 提到“SPDY 做的非常漂亮,它让人们认识到了 Web 性能问题并采取了全新的方式改进 HTTP 以让 Web 变得更快”。微软的提案改进了 SPDY,这是通过简化”会话控制消息以删除对于 WebSockets 控制帧来说冗余的条目来实现的,但与现有的 HTTP 语义并不兼容,或是实现一些在传输层上的重要概念”。

微软的 HTTP Speed+Mobility 还增加了两节内容,旨在改进“物联网”上对于 HTTP 的使用,考虑到了 CPU 消耗、设备电池与资源、安全等问题。名为“Client is in control of content”的 1.1.4 节中提到:

考虑到 Internet 上各种各样的客户端以及连接数场景,客户端是定义下载什么内容的最佳场所。浏览器或是应用有关于用户当前正在做什么以及哪些数据在本地存在的第一手信息。比如说,目前使用的大多数浏览器都拥有强大的缓存,我们应该使用他们来存储不经常变化的 Web 元素。 HTTP 2.0 提案不应该强制浏览器或是应用下载没有请求的或是已经被缓存的内容。此外,客户端要有拒绝不想要或是不需要内容的权利。客户端要能通知服务端自己已经拥有了已经缓存,不需要下载的元素。在理想情况下,这种来自于客户端,发向服务端的反馈应该考虑到内容的增量审批,这样才会形成一个高效的“推送”扩展以通过适当的安全性与正确的格式递送正确的内容。

在名为“Network Cost and Power”的 1.1.5 节中,作者重点谈到了电源与带宽使用问题:

速度、消耗与电源之间的抉择并不是一个简单的问题。有时,速度可能是最需要考虑的事情。但有时,带宽消耗或是电池寿命可能是决定因素。HTTP 2.0 必须要能使开发者针对其具体的问题域约束进行优化(约束可能会随着时间的流逝而发生变化)而不是对通用问题给出一个统一的解决方案。 我们需要对更快的速度、更少的消耗、更低的电源使用量进行均衡处理。比如说,在网线上传递更少的数据会使页面的加载速度更快,更省电以及占用更少的带宽。但考虑到 HTTP 2.0 的使用场景千差万别,事实并不总是如此。比如说,对于一个电池即将耗尽或是缓存即将占满的设备来说,如果在保留 HTTP 2.0 中其他优化的同时能够禁用掉服务端推送更新将会提供更好的用户体验。因此,工作组需要同时考虑电源、消耗与速度问题。

为了解决方才提到的问题,微软提出通过 WebSocket 升级来实现会话握手、保持与 Framing,规范包含了用户希望看到的一些底层细节信息。

微软已经在今年 3 月举办的 IETF 83 大会上提交了其提案。他们还实现了一个开源的概念验证原型,可以让开发者评估HTTP Speed+Mobility 提案,项目代码位于GitHub 上。

至于业界会选择哪一个来实现还不明朗。根据 IETF 标准进程,“规范要经历一个开发期、经过 Internet 社区的几轮审查并根据体验进行修订、然后被恰当的组织采纳为标准、最后发布”。

相关资源: HTTPbis 工作组开始考虑 HTTP/2.0

查看英文原文: Google and Microsoft Want to Improve HTTP

2012-07-03 13:193468
用户头像

发布了 88 篇内容, 共 272.0 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

Matlab实现PSO算法

Shine

三周年连更

AREX 流量回放实践分享

AREX 中文社区

自动化测试 回归测试 流量回放

算法题每日一练: 青蛙跳台阶

知心宝贝

数据结构 算法 前端 后端 三周年连更

【云原生】Docker之创建并进入mysql容器

A-刘晨阳

MySQL Docker Linux 三周年连更

MySql中执行计划如何来的——Optimizer Trace | 京东云技术团队

京东科技开发者

MySQL 数据库 企业号 4 月 PK 榜 Optimizer Trace

重磅|阿里云无影云电脑“魔方AS05”正式上市

云布道师

无影云电脑

MD5 到底算不算一种加密算法?

架构精进之路

算法 后端 加密 md5 三周年连更

为什么选择华为云CDN?这些案例告诉你

轶天下事

openEuler NFS+协议全新发布:实现NAS存储性能与可靠性倍增

openEuler

Linux 操作系统 存储 openEuler

从此脱离CRUD!Github热榜第三架构师速成手册成功颠覆了我的认知

Java你猿哥

架构 ssm 架构设计 架构师 微服务实战

从原理聊JVM(三):详解现代垃圾回收器Shenandoah和ZGC

京东科技开发者

G1 ZGC JVM 企业号 4 月 PK 榜 Shenandoah

华为云搜索服务CSS,助力企业挖掘数据价值

轶天下事

OneNet服务器LWM2M物联网协议(智能井盖方案)

DS小龙哥

三周年连更

火山引擎分布式云原生平台,帮助企业用好分布式云

科技热闻

离散信源 R(D)计算及限失真信源编码定理

timerring

信息 信息论

华为云医疗智能体,助力医疗健康加速智能化

YG科技

使用Pinia:让Vue状态管理更简单

格斗家不爱在外太空沉思

Pinia 三周年连更

devops|中小公司效率为王,没必要度量

laofo

DevOps 研发效能 工程效率 效能度量 研发效能度量

系统认知篇:防腐层、门面模式及适配模式的本质 | 京东云技术团队

京东科技开发者

软件架构 门面效应 适配器模式 企业号 4 月 PK 榜 防腐层

华为云文字识别OCR-助力企业办公智能化不断发展

轶天下事

设计模式的故事之三:责任链模式

Java你猿哥

Java 设计 ssm 责任链模式 责任链

爆肝Java九大核心专题,666页内容,我收割了5个大厂offer

Java你猿哥

Java MySQL JVM 消息队列

华为云云速建站,助力企业搭建网站省心又省力

YG科技

mac上好用的效率软件:Alfred 5 激活版

真大的脸盆

Mac Mac 软件 效率软件

一文详解多模态认知智能

华为云开发者联盟

人工智能 华为云 AIGC 华为云开发者联盟 企业号 4 月 PK 榜

手撕代码系列(二)

Immerse

JavaScript 前端 ES6 ES6-ES12 JavaScript4

华为云,用科技开启智慧化生活

轶天下事

终于可以彻底告别手写正则表达式了

Java你猿哥

Java ssm 表达式 GPT

华为云CDN助力企业网速腾飞!

轶天下事

【图解网络协议】面试官:三次握手都不会,回去等通知吧

袁袁袁袁满

三周年连更

华为云智能云接入ICA,让世界距离更近

YG科技

Google与微软想要改进HTTP_微软_Abel Avram_InfoQ精选文章