http2-frame-WINDOW_UPDATE
WINDOW_UPDATE帧(type=0x8)用来实现流量控制
WINDOW_UPDATE用来通知对等端(数据发送端)加大流量控制窗口值。增量为 Window Size Increment,单位为字节数。
算法是这样的:
- 发送端保有一个流量控制窗口(window)初始值。初始值的设定请参考SETTING 帧的 SETTINGS_INITIAL_WINDOW_SIZE
- 发送端每发送一个DATA帧,就把window递减,递减量为这个帧的大小。如果当前window小于帧大小,那么这个帧就必须被拆分到不大于window,如果window等于0,就不能发送任何帧
- 接收端可以发送 WINDOW_UPDATE帧给发送端,发送端以帧内指定的Window Size Increment作为增量,加到window上
0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|X| Window Size Increment (31) |+-+-------------------------------------------------------------+###字段
**X** :保留字段,1bit
**Window Size Increment** 31bits unsigned int
限定
流量控制只适用于数据帧。非数据帧是不受流量控制的,必须被接收和处理,除非接收端无法为帧分配资源。
可以针对整个连接或者某个具体的流。帧的流标识符为0 针对整个连接;否则指的是被影响的流;
可以由一个已经发送带有END_STREAM标记的帧的对等端来发送。这意味着接收端可以在“半关闭(远程)”或者“关闭”的流上接收WINDOW_UPDATE帧。接收端绝对不能作为错误处理
即使发生了帧错误,只要没有发生连接错误,接收端都必须以此帧来计算流控窗口(window)。因为发送端一发送就将这个帧计入了流量控制窗口,如果接收端没有这样做,发送端和接收端的流量控制
会出现差异。
所有类型的流量控制都是逐跳的(hop-by-hop);中介端不在依赖的连接上转发WINDOW_UPDATE帧。但是,接收端对数据的节流措施可以直接传播到原始发送端(而不是仅仅限于最近的中介)。
错误处理
接收端如果无法接收帧,可以响应一个流错误或者类型为流量控制错误的连接错误
http2-frame-WINDOW_UPDATE相关推荐
- http2协议翻译(转)
超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...
- netty系列之:netty对http2消息的封装
文章目录 简介 http2消息的结构 netty对http2的封装 Http2Stream Http2Frame 总结 简介 无论是什么协议,如果要真正被使用的话,需要将该协议转换成为对应的语言才好真 ...
- Nginx源码分析之 HTTP2
Nginx 分析之 HTTP2 首先,Nginx作为WEB服务器或者作为proxy,其基本的处理逻辑就是根据不同的Header.Method进行业务处理,无论前端协议是HTTP2还是HTTP 1.x, ...
- 【技术点】Http/Https/Http2
文章目录 几个HTTP协议 HTTPS HTTPS是搞什么事的 SSL/TLS协议 HTTPS和HTTP几个不同点 express创建https服务器 生成证书 express创建https服务 ex ...
- 超文本传输协议版本 2 [http/2 spec]
Github:中英对照版 超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/ ...
- HTTP 2.0 中文版
HTTP 2.0 中文版 开源中国的 IT 公司开源软件整理计划介绍 HTTP 全称为 HyperText Transfer Protocol,中文叫做超文本传输协议.用于 Web 应用层传输,是 ...
- HTTP/2.0 中英文对照
超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...
- netty系列之:一个价值上亿的网站速度优化方案
文章目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活. ...
- grpc-go客户端源码分析
grpc-go客户端源码分析 代码讲解基于v1.37.0版本. 和grpc-go服务端源码分析一样,我们先看一段示例代码, const (address = "localhost:50051 ...
- gRPC基础解读与源代码过程分析
gRPC基础解读与源代码过程分析 文章目录 gRPC基础解读与源代码过程分析 GRPC安装 什么是RPC以及什么是gRPC 简述gRPC的开发步骤 gRPC代码过程 Client流程 Server流程 ...
最新文章
- mysql 中datetime_MySQL中Datetime与Timestamp
- 【CentOS】如何在线安装pcre?
- KeyError: 报错_python系列学习笔记
- Ubuntu14.04 x64系统设置Qt5.8桌面快捷方式
- 数字与企鹅的战争,看周红衣的高明之处
- ios html清除缓存图片,iOS,如何清理缓存的图片
- Entlib DAAB映射枚举类型
- cad被管理员阻止_CAD注册机无法以管理员身份输入的解决方案
- VB.net 调用FFmpeg简单处理视频(类库——6)
- 本地计算机的硬件基本配置信息,Windows7系统如何查看硬件的基本配置
- 虚拟机ubuntu左侧和上方工具栏消失
- setheading指令_set echo on/off,set term on/off,set feedback off,set heading off命令(转)
- 闽侯一中2021年高考成绩查询,2021年福州高考各高中成绩及本科升学率数据排名及分析...
- Android识别字符串中的简体和繁体字
- fl studio mobile安卓,ios下载
- android手机 无电池开机画面,安卓手机无法开机的6种解决方法
- MATLAB中用李沙育图形分析光栅尺sincos信号正交性
- Statistical Analysis:关联度分析之灰色关联分析软件
- linux的标准输入输出
- python 字符串和数字组合变量名
热门文章
- mysql根据视图update表数据_怎么更新Mysql数据表视图中数据
- vue 跳转到选项卡_使用 DevTools 新增的 Issues 选项卡发现网页问题
- ea建模 教学_周末特惠:EA促销开启,吉你太美首次打折 + EA旗下多款游戏登陆Steam,EA access即将推出...
- c# zxing条形码设置密度_C# 中 ZXing.Net 怎样突破 条形码 多识别 数量限制
- poythoncode-实战5--json 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
- python-excel写入代码
- python中的math.floor可以用于整数吗_为什么Python的math.ceil()和math.floor()操作返回浮点数而不是整数?...
- docker给php装swoole,制作php+swoole的Docker环境
- word2vec训练与相似度计算
- HDFS中JAVA API的使用