HTTP/2 学习
HTTP/2.0 简介
- HTTP/2 标准于 2015 年发布,目前大部分主流浏览器均已提供支持。
- HTTP/2 没有改变 HTTP 的应用语义,其请求方法、状态码、URI 等核心概念与 HTTP/1.1 保持一致。
- HTTP/2 采用了二进制而非明文来打包、传输客户端—服务器间的数据。
- HTTP/2 的前身是 SPDY 协议。
- HTTP/2 中 TLS 为可选,但是大厂商如 chrome 和 firefox 表示只会实现基于 TLS 的 HTTP/2。所以要部署 HTTP/2,首先要升级 HTTPS。
- HTTP/2 通过以下举措,减少网络延迟,提供浏览器加载速度:
- 对 HTTP 头字段进行数据压缩(即 HPACK 算法);
- HTTP/2 服务端推送(Server Push);
- 请求管线化;
- 修复 HTTP/1. 0版本以来未修复的队头阻塞问题;
- 对数据传输采用多路复用,让多个请求合并在同一 TCP 连接内。
HTTP/2 测试
Akamai http2 demo 这个 Akamai 公司建立的官方 demo,左右两边分别为 HTTP/1.1 和 HTTP/2,两边都同时请求 300 多张图片,从加载时间可以看出 HTTP/2 在速度上的绝对优势。
chrome 商店中有一个工具 HTTP/2 and SPDY indicator 用来查看当前网站是否基于 HTTP/2,添加到 chrome 后如果蓝色闪电亮了说明支持 HTTP/2。
HTTP/2 新特性
HTTP/2 所有性能增强的核心在于新的二进制分帧层,它定义了如何封装 HTTP 消息并在客户端与服务器之间传输。HTTP/1.x 协议解析基于纯文本,而 HTTP/2 将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们编码。二进制只有 0 和 1 的组合实现起来方便且健壮。
帧、消息、流和 TCP 连接
有别于 HTTP/1.1 在连接中的明文请求,HTTP/2 将一个 TCP 连接分为若干个流(Stream),每个流中可以传输若干消息(Message),每个消息由若干最小的二进制帧(Frame)组成。这也是 HTTP/1.1 与 HTTP/2 最大的区别。 HTTP/2 中,每个用户的操作行为被分配了一个流编号(stream ID),这意味着用户与服务端之间创建了一个 TCP 通道;协议将每个请求分区为二进制的控制帧与数据帧部分,以便解析。
多路复用
在 HTTP/1.1 协议中 「浏览器客户端在同一时间,针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞」这也是我们在站点中使用 CDN 的主要原因。
多路复用原理上还是基于以上 TCP 连接通道,通过单一的 TCP 连接发起和响应多重请求机制。
首部压缩 - HPACK 算法
在 HTTP/1.x 中,header 中带有大量信息,而且每次都要重复发送,HTTP/2 中引入 HPACK 算法用于对 HTTP 头部做压缩。其原理在于:
- 客户端与服务端共同维护一份静态字典(Static Table),其中包含了常见头部名及常见头部名称与值的组合的代码;
- 客户端和服务端根据先入先出的原则,维护一份可动态添加内容的共同动态字典(Dynamic Table);
- 客户端和服务端共同支持基于相同内容得静态哈夫曼码表的哈夫曼编码(Huffman Coding)。
服务器推送 - Server Push
HTTP/2 引入了服务器推送,可以在客户端请求资源之前发送数据,这允许服务器直接提供浏览器渲染页面所需资源,而无须浏览器在收到、解析页面后再提起一轮请求,节约了加载时间。除此之外,服务器还能够缓存数据,在同源策略下,不同页面共享缓存资源成为可能。
重置
HTTP/1.1 的有一个缺点是:当一个含有确切值的 Content-Lengt h的 HTTP 消息被送出之后,你就很难中断它了。当然,通常你可以断开整个 TCP 链接(但也不总是可以这样),但这样导致的代价就是需要通过三次握手来重新建立一个新的TCP连接。
一个更好的方案是只终止当前传输的消息并重新发送一个新的。在 HTTP/2 里面,我们可以通过发送 RST_STREAM 帧来实现这种需求,从而避免浪费带宽和中断已有的连接。
参考文档
相关文章
- 一篇运维老司机的大数据平台监控宝典(2)-联通大数据集群平台监控体系详解
- 一篇运维老司机的大数据平台监控宝典(1)-联通大数据集群平台监控体系进程详解
- 空中换引擎 博时基金数字化转型经验谈
- 如何高效地学习编程语言
- 作为一名阿里巴巴数据分析大牛,送给学弟学妹的经验积分
- 为什么要学习R语言
- Hadoop大数据分析平台的介绍性讨论
- 最全面的Spring学习笔记
- 16个用于数据科学和机器学习的顶级平台
- 给有抱负的数据科学家的六条建议
- 如何做一枚合格的数据产品经理
- 除Kaggle外,还有哪些顶级数据科学竞赛平台
- 一个鲜为人知却可以保护隐私的训练方法:联合学习
- 干货 :送你12个关于数据科学学习的关键提示(附链接)
- 大数据行业有多少种工作岗位,各自的技能需求是什么?
- 中国移动研究院常耀斌:商用大数据平台的研发之路
- 这些数据科学家必备的技能,你拥有哪些?
- 自学成才的开发者有何优势和劣势?
- Gartner报告:正处于数据科学与机器学习工具 “大爆炸”的时代
- Ready Computing借助InterSystems IRIS医疗版为医疗机构提供具有高度互操作性和可扩展性的解决方案