什么是HTTP/2?

HTTP/2(原名HTTP 2.0)即超文本传输协议第二版,使用于万维网。HTTP/2主要基于SPDY协议,通过对HTTP头字段进行数据压缩、对数据传输采用多路复用和增加服务端推送等举措,来减少网络延迟,提高客户端的页面加载速度。HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则,它主要修改了HTTP的报文传输格式,通过引入二进制分帧实现性能的提升。

目录

  • HTTP/2解决了什么问题?
  • HTTP/2 vs HTTP/1.1
  • HTTP/2有哪些关键特性?
  • HTTP/2在网络管理与监控中的应用

HTTP/2解决了什么问题?

HTTP是应用最广泛、采用最多的一个互联网应用协议。早期版本的HTTP协议实现简单:HTTP/0.9只用一行协议就启动了万维网;HTTP/1.0则是对流行的HTTP/0.9扩展的一个正式说明;直到HTTP/1.1,IETF才发布可第一份官方标准。早期为了实现简单是以牺牲应用性能为代价:HTTP/1.1客户端需要使用多个连接才能实现并发和缩短延迟;HTTP/1.1不会压缩请求头字段和响应头字段,从而产生不必要的网络流量;HTTP/1.1不支持有效的资源优先级,致使底层TCP连接的利用率低下等等。

随着网络应用普及到人们的日常生活,它的应用范围、复杂性、重要性也在不断扩大。为了解决HTTP协议问题,HTTP/2应运而生。HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则,它主要修改了HTTP的报文传输格式,通过引入服务器推送等举措,来减少网络延迟,提高客户端的页面加载速度。

HTTP/2 vs HTTP/1.1

高健壮性

HTTP/1.1,使用基于文本格式,文本表现形式多样、场景多,健壮性不足。HTTP/2使用二进制格式,只有0和1的组合,选择二进制传输,协议解析实现方便且健壮。

高性能

HTTP连接会随着时间进行自我调节,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调节被称为TCP慢启动。这种调节让具有突发性和短时性的HTTP连接变的十分低效。HTTP/2通过多路复用让所有数据流使用同一个连接,有效使用TCP连接,让高带宽也能真正的服务于HTTP的性能提升。

HTTP/2在应用层和传输层之间增加了二进制分帧,突破了HTTP/1.1性能限制,改进传输性能,实现低延迟和高吞吐量。

网络开销低

HTTP/2使用HPACK算法来压缩每次请求连接的头字段,降低了网络开销。HPACK算法可以减少需要传输的头字段大小,通讯双方通过建立和维护头字段表,字段表中使用长度较小的索引号表示重复的字符串,在用Huffman编码压缩数据,既避免了重复头字段的传输,又减小了需要传输的大小。

HTTP/2有哪些关键特性?

二进制分帧

HTTP/2所有性能增强的核心在于新的二进制分帧层,如下图所示,它是所有其他功能和性能优化的基础,它定义了如何封装HTTP消息并在客户端与服务器之间传输。


二进制分帧

HTTP/2没有改动HTTP的应用语义,仍然使用HTTP的请求方法、状态码和头字段等规则,它主要修改了HTTP的报文传输格式。HTTP/1.1协议以换行符作为纯文本的分隔符,而HTTP/2将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们编码,这些帧对应着特定数据流中的消息,他们都在一个TCP连接内复用。

优先级排序

将HTTP消息分解为很多独立的帧之后就可以复用多个数据流中的帧,客户端和服务器交错发送和传输这些帧的顺序就成为关键的性能决定因素。HTTP/2允许每个数据流都有一个关联的权重和依赖关系,数据流依赖关系和权重的组合明确表达了资源优先级,这是一种用于提升浏览性能的关键功能。HTTP/2协议还允许客户端随时更新这些优先级,我们可以根据用户互动和其他信号更改依赖关系和重新分配权重,这进一步优化了浏览器性能。

首部压缩

HTTP每次请求或响应都会携带首部信息用于描述资源属性。HTTP/1.1使用文本的形式传输消息头,消息头中携带cookie每次都需要重复传输几百到几千的字节,这十分占用资源。

