tangyuxian
文章79
标签37
分类5
浏览器-http1.X和http2.0区别总结

浏览器-http1.X和http2.0区别总结

对HTTP1.0、HTTP1.1和HTTP2.0的区别做出一个总结

一 特点

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。

img

影响http的因素如下:

  1. 浏览器阻塞(HOL blocking):早期的浏览器会限制同一个域名的最大连接数,超过将会被阻塞住;
  2. DNS 查询(DNS Lookup):通过浏览器缓存,本地hosts文件,DNS服务器将域名转为IP地址的过程;
  3. 建立连接(Initial connection):TCP的三次握手;

二 对比

1 http1.0和http1.1

  1. 缓存处理:更多的缓存控制策略(http1.0是If-Modified-Since,Expires,http1.1增加Entity tag,If-Unmodified-Since, If-Match, If-None-Match)
  2. 带宽优化及网络连接的使用:http1.1引入了range头域,支持断点续传
  3. 错误通知的管理:http1.1新增24个错误响应码点此查看常见响应头
  4. Host头处理:http1.1增加hostname;
  5. 长连接:HTTP 1.1支持默认开启Connection: keep-alive长连接

2 SPDY:HTTP1.x的优化

google于2012年提出的SPDY方案

img

  1. 多路复用(multiplexing):多个请求stream共享一个tcp连接的方式
  2. 请求优先级(request prioritization):可为每个request设置优先级
  3. 头部压缩算法:DEFLATE
  4. 基于HTTPS的加密协议传输
  5. 服务端推送(server push)

3 http2.0

  1. 支持明文http传输

  2. 新的二进制格式(Binary Format):HTTP1.x的解析是基于文本

  3. header压缩:通讯双方各自cache一份header fields表,使用 HPACK点此了解压缩具体流程

  4. 多路复用(MultiPlexing):一个request对应一个id,可并行执行,通过id区分归属

    img

    • HTTP/1.* 一次请求-响应,建立一个连接,用完关闭;每一个请求都要建立一个连接;
    • HTTP/1.1 Pipeling解决方式为,若干个请求排队串行化单线程处理,后面的请求等待前面请求的返回才能获得执行机会,一旦有某请求超时等,后续请求只能被阻塞,毫无办法,也就是人们常说的线头阻塞;
    • HTTP/2多个请求可同时在一个连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行;
  5. 服务端推送(server push)

img

参考文档:

HTTP1.0、HTTP1.1和HTTP2.0的区别 - 简书 (jianshu.com)

HTTP协议演进与各版本特性 - 知乎 (zhihu.com)

本文作者:tangyuxian
本文链接:https://www.tangyuxian.com/2022/07/29/%E5%89%8D%E7%AB%AF/%E6%B5%8F%E8%A7%88%E5%99%A8/%E6%B5%8F%E8%A7%88%E5%99%A8-http1-X%E5%92%8Chttp2-0%E5%8C%BA%E5%88%AB%E6%80%BB%E7%BB%93/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可