迟来的HTTP2简明教程

SAP ABAP OAuth 2.0 Client 扩展实战,给自定义 Service Provider 参数值创建 Enhancement Spot Implementation 本文介绍了SAP ABAP系统中OAuth 2.0 Client配置扩展的关键要点。重点分析了OA2C_CONFIG_EXTENSION Enhancement Spot的作用,它允许为Service Provider Type添加额外的OAuth参数配置,如audience、tenant等。文章详细说明了配置扩展与Service Provider Specifics类的关系,强调必须通过IF_OA2C_SPECIFICS~GET_CONFIG_EXTENSION方法将两者关联。同时提供了在SE80中创建E 阅读详情

640?wx_fmt=jpeg

The standardization effort was supported by Chrome, Opera, Firefox,[9] Internet Explorer 11, Safari, Amazon Silk, and Edge browsers.[10] Most major browsers had added HTTP/2 support by the end of 2015.[11]
According to W3Techs, as of November 2017, 20.5% of the top 10 million websites supported HTTP/2.

这是一段来自维基百科的关于HTTP2的说明,截止2015年底,主流浏览器都已经对HTTP2做了支持,根据2017年11月的W3Techs报告说明,全球有1/5的大型网站都已经使用了HTTP2了。作为码农的你已经可以预料HTTP2的时代即将到来,对于HTTP2的技术细节你都准备好了么?

HTTP2的设计要点

  1. 高度兼容HTTP1.1

  2. 减少客户端服务器的交互延迟

    1. Header压缩

    2. Server Push

    3. Pipelining & Mulplexing

我们平常听到的GZIP压缩仅仅是针对HTTP请求的Body部分进行的,这只能算是半压缩。对于很多API服务来说,返回的内容体其实并不大,这个时候请求头就占据了大部分流量。HTTP2将魔爪伸到了HTTP头部,这回是彻底的对整个请求都进行压缩了。

HTTP2的头压缩原理完全不同于HTTP1.1,它将常用的HEADER键值对映射到一个静态表里面的索引值,于是很多头部的键值对使用一个位置索引来表示就可以了。这样便大大节省了头部消息的长度。对于那些不常用的自定义的头部会使用一个动态表来维护,具体原理有一定复杂度,这里就不再啰嗦了。

640?wx_fmt=jpeg

Server Push不同于Websocket,Server Push一般是指服务器主动向客户端推送数据,这是一种单向的主动推送,而WebSocket是双向的,这两种技术不是竞争关系。Server Push可以用在服务器主动向客户端推送静态资源,比如浏览器请求index.html时,服务器除了返回网页内容外,还会将index.html页面里面的各种css和js一起推送到浏览器缓存起来,当浏览器分析了网页内容发现静态资源时,不需要再去服务器请求一次,它只需要从缓存里直接拿就可以了。不过现代的网站的静态资源大多都是CDN架构的,静态资源都在第三方服务器,Server Push在这方面作用并不大。Server Push还可以用在推送通知消息,比如谁关注了你,谁给你点了赞等,这个可以替代古老的Comet技术和近几年Google推广的SPDY协议,它需要服务器维持当前的TCP通道不关闭,需要持续占用服务器资源。

Pipeline是指后一个HTTP请求无需等待前一个HTTP请求返回结果就可以提前发起。HTTP1.1也有Pipeline支持,但是有所不足,并行的还不够彻底。它可以提前发起请求,但是却限定了返回结果必须和收到请求的顺序保持一致而不能乱序。如果第一个请求服务器处理慢了,那么后续的返回结果客户端无法立即收到,而必须等到第一个结果全部返回了才行。HTTP2则解决了这个问题,它支持乱序返回,甚至不同请求的返回结果的分块【HTTP Chunk】也可以交叉返回而不会混乱,这种技术称之为Multiplexing【多路复用】。

HTTP2底层协议

HTTP2协议是二进制协议,不同于HTTP1.1的文本协议。文本协议是以特殊的符号结尾【换行回车符】来分割消息的,而二进制协议是通过字节长度来分割消息。二进制协议虽然直观性不如文本协议,但是在实现的时候要简单直接一些。

640?wx_fmt=jpeg

