hTTP1.1持久化管程化到HTTP2.0多路复用

时间:2025-03-05 06:57:42

HTTP持久化

  • HTTP1.1和HTTP1.0为了减少通信量,提出持久连接的概念,其特点就是,主要任意一端没有明确表示断开连接,则保持TCP连接状态。

浏览器与服务器建立一个TCP链接之后,会不会在完成一个HTTP请求后立马断开

HTTP/1.0的时候是会的,需要手动设置Connection: keep-alive。
HTTP/1.1的时候Connection默认为keep-alive 。
复用的 TCP连接在等待设置的超时时间之后还没有被任何连接使用的话,就会主动断开。

  • 带来的好处:减少了TCP重新建立连接和断开额外的开销,减轻了服务器的负载。

HTTP管程化

  • 在持久化的基础上,多数请求以管程化成为了可能。发送请求得到响应才能发下一个请求,现在不用等待响应就可以直接发起下一个请求。
  • 改进之处:可以并行发送请求。

HTTP2.0多路复用

当然,管程化这么好用,为什么需要提出多路复用呢?那肯定有不足之处。

  • 管程化的不足之处:接收的响应要按照顺序返回,也是说,如果我中间某个请求没有处理完,接下来的 处理完的请求也会在等待阻塞中,这也会照成队头阻塞问题

那多路复用怎么实现的呢?

  • 多路复用就是将多个请求复用同一个TCP链接中,将TCP分成若干个,每个流中可以传输若干个消息,每个消息由若干个最小二进制组成。相当于我一个很大的请求,拆分成很多个很小的帧,这样处理帧还是很快的,就不会造成堵塞了。