10分钟看懂http协议(核心技术概念-HTTP)
10分钟看懂http协议(核心技术概念-HTTP)测试环境:cache1.cn1 115.238.23.13 16核Intel(R) Xeon(R) CPU L5630 @ 2.13GHz,48G内存,万兆网卡HTTP/2一定会带来性能优势,问题仅在于这个优势有多大。带着这个问题,小编找了一个网上公开的测试数据,大家一起看看:“是自1999年http1.1发布后的首个更新”,这里提到是更新,说明HTTP/2是基于HTTP/1.1做进行一步优化而非完全重构的,比如我们可以合理猜测其仍然是基于TCP作为传输层协议。“HTTP 2.0将只用于https://网址”,说明在HTTP/1.1时代用于安全处理的TLS层已经被整合进HTTP/2中。我们再补充一个时间点信息,HTTP/2正式版发布时间为2015年5月。
HTTP是网络通信的重要载体,当前我们使用的主流版本仍是HTTP/1.1,那么HTTP/2是什么时间诞生的?它解决了什么问题?有哪些具体改进?推广应用情况如何?
以上这些问题,小编都会在这篇CHAT中为你找到答案。
什么是HTTP/2我们摘录一段百度百科的描述:HTTP/2 (原名HTTP/2.0)即超文本传输协议 2.0,是下一代HTTP协议。是由互联网工程任务组(IETF)的Hypertext Transfer Protocol Bis (httpbis)工作小组进行开发。是自1999年http1.1发布后的首个更新。HTTP 2.0在2013年8月进行首次合作共事性测试。在开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。
我们对上面这段描述作一下解读:
“是自1999年http1.1发布后的首个更新”,这里提到是更新,说明HTTP/2是基于HTTP/1.1做进行一步优化而非完全重构的,比如我们可以合理猜测其仍然是基于TCP作为传输层协议。
“HTTP 2.0将只用于https://网址”,说明在HTTP/1.1时代用于安全处理的TLS层已经被整合进HTTP/2中。
我们再补充一个时间点信息,HTTP/2正式版发布时间为2015年5月。
HTTP/2带来了多大的优势HTTP/2一定会带来性能优势,问题仅在于这个优势有多大。带着这个问题,小编找了一个网上公开的测试数据,大家一起看看:
测试环境:cache1.cn1 115.238.23.13 16核Intel(R) Xeon(R) CPU L5630 @ 2.13GHz,48G内存,万兆网卡
测试工具:h2load
(HTTP/2性能测试)
通过上面的测试数据我们可以发现,HTTP/2与HTTP/1.1相比,两者的内存使用情况类似,前者对CPU有更好的使用率,并在QPS(并发性能)上带来了约10%的提升,在响应时间上要减少30%左右。
那么,我们如何来评价这种性能优势呢?是极具优势还是稍有进步?小编按下不表,欢迎读者朋友在评论区发表你的观点。
HTTP/2都有哪些技术特征既然HTTP/2已经有了上面的性能优势,想必读者也想对其技术特征一窥究竟。
- 二进制分帧(Binary Format)
(二进制分帧示意图)
帧(frame)包含部分:类型Type 长度Length 标记Flags 流标识Stream和frame payload有效载荷。
消息(message):一个完整的请求或者响应,比如请求、响应等,由一个或多个 Frame 组成。
流标识是描述二进制frame的格式,使得每个frame能够基于http2发送,与流标识联系的是一个流,每个流是一个逻辑联系,一个独立的双向的frame存在于客户端和服务器端之间的http2连接中。在二进制分帧层上,http2.0会将所有传输信息分割为更小的消息和帧。
上面的话可能比较绕,但理解其意图就是通过二级制分帧这个机制,支持将消息拆得更小,并支持重组。所以,这个技术本身并不提升效率,但为后面其它提升技术打下了基础。
- 多路复用(Multiplexing)
传统的HTTP/1.1多是基于BIO这一阻塞的IO模型建立的,每一次信息的传递都需要前一次消息的确认,也就是我们常说的“一问一答”,你可以想见,这期间有很多时间都是在进行阻塞等待信息,从而降低了效率,下图展示了这一特点。
(多路复用示意图)
多路复用技术是基于共享一个TCP连接,对其划分很多通信隧道,大家并行开展工作。借助前面介绍的二进制分帧技术,在接收方对信息进行重组,即通过降低了阻塞这一低效工作方式提升了效率。
- 压缩技术
HTTP/2在压缩上做了两块工作,第一块是头部压缩,http1.1的头带有大量信息,而且每次都要重复发送,http/2使用encoder来减少需要传输的header大小,通讯双方各自缓存一份头部字段表,减少重复传输从而降低了传输量。
第二块压缩是信息映射,即通过约定一个代号编码来代替对应的信息,从而减少信息量的传递,如下图示例:
(信息映射对照表)
- 请求优先级(Request Priorities)
HTTP/2支持请求资源的响应优先级,这种技术有利于我们的页面展示和渲染,例如HTML页面是页面的主体,应该优先响应,其次再是CSS、JS、图片等,这对于WEB表现是十分友好的。
- 服务端推送(Server Push)
HTTP/2还支持一次请求多次响应,说白了就是响应你一次后还允许我持续推送你一些东西,这对于WEB端是有很多性能优势的。比如我们有一个查询表单,涉及二三十页数据,在HTTP/1.1时代,我们可能需要通过分页查询来一次一查询,但到了HTTP/2时代,我们可能仅需要请求一次,服务端通过多次响应就将数据都传给了客户端,仅需要缓存起来即可本地使用。
哪些版本浏览器支持HTTP/2小编为此查询了各浏览器官网,确认Firefox 36 、chrome 42 及以上版本支持。
HTTP/2推广应用如何目前客户端支持还比较少,小编了解到似乎仅淘宝基本都支持了HTTP/2的请求。服务端应用也比较少,仅在一些特定的技术框架中使用,比如GRPC。
以上就是本CHAT的全部内容,下一期,小编将继续带你了解HTTP/3。什么?HTTP/2都没推广开来,又要搞3了?哈哈,这正是技术人内卷的地方,永远没有停下来的时刻。
那么HTTP/3会有颠覆性改变吗?会导致HTTP/2直接胎死腹中被绕过吗?关注小编凯文哥,我们下回见分晓。获取IT认证考试资料,欢迎私信小编。