HTTP2为支持多路复用,在同一条TCP通道上支持发送多个资源/请求,将每条资源/请求定义为一个Stream【流】,同一个TCP通道可以传输多个Stream。同时为了支持多个资源的并行交错发送,将Stream再次分割为多个Frame【帧】,帧与帧之间可以交错发送。接收端通过流ID将这些帧组装起来,通一个流ID的帧属于同一个资源/请求。因为TCP协议已经可以保证消息包是有序的,所以接收端不必担心乱序问题。

640?wx_fmt=jpeg

HTTP2的帧格式非常简单,就是长度+类型+标志位+流ID+PayLoad,长度就是PayLoad的字节数,类型为一个字节,标志位为1个字节,流ID为4个字节,剩下的长度就是PayLoad。不同类型的帧PayLoad不一样,标志位也不一样。

640?wx_fmt=jpeg

HTTP2标准里定义了10种类型的帧。

  1. HEADERS帧 头信息,对应于HTTP HEADER

  2. DATA帧 对应于HTTP Response Body

  3. PRIORITY帧 用于调整流的优先级

  4. RST_STREAM帧 流终止帧,用于中断资源的传输

  5. SETTINGS帧 用户客户服务器交流连接配置信息

  6. PUSH_PROMISE帧 服务器向客户端主动推送资源

  7. GOAWAY帧 通知对方断开连接

  8. PING帧 心跳帧,检测往返时间和连接可用性

  9. WINDOW_UPDATE帧 调整帧大小

  10. CONTINUATION帧 HEADERS太大时的续帧

HTTP2标准定义了3个标志位

  1. END_STREAM 流结束标志,表示当前帧是流的最后一个帧

  2. END_HEADERS 头结束表示,表示当前帧是头信息的最后一个帧

  3. PADDED 填充标志,在数据Payload里填充无用信息,用于干扰信道监听

对于一个普通的GET请求来说,它使用一个HEADERS帧就可以表达。HEADERS帧会设置标志位END_STREAM和END_HEADERS表示当前帧是一个完整的HEADERS帧,也是一个完整的HTTP请求流。

640?wx_fmt=jpeg

对于一个普通的GET请求响应来说,它使用一个HEADERS帧和多个DATA帧就可以表达。HEADERS帧设置END_HEADERS表示当前帧是一个完整的HEADERS帧,后面的DATA帧表示返回的数据,对应Response Body。在HTTP1.1里面返回的Body长度较大,就需要分Chunk进行传输。HTTP2是通过分成多个DATA帧来进行的,最后一个DATA帧有一个END_STREAM标记表示Body的结束。

640?wx_fmt=jpeg

如果HEADERS太大无法用一个HEADERS帧表达,可以后面跟多个CONTINUATION帧,最后一个帧附加END_HEADERS标志即可。

640?wx_fmt=jpeg

在服务器主动向客户端推送资源时,同一个资源流里不使用HEADERS帧,取而代之的是PUSH_PROMISE帧,表示服务器承诺客户端即将推送指定资源数据,用于区别一个常规的HTTP GET资源请求。

640?wx_fmt=jpeg

如果一个TCP连接正在被用于客户端从服务器下载一个大型文件,那么客户端取消发送这个文件的办法只有一个,就是关闭连接。HTTP2则可以在不关闭连接的情况下终止发送文件,客户端向服务器发送一个RST_STREAM帧通知服务器停止相应的资源流即可。这个连接还可以继续服务其它的请求。

HTTP2服务器接收到一个客户端的连接时,第一个要干的事就是和客户端交换SETTINGS帧信息,告知对方一些交互元信息的设置,例如是否开启服务器推送,并行的最大流数量,单帧最大长度等。

在客户端观看视频流时,如果服务器发送的太慢会影响观看体验,如果发的太快,会对客户端的浏览器缓存造成压力。客户端可以使用WINDOW_UPDATE帧通知服务器调整帧窗口大小进而控制服务区发送的数据速率。

640?wx_fmt=jpeg

阅读相关文章,关注微信号【码洞】

UE5实现物体高亮描边效果(含UE相关源码浅析) UE5实现物体高亮描边效果 阅读详情

相关推荐

零基础学会制作 基于STM32/51单片机的智能血压表设计/血压表/血压计

