Http1.0

image.png

image.png
存在的问题:建立的一次连接,只有包含一个请求响应(对应一个资源)

Http1.1 (1997)

改进1:连接可以复用。一次连接,多个请求响应(对应多个资源)
image.png

改进2:增加流水线(pipeline)操作。下一个请求可不用等上一个响应来之后再发送。(但响应到来的顺序不变 FIFO)
image.png

http1.1中默认开启,通过http请求头设置“connection: close”关闭。
http1.0默认是关闭的,通过http请求头设置“connection: keep-alive”进行开启

依旧存在的问题:

  1. 请求按次序,后来者需要排队等待
  2. 请求头都类似,重复传输浪费资源
  3. 同一域名浏览器有最大并行请求限制

HTTP2

基于二进制流。 将一个TCP连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。
将 HTTP 消息分解为独立的帧,交错发送,然后在另一端重新组装。

  • 并行交错地发送多个请求,请求之间互不影响。
  • 并行交错地发送多个响应,响应之间互不干扰。
  • 使用一个连接并行发送多个请求和响应。

image.png
image.png
image.png

参考