sgcQUIC 機能マトリックス — QUIC、HTTP/3、WebTransport | eSeGeCe

sgcQUIC 機能マトリックス

sgcQUIC のすべての機能を、4 つのコンポーネントとそれぞれが実装する RFC にわたって整理しています。生の QUIC のペアはストリームとデータグラムを提供し、HTTP/3 のペアはリクエスト/レスポンス、QPACK、WebTransport を追加します。すべての機能は Delphi、C++ Builder、.NET で同じように動作し、すべてのライセンスに完全なソースコードが付属します。コンポーネントをクリックすると、使い方と例を載せた専用ページが開きます。

HTTP/3

RFC 9114 + QPACK

WebTransport

RFC 9220

4 つのパレットコンポーネント

2 つのレイヤー: 生の QUIC トランスポートと、その上に構築された HTTP/3 のリクエスト/レスポンスです。

コンポーネントクラスファミリー説明
QUIC クライアントTsgcQUICClientQUIC生の QUIC トランスポートクライアント: ストリームとデータグラム、0-RTT、コネクションマイグレーション(RFC 9000)。
QUIC サーバーTsgcQUICServerQUIC生の QUIC トランスポートサーバー: UDP ポートをバインドし、TLS 1.3 を終端し、コネクションごと・ストリームごとにイベントを発生させます。
HTTP/3 クライアントTsgcHTTP3ClientHTTP/3QPACK、Alt-Svc、サーバープッシュ、Extended CONNECT、WebTransport に対応した HTTP/3 クライアント(RFC 9114)。
HTTP/3 サーバーTsgcHTTP3ServerHTTP/3HTTP/3 サーバー: QUIC 上でリクエストを処理し、サーバープッシュ、WebTransport セッション、データグラムに対応します。

QUIC トランスポート(RFC 9000)

トランスポート層を直接公開しており、QUIC の上に独自のプロトコルを構築できます。

機能クライアントサーバー備考
トランスポートと TLS 1.3 を統合した単一のハンドシェイク1 回のやり取りでコネクションが確立します。別途の TLS ラウンドトリップは不要です。
独立した双方向ストリームパケットが失われても、そのデータを運んでいたストリームだけが止まります。
単方向ストリームbuiltin エンジンでの OpenStream(aUnidirectional := True)
1 コネクションあたり複数のストリームqmBuiltin エンジンでの EnableMultiStream / OpenStream
0-RTT 再開再開されたセッションは、最初のやり取りで early data を運べます。
コネクションマイグレーションconnection ID ベースで、クライアントのネットワーク切り替えを乗り越えます。
バイト列の送受信WriteDataWriteData(connection, …)ストリーム上で string または TBytes のペイロードを扱います。
コネクションのライフサイクルイベントOnQUICConnect / OnQUICDisconnectOnQUICConnect / OnQUICDisconnectトランスポートエラー用の OnQUICException もあります。
受信ストリームデータイベントOnQUICStreamDataOnQUICStreamData / OnQUICDataストリームのバイト列が届くたびに発生します。

HTTP/3(RFC 9114)& QPACK(RFC 9204)

QUIC 上の HTTP セマンティクスで、HTTP/3 固有の仕組みはメソッドとイベントとして公開されます。

機能クライアントサーバー備考
リクエストメソッドGET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS, TRACE, CONNECT, QUERYクライアント側ではそれぞれブロッキング呼び出しとして提供され、多くには非同期版もあります。
QPACK ヘッダー圧縮RFC 9204。動的テーブルの更新は専用のエンコーダー/デコーダーストリームで行われます。
Alt-Svc によるディスカバリーOnAltSvcアドバタイズRFC 7838。クライアントがヘッダーを解析し、切り替えるタイミングはアプリケーション側で判断します。
サーバープッシュSetMaxPushId / OnPushPromise / OnPushOnH3Request からプッシュクライアントは上限をアドバタイズし、プッシュされたレスポンスを拒否できます。
Extended CONNECT トンネルExtendedConnect / TunnelSend / OnTunnelDataOnH3TunnelData / TunnelSendRFC 9220 は、リクエストストリームを通じて別のプロトコルをトンネリングします。
リクエストイベントOnH3Requestリクエストごとに発生し、アプリケーションがレスポンスを埋めます。
グレースフルシャットダウンOnGoAwayGOAWAYRFC 9114 のコネクションシャットダウンのシグナリングです。
証明書 / 鍵QUICOptions.SSLOptions.CertFile / KeyFileリスナー用の PEM 証明書と秘密鍵です。

WebTransport(RFC 9220)

Extended CONNECT でネゴシエートされるセッションで、アプリケーションに QUIC ストリームを直接渡します。

機能クライアントサーバー備考
セッションの確立WebTransportConnectOnWebTransportSessionHTTP/3 の Extended CONNECT リクエスト上でブートストラップされます。
双方向ストリームbuiltin エンジン上での低遅延な双方向トラフィックです。
データグラムSendDatagramセッションのストリームと並行する、信頼性のないデータグラムです。
builtin エンジンが必須セッションには 1 つのコネクション上の複数のストリームが必要です(qmBuiltin)。

標準、TLS、プラットフォーム

OpenSSL 3.5 のネイティブ QUIC エンジン上に構築された、標準準拠のスタックです。

領域詳細
RFC 9000QUIC トランスポート — ストリーム、connection ID、マイグレーション、トランスポートと TLS を統合したハンドシェイク。
RFC 9114HTTP/3 — HTTP セマンティクスを QUIC ストリームにマッピング。
RFC 9204QPACK — HTTP/3 向けのヘッダー圧縮。
RFC 9220HTTP/3 上での WebTransport のブートストラップ(Extended CONNECT)。
RFC 7838Alt-Svc — サーバーがアドバタイズする HTTP/3 の可用性。
TLSQUIC のハンドシェイクに組み込まれた TLS 1.3。
暗号エンジンOpenSSL 3.5 のネイティブ QUIC(qmBuiltin、マルチストリーム)。quictls 系のビルド向けに qmCustom 経路もありますが、1 コネクションあたり 1 ストリームに制限されます。
プラットフォームWin32、Win64、Linux64、および OpenSSL 3.5 の QUIC エンジンが利用可能な macOS、iOS、Android。
言語Delphi と C++ Builder(7 から 13 まで)、および同名の Tsgc クラスを持つ .NET。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

sgcQUIC で構築する

無料体験版をダウンロードして、Delphi、C++ Builder、.NET で QUIC と HTTP/3 のトラフィック送信を始めましょう。