HTTP的发展历程

1.HTTP0.9

超文本传输协议:传输内容较单一

1.只有一个请求行,没有请求头和请求体

2.响应数据没有头信息

3.响应数据以ASCII码的形式传输

4.只能发送get这样的简单请求

 

2.HTTP1.0

解决问题:随着传输数据类型的多样化,客户端和服务器都需要给对方传达更多信息

方法:

1.引入请求头和响应头

请求头中包含的信息有:文件类型accept、文件压缩方式accept-encoding、文件的编码类型accept-Charset、所需的文件语言类型accept-language

响应头中包含的信息有:文件最终压缩方式content-encoding、文件类型content-type

2.引入状态码

3.引入catch机制,对数据进行缓存

4.请求头中添加用户代理字段

 

3.HTTP1.1

解决问题:

1.多次tcp连接浪费时间和资源

2.队头阻塞

3.虚拟服务器问题

4.内容动态生成导致无法确定传输文件大小

方法:

1.持久连接:在一个TCP连接上可以传输多个HTTP请求。

默认Connection为keep-alive状态。目前浏览器中对于同一域名,默认允许同时建立6个TCP持久连接。

2.管线化:试图解决队头阻塞问题,将请求整批发送给服务器

3.提供虚拟机支持,请求头中增加host字段

4.支持动态内容:使用chunk transfer解决文件大小不固定的情况

5.客户端cookie和安全机制

 

4.HTTP2

要解决的问题:

1.HTTP1.1中同一域名可连通多个TCP连接,各个TCP之间将会竞争带宽,导致传输受阻。并且由于TCP的慢启动,在文件较小的情况下传输情况受限。

因此,在HTTP2中限制一个域名使用一个TCP长连接,减少带宽的竞争和慢启动。

2.队头阻塞问题

方法:

http2的优化策略都是在二进制分帧的基础上得到的。

1.二进制分帧:添加二进制分帧层,将数据包分成更小的数据帧进行传输

2.多路复用机制

3.设置请求优先级

4.服务器推送

5.头部压缩

 

posted @ 2020-07-24 00:48  程嘿嘿  阅读(393)  评论(0编辑  收藏  举报