HTTP1.1与HTTP2的区别

  • 多路复用:1.1中在同域的TCP最大连接数为6个,会有队头阻塞,而2允许仅建立一个TCP连接上传输多个请求与响应,每个请求被分为互不干扰的帧,接收端根据StreamID进行重新组装,解决了队头阻塞的问题
  • 二进制分帧:1.1传入的是纯文本,2传入的是二进制帧
  • 头部压缩:1.1每次请求都会传输完整的Header字段,浪费带宽,而2使用HPACK算法,客户端与服务端仅需发送Header的索引或者变化的部分,极大的减少了体积

HTTP2与HTTP3的区别

  • 使用协议:2传输层使用TCP,3在传输层使用QUIC协议,而这个协议是基于UDP的
  • 解决TCP的队头阻塞问题:2解决了1.1在应用层的队头阻塞,但在TCP的队头阻塞并没解决,因为TCP是保证数据是按序到达,当一个数据包丢失,其他数据包也会进行阻塞,3用了基于UDP协议协议的QUIC协议,尽管其中一个数据包丢失,对其他数据包不造成影响
  • 连接迁移:2在换网络的时候,需要重新弄进行TCP握手保证会话,而3使用的QUIC协议使用里面的Connection ID来实现识别连接,这样连接就可以无缝保持
  • 更快的握手速度:2建立需要TCP握手(1.5RTT)+TLS握手(1-2RTT),而3会合并传输层握手以及TLS握手,仅需1RTT,有缓存的再次连接可以实现0RTT