Skip to content

HTTP各个版本特点和区别

HTTP/1.xHTTP/1.0 区别

  1. 长连接:tcp链接复用,HTTP/1.0一条tcp连接只能发送一个请求,1.X使用keep-alive可以复用tcp链接,但还是会按先后顺序阻塞发送:队头阻塞。

  2. 更多缓存处理首部:在HTTP/1.0中header主要使用Expires、If-Modified-Since作为缓存判断依据,HTTP/1.1增加Entity tag、If-Match等条件请求,Cache-Control首部。

  3. 新增Host首部:使用Host指定同一IP地址的不同主机名。HTTP/1.0默认一个IP对应一台服务器,没有此配置。

  4. 新增24个错误状态码:如409 Confict表示请求的资源与资源的当前状态发生冲突。

  5. 断点续传:新增Range首部,可以请求资源的部分内容。

HTTP/2.0HTTP/1.x 区别

  1. 二进制分帧:文本传输变为二进制传输
    • 将请求分别对应一个流,流由帧组成,每一帧标识属于哪个流
  2. 多路复用:有序变为无序
    • 多个请求复用同一个tcp链接,请求分解为多个帧,乱序发送,服务器根据标识符和首部将消息重新组装起来。
    • 流数据丢包会造成头部阻塞
  3. 首部压缩:压缩了首部字段的大小
  4. 服务端推送:推送html中的其他资源

为什么出现 HTTP/3.0

  1. HTTP/2存在一些比较严重的与TCP协议相关的缺陷
  2. 中间设备的僵化,只认TCP和UDP
  3. 兼容:基于UDP实现了类似于 TCP的多路数据流、传输可靠性等功能的QUIC协议

HTTP/3.0HTTP/2.0 区别

  1. 基于的传输层协议不一样:HTTP/2.0基于tcpHTTP/3.0基于UDPQUIC协议:实现了类似于 TCP的多路数据流、传输可靠性等功能

  2. 减少了握手所花费的时间

  3. 实现了HTTP/2.0中的多路复用,实现了数据流的单独传输,解决了TCP队头阻塞的问题

HTTP/3.0面临的挑战

  1. 浏览器和服务器不能很好的支持

  2. 系统对UDP协议的优化没有TCP

  3. 中间设备对UDP的优化也没有TCP,丢包率很高