zoukankan      html  css  js  c++  java
  • 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:保存空间不足
  • 相关阅读:
    工作总结_JS_1
    工作总结_js
    图片上传_及时显示
    js_截取Url值
    工作总结_sql
    Django项目配置xadmin 无法加载主题切换功能
    pip安装库慢问题解决方法
    Python模块Scrapy导入出错:ImportError: cannot import name xmlrpc_client
    python读取文件解码失败
    pycharm 修改新建文件时的头部模板
  • 原文地址:https://www.cnblogs.com/CTXXCH/p/6542929.html
Copyright © 2011-2022 走看看