| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 快速了解HTTP/2 -> 正文阅读 |
|
[网络协议]快速了解HTTP/2 |
HTTP/2新特性
二进制分帧(Binary framing layer)HTTP/2的所有性能增强的核心是新的二进制帧层,它规定了HTTP消息如何客户端和服务端之间封装和传输。HTTP/2通信都被拆分成更小的消息和帧,每个都以二进制格式编码。
流、消息和帧HTTP/2 术语解释
术语的关系
HTTP/2 将 HTTP 协议通信分解为二进制编码帧的交换,然后将其映射到属于特定流的消息,所有这些都在单个 TCP 连接中多路复用。 请求和响应复用(Request and response multiplexing)HTTP/1.x的交付模型确保了每个连接只能交付一个响应,所有,在HTTP/1.x中客户端想要发出多个并行请求并且高性能发出,就需要使用多个TCP连接。 而在HTTP/2中新的二进制帧层消除了这些限制——让客户端和服务器将HTTP消费分解为独立的帧,交错它们,并在另一端重新组合来实现完整的请求和响应多路复用。
没错这就是HTTP/2的一个增强点——将 HTTP 消息分解为独立帧、交错并在另一端重新组装它们的能力。 我们可以拿他来:
这里就是二进制分帧作用的体现之处,二进制分帧解决了 HTTP/1.x 中发现的行头阻塞和多个连接的需求,实现以实现请求和响应的并行处理和传递,让应用程序更快、更简单 多路复用简单小栗子拿百度图片为例子,我们打开百度图片,打开浏览器控制台。通过Network并刷新页面,就可以看到,h2让图片传输通过了一个域名和一个连接标识(Connection ID )。 而h1呢?我们来看看百度搜索,他的传输就要用到不同的连接标识了(就是使用了多个TCP连接) 流优先级因实现客户端和服务器交错和交付帧的顺序,HTTP/2 标准允许每个流具有关联的权重和依赖关系:
流依赖和权重的组合能够让客户端构建和传达一个"优先树",它表达了希望如何接收响应。服务器就可以通过这个"优先树"来控制CPU、内存和其他资源的分配来确定流处理的优先级,只要响应数据能够使用,就会分配带宽用来确保向客户端提供优先级高响应。 流量控制流量控制是一种机制,可防止发送方用它可能不想要或无法处理的数据压倒接收方。 HTTP/2流在单个TCP连接中单路复用,因此原本的TCP流控制就显得不够精细,没有提供必要的程序级API来规范各个流的传递。因此,HTTP/2为了解决这个问题。提供了一组简单的构建模块,运行客户端和服务器实现自己的流和连接级控制。 服务器推送(Server push )HTTP/2 的另一个强大的新特性是服务器能够为单个客户端请求发送多个响应。除了对原始请求的响应之外,服务器还可以向客户端推送额外的资源。 它可以推送的资源可以是:
PUSH_PROMISE 101所有服务器推送流都是通过 客户端则需要知道服务器打算推送哪些资源,以避免为这些资源创建重复请求,这里就用到了这样的策略—— 客户端收到一个 使用 HTTP/2,客户端仍然可以完全控制服务器推送的使用方式:
这些首选项通过 每个推送的资源都是一个流,与内联资源不同,它允许客户端单独对其进行多路复用、优先排序和处理。 头压缩(Header compression )每个 HTTP 传输都带有一组标头,这些标头描述了传输的资源及其属性。HTTP/2 使用 HPACK 压缩格式压缩请求和响应标头元数据,该压缩格式使用两种简单但强大的技术:
霍夫曼编码允许在传输时压缩单个值,并且先前传输值的索引列表允许我们通过传输可用于有效查找和重建完整标题键和值的索引值来对重复值进行编码。 HPACK 压缩上下文由静态和动态表组成:
因此,通过对以前未见过的值使用静态 Huffman 编码,并用索引替换已经存在于每一侧的静态或动态表中的值,可以减少每个请求的大小。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:39:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |