计网回顾---HTTP2.0

多路复用

很多时候我们的客户端与服务器需要进行频繁的通信,这个时候,在Http0.9也就是没有长连接之前,我们只能没通信一次建立TCP连接,通信完毕断开,这个时候会浪费大量资源,并且占用了相当长的时间。

于是就引入了KeepAlive长连接这个东西,在一定时间内,同一域名多次请求数据,只建立一次TCP连接,所有的请求都复用这次的连接。那么就避免了频繁的连接和断开。但是他仍然还有两个效率上的问题:

  1. 串行的文件传输:当请求a文件时,b文件只能等待,等待a文件连接到服务器、服务器处理文件、服务器返回文件这三步之后,才能再传输b。
  2. 连接数过多:连接数过多时,只能等待前面的请求处理完成才能继续处理

那么在HTTP2,就引入了多路复用这个概念,那么他是如何解决的:

  • 对于第一个问题,在HTTP1.1中,传输的数据都是基于文本的,所以所有的数据必须按照顺序传输,比如helloworld,就只能从h一个个传输到d,不能并行,因为接收端不知道顺序。
    而HTTP2引入了二进制数据帧和流的概念,其中帧对数据进行的顺序标识,这样在接收端收到数据后可以通过顺序进行重组,而正式因为有了序列,服务器就可以并行的传输数据,这就是流做的事。
    帧代表着最小的数据单位,每个帧会标识出该帧属于哪个流,流也就是多个帧组成的数据流。

  • 对于第二个问题,因为HTTP2对于同一域名下所有请求都是基于流,也就是不管域名访问了多少文件,都可以只建立一个连接。

请求优先级

可以指定每个Request的优先级,这样重要的请求就会优先得到响应。

Header压缩

服务端推送

服务器可以主动发送数据

猜你喜欢

转载自blog.csdn.net/why1092576787/article/details/114792087