HTTP基础知识(九)
九、基于HTTP的功能追加协议
1、基于HTTP的协议
在建立HTTP标注规范时,制定者主要想把它当做传输HTML文档的协议。如今,web的用途更具多样性,但由于HTTP协议上的限制以及自身性能有限,在性能上却未必最优。由于基于HTTP的web浏览器的使用环境已遍布全球,无法完全抛弃它,所以一些新协议的规则都是基于HTTP的。
2、消除HTTP瓶颈的SPDY
(1)HTTP的瓶颈:
1)一条连接上只可发送一个请求。
2)请求只能从客户端开始。客户端不可以接收除响应以外的指令。
3)请求/响应首部未经压缩就发送。首部信息越多延迟越大。
4)发送冗长的首部。每次互相发送相同的首部造成的浪费较多。
5)可任意选择数据压缩格式。非强制压缩发送。
解决方法:
1)Ajax(Asynchronous JavaScript and XML,异步JavaScript与XML技术)
实现局部Web页面替换加载的异步通信,响应中传输的数据量会因此而减少。
但是利用Ajax有可能会导致大量请求产生,而且仍未解决HTTP协议本身存在的问题。
2)Comet
通常,服务器端接收到请求,在处理完毕后就会立即返回响应,但为了实现推送功能,Comet会先将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。
但是为了保留响应,一次连接的持续时间也变长了,期间,为了维持连接会消耗更多的资源,且也未能解决HTTP协议本身存在的问题。
(2)SPDY的设计与功能
SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。同时,SPDY规定通信中使用SSL。
使用SPDY后,HTTP协议额外获得以下功能:
1)多路复用流
通过单一的TCP连接,可以无限制处理多个HTTP请求。所有的请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到调高。
2)赋予请求优先级
SPDY不仅可以无限制地并发处理骑牛群,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题。
3)压缩HTTP首部
压缩HTTP请求和响应的首部可使通信产生的数据包数量和发送的字节数更少。
4)推送功能
支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求。
5)服务器提醒功能
服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求。
SPDY基本上只是将单个域名(IP地址)的通信多路复用,所以当一个web网站上使用多个域名下的资源,改善效果就会收到限制。
3、使用浏览器进行全双工通信的WebSocket
(1)WebSocket协议
一旦web服务器与客户端之间建立起WebSocket协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML或图片等任意格式的数据。
WebSocket特点:
1)推送功能
支持由服务器向客户端推送数据的推送功能。服务器可直接发送数据,而不必等待客户端的请求。
2)减少通信量
和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也相应减少了。
(2)WebSocket要求
为了实现WebSocket通信,请求时需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,以达到握手的目的。
Upgrade : websocket
对上面的请求,服务器返回状态码101 Switching Protocols的响应。
通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。
4、期盼已久的HTTP/2.0
(1)HTTP/2.0的特点
HTTP/2.0的目标是改善用户在使用web时的速度体验。
1)二进制
HTTP/2.0是一个二进制协议,可以使成帧的使用变得更为便捷。
2)多路复用的流
每个单独的HTTP/2.0连接都可以包含多个并发的流,这些流中交错的包含着两端的帧。流既可以呗客户端/服务器端单方面的建立和使用,也可以被双方共享,或者被任意一边关闭。
3)优先级和依赖性
每个流都包含一个优先级,它被用来告诉对端哪个流更重要。当资源有限的时候,服务器会根据优先级来选择应该先发送哪些流。
4)头压缩
这是一个专为HTTP/2.0头部设计的压缩格式。使信息量的损失尽可能少,使编码快速而方便,使接收方能控制压缩文本的大小。
5)重置
在HTTP/1.1时,当一个含有确切值得Content-Length的HTTP消息被送出之后,就很难中断了。而在HTTP/2.0中我们可以发送RST_STREAM帧来实现只终止当前传输的消息并重新发送一个新的,从而避免浪费宽带和中断已有的连接。
6)服务器推送
这个功能通常被称作“缓存推送”。服务器会在客户端发送请求前主动将其可能需要的资源推送过去,以备将来之需。
7)流量控制
HTTP/2.0上面每个流都拥有自己的公示的流量窗口,它可以限制另一端发送数据。
5、web服务器管理文件的WebDAV
(1)WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制):是一个可对wev服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。
除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。
(2)扩展HTTP/1.1的WebDAV
WebDAV新增加了一些概念:
集合:是一种同意管理多个资源的概念。以集合为单位可进行各种操作。也可实现类似集合的集合这样的叠加。
资源:把文件或集合成为资源。
属性:定义资源的属性。定义以“名称=值”的格式执行。
锁:把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入。
(3)WebDAV内新增的方法及状态码
方法:
PROPFIND:获取属性
PROPPATCH:修改属性
MKCOL:创建集合
COPY:复制资源及属性
MOVE:移动资源
LOCK:资源加锁
UNLOCK:资源解锁
状态码:
102 Processing:可正常处理请求,但目前是处理中状态。
207 Multi-Status:存在多种状态
422 Unprocessible Entity:格式正确,内容有误
423 Locked:资源已被加锁
424 Insufficient Storage:保存空间不足