http2与http1.1的区别,http2的优缺点

本文详细比较了HTTP/2与HTTP/1.1在传输方式、协议、压缩算法、通信方式等方面的差异,并重点阐述了HTTP/2的多路复用、头部压缩、服务器推送等优点,以及队头阻塞和握手延时等挑战。适合升级到HTTP/2的开发者和了解两者差异的技术人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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最新版本支持,需要升级浏览器

总结: 如果这篇文章对你有帮助欢迎点赞,评论,收藏

如果有不正确的地方欢迎提出,我会及时改正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南工gjl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值