4. ALTSVC HTTP/2 フレーム
ALTSVC HTTP/2 フレーム([RFC7540]、セクション 4)は、HTTP/2 クライアントに代替サービスの可用性を通知します。
ALTSVC フレームは、HTTP/2 への非クリティカルな拡張です。このフレームをサポートしないエンドポイントは、それを無視します([RFC7540] のセクション 4.1 で定義されている拡張性ルールに従って)。
ストリーム 0 以外のストリーム上のサーバーからクライアントへの ALTSVC フレームは、伝達された代替サービスがそのストリームのオリジンに関連付けられていることを示します。
ストリーム 0 上のサーバーからクライアントへの ALTSVC フレームは、伝達された代替サービスがフレームの Origin フィールドに含まれるオリジンに関連付けられていることを示します。クライアントが現在の接続に対して権限がある(authoritative)と見なさないオリジンとの関連付けは、無視されなければなりません(MUST)。
ALTSVC フレームタイプは 0xa(10進数 10)です。
+-------------------------------+-------------------------------+
| Origin-Len (16) | Origin? (*) ...
+-------------------------------+-------------------------------+
| Alt-Svc-Field-Value (*) ...
+---------------------------------------------------------------+
ALTSVC フレームペイロード
ALTSVC フレームには、以下のフィールドが含まれています:
- Origin-Len: Origin フィールドの長さをオクテット単位で示す符号なし 16 ビット整数。
- Origin: 代替サービスが適用可能なオリジン([RFC6454]、セクション 6.2)の ASCII シリアル化を含むオプションの文字シーケンス。
- Alt-Svc-Field-Value: セクション 3 で定義された Alt-Svc フィールド値(ABNF 生成規則 "Alt-Svc")と同一の値を含むオクテットのシーケンス(長さは、フレーム長から先行するすべてのフィールドの長さを引くことによって決定されます)。
ALTSVC フレームはフラグを定義しません。
ALTSVC フレームは、クライアントによる受信を意図しています。サーバーとして機能するデバイスは、それを無視しなければなりません(MUST)。
空(長さ 0)の "Origin" 情報を持つストリーム 0 上の ALTSVC フレームは無効であり、無視されなければなりません(MUST)。空でない "Origin" 情報を含むストリーム 0 以外のストリーム上の ALTSVC フレームは無効であり、無視されなければなりません(MUST)。
ALTSVC フレームはホップバイホップで処理されます。仲介者は ALTSVC フレームを転送してはなりませんが(MUST NOT)、独自のクライアントに送信するための新しい ALTSVC フレームを形成する際に ALTSVC フレームに含まれる情報を使用できます。
ALTSVC フレームを受信することは、意味的に Alt-Svc ヘッダーフィールドを受信することと同等です。その結果、ALTSVC フレームは、対応するオリジンの代替サービスを置き換えます。受信順序を予測するのが難しい場合があるため、Alt-Svc ヘッダーフィールドの使用と ALTSVC フレームの使用を混在させることは賢明ではないことに注意してください。