图解http读书笔记9
基于HTTP的功能追加协议
消除HTTP瓶颈的SPDY
在twitter等网站上,几百,上千万用户发布内容时,web网站为了保存这些内容,在很短的时间内就会发生大量的内容更新。为了尽可能实时地显示这些更新的内容,服务器上一有内容更新,就需要直接把那些内容反馈到客户端的界面上。虽然看起来挺简单的,但 HTTP 却无法妥善地处理好这项任务。
使用 HTTP 协议探知服务器上是否有内容更新,就必须频繁地从客户
端到服务器端进行确认。如果服务器上没有内容更新,那么就会产生
徒劳的通信。
HTTP的瓶颈
-
一条连接上只可发送一个请求。
-
请求只能从客户端开始。客户端不可以接收除响应以外的指
令。 -
请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
-
发送冗长的首部。每次互相发送相同的首部造成的浪费较
多。 -
可任意选择数据压缩格式。非强制压缩发送。
以前的http通信
SPDY的设计与功能
SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之
间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规
定通信中使用 SSL。
SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP
建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方 法、
Cookie 以及 HTTP 报文等。
使用 SPDY 后,HTTP 协议额外获得以下功能。
- 多路复用流
通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求
的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高。
- 赋予请求优先级
SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先
级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响
应变慢的问题。
- 压缩 HTTP 首部
压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和
发送的字节数就更少了。
- 推送功能
支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送
数据,而不必等待客户端的请求。
- 服务器提示功能
服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源
之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免
发送不必要的请求
使用浏览器进行全双工通信的WebSocket
WebSocket 的设计与功能
WebSocket,即 Web 浏览器与 Web 服务器之间全双工通信标准。其
中,WebSocket 协议由 IETF 定为标准,WebSocket API 由 W3C 定为
标准。仍在开发中的 WebSocket 技术主要是为了解决 Ajax 和 Comet
里 XMLHttpRequest 附带的缺陷所引起的问题
WebSocket 协议
一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,
之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送
JSON、XML、HTML 或图片等任意格式的数据。
由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,
而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方
都可直接向对方发送报文。
下面我们列举一下 WebSocket 协议的主要特点。
- 推送功能
支持由服务器向客户端推送数据的推送功能。这样,服务器可直接发
送数据,而不必等待客户端的请求。
- 减少通信量
只要建立起 WebSocket 连接,就希望一直保持连接状态。和 HTTP 相
比,不但每次连接时的总开销减少,而且由于 WebSocket 的首部信息
很小,通信量也相应减少了。
为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一
次“握手”(Handshaking)的步骤。
- 握手请求
- 握手响应
成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数
据帧,而采用 WebSocket 独立的数据帧。
HTTP2.0
HTTP/2.0 的特点
HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。由于基本上
都会先通过 HTTP/1.1 与 TCP 连接,现在我们以下面的这些协议为基
础,探讨一下它们的实现方法。
- SPDY
- HTTP Speed + Mobility
- Network-Friendly HTTP Upgrade
HTTP/2.0 围绕着主要的 7 项技术进行讨论,现阶段(2012 年 8 月 13
日),大都倾向于采用以下协议的技术。但是,讨论仍在持续,所以
不能排除会发生重大改变的可能性。
Web 服务器管理文件的 WebDAV
WebDAV(Web-based Distributed Authoring and Versioning,基于万维网
的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进
行文件复制、编辑等操作的分布式文件系统。它作为扩展 HTTP/1.1
的协议定义在 RFC4918。
除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编
辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的
版本控制功能。
扩展 HTTP/1.1 的 WebDAV
针对服务器上的资源,WebDAV 新增加了一些概念,如下所示。
集合(Collection):是一种统一管理多个资源的概念。以集合为
单位可进行各种操作。也可实现类似集合的集合这样的叠加。
资源(Resource):把文件或集合称为资源。
属性(Property):定义资源的属性。定义以“名称 = 值”的格式执
行。
锁(Lock):把文件设置成无法编辑状态。多人同时编辑时,可
防止在同一时间进行内容写入。