美文网首页
HTTP/2协议之Stream【原理笔记】

HTTP/2协议之Stream【原理笔记】

作者: 瓜农老梁 | 来源:发表于2020-05-31 21:16 被阅读0次

前言

前面三篇介绍了HPPT/2的“连接前言”、“二进制桢”、“头部压缩”。本文从“流及多路复用”、“流状态”、“流量控制”、“流优先级”、“HTTP/2扩展”介绍HTTP/2协议流相关知识。

一、流与多路复用


前面介绍桢格式时,每个桢都有一个流标示,标记自己属于哪个流。通过将相同流标识的桢组装,桢之间时有严格顺序的,即形成了“流”。

流标示抓包图.jpg

多路复用
一个HTTP/2连接可以并非很多个流,流ID顺序递增且互相独立,形成多路复用。由客户端发起的流ID为奇数,服务端发起的为偶数。

二、流状态

idle
流空闲状态,可以发送接收HEADERS帧

open
流开启状态,idle发送或者接受HEADERS帧后,状态变更为开启

half closed
发送包含END_STREAM桢的一端流转为本地半关闭half closed(local),表示客户端发送请求数据完毕,等待服务端响应数据,接受到服务端发送的END_STREAM进入close关闭状态。接受END_STREAM桢的另一端称为远程半关闭状态half closed(remote),表示服务端知道客户端请求已经发送完毕,处理结束后可以发送响应数据,并发送END_STREAM到客户端,进入close关闭状态。

close
流的关闭状态。除了half closed数据发送结束关闭外,发送RST_STREAM(发生错误或取消)也可关闭流。

流状态交互示意图

流状态示意图.png

三、流量控制

流量控制是保护接收方的机制,通过配额机制实现。发送端每发送数据后window窗口大小相应的减少。当发送端收到接收端WINDOW_UPDATE桢后window窗口增加。window等于0则不可以进行发送,窗口初始值为65535字节。

Wireshark抓包截图--WINDOW_UPDATE.jpg

四、流优先级

通过发送端向接收端发送优先级权重期待接收端给予资源分配支持,接受端不保证一定遵守,默认权重为16。优先级表达可以通过HEADERS或者单独发送PRIORITY帧实现。

流优先级示图

流优先级权重.jpg

五、流依赖

客户端通过PRIORITY帧可以告诉服务端当前流所依赖的流,形成流依赖树。同一父级的各个字节点通过权重分配资源;父级先分配资源传输结束后,再分配子级资源。

PRIORITY帧.jpg

六、总结

通HTTP/2的四篇文章,对HTTP2工作原理有了全局的认识,相信再阅读HTTP/2相关文献不再困难。


作者老梁,哈啰出行高级技术专家,参与了《RocketMQ技术内幕》审稿工作。专注后端中间件方向,已陆续发表RocketMQ系列、Kafka系列、gRPC系列、Sentinel系列、Java NIO系列。其中RocketMQ系列已发表40余篇。源码、实战、原理、调优期待与你一起学习。

image

相关文章

  • HTTP/2协议之Stream【原理笔记】

    前言 前面三篇介绍了HPPT/2的“连接前言”、“二进制桢”、“头部压缩”。本文从“流及多路复用”、“流状态”、“...

  • IMT星际源码 - 20181212

    go-libp2p 之 NewStream 深层阅读笔记 Stream 的 Header 协议 格式 Versio...

  • Golang面试之HTTP

    引用 HTTP协议详解 HTTP协议原理详解及应用 LwIP应用开发笔记之八:LwIP无操作系统HTTP客户端 U...

  • 第六个模块 HTTP协议、Restful

    HTTP协议 · HTTP协议 · 工作原理 HTTP协议请求 HTTP协议响应 HTTP协议消息报头 1、普通报...

  • HTTP协议:工作原理

    HTTP协议:工作原理 1. HTTP简介 HTTP协议(HyperText Transfer Protocol,...

  • 8.php与web页面交互

    web工作原理 HTTP协议 HTTP协议(HyperText Transfer Protocol,超文本传输协议...

  • 第六章:HTTP协议

    第一节:HTTP协议:超文本传输协议 1.URL(链接)预备知识 2.http工作原理(重要) 3.http请求(...

  • Doris系列11-数据导入之Stream load

    一. Stream load概述 Stream load 是一个同步的导入方式,用户通过发送 HTTP 协议发送请...

  • HTTP协议

    HTTP 协议 工作原理 HTTP协议请求 HTTP协议响应 常见状态代码、状态描述、说明: HTTP协议消息报头

  • HTTP协议原理

    原文出处: 刘望舒的专栏 前言 这篇文章是这个系列的开篇,作为移动开发者,开发的应用不免会对网络进行访问,虽然现在...

网友评论

      本文标题:HTTP/2协议之Stream【原理笔记】

      本文链接:https://www.haomeiwen.com/subject/gjorzhtx.html