你知道HTTP1.1、HTTP2、HTTP3的演变吗?

HTTP/1.1、HTTP/2、HTTP/3演变

  • 一、HTTP1.1比较HTTP1.0提升的地方
    • HTTP1.1的性能瓶颈
  • 二、HTTP2的优化
    • 头部压缩
    • 二进制格式
    • 数据流
    • 多路复用
    • 服务器推送
  • 三、针对HTTP2的缺陷,HTTP做的优化
    • HTTP2的缺陷
    • 优化

一、HTTP1.1比较HTTP1.0提升的地方

  • 使用长连接改善了短连接造成的性能消耗
  • 支持管道网络传输,减少整体的响应时间

HTTP1.1的性能瓶颈

  • 请求头未经压缩就发送,只能压缩Body的部分
  • 发送冗长的首部。每次互相发送相同的首部造成浪费
  • 服务器是按请求的顺序响应的,易造成对头阻塞
  • 没有请求优先级控制
  • 请求只能从客户端开始,服务器只能被动响应

二、HTTP2的优化

HTTP2是基于HTTPS的,所以HTTP2的安全性是有保障的

头部压缩

HPACK算法:在客户端和服务器同时维护一张头信息表,所有的字段都会存入这张表,生成一个索引号,以后不发送同样的字段,直接发送索引号,这样就提高速度了。

二进制格式

HTTP2不再像HTTP1.1里的纯文本形式的报文,而是全面使用二进制格式,统称为帧:头信息帧和数据帧,增加了数据传输的效率。

数据流

每个请求或回应的所有数据包,称为⼀个数据流( Stream )。每个数据流都标记着⼀个独一无二的编号,其中规定客户端发出的数据流编号为奇数, 服务器发出的数据流编号为偶数 客户端还可以指定数据流的优先级。优先级高的请求,服务器就先响应该请求。

多路复用

TTP2是可以在一个连接中并发多个请求或回应,而不是按照顺序一一对应。降低了延迟,大幅度提高了连接的利用率。例如在⼀个TCP连接⾥,服务器收到了客户端 A 和 B 的两个请求,如果发现 A 处理过程非常耗时,于是就回应 A 请求已经处理好的部分,接着回应 B 请求,完成后,再回应 A 请求剩下的部分。

服务器推送

服务器不再是被动地响应,可以主动向客户端发送消息。

三、针对HTTP2的缺陷,HTTP做的优化

HTTP2的缺陷

HTTP/2 多个请求复⽤⼀个TCP连接,⼀旦发生丢包,就会触发TCP的重传机制,就会阻塞住所有的 HTTP 请求。

优化

HTTP3直接把下层的TCP协议改成了UDP。
你知道HTTP1.1、HTTP2、HTTP3的演变吗?_第1张图片

但是UDP又是不可靠传输,但是基于UDP的QUIC协议可以实现类似TCP的可靠传输。

  • QUIC 有⾃⼰的⼀套机制可以保证传输的可靠性的。当某个流发⽣丢包时,只会阻塞这个流,其他流不会受到 影响。
  • TLS3 升级成了最新的 1.3 版本,头部压缩算法也升级成了 QPack 。
  • HTTPS 要建立⼀个连接,要花费 6 次交互,先是建立三次握手,然后是 TLS/1.3 的三次握手。QUIC 直接 把以往的 TCP 和 TLS/1.3 的 6 次交互合并成了 3 次,减少了交互次数。

你可能感兴趣的:(图解网络,HTTP1.1与HTTP1.0,HTTP2的优化,头部压缩,多路复用)