本系统是以单片机为主控,传感器模快、显示模块、人机交互、无线传输等组成的智能血压表设计。传感器用于测量血压和脉搏,主控电路板用于处理数据和控制设备,显示屏则用于显示测量结果。通过软件设计,完成测量数据的处理,其中血压和脉搏的测量、数据的分析和处理等。

weixin_55654459的博客 2473

http2使用入门

http2使用入门 http2主要特性 二进制传输:以二进制方式传输 Header 压缩:专门的"HPACK”算法可以达到50%~90%的高压缩率 多路复用:可以只通过一个 TCP 连接就可以传输所有的请求数据 Server Push:在浏览器刚请求HTML的时候就提前把可能会用到的JS、CSS文件发给客户端,减少等待的延迟, http2注意点 1、http2浏览器支持情况,绝大数浏览器已支持http2 2、大部分浏览器只基于 TLS 部署的HTTP2.0协议,所有一般会先升级成https 3、jdk8以

csdn740228413的博客 3178

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

HTTP2入门

前面文章介绍了ProtoBuf序列化协议,这是gRPC牛逼原因之一,原因之二是采用了HTTP2,HTTP2是从SPDY发展而来,以前淘宝MTOP平台植入了SPDY协议来进行性能优化,这样淘宝客户端调后端接口就能快XX倍,现在应该是换成HTTP2.0了吧,很多年了,都快忘记MTOP是个啥了,所以经常写笔记做整理还是很有必要的。本实验目的是测试HTTP2多路复用特性。

程序员青菜学厨记 688

触摸屏蓝牙控制

使用杰理芯片通过蓝牙实现触摸屏功能,需要结合触摸屏数据采集、蓝牙数据传输以及移动端应用的实现。

m0_46145044的博客 1110

笔记汇总 | 斯坦福 CS229 机器学习

本文为斯坦福大学 2014 秋季 CS229 机器学习课程学习笔记本文主体部分转载自黄海广博士,文末已给出,大家有兴趣可以直接访问笔记首页,下载对应课程资料及作业代码。

ReturnTmp的博客 2465

怎样在 Nginx 中配置 HTTP2 协议?

HTTP2 协议是 HTTP 协议的重大升级,它带来了一系列显著的性能改进。用一个形象的比喻,如果把 HTTP1.1 比作是一条单行道,车辆(数据)只能一辆接一辆地行驶,那么 HTTP2 就是一条多车道的高速公路,车辆(数据)可以同时并行行驶,大大提高了交通(数据传输)的效率。多路复用: 不再像 HTTP1.1 那样需要按顺序依次请求和响应,多个请求和响应可以在同一个连接上同时进行,就好像多条数据流在一根管道中并行传输,互不干扰。头部压缩: 对请求和响应的头部进行压缩,减少了不必要的数据传输量。

发现生活,分享智慧,一起成长! 4117

LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南

本文提供了一份详尽的LS-Dyna模态分析实战指南。文章系统讲解了如何利用LS-Dyna内置的隐式求解器进行特征值求解,从模型构建、几何清理、材料与连接设置,到核心的边界条件与隐式求解控制(如*CONTROL_IMPLICIT_EIGENVALUE),最后完成计算并解读频率与振型结果。旨在帮助工程师在熟悉的环境中高效完成结构振动特性分析,为后续动态响应分析奠定基础。

info6的博客 264

如何启用和配置HTTP/2?

如何启用和配置HTTP/2?

深山技术宅的博客 2447

【Halcon-1D测量】measure_pairs 函数功能(用于提取垂直于矩形/环形弧主轴的直边对)

HALCON算子measure_pairs是1D测量模块的基础工具,专用于提取垂直于矩形/环形弧主轴的直边对。该算子通过振幅阈值和灰度过渡规则(如positive/negative)进行边对分组,支持_strongest后缀选择最强边缘避免误配对。输出包含边缘坐标、振幅及内外间距(IntraDistance/InterDistance)。关键限制包括仅适用于直边、Sigma需≤0.5×测量长度,且忽略图像域。相比模糊版本算子,它更适用于边缘清晰的简单场景(如电子元件间距测量)。典型应用需配合gen_meas

weixin_45590420的博客 306

基于simulink的电动汽车电机驱动系统IGBT开路故障检测

