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. linux wifi修改频率,Linux Custom CRDA WiFi regulatory.bin和40MHz BW 5GHz频...
  2. JavaScript中对象成员的可见性
  3. Effective Java第三版有哪些新功能?
  4. ERROR in ./src/css/1.scss 1:2
  5. 深度测试与alpha混合(1)
  6. 手机恶意软件激增,使用代码签名证书防范恶意侵害
  7. Asp.net中Mysql存储中文乱码解决方法
  8. 数据挖掘:数据清洗——缺失值处理
  9. IntelliJ IDEA 好用插件之Maven Helper
  10. java 正则 中文_Java使用正则表达式(regex)匹配中文实例代码
  11. python可视化:Plotting with pandas and seaborn
  12. html用渐变做彩虹,photoshop如何用渐变制作彩虹
  13. cocos2d-x Android游戏黑屏解决办法
  14. TIME_WAIT和CLOSE_WAIT区别
  15. 关于对比损失(contrasive loss)的理解(相似度越大越相似的情况):
  16. html5网页流行色,Pantone 2018流行色:紫外光色(附紫色的UI设计作品)
  17. 计算机音乐锦鲤抄,锦鲤抄 MIDI File Download :: MidiShow
  18. PHPEXCEL 识别公式问题的问题 和解决方案
  19. 程序员千万别去外包公司!
  20. 计算机软件指数代码是多少,指数代码列表

热门文章

  1. java后台框架 springmvc mybaits 集代码生成器 SSM SSH
  2. 计算视频的信息传输速率
  3. Seaborn调色板设置
  4. 数量关系-排列组合和概率
  5. 实时联网游戏后台服务技术选型和挑战(一)
  6. 关于GoldWave给Vegas视频添加音频叠加的教程分享
  7. opencv05:图像的基本操作
  8. 【未解决】vcs在服务器无法使用——22-03-07工作笔记
  9. vue移动端图片上传
  10. RxJava2 堆栈信息显示不全解决方案