(4)HTTP/1.1、HTTP/2、HTTP/3 演变

一、HTTP/1.1 相比 1.0 性能改进

1)TCP 长连接改善 HTTP/1.0 短连接性能开销

2)支持 管道(pipeline)网络传输,请求发出,不必等其回来发第二个,减少响应时间

HTTP/1.1 性能瓶颈:

1)头部未压缩,信息越多延迟越大。只能压部分Body,首部冗长,发送相同首部浪费

2)队头阻塞:按请求顺序响应,如服务器响应慢

3)没请求优先级控制:只能从客户端开始,服务器被动

二、1.1 的性能瓶颈,HTTP/2 做了什么优化?

1. 头部压缩

同时发出多个请求,头一样或相似,协议消除重复

    就是HPACK 算法:维护头信息表,生成一个索引号,不发送同样字段,只发送索引号提高速度

2. 二进制格式

1.1 纯文本形式的文,2 二进制格式:头信息帧和数据帧,统称为帧(frame)

报文区别:直接解析二进制报文,无需明文报文转成二进制,增加传输效率

3. 数据流

数据流(Stream):请求/回应所有数据包,独一无二的编号,客户端发出奇数, 服务器偶数,可指定优先级

不按顺序发送的,同连接连续数据包,可能属于不同回应。标记数据包属于哪个回应

4. 多路复用

一个连接中可并发多个请求或回应,不用按照顺序一一对应。移除串行请求,解决队头阻塞

例:TCP 连接里,服务器收客户端 A 和 B 请求,A 耗时,回应 A 请求已处理部分,接着回应 B再回应 A 剩下部分。

5. 服务器推送

改善“请求 - 应答”,服务也可主动发

例:浏览器刚请求 HTML提前把可能用JS、CSS 文件等静态资源主动发给客户端减少延时,就是推送

三、2 有哪些缺陷?HTTP/3 做哪些优化

2 主要问题:

    1)多个 HTTP 请求复用一个 TCP,TCP 不知道多少个HTTP 

    2)丢包触发 TCP 重传,所有HTTP 请求都等待。1.1 pipeline阻塞,2 丢包阻塞

3 改变

1)把 HTTP 下层TCP 协议改成UDP(不管顺序,不管丢包)

    UDP 不可靠,基于 UDP 的QUIC 协议(丢包时,阻塞这个流,其他流不受影响) 可实现类似 TCP 可靠性传输。

2)头部压缩算法升级成QPack

HTTPS 建立连接,6 次交互,先建三次握手,然后TLS/1.3 的三次握手。QUIC 合并成了 3 次

ps:TCP HTTPS(TLS/1.3) 和 QUIC HTTPS

QUIC:在UDP之上TCP + TLS + HTTP/2 多路复用协议。

新协议,很多网络设备,不知道,只当UDP,出现新问题

HTTP/3 普及慢,不知道UDP 是否能逆袭 TCP

https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A

你可能感兴趣的:((4)HTTP/1.1、HTTP/2、HTTP/3 演变)