美文网首页我爱编程
颠覆Web速度的HTTP/2特点概述

颠覆Web速度的HTTP/2特点概述

作者: IT老马 | 来源:发表于2018-02-11 02:30 被阅读211次

2015年 5 月 14 日 HTTP/2 协议正式版的发布,越来越多的网站开始部署 HTTP/2 了,目前从客户端到后端服务器软件和服务等都已经相对成熟,已经有很多网站、app、service都已经切换到HTTP/2,那么它带来了哪些颠覆性的优点呢?

协议

HTTP/2 协议由以下两个 RFC 组成:

在「HTTP/2 官网」可以找到更多有关 HTTP/2 协议的资料。

兼容情况

  • 客户端:目前支持 HTTP/2 的浏览器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge。


  • 服务端:Apache、Nginx、IIS、H2O、Node-HTTP2、Apache Tomcat 9等常见的Web服务器软件都已经支持HTTP/2。


  • 协议兼容:HTTP/2 主要是 HTTP/1.x 在底层传输机制上的完全重构,HTTP/2 是基本兼容 HTTP/1.x 的语义的(详细兼容性说明请戳这里)。

HTTP/2 的优势

相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化:

  1. HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。

  2. HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。

  3. 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。

  1. Server Push:服务端能够更快的把资源推送给客户端。例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求。当客户端需要的时候,它已经在客户端了。

HTTP/2的巨大创新Frame

HTTP/2中定义进行传输的数据包装成不同的Frame,Frame因为有了额外的结构信息,所以可以让数据分段传输、多路复用、服务端主动推送等能力,是HTTP/2的灵魂。

Frame 由 Frame Header 和 Frame Payload 两部分组成。不论是原来的 HTTP Header 还是 HTTP Body,在 HTTP/2 中,都将这些数据存储到 Frame Payload,组成一个个 Frame,再发送响应/请求。通过 Frame Header 中的 Type 区分这个 Frame 的类型。由此可见语义并没有太大变化,而是数据的格式变成二进制的 Frame。二者的转换和关系如下图:


Multipexing 多路复用

每个 Frame Header 都有一个 Stream ID 就是被用于实现该特性。每次请求/响应使用不同的 Stream ID。就像同一个 TCP 链接上的数据包通过 IP:PORT来区分出数据包去往哪里一样。通过 Stream ID 标识,所有的请求和响应都可以欢快的同时跑在一条 TCP 链接上了。 下图是 http 和 spdy(http2 的模型和 spdy 是类似的) 的并发模型对比:

http并发模型

当流并发时,就会涉及到流的优先级和依赖。优先级高的流会被优先发送。图片请求的优先级要低于 CSS 和 SCRIPT,这个设计可以确保重要的东西可以被优先加载完。

Server Push

当服务端需要主动推送某个资源时,便会发送一个 Frame Type 为 PUSH_PROMISE 的 Frame,里面带了 PUSH 需要新建的 Stream ID。意思是告诉客户端:接下来我要用这个 ID 向你发送东西,客户端准备好接着。客户端解析 Frame 时,发现它是一个 PUSH_PROMISE 类型,便会准备接收服务端要推送的流。



当然还有很多其他特性,在此就不再多介绍了,可以参考以下文章:

  1. HTTP 2.0 协议详解

  2. HTTP2新机遇与挑战pdf

相关文章

  • 颠覆Web速度的HTTP/2特点概述

    2015年 5 月 14 日 HTTP/2 协议正式版的发布,越来越多的网站开始部署 HTTP/2 了,目前从客户...

  • Nginx基础概述和核心配置

    基础概述 Nginx 是⼀个⾼性能的HTTP和反向代理web服务器,核⼼特点是占有内存少,并发能⼒强 Nginx能...

  • HTTP 概述

    HTTP 概述 本文为HTTP Web基础部分,概要总结下HTTP;Web浏览器、服务器和相关的Web应用程序都是...

  • HTTP协议

    web前端——1.http协议 一 HTTP概述HTTP(hypertext transport protocol...

  • 软件测试读书笔记(佟伟光著)9

    Web应用测试 Web应用测试概述 Web浏览器和服务器之间采用超文本传送协议(HTTP)进行通信。HTTP协议是...

  • 二、TOMCAT

    一、Web开发概述 WEB通信 WEB采用B/S通信模式,通过超文本传送协议(HTTP, Hypertext tr...

  • HTTP权威指南 - HTTP概述(1)

    HTTP概述 Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的。HTTP是现代全球因特网中使用...

  • CTF-python练习

    BUGKU-速度要快 题目网址:http://120.24.86.145:8002/web6/ 速度要快,查看源码...

  • 《HTTP权威指南笔记》

    第一章、HTTP概述1、Web浏览器、服务器和相关的Web应用程序都是通过HTTP相互通信的,HTTP是现代全球因...

  • Web开发学习笔记——HTTP概述

    接着了解HTTP的一些基本知识。 什么是HTTP 如果说TCP/IP是一套约定计算机如何交流通信的规则的话,HTT...

网友评论

    本文标题:颠覆Web速度的HTTP/2特点概述

    本文链接:https://www.haomeiwen.com/subject/otfktftx.html