HTTP(9):新增功能协议
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):新增功能协议相关推荐
- LoadRunner v12.55发布,大量新增功能,各协议得到优化改进
2019独角兽企业重金招聘Python工程师标准>>> 近日,HP旗下最受欢迎的测试工具loadrunner发布了最新的v12.55版本,那么本次的新版有哪些改进呢,小编这就带大家一 ...
- Microsoft Dynamics AX 2009 新增功能 – 应用(目录)
PDF 下载链接 第 1 章:新增常规功能 用户界面更新 角色中心 工作流 Contoso 演示数据集 第 2 章:财务 填充实用程序 过帐限制 原因代码 自动分摊 – 总帐 冲销分录 – 总帐 预算 ...
- Hydra 8.4/8.5新增功能
Hydra 8.4/8.5新增功能 Kali Linux 2017.1自带的Hydra为8.3,现在Hydra升级到8.5,新增以下功能. (1)为输出文件选项-o,添加一个配套选项-b,允许将验证的 ...
- Netbackup 7.6新增功能和优势
Netbackup 7.6新增功能和优势 一.新增功能 1.1NetBackup Accelerator(适用于 VMware) 此功能使用 Accelerator 技术加快虚拟化备份速度,在完成 ...
- 9.VMware vsphere 5.0新体验-新增功能
ESXi 5.0 中的新增功能 在 vSphere 5.0 版本中,VMware 对 ESXi 增加了一些重要的增强功能. 全新 Image Builder .一套新的命令行实用程序,管理员可以使用这 ...
- JavaScript ES2019的新增功能
by Vali Shah 通过瓦利沙阿 JavaScript ES2019的新增功能 (What's new in JavaScript ES2019) Many of us know that th ...
- Windows Server 2016-Hyper-V HNV 新增功能
本内容主要介绍了Hyper-V 网络虚拟化 (HNV) 功能在 Windows Server 2016 中的新增或更改内容,具体信息如下: HNV更新 功能中的功能 新的或改进 描述 可编程 Hype ...
- SharePoint 2013 中的新增功能(与开发有关)
了解 SharePoint 2013 中的新增特性和功能,包括新的云应用程序模型.开发工具.平台增强功能.移动应用程序以及更多其他功能. 适用范围: 云应用程序模型 SharePoint 2013 引 ...
- KSO-.NET 6 中的新增功能
.NET 6 中的新增功能 .NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动. .NET 6 在移动.桌面.IoT 和云应用之间统一了 SDK.基础库和运行时. 除了这 ...
最新文章
- Activity的四种启动模式
- PS5 发布,揭秘真假难辨的虚拟和现实
- 剑指offer之【调整数组顺序使奇数位于偶数前面】
- java中的case1怎么说_Java Cas20ServiceTicketValidator類代碼示例
- mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制
- mysql自带订阅功能_为博客提供订阅功能
- JavaScript学习(六十五)—数组知识点总结
- 大数据和人工智能,金融产业的创新发展通道
- MVC-通过对象获取整个表单内容
- win11错误代码0xc1900101怎么解决 windows11错误代码0xc1900101的解决方法
- 开源的物联网技术平台thingsboard安装测试及使用步骤
- JP-Word 简谱编辑(JPW简谱)打谱软件免费版下载 WiN
- 联想用u盘重装系统步骤_如何制作U盘系统盘以及U盘安装操作系统的方法
- Wince 7.0 远程控制工具的使用
- 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)...
- 计算机中桌面中不显示U盘图标,电脑不显示u盘怎么回事 电脑不显示u盘的解决办法...
- window10 无法使用内置管理员账户打开sticky notes 解决方法
- 中国建设银行数据治理实践的三高、四落、八行为
- matlab示波器坐标调整,SIMULINK示波器参数设置
- Caffe简明教程1:Caffe简介
热门文章
- JAVA中GUI在Button中设置显示文字时中文乱码问题
- 写论文的时候,数字什么时候用大写,什么时候用罗马数字。有严格要求吗?
- mysql 实例和数据库名_oracle 实例名和服务名以及数据库名区别
- java计算机毕业设计二手车商城源码+mysql数据库+系统+lw文档+部署
- 隐藏win10任务栏输入法M图标
- Hook函数三步走(SetWindowsHookEx、UnhookWindowsHookEx、CallNextHookEx)
- 计算机输入输出接口形式,输入输出接口-微计算机原理-电子发烧友网站
- 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势
- 王晓亮:关于技术人的十年!
- R语言学习笔记4_参数估计