QUIC (Quick UDP Internet Connections)は、柔軟性、組み込みのセキュリティ、パフォーマンスの問題の少なさ、採用率の速さにより、伝送制御プロトコル (TCP) を置き換えるように設計された汎用トランスポート層プロトコルです。 QUIC はもともと Google によって開発され、クライアントとサーバー間でパケットを移動するための低レベルのトランスポート メカニズムとしてユーザー データグラム プロトコル (UDP) を使用します。 特に、QUIC は HTTP/1.1 や HTTP/2 のような追加レイヤーではなく、トランスポート層セキュリティ (TLS) を不可欠なコンポーネントとして組み込んでいます。
QUIC をベースにした HTTP/3 は、ハイパーテキスト転送プロトコル (HTTP) の 3 番目のメジャー バージョンであり、2022 年にIETF 標準として採用されました。 QUIC+HTTP/3 は、パフォーマンスとユーザー エクスペリエンスを制限する TCP 固有の制限を解決するために作成されました。
API はアプリケーションの「公開面」であり、アプリケーションが実行する機能と提供できる情報を明らかにし、リクエストの適切な形式を定義します。 開発者がアプリケーションの API を作成して公開すると、他のアプリケーションがそのアプリケーションと通信できるようになります。
多くの場合、API はよく使用される機能をすぐに利用できるようにするため、開発者の貴重な時間を節約します。 既存のアプリケーションの機能を複製するのではなく、開発者は既存のアプリケーションの API を呼び出すことで、その機能をアプリケーションに統合できます。
HTTP トランスポート スタックの概要
QUIC の目標は、HTTP/3 向けに高性能、高信頼性、高セキュリティのトランスポート プロトコルを提供することです (ただし、QUIC は非 HTTP トラフィックにも適しています)。
QUIC を初めて使用する場合は、以下の紹介ビデオを視聴することをお勧めします。
UDP は、最初の接続を確立するために TCP のような複雑な 3 ウェイ ハンドシェイクを必要としない、シンプルで軽量なプロトコルです。 このシンプルさにより、UDP は高速かつコネクションレスになりますが、TCP と比較すると信頼性が高く安全な通信に不可欠な機能が欠けていることも意味します。
QUIC は、UDP プロトコルと TCP プロトコルの両方の利点を融合している点でユニークです。 これはコネクションレスであり、低レベルのトランスポート プロトコルとして UDP を活用して接続とトランスポートの遅延を削減しますが、パケット配信を保証する TCP の接続確立と損失検出機能を再実装しているため、上位層ではコネクション指向です。 失われたデータを識別し、再送信を完了するタスクを処理して、シームレスなユーザー エクスペリエンスを保証します。
QUIC は、HTTP/1.1 や HTTP/2 の場合のように追加レイヤーとしてではなく、不可欠なコンポーネントとして TLS を組み込んでいます。 この組み込みにより、メッセージがデフォルトで暗号化されるようになります。
以下の図は、QUIC ネットワークの基本的な構造を示しています。 図に示されているように、HTTP/3 リクエスト、レスポンス、またはアプリケーション データを含む論理オブジェクトは QUICストリームです。 ネットワーク エンドポイント間の送信では、QUIC ストリームは複数の論理レイヤー内にラップされます。
QUIC ストリームの構造
外側から内側に向かって、論理レイヤーとオブジェクトは次のようになります。
TLS ハンドシェイクは、クライアントとサーバー間の安全な接続を提供します。 QUIC が提供する暗号化にはTLS v1.3 が必要です。 下の図に示すように、QUIC は暗号鍵を提供する TLS「コンテンツ レイヤー」を維持しますが、「レコード レイヤー」を独自のトランスポート メカニズムに置き換えます。
QUIC は、セキュリティとパフォーマンスに重要なパラメータの認証とネゴシエーションにも TLS に依存しています。 厳密な階層化ではなく、2 つのプロトコルが連携します。 QUIC は TLS ハンドシェイクを使用して安全な接続を確立しますが、TLS は QUIC が提供する信頼性、順序付き配信、およびレコード レイヤーを使用します。
大まかに言えば、TLS コンポーネントと QUIC コンポーネントの間には主に 2 つの相互作用があります。
QUIC TLS は、QUIC プロトコル専用に設計された TLS のバリエーションです。 現在、QUIC TLS で HTTP/3 サポートを探しているユーザーには 2 つのオプションがあります。
QUIC+HTTP/3 は、遅延を減らし、信頼性の低いネットワーク上でのデータ配信を改善することで、Web アプリケーションのパフォーマンスを向上させることを目的としています。 それらの利点は次のとおりです。
以下のリソースを参照して、NGINX の QUIC+HTTP/3 実装と、QUIC+HTTP/3 を使用してより高速で効率的な通信を実現するその他の方法について学んでください。