メインコンテンツまでスキップ

3. HTTP/2の開始 (Starting HTTP/2)

HTTP/2接続は、いくつかのメカニズムを通じて確立されます:

  • "https" URIの場合: ALPN拡張を使用したTLS
  • "http" URIの場合: HTTPアップグレードメカニズム
  • 事前知識 (Prior Knowledge): ネゴシエーションなしの直接HTTP/2

3.1 HTTP/2バージョン識別 (HTTP/2 Version Identification)

HTTP/2は、TLSの場合はプロトコル識別子 (Protocol Identifier) "h2"を使用し、クリアテキストTCPの場合は"h2c"を使用します。

3.2 "http" URI用のHTTP/2の開始 (Starting HTTP/2 for "http" URIs)

クライアントは、"h2c"トークンとHTTP2-Settingsヘッダーフィールドを使用してHTTPアップグレードメカニズム (HTTP Upgrade Mechanism) を使用します。

3.3 "https" URI用のHTTP/2の開始 (Starting HTTP/2 for "https" URIs)

クライアントは、アプリケーション層プロトコルネゴシエーション (Application-Layer Protocol Negotiation, ALPN) 拡張を使用したTLSを使用します。

3.4 事前知識によるHTTP/2の開始 (Starting HTTP/2 with Prior Knowledge)

クライアントは、サーバーサポートの事前知識が存在する場合、HTTP/2フレームを直接送信してもよい (MAY) です。

3.5 HTTP/2接続プリフェース (HTTP/2 Connection Preface)

クライアントとサーバーの両方は、HTTP/2接続の確立時に接続プリフェース (Connection Preface) を送信しなければなりません (MUST)。

クライアントプリフェース: PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n の後にSETTINGSフレームが続きます。

サーバープリフェース: SETTINGSフレーム。