本文介绍了基于Simulink的电动汽车电机驱动系统IGBT开路故障检测方法。通过搭建永磁同步电机(PMSM)驱动系统模型,实现IGBT开路故障注入,并设计基于电流平均值与PWM逻辑比较的故障检测算法。系统可实时采集三相电流信号,通过MATLAB Function模块实现故障诊断,当检测到PWM信号与电流不匹配时输出故障报警。仿真结果显示,系统能在2.05秒内准确识别A相上管开路故障,并通过Scope和XYGraph直观展示故障特征。该方法为电动汽车电力电子系统故障诊断与容错控制提供了实用解决方案,后续可扩

xiaoheshang_123的博客 152

迟来的前端面经

最近也是在换工作,小公司和大厂(虾皮、腾讯)都有面试。几次面试收获还是比较大的,了解许多自己的短板,当然也拿到了合适的offer。本文主要整理下面试遇到的问题和知识点,希望对准备找工作的掘友有所帮助。 基础部分 面试的时候,前端基础知识,还是仔细准备,这一块可以问的东西很多,不管哪一面,都将会有问到,或者通过面试题来考察。 你对css3的动画属性了解多少? 这个问题,是在介绍项目的时候,面试官提出来的。我介绍的项目是一个利用贝塞尔曲线公式,来控制小车做曲线运动移动到对应的位置,抽取奖品。我自己是用js套用公

cpythonsz的博客 370

把 SAP Query 用到极致:ABAP Query 的核心概念、配置流程、权限与运输治理全解析

摘要:SAP Query 是一款面向业务用户的自助报表工具,可解决标准报表无法满足业务需求的问题。其核心由四大组件构成:Queries(报表定义)、InfoSets(数据视图)、User Groups(权限分组)和Translation(多语言支持)。通过SQ03、SQ02、SQ01事务码分步创建用户组、数据视图和查询,业务用户无需ABAP知识即可生成Basic List(明细)、Statistics(统计)和Ranked List(排名)三种报表形式。典型案例展示了如何为采购部门设计包含明细追溯和Top1

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 182

迟来的前端面试经验

然后面试就提了上面的问题,我的回答(常规操作),animation开头的后面的属性,能记住的都说了,最后面试官问我知道 css3也可以设置贝塞尔曲线么,还有 animationend 事件 ,然后项目的新的思路就出来了,利用css3 cubic-bezier 结合动画结束事件 animationend ,就可以实现小车的曲线运动了。具体的实现原理,大家多看看相关的文章,我也在摸索中,哈哈。面试的时候,前端基础知识,还是仔细准备,这一块可以问的东西很多,不管哪一面,都将会有问到,或者通过面试题来考察。

qq_24428851的博客 558

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

系统笔记,迟来的云日志

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33943836的博客 104

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RubyConfChina2012, 迟来的博文, 附部分讲师的PPT

  这篇一直躺在evernote里, 时隔一个月放出来, 迟来的博文。   Matz , Ruby语言创始人. 松本行弘   平生有如此的机会, 能够见到如此伟大的语言设计师, 能够听他现场布道, 感受code for fun的思想. 这绝对一件令人兴奋的事情. matz 从日本而来, 主要宣传了Ruby 2.0 & MobiRuby(mruby).   ruby ...

nodeblog的专栏 227

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

周报 3月14号 迟来的

总结:   这星期并没有很好地完成任务,由于陷入了死循环,又不会问人,导致自己走了非常长的弯路,结果浪费了好多时间,自己的自制力也消退了一些。其实细想一下,把任务首先完成了是当务之急,其次再去扩展,不然深陷泥泞的话,不仅前进慢了,并且有可能就这么深陷其中了。还有向人表达出我有困难的信号,向别人求助是非常必要的,但是我还是没有把握好,并不知道什么时候问人是合适的,而且也不知道自己够格不....

bannesi6888的博客 192

工程岗位面试问题,迟来的6月份字节跳动面经,Activity的6大难点你会几个

我一直以来都有整理练习大厂面试题的习惯,有随时跳出舒服圈的准备,也许求职者已经很满意现在的工作,薪酬,觉得习惯而且安逸。不过如果公司突然倒闭,或者部门被裁减,还能找到这样或者更好的工作吗?我建议各位,多刷刷面试题,知道最新的技术,每三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。我可以将最近整理的一线互联网公司面试真题+解析分享给大家,大概花了三个月的时间整理2246页,帮助大家学习进步。

