HTTP1.0,1.1,2.0的关系和区别

http协议是一种用于分布式,协作式和超媒体信息系统的应用层协议,是英特网上应用最广泛的应用层协议。其中http0.9是最早的版本,只定义了最基本的简单请求和简单回答,再后来http协议不断完善,出现了http1.0,http1.1,http2.0。

http1.0与http1.1的重要区别在于:

http1.0采用的是非持续的TCP连接方式,所以每次请求都要新建立一个连接,加大RTT的开销,并且每建立一次连接,TCP连接会重新分配缓存和变量,加大服务器的负担。并且http1.0采用短连接,因此造成了一些性能上的缺失,例如有很多图像的网页文件夹没有图像数据,只有图像地址,这样web浏览器访问多图像的网页时,需要多次请求响应下载图像数据,比较耗费时间。

主要区别体现在:

1:长连接

HTTP1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启长连接keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。HTTP1.0需要使用keep-alive参数来告知服务器端要建立一个长连接。

2:缓存处理

http1.1引入了更多的缓存控制策略,例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等,更多的可选择的缓存头来控制缓存策略。

3:宽带优化

同时,http1.1进行了宽带优化和网络连接的使用,在请求头中引入了range头(它只允许请求资源某个部分)方便开发者选择充分利用宽带和连接。

4:Host头处理

在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname),HTTP1.0没有host域。随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都支持host域,且请求消息中如果没有host域,会报告一个错误(400 Bad Request)。

5:错误状态码更新

http1.1更新了24种错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

http2.0相对http1.1新增了一些特性;

1:新的二进制格式

http1.1的解析基于文本,有多种表现形式,存在天然的缺陷,而采用二进制,只有0和1的组合,解析起来更加方便

2:多路复用

HTTP2.0使用了多路复用的技术,做到连接共享,这样一个连接上可以有多个request,而且并发请求的数量比HTTP1.1大了好几个数量级。HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

3:header压缩

在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但状态行和头部却没有经过任何压缩,直接以纯文本传输。随着Web功能越来越复杂,每个页面产生的请求数也越来越多,导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie这类不会频繁变动的内容,完全是一种浪费,http2.0使用encoder来减少传输header大小,避免header重复传输,又减小了传输大小。

4:服务端推送

服务器推送是一种在客户端请求之前发送数据的机制。网页使用了许多资源:HTML、样式表、脚本、图片等等。在HTTP1.1中这些资源每一个都必须明确地请求。这是一个很慢的过程。浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

部分内容转载自:https://zhuanlan.zhihu.com/p/452003946

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值