QUIC-TRANSPORT
RFC 9000 QUIC: A UDP-Based Multiplexed and Secure Transport
QUIC: UDPベースの多重化および安全なトランスポート 概要
このドキュメントは、QUICトランスポートプロトコルの中核を定義します。QUICは、構造化通信、低遅延接続の確立、ネットワークパスの移行を実現するフロー制御されたストリームをアプリケーションに提供します。QUICには、様々な導入環境において機密性、整合性、可用性を保証するセキュリティ対策が組み込まれています。付属ドキュメントでは、鍵ネゴシエーション、損失検出、そして輻輳制御アルゴリズムの例となるTLSの統合について説明しています。
1. 概要
QUICは、セキュアな汎用トランスポートプロトコルです。本文書では、QUICのバージョン1を定義します。これは、QUIC-INVARIANTSで定義されているQUICのバージョン非依存のプロパティに準拠しています。 QUICは、クライアントとサーバー間のステートフルな相互作用を実現するコネクション指向プロトコルです。QUICハンドシェイクは、暗号パラメータとトランスポートパラメータのネゴシエーションを組み合わせます。QUICはTLSハンドシェイクTLS13を統合していますが、パケットの保護にはカスタマイズされたフレーミングを使用しています。TLSとQUICの統合については、QUIC-TLSで詳しく説明されています。このハンドシェイクは、アプリケーションデータを可能な限り迅速に交換できるように構成されています。これには、クライアントがデータを即時送信するオプション(0-RTT)が含まれており、このオプションを有効にするには、事前の何らかの通信または設定が必要です。エンドポイントは、QUICパケットを交換することでQUIC通信を行います。ほとんどのパケットにはフレームが含まれており、エンドポイント間で制御情報とアプリケーションデータを伝送します。 QUICは各パケット全体を認証し、各パケットの可能な限り多くの部分を暗号化します。QUICパケットは、既存のシステムやネットワークへの導入を容易にするために、UDPデータグラムUDPで伝送されます。アプリケーションプロトコルは、順序付けられたバイト列であるストリームを介してQUIC接続上で情報を交換します。ストリームには、両方のエンドポイントからデータを送信できる双方向ストリームと、単一のエンドポイントからデータを送信できる単方向ストリームの2種類があります。クレジットベースの方式を使用して、ストリームの作成を制限し、送信可能なデータ量を制限します。QUICは、信頼性の高い配信と輻輳制御を実現するために必要なフィードバックを提供します。データ損失を検出して回復するためのアルゴリズムは、QUIC-RECOVERYのセクション6に記載されています。QUICは、ネットワーク輻輳を回避するために輻輳制御に依存しています。輻輳制御アルゴリズムの例は、QUIC-RECOVERYのセクション7に記載されています。QUIC接続は、単一のネットワークパスに厳密に束縛されるわけではありません。接続移行では、接続識別子を使用して、接続を新しいネットワークパスに転送できるようにします。このバージョンのQUICでは、クライアントのみが移行可能です。この設計により、NATの再バインドなどによるネットワークトポロジやアドレスマッピングの変更後も接続を継続できます。接続が確立された後は、複数の接続終了オプションが提供されます。アプリケーションは正常なシャットダウンを管理でき、エンドポイントはタイムアウト期間をネゴシエートでき、エラー発生時には即座に接続を切断できます。また、ステートレスメカニズムにより、一方のエンドポイントの状態が失われた後でも接続を終了できます。