第九章:基于HTTP功能的追加协议

HTTP存在的问题:

  • 一条连接上只可发送一个请求;
  • 请求只能从客户端开始。客户端不可以接收除响应以外的指令;
  • 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大;
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费较多;
  • 可任意选择数据压缩格式。非强制压缩发送;

HTTP 功能上的不足可通过创建一套全新的协议来弥补。可是目前基于 HTTP 的 Web 浏览器的使用环境已遍布全球,因此无法完全抛弃HTTP。有一些新协议的规则是基于 HTTP 的,并在此基础上添加了新的功能。

  1. SPDY产生之前的背景
    Google 在 2010 年发布了 SPDY(取自 SPeeDY,发音同 speedy),其开发目标旨在解决 HTTP 的性能瓶颈,缩短 Web 页面的加载时间(50%)。
    对于社交网络服务,在很短的时间内就会发生大量的内容更新。
    在这里插入图片描述
    Ajax(Asynchronous JavaScript and XML, 异 步 JavaScript 与 XML 技术) 的解决方法:局部 Web 页面替换加载的异步通信手段;
    Comet 的解决方法:一旦服务器端有内容更新了,Comet 不会让请求等待,而是直接给客户端返回响应。这是一种通过延迟应答 ,模拟实现服务器端向客户端推送(Server Push)的功能。接收到请求会先挂起,为了保留响应,一次连接的持续时间也变长了。期间,为了维持连接会消耗更多的资源。

  2. SPDY 的设计与功能
    SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规定通信中使用 SSL。SPDY 以会话层的形式加入,控制对数据的流动,但还是采用 HTTP建立通信连接。因此,可照常使用 HTTP 的 GET 和 POST 等方法、Cookie 以及 HTTP 报文等。
    在这里插入图片描述

  3. SPDY好处

    • 多路复用流 :通过单一的 TCP 连接,可以无限制处理多个 HTTP 请求。所有请求的处理都在一条 TCP 连接上完成,因此 TCP 的处理效率得到提高;
    • 赋予请求优先级 : SPDY 不仅可以无限制地并发处理请求,还可以给请求逐个分配优先级顺序。这样主要是为了在发送多个请求时,解决因带宽低而导致响应变慢的问题;
    • 压缩 HTTP 首部 : 压缩 HTTP 请求和响应的首部。这样一来,通信产生的数据包数量和发送的字节数就更少了;
    • 推送功能 : 支持服务器主动向客户端推送数据的功能。这样,服务器可直接发送数据,而不必等待客户端的请求;
    • 服务器提示功能 : 服务器可以主动提示客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存等情况下,可以避免发送不必要的请求;
  4. SPDY 消除 Web 瓶颈了吗
    因为 SPDY 基本上只是将单个域名( IP 地址)的通信多路复用,所以当一个 Web 网站上使用多个域名下的资源,改善效果就会受到限制。

  5. 使用浏览器进行全双工通信的WebSocket
    WebSocket网络技术正是为解决这些问题而实现的一套新协议及 API;
    当时筹划将 WebSocket 作为 HTML5 标准的一部分,而现在它却逐渐变成了独立的协议标准。WebSocket 通信协议在 2011 年 12 月 11 日,被 RFC 6455 - The WebSocket Protocol 定为标准。
    WebSocket 协议 : 一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接,之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送JSON、XML、HTML 或图片等任意格式的数据。由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端,而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方都可直接向对方发送报文。
    特点:

    • 推送功能
    • 减少通信量:只要建立起 WebSocket 连接,就希望一直保持连接状态。
      条件:为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一次“握手”(Handshaking )的步骤。
      握手·请求:为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字段,告知服务器通信协议发生改变,以达到握手的目的。

    握手请求:

    在这里插入图片描述

    Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值。Sec-WebSocket-Protocol 字段内记录使用的子协议。

    握手响应:

    在这里插入图片描述

    Sec-WebSocket-Accept 的字段值是由握手请求中的 Sec-WebSocket-Key 的字段值生成的。

    成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数据帧,而采用 WebSocket 独立的数据帧。

    在这里插入图片描述

  6. 期盼已久的 HTTP/2.0

    • HTTP/2.0 在 2014 年 11 月实现标准化。
    • HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。
      在这里插入图片描述
  7. Web 服务器管理文件的 WebDAV
    WebDAV(Web-based Distributed Authoring and Versioning,基于万维网的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。它作为扩展 HTTP/1.1的协议定义在 RFC4918。
    除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ChrisSen/article/details/88293545