HTTP/2使用了HPACK算法来压缩头字段,这种压缩格式对传输的头字段进行编码,减少了头字段的大小。同时,在两端维护了索引表,用于记录出现过的头字段,后面在传输过程中就可以传输已经记录过的头字段的索引号,对端收到数据后就可以通过索引号找到对应的值。

多路复用

多路复用允许同时通过单一的HTTP/2连接发起多重的请求-响应消息,实现多流并行而并不依赖多个TCP连接,HTTP/2把HTTP协议通信的基本单位缩小为一个一个的帧,这些帧对应着逻辑流中的消息,并行地在同一个TCP连接上双向交换消息。

HTTP/2基于二进制分帧层,HTTP/2可以在共享TCP连接的基础上同时发送请求和响应。HTTP消息被分解为独立的帧,而不破坏消息本身的语义交错发出去,在另一端根据流标识符和首部将他们重新组装起来。通过多路复用技术,可以避免HTTP旧版本的消息头阻塞问题,极大提高传输性能。

服务器推送

HTTP2.0的一个强大的新功能,就是服务器可以对一个客户端请求发送多个响应。服务器向客户端推送资源无需客户端明确的请求。服务端根据客户端的请求,提前返回多个响应,推送额外的资源给客户端。如下图所示,客户端请求stream 1,服务端在返回stream 1的消息的同时推送了stream 2和stream 4。


                                                HTTP/2服务器推送

服务端推送是一种在客户端请求之前发送数据的机制。在HTTP/2中,服务器可以对一个客户端的请求发送多个响应。如果一个请求是由你的主页发送的,服务器可能会响应主页内容、logo以及样式表,因为服务端知道客户端会用到这些东西。这样不但减轻了数据传送冗余步骤,也加快了页面响应的速度,提高了用户体验。

HTTP/2在网络管理与监控中的应用

HTTP/2主要用于网络管理与监控,设备通过HTTP/2可以实时检测服务端的性能数据,能更有效的利用网络资源,减少网络的应用延迟。

在华为SD-WAN解决方案中,管理组件对设备的管理接口协议一般采用NETCONF和HTTP/2,SD-WAN解决方案整体架构如下图所示,NETCONF负责网络设备告警、日志和事件等运维信息的采集,HTTP/2则负责网络设备性能信息的采集。


                                        SD-WAN整体架构

网络控制器通过NETCONF给网络设备下发的配置,基于SSH协议承载,可保障数据传输的安全性。同时,网络设备通过HTTP/2上报性能数据,并通过NETCONF协议上报告警给网络控制器;网络设备上线注册必须进行双向证书认证;网络设备系统软件和特征库通过HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)传输,HTTPS和HTTP/2协议报文都采用TLS(Transport Layer Security,传输层安全)协议加密处理,以保障数据传输安全。

转自:

什么是HTTP/2?HTTP/2和HTTP/1.1区别是什么? - 华为

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/323719.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ -- 函数重载 、引用、 内联函数、auto、基于范围的for循环、指针空值nullptr

