HTTP协议变化 | 青训营

133 阅读4分钟

HTTP1.1和HTTP2.0

HTTP/1.1,HTTP/2和HTTP/3的区别_哔哩哔哩_bilibili

HTTP1.1的缺陷

  • HTTP/1.1是基于文本的协议,头部信息和数据都是以明文形式传输,容易被窃听或篡改,而且头部信息冗长,占用了大量的带宽。
  • HTTP/1.1是基于请求-响应模式的协议,每个请求都需要等待上一个响应到达才能发送,这导致了队头阻塞(head-of-line blocking)问题,降低了传输效率。
  • HTTP/1.1支持持久连接(keep-alive),但每个连接上只能同时发送一个请求,如果要并发多个请求,就需要建立多个连接,这会增加服务器的负担和网络资源的消耗。

HTTP2.0的优势

  • HTTP/2.0使用二进制分帧(binary framing)机制,将头信息和数据体分割为帧,称为头信息帧和数据帧,并对它们采用二进制格式进行编码和解码,提高了传输的安全性和效率。

  • HTTP/2.0支持多路复用(multiplexing),即在一个TCP连接上可以同时发送和接收多个请求和响应,而且可以乱序发送和接收,避免了队头阻塞问题,提高了传输的并发性和效率。【解决队头阻塞】

    • 例如,如果要同时请求一个网页的HTML、CSS、JS和图片文件,HTTP/1.1需要建立四个TCP连接,或者在一个连接上按顺序发送四个请求,等待每个响应到达后再发送下一个请求。而HTTP/2.0只需要建立一个TCP连接,然后在同一个连接上并行发送四个请求,并且可以按任意顺序接收响应。这样就减少了建立和关闭连接的开销,以及等待响应的时间。
  • HTTP/2.0支持头部压缩(header compression),即使用HPACK算法对头部信息进行压缩和解压缩,减少了头部信息的大小和重复性,节省了带宽和数据量。

  • HTTP/2.0支持服务器推送(server push),即服务器可以在客户端请求之前(例如请求HTML,服务器不止会发送html,还会响应相应的css,js等)主动发送一些资源给客户端,预先加载一些可能需要的内容,提高了用户体验和响应速度。

    • 例如,如果客户端请求一个网页的HTML文件,服务器可以在返回HTML文件的同时,主动推送该网页所需的CSS、JS和图片文件给客户端,而不需要等待客户端再次请求这些资源。这样就减少了请求的次数和延迟,提高了网页的加载速度

    • 存在的问题:

      • 用户误点,会带来额外的信息
      • DDoS攻击,一对多
  • HTTP/2.0支持流优先级(stream priority),即客户端可以指定不同请求之间的优先级,让服务器根据优先级分配资源和带宽,优先处理更重要或更紧急的请求。

9. HTTP2.0和HTTP3.0

HTTP2.0协议的不足

  • HTTP2.0仍然基于TCP协议,而TCP协议本身有一些缺陷,比如慢启动、重传机制、队头阻塞等,这些会影响HTTP2.0的性能和效率。
  • HTTP2.0的多路复用可能导致服务器的压力增大,因为同一个连接上可以发送多个请求,而服务器需要同时处理这些请求,可能会造成资源的竞争和超时的风险。
  • HTTP2.0的服务端推送可能造成资源的浪费,因为服务器可能会推送一些客户端已经缓存或者不需要的资源,而客户端无法拒绝这些推送。

HTTP3.0协议的特点

  • HTTP3.0基于UDP协议,支持快速握手,可以在第一次握手时就建立加密连接,而不需要像TCP+TLS那样进行多次握手,从而避免了TCP协议带来的一些问题,比如慢启动、重传机制、队头阻塞等,同时也减少了延迟和开销。
  • HTTP3.0支持加密传输,它集成了TLS 1.3协议,可以保证数据的安全性和隐私性。
  • HTTP3.0支持请求优先级,它可以让客户端指定不同请求的优先级,从而让服务器优先处理重要的请求,提高用户体验。
  • HTTP3.0支持连接迁移,它可以让客户端在网络环境变化时(比如从Wi-Fi切换到4G)保持原有的连接,而不需要重新建立连接,从而提高了可靠性和连续性。