HTTP、 HTTP1.1、 HTTP/2的区别

1、什么是HTTP/2?

HTTP/2 是 HTTP 协议的第二个主要版本,为什么HTTP/2不叫HTTP2.0,是因为标准委员会不在打算发布子版本了,下一个版本将是HTTP/3了。该版本注重性能,致力于减少延迟时间,以提高页面的响应速度为准则。HTTP/2 相比HTTP1.X更简单,高效,强大,在传输层解决了之前使用HTTP1.x中的问题,HTTP/2 是基于 SPDY 协议的,可以打开一个TCP连接并且重复使用,响应多路复用,而且也支持压缩头部减少头部的体积,添加请求优先级,服务端推送。在HTTP/2中为了支持这些特性,增加了大量的头部字段来支持。HTTP/2并没有更改HTTP的语法,而是通过客户端和服务端传输的数据格式,通过新的二进制帧层控制整个过程。

2、HTTP1.x对比HTTP/2,主要区别有哪些?

  1. HTTP/2新的二级制格式而非文本格式
  2. HTTP/2是完全多路复用,只需要一个TCP连接就可以实现并行,而非有序并阻塞的
  3. 使用header压缩,HTTP/2降低了请求成本
  4. 服务端推送,服务端可以主动把响应主动push到客户端

3、HTTP/2新特性总结

  1. 头部压缩
    每个HTTP传输都包括了请求的一系列资源和描述以及属性的标题。在HTTP/2之前是使用纯文本的形式发送,每次的开销要增加500-800字节,如果使用了HTTP Cookie会增加上千字节,在HTTP/2中,使用了HPACK压缩Header以及响应数据。
    压缩元数据:
  • 它允许通过静态霍夫曼编码对传输的头部字段进行编码,从而减少它们各自的传输大小。
  • 它要求客户端和服务器都维护和更新先前看到的标题字段的索引列表(即,建立共享压缩上下文),然后将其用作参考以高效编码先前传输的值。
    示意图如下图
    在这里插入图片描述
  1. 二进制帧层
    HTTP1.x是基于解析文本,基于文本的协议格式存在天然的缺陷,表现的形式比较多样化,要做到很健全的场景很难,但是二进制就不同。HTTP/2性能提升的核心在于二进制的帧层,它是指HTTP的消息怎么在客户端以及服务端如何进行封装及传输。
    它是接口传输过程中的一种更加轻便、更改的编码机制,新的API提供给我们了应用。HTTP1.x采用的是换行分隔符的形式,HTTP/2是采用的分割消息以及frame,然后每个消息以及frame进行编码。客户端和服务端进行统一规则,统一的编码解码,从而一直的处理这些消息的发送及接收,要注意的的是HTTP1.x和HTTP/2是不同通信的。
  2. 请求和响应多路复用
    连接共享,在HTTP1.x,用户想要多个请求并行必须使用多个TCP连接,而且在一个时间点只能有一个请求发送出去,使得队头阻塞、低效,只能一个过程完成才能发送下一个。在HTTP/2中,新的帧层接触了对头阻塞限制使得所有请求和响应多路复用,允许客户端和服务端把消息分解成独立的帧,交错传输,然后在另个一个端组装。
    过程中,每一个请求都做连接机制,一个请求对应一个id,这样一个TCP连接上可以有多个请求,这些请求可以混杂在一起,接收方根据id进行分类归属到不同的服务端的请求中。
  3. 服务端推送
    HTTP/2的另一个强大的新功能是服务器为单个客户端请求发送多个响应的能力。也就是说,除了对原始请求的响应之外,服务器还可以向客户端推送额外的资源,而不需要客户端明确请求每一个资源!
    在这里插入图片描述

HTTP / 2脱离了严格的请求 - 响应语义,并支持一对多和服务器启动的推送工作流程,在浏览器内部和外部打开全新的交互可能性。这是一个启动功能,对于我们如何考虑协议以及在何处以及如何使用协议,都会产生重要的长期影响。
服务端推送的优势

  • 推送的资源可以在不同的页面上使用
  • 推送的资源可以复用,和其他资源一起使用
  • 推送的资源根据用户的意愿,可以拒绝
  • 推送的资源可以在客户端缓存
  • 推送的资源服务端优先
  • 减少重复请求,极大提升响应速度

4、多路复用和长连接复用的区别?

  • HTTP1.x 请求<==>响应,每次都要建立一个连接,过程完成自动关闭,比较浪费资源。
  • HTTP/2多个请求可以在一个连接上完成,每个请求都有一个id作为唯一的标识,其中某个请求比较耗时的情况下,不会影响后续请求过程。
  • HTTP1.1若干个请求是串行的单线程处理,后面的请求需要等待前面的请求完成以后才可以继续执行,一旦其中被阻塞,那么就会阻塞后面的请求。
  • 11
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值