8. HTTPメッセージ交換 (HTTP Message Exchanges)
HTTP/2は、HTTPの現在の使用法とできるだけ互換性があることを意図しています。これは、HTTPの既存のセマンティクスが変更されないことを意味します。
8.1 HTTPリクエスト/レスポンス交換 (HTTP Request/Response Exchange)
HTTPリクエスト/レスポンス交換は以下で構成されます:
- HEADERSフレーム (END_HEADERSフラグ付き)
- 0個以上のCONTINUATIONフレーム (必要な場合)
- 0個以上のDATAフレーム
- オプションの末尾HEADERSフレーム
HTTPリクエスト (HTTP Request)
完全なHTTPリクエストは以下で構成されます:
- END_HEADERSフラグを持つ単一のHEADERSフレーム
- その後に続く0個以上のDATAフレーム
- その後にオプションで続くトレーラー用の1つのHEADERSフレーム
HTTPレスポンス (HTTP Response)
HTTPレスポンスは以下で構成されます:
- END_HEADERSフラグを持つ単一のHEADERSフレーム
- その後に続く0個以上のDATAフレーム
- その後にオプションで続くトレーラー用の1つのHEADERSフレーム
8.2 サーバープッシュ (Server Push)
HTTP/2は、サーバーが以前のクライアント開始リクエストに関連してレスポンスをクライアントに先制的に送信することを可能にします。
サーバープッシュのフロー:
- サーバーがPUSH_PROMISEフレームを送信
- サーバーが約束されたストリーム上でHEADERS + DATAフレームを送信
- クライアントはRST_STREAMを介してプッシュをキャンセル可能
8.3 CONNECTメソッド (The CONNECT Method)
CONNECTメソッドは、HTTP仲介を介してトンネルを確立するために使用されます。