1.http2与http1.1的主要区别
1.1传输区别
- http2采用二进制传输,进行二进制分帧,流传输
- http1.1采用报文形式传输
1.2使用协议
- http2: http+Hpack+Stream + TlS1.2+ +TCP
- http1.1 :http+tcp
1.3压缩算法
- http2 :hpack压缩头部信息
- http1.1: 无
1.4通信方式
- http2 :全双工(客户端和服务器都可以主动发起请求)
- http1.1: 半双工(仅有一方可以主动发起请求)
2.http2优点
2.1- 多路复用
将http消息分解为互不依赖的帧,交错发送,并行交错地发送多个请求,请求之间互不影响,并行发送多个相应,相应之间互不影响。使用一个连接并发多个请求,相应。(在tcp中还是有顺序的,需要进行分段)
2.2 头部压缩
使用hpack算法,服务器记录的有一部分常用请求头,对应的是一张表,如果发送的请求在表里已经存在,则不进行传送
2.3 服务器推送
由于http2是全双工通信,服务器可以主动推送信息
2.4二进制分帧
将原来的报文格式进行二进制转换,传输单位变为帧,对机器友好,但是开发者难以阅读
2.4优先级
允许每个数据流都有一个关联的权重和依赖关系(向每个数据流分配一个介于1-256之间的整数,每个数据流与其他数据流之间可以存在显示依赖关系)
客户端可以构建和传递“优先级树”,表明它倾向于如何接收相应。服务器可以根据这些信息进行控制cpu,内存,其他资源的分配,处理数据,在资源数据可用之后,确保高优先级相应以最佳的方式传输至客户端
2.5消息
与逻辑http请求或相应消息对应,由一系列帧组成
帧:http2通信的最小单位,每个帧都包含帧头(表示出当前帧所属的数据流),来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装
3.http2的缺点
- 1队头阻塞:
根本原因:tcp发送数据包的时候是有序的,一旦其中一个包丢失,将会影响后续包的发送
解决:使用quic(底层udp)协议,将已经正常发送的包进行处理,丢失的重新发
- 2 握手延时
往返时延(rtt),通信一来一回的时间。
原因:http2使用tls通信,相比于直接使用tcp,在建立连接请求时会更加的耗时,一般情况下:tcp握手一般100ms ,tcp+tls握手一般300ms
解决方法:使用quic协议进行建立请求连接,quic的握手延时为0ms(quic协议用在http3中)
- 3 浏览器版本限制
目前ie不支持,chrome最新版本支持,需要升级浏览器
总结: 如果这篇文章对你有帮助欢迎点赞,评论,收藏
如果有不正确的地方欢迎提出,我会及时改正