为什么流标识符在HTTP / 2中为31位,为什么它在保留位之前?

时间:2016-09-03 17:14:46

标签: http2

HTTP / 2中的帧格式如下所示(来源:HTTP/2: Frame Format):

+-----------------------------------------------+
|                 Length (24)                   |
+---------------+---------------+---------------+
|   Type (8)    |   Flags (8)   |
+-+-------------+---------------+-------------------------------+
|R|                 Stream Identifier (31)                      |
+=+=============================================================+
|                   Frame Payload (0...)                      ...
+---------------------------------------------------------------+
  

- [R :   保留的1位字段。该位的语义未定义,发送时必须保持未设置(0x0),接收时必须忽略。

     

流标识符:表示为无符号31位整数的流标识符(请参阅Section 5.1.1)。值0x0保留给与整个连接相关联的帧,而不是单个流。

他们没有使用32位无符号整数的原因吗?为什么指定保留位必须设置为0并且必须被接收器忽略?

它只是对像Java这样没有32位无符号整数的语言的让步吗?

1 个答案:

答案 0 :(得分:3)

在这里讨论:https://github.com/http2/http2-spec/issues/67

  

目的是用于流重新优先级化的实验。

     

http://lists.w3.org/Archives/Public/ietf-http-wg/2013AprJun/0135.html

     

还可以防止某些实施方案出现问题   签名与未签名

     

在汉堡讨论;是各种用例,无需删除   (现在)。