HTTP(9):新增功能协议

场景:微博这种社交平台,服务器上一有内容更新就需要直接把内容反馈到客户端界面上,使用HTTP协议探知服务器上是否有更新,就需要频繁的到服务器上确认,如果没有更新,就会产生徒劳的通信。以下的HTTP标准会成为瓶颈:

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

是一种有效利用JavaScript和DOM的操作,以达到局部web页面替换加载的异步通信手段。利用ajax实时地从服务器获取内容,有时会导致大量请求产生,仍未解决HTTP协议本身存在的问题。

Comet解决办法

客户端发送请求,有更新就及时响应,没有更新就把请求挂着,直到有更新返回响应,模拟实时推送。但会造成一次请求持续时间长,一直挂着也会消耗更多资源,仍未解决HTTP协议本身存在的问题。

以上两个解决方案都未从根本上解决问题,要解决根本问题,需要有一些协议层面上的改动。

消除HTTP瓶颈的SPDY

SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与传输层之间通过新加会话层的形式运作,同时考虑安全性问题,使用了SSL。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jz3jjxKs-1595415089771)(https://s1.ax1x.com/2020/07/16/UBp2Z9.png)]

使用SPDY后,HTTP协议获得额外的功能:

多路复用流

单一的TCP连接可以无限制处理多个HTTP请求,效率提高。

赋予请求优先级

不仅可以无限制并发处理请求,还可以给请求逐个分配优先级,解决带宽低而导致响应慢的问题。让主要内容先显示。比如问题先显示,图片后显示(占位符代替)。

推送功能

支持服务器主动向客户端推送数据的功能。

服务器提示功能

服务器可以主动向客户端请求所需的资源。由于客户端发现资源之前就可以获知资源的存在,因此在资源已缓存的情况下,可以避免发送不必要的请求。

因为SPDY基本上只是将单个域名的通信多路复用,所以当一个web网站上使用多个域名下的资源,改善效果就会受到限制。

全双工通信的WebSocket

websocket,即web浏览器与web服务器之间全双工通信标准。仍在开发中的websocket技术主要是为了解决ajax和comet里XMLHttpRequest附带的缺陷所引起的问题。

由于建立在HTTP基础上协议,因此连接发起发仍是客户端,一旦建立连接,不论服务器还是客户端都可以直接向对方发送报文。

主要特点:

  • 推送功能:支持服务器向客户端推送数据的推送功能。
  • 减少通信量:只要建立websocket连接,就希望一直保持连接状态,和HTTP相比,不但每次连接总开销少了,而且由于首部信息很小,通信量也相应小了。

为了实现websocket通信,在HTTP建立连接之后,需要完成一次握手(Handshaking)步骤。

握手请求:需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,已达到握手目的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GY5iytzW-1595415089774)(https://s1.ax1x.com/2020/07/16/UBiJWq.png)]

Sec-WebSocket-Protocol字段记录使用的子协议,在连接分开时使用,定义那些连接的名称。

握手响应:对于之前的握手请求,返回状态码101 Switching Protocols的响应。

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AevVMIgM-1595415089777)(https://s1.ax1x.com/2020/07/16/UBFmN9.png)]

HTTP/2.0

HTTP/2.0在2014年11月实现标准化。目标是改善用户在使用web时的速度体验。由于基本上都会先通过HTTP/1.1与TCP连接,实现方法如下:

  • SPDY
  • HTTP Speed + Mobility:微软起草,用于改善并提高移动端通信时的通信速度和性能的标准,基于SPDY与websocket。
  • NetWork-Friendly HTTP Upgrade:在移动端通信时改善HTTP性能的标准。

7项技术讨论:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5lBYH1dT-1595415089781)(https://s1.ax1x.com/2020/07/16/UBAieU.png)]

web服务器管理文件的WebDAV

WebDAV(Web-based Distributed Authoring and Versioning, 基于万维网的分布式创作和版本控制)是一个可对web服务器上的内容直接进行赋值、编辑等操作的分布式文件系统。它作为扩展HTTP/1.1的协议定义在RFC4918。

除了创建、删除文件,还具备文件创建者管理,文件编辑过程中进制其他用户内容覆盖加锁功能,以及对文件内容修改的版本控制功能。

WebDAV新增概念

集合:是一种统一管理多个资源的概念。以集合为单位可进行各种操作,也可实现类似集合的集合这样的叠加。

资源:把文件或集合称为资源。

属性:定义资源的属性,定义以“名称=值”的格式进行。

锁:把文件设置成无法编辑状态。多人同时编辑时,可防止在同一时间进行内容写入。

新增方法
  • PROPFIND:获取属性
  • PROPPATCH:修改属性
  • MKCOL:创建集合
  • MOVE:移动资源
  • LOCK:资源加锁
  • UNLOCK:资源解锁
新增状态码

102 Processing:可正常处理请求,但目前是处理中状态

207 Multi-Status: 存在多种状态

422 Unprocessible Entity: 格式正确,内容有误

423 Locked:资源已被加锁

424 Failed Dependency: 处理与某种请求关联的请求失败,因此不再维持依赖关系。

507 Insufficient Storage:保存空间不足

HTTP协议为什么受众如此广泛

d:资源已被加锁

424 Failed Dependency: 处理与某种请求关联的请求失败,因此不再维持依赖关系。

507 Insufficient Storage:保存空间不足

HTTP协议为什么受众如此广泛

有很多原因,其中与企业或组织的防火墙设定有很大的关系。防火墙的基本功能就是禁止非指定的协议和端口号的数据包通过。因此如果使用新协议或端口号必须修改防火墙的设置。

HTTP(9):新增功能协议相关推荐

  1. LoadRunner v12.55发布,大量新增功能,各协议得到优化改进

    2019独角兽企业重金招聘Python工程师标准>>> 近日,HP旗下最受欢迎的测试工具loadrunner发布了最新的v12.55版本,那么本次的新版有哪些改进呢,小编这就带大家一 ...

  2. Microsoft Dynamics AX 2009 新增功能 – 应用(目录)

    PDF 下载链接 第 1 章:新增常规功能 用户界面更新 角色中心 工作流 Contoso 演示数据集 第 2 章:财务 填充实用程序 过帐限制 原因代码 自动分摊 – 总帐 冲销分录 – 总帐 预算 ...

  3. Hydra 8.4/8.5新增功能

    Hydra 8.4/8.5新增功能 Kali Linux 2017.1自带的Hydra为8.3,现在Hydra升级到8.5,新增以下功能. (1)为输出文件选项-o,添加一个配套选项-b,允许将验证的 ...

  4. Netbackup 7.6新增功能和优势

    Netbackup 7.6新增功能和优势   一.新增功能 1.1NetBackup Accelerator(适用于 VMware) 此功能使用 Accelerator 技术加快虚拟化备份速度,在完成 ...

  5. 9.VMware vsphere 5.0新体验-新增功能

    ESXi 5.0 中的新增功能 在 vSphere 5.0 版本中,VMware 对 ESXi 增加了一些重要的增强功能. 全新 Image Builder .一套新的命令行实用程序,管理员可以使用这 ...

  6. JavaScript ES2019的新增功能

    by Vali Shah 通过瓦利沙阿 JavaScript ES2019的新增功能 (What's new in JavaScript ES2019) Many of us know that th ...

  7. Windows Server 2016-Hyper-V HNV 新增功能

    本内容主要介绍了Hyper-V 网络虚拟化 (HNV) 功能在 Windows Server 2016 中的新增或更改内容,具体信息如下: HNV更新 功能中的功能 新的或改进 描述 可编程 Hype ...

  8. SharePoint 2013 中的新增功能(与开发有关)

    了解 SharePoint 2013 中的新增特性和功能,包括新的云应用程序模型.开发工具.平台增强功能.移动应用程序以及更多其他功能. 适用范围: 云应用程序模型 SharePoint 2013 引 ...

  9. KSO-.NET 6 中的新增功能

    .NET 6 中的新增功能 .NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动. .NET 6 在移动.桌面.IoT 和云应用之间统一了 SDK.基础库和运行时. 除了这 ...

最新文章

  1. Activity的四种启动模式
  2. PS5 发布,揭秘真假难辨的虚拟和现实
  3. 剑指offer之【调整数组顺序使奇数位于偶数前面】
  4. java中的case1怎么说_Java Cas20ServiceTicketValidator類代碼示例
  5. mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制
  6. mysql自带订阅功能_为博客提供订阅功能
  7. JavaScript学习(六十五)—数组知识点总结
  8. 大数据和人工智能,金融产业的创新发展通道
  9. MVC-通过对象获取整个表单内容
  10. win11错误代码0xc1900101怎么解决 windows11错误代码0xc1900101的解决方法
  11. 开源的物联网技术平台thingsboard安装测试及使用步骤
  12. JP-Word 简谱编辑(JPW简谱)打谱软件免费版下载 WiN
  13. 联想用u盘重装系统步骤_如何制作U盘系统盘以及U盘安装操作系统的方法
  14. Wince 7.0 远程控制工具的使用
  15. 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)...
  16. 计算机中桌面中不显示U盘图标,电脑不显示u盘怎么回事 电脑不显示u盘的解决办法...
  17. window10 无法使用内置管理员账户打开sticky notes 解决方法
  18. 中国建设银行数据治理实践的三高、四落、八行为
  19. matlab示波器坐标调整,SIMULINK示波器参数设置
  20. Caffe简明教程1:Caffe简介

热门文章

  1. JAVA中GUI在Button中设置显示文字时中文乱码问题
  2. 写论文的时候,数字什么时候用大写,什么时候用罗马数字。有严格要求吗?
  3. mysql 实例和数据库名_oracle 实例名和服务名以及数据库名区别
  4. java计算机毕业设计二手车商城源码+mysql数据库+系统+lw文档+部署
  5. 隐藏win10任务栏输入法M图标
  6. Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
  7. 计算机输入输出接口形式,输入输出接口-微计算机原理-电子发烧友网站
  8. 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
  9. 王晓亮:关于技术人的十年!
  10. R语言学习笔记4_参数估计