HTTP 1.0, 1.1, 2.0 的区别

  https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A

  总的来说就是:

HTTP 1.1 和 HTTP 1.0 相比的新特性:

  长连接,HTTP 1.1 支持长连接(Persistent Connection)和请求的流水线(Pipelining)处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在 HTTP 1.1 中默认开启 Connection: keep-alive,一定程度上弥补了 HTTP 1.0 每次请求都要创建连接的缺点。

  • 为什么要使用长连接:
      HTTP 请求发送的时候,要先去创建一个TCP连接,然后在这个TCP连接上,把HTTP 的请求发送并接受完。一次HTTP请求结束了,浏览器就会跟服务端商量是否关闭TCP 连接。如果不关闭,TCP 连接一直开着,会有一定的消耗,但如果还有请求,可以直接在这个TCP 上发送(不需要经过三次握手这样的连接的消耗);如果关闭了,下次有请求的时候,就会重新创建连接,但它的好处是请求完即关闭能减少服务端与客户端并发连接数。
      实际情况,网址的并发量可能比较大,当创建连接的次数很多时,它实际的开销可能比维持一个长连接的开销还要高一些。而且,长连接可以设置 timeout (过多长时间在这个TCP 上没有请求,就会关闭),并不会一直保持这连接。因此,一般我们实际使用中,使用的都是长连接。
HTTP 2.0 和 HTTP 1.X 相比的新特性:
  1. 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。
  2. 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。
  3. header压缩,如上文中所言,对前面提到过 HTTP 1.x 的 header 带有大量信息,而且每次都要重复发送,HTTP 2.0 使用 encoder 来减少需要传输的 header 大小,通讯双方各自 cache 一份 header fields 表,既避免了重复 header 的传输,又减小了需要传输的大小。
  4. 服务端推送(server push),同 SPDY 一样,HTTP 2.0 也具有 server push 功能。
  • HTTP2.0多路复用有多好?
      HTTP 性能优化的关键并不在于高带宽,而是低延迟。TCP 连接会随着时间进行自我「调谐」,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐则被称为 TCP 慢启动。由于这种原因,让原本就具有突发性和短时性的 HTTP 连接变的十分低效。HTTP 2.0 通过让所有数据流共用同一个连接,可以更有效地使用 TCP 连接,让高带宽也能真正的服务于 HTTP 的性能提升。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值