HTTP2.0,HTTP1.1,HTTP1.0三者在通性性能上的优化方法
本文从从通信性能角度,来分析对比HTTP1.0和HTTP1.1之间的区别。以及HTTP1.1与HTTP2.0之间的区别。本文详细内容组织如下
目录
一丶HTTP1.0与HTTP1.1通信性能上的区别
- 持久化连接
- 管线化技术
二丶HTTP2.0与HTTP1.1通信性能上的区别
- 多路复用
- HTTP协议头部压缩
正文
一丶HTTP1.0与HTTP1.1通信性能上的区别
持久化连接
HTTP1.1是默认支持持久化连接的。HTTP1.0若要支持持久化连接需要显示指定Keep-alived报文头。
1. 非持久化连接下HTTP协议的通信
- 比如访问www.taobao.com这个URL。访问该URL时,首先会从目标服务器上到HTML这样的静态资源,服务器返回资源后会自动断开连接,这是一次非持久的HTTP通信过程。在该过程中包括TCP三次握手和四次挥手。
- 更进一步考虑,静态HTML上必然包括很多图片,js,css等资源,这些资源全部都是存储在服务器上。对这些资源的访问会重复上述的HTTP通信过程,其中又包括了TCP三次握手和四次挥手。这种反复建立和释放TCP连接的过程无疑浪费了服务器很多的带宽资源,也降低了Web页面的加载速度。非持久化连接下HTTP协议的通信过程如下图所示
2. 持久化连接下HTTP协议的通信
持久化连接很易懂。在一次HTTP通性过程后,服务器若没有受到显示关闭连接的通知其不会断开连接,而是一直保持该连接。如此一来,在访问诸如www.taobao.com这样的页面时,页面上的多数资源能够在一条TCP链接上传输。这样极大的减少了多次TCP连接,释放带来的性能损失。持久化连接下的通信如下图所示
- 管线化技术
管线化技术是在持久化连接的基础上,进一步对通信性能的提升。在持久化连接下,请求和相应是顺次进行的。上次请求得到响应后,才能发送下次请求。管线化技术就是指能在未收到响应时,顺次发送多个响应。
二丶HTTP2.0与HTTP1.1之间通信性能对比
多路复用技术
多路复用技术建立在持久连接的基础上,允许所有请求公用同一连接,并且能够并行传输。此处的多路复用技术和管线化技术值不同之处在于:。
- 管线化技术中所有,请求是顺次发送出去的。而多路复用中,所有请求是并行发送出去的。
报文头压缩
报文头压缩同样比较容易理解,减小HTTP报文中头部字段的开销,提供通信效率。采用报文头压缩主要是两个原因:
(1)对于单个HTTP报文而言,当携带较少的通信数据时,报文头部大小将远远大于有效的通信数据,导致带宽利用率较低。
(2)在持久化连接下,传送的多个HTTP报文之间,经常存在重复报文头字段在传输。
HTTP2.0提出的报文头压缩算法针对上述两点均做了优化:
基于静态字典压缩 在HTTP协议中的客户端以及服务端之间,共同维护了一份静态字典。该静态字典中存储了大量常见的HTTP报文头字段。比如下述,静态字典:
静态字典中,保留了两种情况:
- 完整的报文头以及字段值,比如Content-Language:zh-CN。
- 完整报文头,比如User-agent。
在静态字典的基础上,可以利用静态字典中的索引号代替HTTP中的报文头,一般来说一个字节就足以覆盖静态字典中的所有索引号了。如下图所示,利用一个字节格式,来代替HTTP报文头,index是静态字典中的索引号。
基于动态字典压缩
静态字典并不能够涵盖HTTP头部键值对所有的组合情况,为此在静态字典压缩的基础上补充了动态字典压缩。
动态字典压缩过程比较简单。如果遇见在静态字典中不存在的HTTP头部字段,那么此处采用非压缩传输,接着把该头部字段添加到动态字段中。当下次传送同样的头部字段时,则可以依据动态字典的内容对该头部字段进行压缩了。
- 当通信过程越长导致动态字典积累的内容将越多,因此HTTP头部压缩的效果越佳
- 动态字典的内容会在连接新建立的时候重置。
HTTP2.0,HTTP1.1,HTTP1.0三者在通性性能上的优化方法相关推荐
- HTTP1.0,1.1,2.0,HTTPS
HTTP1.0/1.1/2.0/HTTPS HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接收HTML页 ...
- HTTP1.1/2.0与QUIC协议
HTTP请求的构建 请求行 请求方法,如get post put delete 首部字段 key value,如Accept-Charset 表示客户端可以接受的字符集,防止传过来是另外的字符集,导致 ...
- http1,http1.1,http2及http3
http1的问题: 1.浏览器阻塞,浏览器对于同一个域名同时请求个数是有限制,根据浏览器内核不同,限制请求个数是不一,但基本是个位数,超过请求个数就会阻塞,必须等前面的请求完成 2.DNS查询,域名解 ...
- 方阵可逆,方阵行列式≠0,方阵满秩三者关系推导
首先明确这三者是等价的. 接下来我们得先明确概念的定义: ①方阵可逆:即方阵存在逆阵,使:AA^-1=E; ②矩阵行列式:即由矩阵的全部元素构成的行列式; ③方阵的秩:等于方阵n个列向量所构成的向量组 ...
- HTTP各版本的特点(1.0/1.1/2.0/3.0)
1. HTTP-1.0 无状态,无连接的应用层协议 无法复用连接 每次发送请求,都要重新建立连接. 队头阻塞 下个请求必须在上个请求响应到达后发送.如果上个请求响应丢失,则后面请求被阻塞. 2. HT ...
- 网络请求(一)— HTTP/0.9、HTTP/1.0、HTTP/2.0、SPDY
1 TCP/IP概念 TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇 ...
- 新手教学看eMule 0.50a Xtreme 8.0设置
新手教学看eMule 0.50a Xtreme 8.0设置 转自:http://hi.baidu.com/dianlvzhijia/item/1b554c9383b23415924f4194 虽然Xt ...
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...
- mysql 8.0 docker_Docker安装MySQL8.0的实现方法
环境:MacOS_Cetalina_10.15.1.Mysql8.0.18.Docker_2.0.0.3 1.docker仓库搜索mysql docker search mysql 2.docker仓 ...
最新文章
- 非对称加密算法RSA公钥私钥的模数和指数提取方法
- 16 BasicHashTable基本哈希表类(三)——Live555源码阅读(一)基本组件类
- RMQ+1/-1算法
- 细思极恐!未来百万人将下岗十大职业将消失
- 用python玩转数据第四周答案_用Python玩转数据_章节答案
- oracle主备库查询,oracle11g dataguard 备库数据同步的检查方法
- JDK / JRE zip
- ADO.NET Entity Framework 使用中的经验总结
- 新闻中限制显示字数目
- 帮助文档的制作(控制台、eclipse两种方式)
- LightOJ 1245 - Harmonic Number (II)
- .NET 下运用策略模式
- jenkins使用_Spring Boot 系列:使用 Jenkins 部署 Spring Boot
- linux命令psd,Linux 下查看 Photoshop PSD 文件
- ss导航java宝典_绅士宝典ss导航
- 用国家简写查找对应的国家名称和所在 洲
- 串口每隔一定时间向电脑发送数据
- 执行transact mysql_错误 执行Transact-SQL语句批处理时发生了异常。无法设置主体'sa'的凭据...
- 下载神器Aria2 + WebUI-Aria2 + 接管Chrome下载任务
- linux 烧写stm32 swd,STM32F103使用SWD烧写错误提示的问题