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

1. Introduction (はじめに)

HTTPセマンティクス (HTTP Semantics) ([HTTP]) は、インターネット上の幅広いサービスで使用されています。これらのセマンティクスは、最も一般的にHTTP/1.1とHTTP/2で使用されています。HTTP/1.1はさまざまなトランスポート層とセッション層で使用されており、HTTP/2は主にTCP上のTLSで使用されています。HTTP/3は、新しいトランスポートプロトコルであるQUICで同じセマンティクスをサポートします。

1.1. Prior Versions of HTTP (HTTPの以前のバージョン)

HTTP/1.1 ([HTTP/1.1]) は、空白で区切られたテキストフィールドを使用してHTTPメッセージを伝達します。これらの交換は人間が読める形式ですが、メッセージのフォーマットに空白を使用すると、解析の複雑さと変異的な動作に対する過度の許容につながります。

HTTP/1.1には多重化レイヤー (Multiplexing Layer) が含まれていないため、複数のTCP接続がリクエストを並列処理するためによく使用されます。しかし、TCPは複数の接続間で輻輳制御 (Congestion Control) を共有しないため、これはネットワーク効率と輻輳制御に悪影響を及ぼします。

HTTP/2 ([HTTP/2]) は、トランスポート層を変更せずに遅延を改善するために、バイナリフレーミング (Binary Framing) と多重化レイヤーを導入しました。しかし、HTTP/2の多重化の並列性がTCPの損失回復メカニズム (Loss Recovery Mechanisms) に見えないため、失われたパケットまたは順序が変更されたパケットは、そのトランザクションがパケット損失によって直接影響を受けたかどうかに関係なく、すべてのアクティブなトランザクションが停止 (Stall) を経験する原因となります。

1.2. Delegation to QUIC (QUICへの委任)

QUICトランスポートプロトコル (QUIC Transport Protocol) は、HTTP/2フレーミングレイヤーによって提供されるものと同様の、ストリーム多重化 (Stream Multiplexing) とストリームごとのフロー制御 (Per-Stream Flow Control) を組み込んでいます。ストリームレベルで信頼性 (Reliability) を提供し、接続全体で輻輳制御を提供することにより、QUICはTCPマッピングと比較してHTTPのパフォーマンスを向上させる能力を持っています。QUICはまた、トランスポート層にTLS 1.3 ([TLS]) を組み込んでおり、TCP上でTLSを実行するのと同等の機密性 (Confidentiality) と完全性 (Integrity) を提供し、TCP Fast Open ([TFO]) の改善された接続確立遅延を備えています。

本文書は、HTTP/3を定義します。これは、QUICトランスポートプロトコル上でのHTTPセマンティクスのマッピングであり、HTTP/2の設計に大きく依存しています。HTTP/3は、データの機密性と完全性保護、ピア認証 (Peer Authentication)、および信頼性のある順序付きのストリームごとの配信を提供するためにQUICに依存しています。ストリームのライフタイム (Stream Lifetime) とフロー制御の問題をQUICに委任する一方で、各ストリームでHTTP/2フレーミングに類似したバイナリフレーミングが使用されます。一部のHTTP/2機能はQUICに包含され、他の機能はQUICの上に実装されます。

QUICは [QUIC-TRANSPORT] で説明されています。HTTP/2の完全な説明については、[HTTP/2] を参照してください。