基于HTTP的功能追加协议

一、HTTP的瓶颈

使用HTTP协议探知服务器上是否有内容更新,就必须频繁地发送请求给服务器
这种“轮询”的方式效率很低,非常浪费资源
除此之外,HTTP还存在如下瓶颈:

  • 一条连接上只能发送一个请求
  • 请求/响应首部未经压缩就发送
  • 首部信息冗余

二、Ajax和Comet的解决方法

Ajax

Ajax是一种利用javascript和DOM的操作,以达到局部Web页面替换加载的异步通信手段
由于它只更新一部分页面,响应中传输的数据量也就会减少
然而,利用Ajax从服务器获取内容,仍然会导致大量请求发送,未解决HTTP协议本身的问题


Comet

通常,服务器收到请求后会立即响应
但为了实现推送功能,Comet会先将响应置于挂起状态
当服务器有内容更新时,再向客户端返回响应
内容上虽然可以做到实时更新,但为了挂起响应,一次连接持续的时间也变长了,导致服务器需要消耗更多的资源来维持连接

三、SPDY

SPDY是Google开发的会话层协议,会话层处于应用层和传输层之间,主要用于提升网络速度(在通信中使用SSL)
使用SPDY后,HTTP协议额外获得以下功能:
1、多路复用流
通过单一的TCP连接,可以无限制地处理多个HTTP请求
2、赋予请求优先级
可以给客户端的请求逐个分配优先级,避免因带宽低而导致响应慢的问题
3、压缩HTTP首部
压缩请求和响应报文的首部,从而减少传输的数据量
4、服务器推送功能
服务器可以主动向客户端推送数据,而不必等待请求
5、服务器提示功能
服务器可以主动提示客户端请求所需的资源,使得客户端可以避免发送不必要的请求

四、Websocket

Websocket最大的特点是:
服务器/客户端都可以直接向对方发送数据,是真正的双向平等对话
为了实现Websocket通信,在建立HTTP连接之后,需要完成一次握手
1、客户端发送HTTP请求
在请求报文中,需要设置 Upgrade首部字段值为 websocket
2、服务器响应
服务器返回状态码 101 Switching Protocols
3、全双工通信
成功握手建立Websocket连接后,通信时采用Websocket独立的数据帧,并以ws作为协议标识符

posted @ 2020-10-14 19:14  BAEBAE996  阅读(75)  评论(0编辑  收藏  举报