2301_76190858的博客 928

迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中

服务器发送的事件 (或简称为SSE )是非常有用的协议,它允许服务器通过HTTP将数据推送到客户端。 这是我们的网络浏览器支持的年龄,但令人惊讶的是, JAX-RS规范在很长一段时间内都忽略了这一点。 尽管Jersey提供了适用于SSE媒体类型的扩展名,但该API尚未正式化,因此不能移植到其他JAX-RS实现中。 幸运的是, JAX-RS 2.1 (也称为JSR-370)通过将SSE支持...

最佳 Java 编程 776

计算机网络(2)

计算机网络(2) 文章目录17.Http和Https的区别?18.加密与认证18.1讲讲对称加密与非对称加密?18.2讲讲HTTPS加密与认证过程?(字节问过..)19.TCP 的 TIME_WAIT知道吗?/简述什么是 MSL,为什么客户端要等待2MSL的时间才能完全关闭?20.说说什么是 SYN flood,如何防止这类攻击?(泛洪攻击)21.说说什么是 TCP 粘包和拆包?22.说说从系统层面上,UDP 如何保证尽量可靠?23.说一说 TCP 的 keepalive,以及和 HTTP 的 keep.

qq_56811048的博客 815

*迟来的爱*——《Foursquare》应用源码学习(一) 下载、编译、运行

做Android项目做到好几年的程序,发现技术进步很慢,逐渐往管理发展。。于是, 要看开源项目,学习别人的成功经验,来解决项目中遇到的棘手问题。   于是看到了别人推荐的android的开源源码,找了一个与我现在做的项目差不多的。。FourSquare。。   下载。。。   打开官网,http://code.google.com/p/foursquared/source/check

edwar12345r的专栏 1252

迟来的6月份字节跳动面经(Android 客户端)

作者:老王 开篇 先说明一下, 楼主是二本双非学校, 且非科班生, 有三个App上架, 大三在读 4月1号投了字节的简历, 4月中旬参加了笔试, 4月底收到字节面试邀请 5月初参加了第一轮面试, 5月中旬参加了二面, 5月27日参加了三面 6月8日 offer mail 一面(60分钟) 前15分钟 个人介绍, 什么时候接触的安卓开发, 实习能实习多久, 介绍一下项目 你说你的软件出现了OOM, 你怎么解决的? 线上crash你是用了什么来分析的? 这些项目都是怎么来的? 软件中这些内容都怎么来的.

鸿蒙开发知识记录 431

jax-rs jax-ws_迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中

jax-rs jax-ws 服务器发送的事件 (或简称为SSE )是非常有用的协议,它允许服务器通过HTTP将数据推送到客户端。 这是我们的Web浏览器支持的年龄,但是令人惊讶的是, JAX-RS规范在很长一段时间内都忽略了这一点。 尽管Jersey提供了适用于SSE媒体类型的扩展名,但该API尚未正式化,因此不能移植到其他JAX-RS实现中。 幸运的是, JAX-RS 2.1 (也称为J...

最佳 Java 编程 373

网络协议常用面试题汇总(一)

Buffer:与Channel进行交互,数据是从Channel读入缓冲区,从缓冲区写入Channel中的;flip方法:反转此缓冲区,将position给limit,然后将position置为0,其实就是切换读写模式;clear方法:清除此缓冲区,将position置为0,把capacity的值给limit。rewind方法:重绕此缓冲区,将position置为0;可减少一次系统空间到用户空间的拷贝。但Buffer创建和销毁的成本更高,不可控,通常会用内存池来提供性能。...

故不积跬步无以至千里 2832

Linux总结-----2

Linux知识点1.网络编程1.1IP地址三级目录 1.网络编程 1、网络 :由若干结点和链接这些节点的链路组成(计算机、交换机、路由器) 目的:进行信息交互、资源共享 2、互联网:多个网络连接起来构成互联网 1.1IP地址 ip地址:唯一标识一台主机 端口号:在主机上标识一个进程 三级目录 ...

m0_54720446的博客 166
上一篇: Spark通信原理之Python与JVM的交互
下一篇: 以太坊合约分析之远程购买
codehole_
博客等级 码龄7年 34粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值