目录 1.函数重载 1.1函数重载: 1.2函数重载需要注意: 1.3函数重载的一些特殊情况 1.4为什么C语言不支持函数重载,C支持函数重载?底层逻辑是? 2.引用 2.1 引用特性 2.2 常引用 2.3 权限问题(权限放大,…

QT:QT与操作系统

文章目录 信号槽与事件QT多线程概述原理完成倒计时程序 UDP回显服务器服务端客户端 信号槽与事件 在之前的信号槽中,已经有了一个基本的认识,那么对于QT中事件的理解其实就非常的类似,当用户进行某种操作的时候,就会触发事件&…

【洛谷】动态规划之最长公共子序列

前言: 本系列目的是记录日常所刷的题,有的是自己想出来的题,有的是看了大佬题解后想明白的题 题目 P1439 【模板】最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前提: 两个排列都是1到n的排列,说…

linux安装 mysql

环境:centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功!!!!!! 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…

ESLint: Unexpected ‘debugger‘ statement.(no-debugger)(debugger报红)

ESLint: Unexpected debugger statement.(no-debugger) 解决办法: 找到.eslintrc.js文件中rules的no-debugger更改为0即可

200-500人规模工厂网络方案(中小企业网络)

一、方案概述 工厂一般有单独的弱电房,类似这种 里面采用的方案如下: 主要考虑有线、无线、财务、办公、访客等业务,便于维护管理和后续扩容 还需要 Wi-Fi覆盖零死角高速率,工作不卡顿 同时考虑AV反病毒、IPS入侵防御、用户准…

【LLama】Llama3 的本地部署与lora微调(基于xturn)

系列课程代码文档(前2节课可跳过):https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频:https://space.bilibili.com/3546636263360696/channel/series XTuner :https://github.com/InternLM/xtuner/blob/main/R…

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理,具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题,之后怎么提权,控制后面再说 背景 只有win7有网,其…

对XYctf的一些总结

对XYctf的一些总结 WEB 1.http请求头字段 此次比赛中出现的: X-Forwarded-For/Client-ip:修改来源ip via:修改代理服务器 还有一些常见的字段: GET:此方法用于请求指定的资源。GET请求应该安全且幂等&#xff0c…

C++ 如何进阶?

一、C基础(3个月) 1、面向对象的三大特性:封装、继承、多态 2、类的访问权限:private、protected、public 3、类的构造函数、析构函数、赋值函数、拷贝函数 4、移动构造函数与接贝构造函数对比 5、深接贝与浅贝的区别 6、空…

超标量处理器设计:重排序缓存(ROB)

★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。 ROB是一个先进先出的表,每个…

教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题

《绝地求生》(PUBG),作为一款在全球范围内掀起热潮的战术竞技游戏,以其栩栩如生的战场环境和令人心跳加速的生存冒险博得了广大玩家的青睐。然而,一些玩家在经历了一场惊心动魄的对局后,却面临了一个不大不…

uniapp video 层级覆盖

层级覆盖 cover-view组件 我这里做了个判断 监听全屏时隐藏按钮 根据项目需求自行更改

汉诺塔问题和爬楼梯(递归)

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 c语言基础_LaNzikinh篮子的博客-CSDN博客 文章目录 一.爬楼梯问题二.汉诺塔问题总结 一.爬楼梯问题 假设你正…

第八篇:深入探索操作系统架构:从基础到前沿

深入探索操作系统架构:从基础到前沿 1 引言 在当今这个高速发展的数字时代,操作系统无疑是计算机科学领域的基石之一。它不仅是计算机硬件与最终用户之间的桥梁,更是实现高效计算和资源管理的关键。操作系统的架构,即其内部结构和…

AIGC 时代软件工程师:前景、需求与大模型提效探究

过去,在互联网浪潮汹涌的十年来,软件工程师的角色愈发凸显其不可或缺的价值。随着AIGC(人工智能生成内容)时代的到来,软件开发的每个环节都正在经历一场前所未有的革新。今天,我们深入研究了大型AI模型如何…

ETL中如何执行Python脚本

Python的解读 Python 是一种高级、通用的编程语言,由荷兰程序员吉多范罗苏姆(Guido van Rossum)于1990年代初设计并发布。Python的设计哲学强调代码的可读性和简洁性,它的语法清晰且表达力强,使得开发者能够以更少的代…

【二分查找 滑动窗口】100257找出唯一性数组的中位数

本文涉及知识点 二分查找算法合集 C算法:滑动窗口总结 LeetCode 100257找出唯一性数组的中位数 给你一个整数数组 nums 。数组 nums 的 唯一性数组 是一个按元素从小到大排序的数组,包含了 nums 的所有非空子数组中不同元素的个数。 换句话说&#xf…

QAnything 在mac M2 上纯python环境安装使用体验(避坑指南)

这是一篇mac m2本地纯python环境安装 qanything的文章。安装并不顺利,官方提供的模型无法在本地跑。 这篇文章记录了,使用xinference来部署本地模型,并利用openAi的通用接口的方式,可以正常使用。 记录了遇到的所有的问题&#xf…

安全数据交换系统哪个好?该如何选型?

安全数据交换系统是用于在不同网络或组织之间安全、高效地传输和共享数据的解决方案。安全数据交换系统对于任何需要处理敏感数据、确保数据安全、并满足合规要求的组织来说都是至关重要的。 这种系统通常用于以下目的: 1)数据传输:允许用户…