Web性能(四):性感的HTTP2.0

HTTP2.0

相比HTTP1.1,我们用过的用于加强HTTP1.1的招数,在HTTP2.0中,可以悉数抛弃了吧。HTTP2.0把解决以前遗留的问题都内置在了传输层中。

  • HTTP2.0目的:通过支持请求与响应的多路复用来减少时延,通过压缩HTTP首部字段将协议开销降至最低,同时增加对请求优先级和服务器端推送的支持。
  • 其他协议层面的辅助实现:新的流量控制、错误处理和更新机制
  • HTTP2.0修改了格式化数据(分帧),的方式。
  • 增加了新的二进制分帧数据层
    这里写图片描述
    二进制分帧层位于套接字和应用可见的高层HTTP API之间的一个新机制:HTTP的语义,包括各种动词,首部,方法等不变,不同的是改变是数据的编码方式(使用二进制编码)。

新概念

  • 流:已建立的连接上的字节流
  • 消息:与逻辑消息对应的完整的一系列数据帧
  • 帧:HTTP2.0通信的最小单位,每个帧包含帧首部,至少也会标示出当前帧所属的流。

所有的HTTP2.0通信都在一个连接上完成,这个连接可以承载任意数量的双向数据流。相应地,每个数据流以消息的形式发送,而消息由一个或多个帧组成,这些帧可以乱序发送,然后再根据每个帧的流标示符重新组装。

要深刻理解“流”,“消息”和“帧”几个概念

  • 所有的通信都在一个TCP连接上完成。
  • 流是连接中的一个虚拟通道,可以承载双向的消息;每个流都有一个唯一的整数标示符(实现一个TCP连接,任意流的基础,为消息找到的归属)。
  • 消息是逻辑上的HTTP消息,比如请求、响应等,由一个或多个帧组成。
  • 帧是最小的通信单位,承载着特定类型的数据,如HTTP首部、负荷,等等。

多向请求和响应

在HTTP1.1中,想发送多个并行的请求,需要开启多个TCP连接,而HTTP2.0新的二进制分帧层突破了这些限制,实现了多向请求和响应:客户端和服务端可以把HTTP消息分解为互不依赖的帧,然后乱序发送,最后再在另一端重新组装起来。(也就是请求和响应可以在共享的TCP连接上同时发送)

请求的优先级

每个来源一个请求

好处:

  • 连接路径上的套接字管理工作少了,内存占用少了,连接吞吐量大了。
  • 由于TCP连接减少,使得网络拥塞状况得以改观。
  • 慢启动时间减少,丢包和拥塞恢复速度更快。

不足:

  • TCP层次上仍然存在队首阻塞
  • 。。。

流量控制

服务器推送

HTTP2.0新增的一个强大的新功能:服务器可以对一个客户端请求发送多个响应。也就是说,除了对最初请求的响应,服务器还可以额外向客户端推送资源,而无需客户端明确请求。

  • 推送遵循同源策略

首部压缩

  • 只编码发送有差异的首部信息,避免传输冗余的首部,减少请求的开销。

(未完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值