PRIORITY 优先级帧

优先级帧(type=0x2)明确了发送者建议的流的优先级。它可以任意时间在存在的流中发送,包括已关闭的流。这个使得在已存在的流中重新排列优先级次序成为可能。

  0                   1                   2                   3
  0 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
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |E|                  Stream Dependency (31)                     |
 +-+-------------+-----------------------------------------------+
 |   Weight (8)  |
 +-+-------------+

字段:

  • E : 指示流的依赖是专有(exclusive)的。1 bit
  • Stream Dependency : 标识流所依赖的流的31位流标识符 31bit.
  • Weight: 流的依赖的的权重(8位)

Flag

优先级不定义任何标记。

优先级指示需要与存在的流相关联。如果接收端收到流标识为0的优先级帧,必须响应一个类型为协议错误的连接错误

限定

优先级帧可以在流状态为“保留(远端)”、“打开"、“半封闭(本地)”或者“半封闭(远程)”状态下发送,但它不能在由单个报头区块组成的连续帧之间发送。需要注意的是这个帧可能在处理或者帧发送已经完成之后才到达,这可能导致没有效果。对于处于“半封闭(远程)”状态下的流,优先级帧只能影响流的处理而不是传输。

优先级帧是关闭的流上唯一允许发送的帧。这允许通过修改可能已关闭的父节点流的优先级来重新设置一组有依赖的流的优先级。然而,关闭流上发送的优先级帧可能存在被对等端忽略的风险,因为对等端可能已经丢弃了这个流的优先级状态信息。


Reco
4.6k 声望541 粉丝

敢作敢为