最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:192998
用户头像

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

关注

评论

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

日拱算法:典例-快慢指针解“环形链表”

掘金安东尼

前端 9月月更

EMQX +计算巢:构建云上物联网平台,轻松实现百万级设备连接

阿里云弹性计算

物联网 计算巢

2022年最受工程师欢迎的10款抓包工具有哪些?不止Wireshark和Tcpdump哦!

wljslmz

Wireshark fiddler 网络技术 网络抓包 9月月更

FinClip 8 月例行汇报,这个月干了啥

FinClip

谈谈我对云原生与软件供应链安全的思考

阿里巴巴中间件

阿里云 云原生 容器服务

首次公开到知乎爆火!基于SpringCloud+SpringBoot+Vue电子版项目实战教程,附完整源码

退休的汤姆

Java spring 程序员 面试题 阿里

游戏技术加速数实融合,网易伏羲挖掘机器人首次曝光

网易伏羲

人工智能 机器学习 工程实践

jsp入门解析

楠羽

笔记 jsp 9月月更

ArkID:开源IDaaS系统插件OAuth2轻松实现单点登录高效进行应用服务集成

龙归科技

oauth2.0 SSO Idaas

音视频开发进阶|第六讲:色彩和色彩空间·上篇

ZEGO即构

音视频开发 色彩 色彩空间

还晓得吗,Redis 的 zset 怎么实现的?

知识浅谈

9月月更

直播回顾|应用上容器的最佳实践技术沙龙

BoCloud博云

云计算 容器 云原生

公链开发功能详细分析

开发微hkkf5566

DevOps 团队如何防御 API 攻击

SEAL安全

DevOps DevSecOps 软件供应链安全

阿里灵杰融合智能算力,全栈AI服务为探索者铺路

阿里云大数据AI技术

人工智能 大数据 企业号九月金秋榜

分布式团队的高效站立会说明书 | Liga译文

LigaAI

高效工作 敏捷开发 开发团队 每日站会 企业号九月金秋榜

【云原生 | Docker】腾讯云部署Django项目 (服务器选型、git配置、docker三分钟部署)

计算机魔术师

8月月更

NFT数字藏品是什么?NFT数字藏品有什么前景?

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

Aptos VS Sui,盘点两大 Move 系新公链的创新异同

TinTinLand

区块链 公链 编程语言‘ Move

二本4年Java经验,五面阿里(定薪45K)

退休的汤姆

Java 程序员 阿里 面经 秋招

利用GCC插件实现代码分析和安全审计

科技怪咖

Dubbo 3 StateRouter:下一代微服务高效流量路由

阿里巴巴中间件

阿里云 开源 微服务 dubbo 中间件

零基础如何参加大数据培训

小谷哥

[Go WebSocket] 你的第一个Go WebSocket服务: echo server

HullQin

Go golang 后端 websocket 9月月更

一文带你认识AscendCL

华为云开发者联盟

人工智能 昇腾 企业号九月金秋榜

Substrate技术及生态8月大事记 | 波卡发布新版本,XCM协议更新

One Block Community

区块链 技术 开发者 Substrate 更新

从零教你使用MindStudio进行Pytorch离线推理全流程

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

跟我学Python图像处理丨何为图像的灰度非线性变换

华为云开发者联盟

Python 人工智能 图片处理 企业号九月金秋榜

在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

京东科技开发者

数据 数据迁移 上云 redis'

零基础学习java培训是否适合参加

小谷哥

学员参加前端培训哪里比较靠谱?

小谷哥

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