为了账号安全,请及时绑定邮箱和手机立即绑定

Http协议的发展历史

标签:
Android

HTTP/0.9

0.9版本是第一个定稿的HTTP版本,相对较为简陋。它有以下特点:

  • 只有一个命令GET

  • 没有header等描述数据的信息

  • 服务器发送完毕,就关闭TCP连接

HTTP/1.0

1.0版本在0.9版本上做出了很多创新和优化,该版本:

  • 增加了新的命令(POST命令和HEADER命令)

  • 增加status code(状态码)和header

  • 增加多字符集支持、多部分发送、authorization(权限)、cache(缓存)等

在这个版本,基本实现了HTTP协议的框架。

HTTP/1.1

1.1版本解决了大量1.0版本的痛点,该版本新增了以下功能:

  • 持久连接(keep alive)

  • 管道化(pipeline)

  • host和其他一些命令

在1.1版本以前,每次HTTP请求,都会重新建立一次TCP连接,服务器响应后,就立刻关闭。众所周知,建立TCP连接的新建成本很高,因为需要三次握手,并且有着慢启动的特性导致发送速度较慢。而1.1版本添加的持久连接功能可以让一次TCP连接中发送多条HTTP请求,值得一提的是默认是,控制持久连接的Connection字段默认值是keep-alive,也就是说是默认打开持久连接,如果想要关闭,只需将该字段的值改为close

而管道化则赋予了客户端在一个TCP连接中连续发送多个请求的能力,而不需要等到前一个请求响应,这大大提高了效率。值得一提的是,虽然客户端可以连续发送多个请求,但是服务器返回依然是按照发送的顺序返回

host字段指定了服务器的域名,这允许一个物理服务器上可以建立多个虚拟服务器。

HTTP/1.1是使用最广泛的HTTP协议。

SPDY

优势:

  1. 复用连接,可在一个TCP连接上传送多个资源。应对了TCP慢启动的特性。

  2. 请求分优先级,重要的资源优先传送。

  3. HTTP头部数据也被压缩,省流量。

  4. 服务器端可主动连接客户端来推送资源(Server Push)。

缺点:

单连接会因TCP线头阻塞(head-of-line blocking)的特性而传输速度受限。加上存在可能丢包的情况,其负面影响已超过压缩头部和优先级控制带来的好处。

HTTP/2

HTTP/2 是 HTTP 协议的第二个主要版本,该版本关注于减少延迟时间,从而提高页面加载速度。HTTP/2 是基于 SPDY 协议的,打开一个 TCP 连接并重复使用,这使得许多请求得以并行发送,而无需等待响应

优势是:

  1. 多路复用

  2. 压缩头信息

  3. 请求划分优先级

  4. 支持服务器端主动推送 

多路复用:

浏览器对同一域名下的并发连接数量有限制,一般为6个,HTTP1中的Keep-Alive用于长连接而不必重新建立连接,然而keep-alive必须等本次请求彻底完成后才能发送下一个请求,而HTTP2的请求与响应以二进制帧的形式交错进行,只需建立一次连接,即一轮三次握手,实现多路复用。

请求优先级:

HTTP2帧具有优先级,允许客户端提供排序思路,以让服务器优先处理一部分请求,仍然是以二进制帧的形式返回数据。每个Frame Header中都有一个表示此Frame的 Stream ID,通过stream ID表示可以使所有的请求和响应同时在一条TCP连接上进行,当流并发时,流会有优先级,图片的优先级低于css文件或者js文件的优先级,这样设计可使重要的文件先下载。

压缩消息头:

HTTP1的消息头很大冗余,而HTTP2.0利用HPACK对消息头进行压缩传输,假设将常用的请求GET/index.html用1表示,POST/index.html用2表示,即是将消息头中的不同的部分分别用不用的索引进行表示,且会用哈夫曼编码压缩字符串,最后封装成frame。索引表分为动态索引和静态索引,动态索引表在客户端和服务器端共同维护,静态索引采用硬编码形式。

服务端推送:

HTTP2.0中服务器会主动将资源推送给客户端,例如把js和css文件主动推送给客户端而不用客户端解析HTML后请求再响应。HTTP2目前在实际使用中,只用于HTTPS协议场景下


http1与http2的请求的对比:

https://img1.sycdn.imooc.com//5c0675560001a48613520728.jpg


我们看出http2的请求都是在同一时间发起,这样极大的减少了页面的加载时间


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消