WINDOW_UPDATE帧(type=0x8)用来实现流量控制

WINDOW_UPDATE用来通知对等端(数据发送端)加大流量控制窗口值。增量为 Window Size Increment,单位为字节数。

算法是这样的:

  1. 发送端保有一个流量控制窗口(window)初始值。初始值的设定请参考SETTING 帧的 SETTINGS_INITIAL_WINDOW_SIZE
  2. 发送端每发送一个DATA帧,就把window递减,递减量为这个帧的大小。如果当前window小于帧大小,那么这个帧就必须被拆分到不大于window,如果window等于0,就不能发送任何帧
  3. 接收端可以发送 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相关推荐

  1. http2协议翻译(转)

    超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...

  2. netty系列之:netty对http2消息的封装

    文章目录 简介 http2消息的结构 netty对http2的封装 Http2Stream Http2Frame 总结 简介 无论是什么协议,如果要真正被使用的话,需要将该协议转换成为对应的语言才好真 ...

  3. Nginx源码分析之 HTTP2

    Nginx 分析之 HTTP2 首先,Nginx作为WEB服务器或者作为proxy,其基本的处理逻辑就是根据不同的Header.Method进行业务处理,无论前端协议是HTTP2还是HTTP 1.x, ...

  4. 【技术点】Http/Https/Http2

    文章目录 几个HTTP协议 HTTPS HTTPS是搞什么事的 SSL/TLS协议 HTTPS和HTTP几个不同点 express创建https服务器 生成证书 express创建https服务 ex ...

  5. 超文本传输协议版本 2 [http/2 spec]

    Github:中英对照版 超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/ ...

  6. HTTP 2.0 中文版

    HTTP 2.0 中文版 开源中国的 IT 公司开源软件整理计划介绍 HTTP 全称为 HyperText Transfer Protocol,中文叫做超文本传输协议.用于 Web  应用层传输,是 ...

  7. HTTP/2.0 中英文对照

    超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...

  8. netty系列之:一个价值上亿的网站速度优化方案

    文章目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活. ...

  9. grpc-go客户端源码分析

    grpc-go客户端源码分析 代码讲解基于v1.37.0版本. 和grpc-go服务端源码分析一样,我们先看一段示例代码, const (address = "localhost:50051 ...

  10. gRPC基础解读与源代码过程分析

    gRPC基础解读与源代码过程分析 文章目录 gRPC基础解读与源代码过程分析 GRPC安装 什么是RPC以及什么是gRPC 简述gRPC的开发步骤 gRPC代码过程 Client流程 Server流程 ...

最新文章

  1. mysql 中datetime_MySQL中Datetime与Timestamp
  2. 【CentOS】如何在线安装pcre?
  3. KeyError: 报错_python系列学习笔记
  4. Ubuntu14.04 x64系统设置Qt5.8桌面快捷方式
  5. 数字与企鹅的战争,看周红衣的高明之处
  6. ios html清除缓存图片,iOS,如何清理缓存的图片
  7. Entlib DAAB映射枚举类型
  8. cad被管理员阻止_CAD注册机无法以管理员身份输入的解决方案
  9. VB.net 调用FFmpeg简单处理视频(类库——6)
  10. 本地计算机的硬件基本配置信息,Windows7系统如何查看硬件的基本配置
  11. 虚拟机ubuntu左侧和上方工具栏消失
  12. setheading指令_set echo on/off,set term on/off,set feedback off,set heading off命令(转)
  13. 闽侯一中2021年高考成绩查询,2021年福州高考各高中成绩及本科升学率数据排名及分析...
  14. Android识别字符串中的简体和繁体字
  15. fl studio mobile安卓,ios下载
  16. android手机 无电池开机画面,安卓手机无法开机的6种解决方法
  17. MATLAB中用李沙育图形分析光栅尺sincos信号正交性
  18. Statistical Analysis:关联度分析之灰色关联分析软件
  19. linux的标准输入输出
  20. python 字符串和数字组合变量名

热门文章

  1. mysql根据视图update表数据_怎么更新Mysql数据表视图中数据
  2. vue 跳转到选项卡_使用 DevTools 新增的 Issues 选项卡发现网页问题
  3. ea建模 教学_周末特惠:EA促销开启,吉你太美首次打折 + EA旗下多款游戏登陆Steam,EA access即将推出...
  4. c# zxing条形码设置密度_C# 中 ZXing.Net 怎样突破 条形码 多识别 数量限制
  5. poythoncode-实战5--json 文件读取,文本文件,csv文件,存到系统中以大列表方式进行存储
  6. python-excel写入代码
  7. python中的math.floor可以用于整数吗_为什么Python的math.ceil()和math.floor()操作返回浮点数而不是整数?...
  8. docker给php装swoole,制作php+swoole的Docker环境
  9. word2vec训练与相似度计算
  10. HDFS中JAVA API的使用