Почему идентификатор потока 31-битный в HTTP/2 и почему ему предшествует зарезервированный бит?

Формат кадра в HTTP/2 выглядит следующим образом (источник: HTTP/2: Формат кадра):

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

R: зарезервированное 1-битное поле. Семантика этого бита не определена, и этот бит ДОЛЖЕН оставаться неустановленным (0x0) при отправке и ДОЛЖЕН игнорироваться при получении.

Идентификатор потока. Идентификатор потока (см. раздел 5.1.1) выражается как 31-битное целое число без знака. Значение 0x0 зарезервировано для кадров, связанных с соединением в целом, а не с отдельным потоком.

Есть ли причина, по которой они не использовали 32-битное целое число без знака? И зачем указывать, что зарезервированный бит должен быть установлен в 0 и должен игнорироваться получателем?

Это просто уступка таким языкам, как Java, в которых нет 32-битного целого числа без знака?


person Philipp Claßen    schedule 03.09.2016    source источник


Ответы (1)


Обсуждается здесь: https://github.com/http2/http2-spec/issues/67

Цель — поэкспериментировать с изменением приоритетов потока.

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

Также для защиты от некоторых реализаций, имеющих проблемы с подписанными и неподписанными.

Обсуждено в Гамбурге; различные варианты использования, не нужно удалять (сейчас).

person Barry Pollard    schedule 03.09.2016
comment
реализации, имеющие проблемы со знаком и без знака, - это причудливая формулировка для Java, не имеющая 32-битного целого числа без знака - person Daniel Stenberg; 11.09.2016