[21] ストリーム識別子は、 ストリームを接続中で一意に識別する整数です。 すべての HTTP/2 ストリームには、ストリーム識別子がちょうど1つだけ割り当てられます。
[15] フレームのストリーム識別子欄は、 ストリーム識別子を符号無し31ビット整数 (ネットワークバイト順 >>14) として表したものです。 >>13
[16] 値としては、ストリーム識別子か、接続全体を表す 0x0
を指定できます。ただしフレーム型によっては、どちらかに限定されています。
[20] PUSH_PROMISE
フレームの約束ストリームID欄には、
予約するストリームのストリーム識別子を設定します。
[23] GOAWAY
フレームの最終ストリームID欄には、
一部または全部を処理したストリームのストリーム識別子を設定します。
[3] ストリーム識別子 0x0
は、接続全体の制御メッセージに使います。
個々のストリームには使えません。 >>1, >>13
[12] ストリーム識別子 0x0
は、依存性の木の根としても使われます
>>11。
[24] GOAWAY
フレームの最大ストリームID欄では、
該当するストリームが無い場合には、値として 0x0
を使います >>22。
[4] HTTP/1.1 から Upgrade: h2c
で切り替えた場合は、
HTTP/1.1 の要求に対する応答でストリーム 0x1
を使います >>1, >>47。切り替え完了後、クライアントでは half-closed (local)
状態となります >>1, >>47。サーバーでは half-closed (remote)
状態となります >>47。
[5] クライアントが開始したストリームは、奇数を使わなければなりません。 サーバーが開始したストリームは、偶数を使わなければなりません。 >>1
[6] 新しいストリームのストリーム識別子は、 当該エンドポイントが開始したストリームのいずれよりも大きな値としなければなりません。 >>1
[7] 予期しないストリーム識別子を受信したら、接続エラー
PROTOCOL_ERROR
としなければなりません >>1。
[18] ストリーム識別子が 0 のフレームに長さの問題があれば、 接続エラーとなります。
[8] 新しいストリーム識別子が最初に使われた時、 当該 peer が開始し未だ idle 状態にある、より小さなストリーム識別子のストリームは、 すべて暗示的に閉じられ (closed 状態となり) ます。 >>1
R
ビット[17] フレームの共通のヘッダー >>13 や
PUSH_PROMISE
フレーム >>19 や
GOAWAY
フレーム >>22
には、ストリーム識別子31ビットの直前に予約の
R
欄1ビットがあります >>13, >>19。意味は定義されていません。
[26] WINDOW_UPDATE
フレームにも予約の R
欄1ビットがあります >>25。その意味は定義されていません。
こちらはストリーム識別子の前ではありません。