学习笔记 图解HTTP 第9章 基于HTTP的功能追加协议

216 阅读2分钟

9.1 基于HTTP的协议

HTTP最开始只是用来传输HTML文档的,但慢慢的又要负责电商网站,视频交友,在线聊天等功能.虽然能够实现功能,但是性能比较低下

9.1.1 HTTP的问题

  • 一条连接上只可发送一条请求,多个请求就必须建立多个连接,消耗资源
  • 请求只能从客户端上发起,且不能接收除响应以外的任何数据,效率低下
  • 请求/响应首部未经压缩就发送,数据量比较大,消耗资源
  • 每次互发都要带上相同的首部,浪费资源

9.1.2 解决方法

  • ajax: 局部更新,不用每次传递大量数据
    • 又会导致产生大量请求
    • 且无法解决HTTP协议本身存在的问题(啥问题???)
  • comet: 延迟应答,减少请求次数
    • 为保持连接不断开,会消耗计算资源
    • 一次连接的时间变长了
    • 也无法解决HTTP协议本身存在的问题

9.2 SPDY协议

Google发布的协议,从协议层面消除HTTP的问题

功能

  • 多路利用:单一的TCP连接,处理多个HTTP请求
  • 请求优选级: 发送多请求时,提升低带宽中的处理性能
  • 压缩HTTP首部
  • 推送功能:服务器直接给客户端推消息
  • 服务器提示功能: 即发送请求之前就能知道有可用的本地缓存,减少请求次数

问题

  • 只能实现单域名多线路利用,如果一个网站调了多个域名的数据,优化效果打折扣
  • 除HTTP以外的问题无法解决

9.3 WebSocket

  • 为解决ajax,comet存在的问题而设计
  • 是建立在HTTP上的协议,必须先建立HTTP链接,再才能建立WebSocket链接
  • WebSocket建立成功后,客户端与服务器之间可以发送任何格式的数据

WebSocket的握手步骤

  • 握手请求
    • 客户端发起GET请求,带上Upgrade`首部
    • 并在相应的WebSocket首部中带上专用的信息
  • 握手响应
    • 服务器返回101
    • 并根据请求首部中的WebSocket字段生成相应的响应首部
  • 握手成功后,数据交换就不再走HTTP链接了

WebSocket特点

  • 服务器可以直接向客户端推送数据
  • 不用每次建立链接,减少通信量

9.4 HTTP/2.0

几项新的技术

  • SPDY
  • WebSocket
  • Speed
  • Mobility
  • Friendly

9.5 WebDAV

可以直接操作服务器上的资源文件,增删改一类的.有点类似于FTP.但是没用过.看不懂.这里先不做笔记了

TODO

9.4 HTTP/2.0到底是啥?