TCP + TLS: 3 往復
SYN、SYN-ACK、ACK でソケットを開きます。ClientHello、ServerHello、Finished で TLS を確立します。最初のリクエストが送られるのは、そのあとです。
TCP と TLS では、レスポンスの最初の 1 バイトが届くまでに 3 回の往復が必要です。QUIC はトランスポートと暗号ハンドシェイクを 1 つに折りたたみ、再開されたコネクションは最初のパケットでデータを送信できます。sgcQUIC は、Delphi、C++ Builder、.NET に、ネイティブな QUIC トランスポートと、その上に構築された HTTP/3 のクライアントとサーバーを、OpenSSL 3.5 の QUIC エンジン上で提供します。
sgcWebSockets Enterprise のアドオンです。価格を見る →TCP では、トランスポートのハンドシェイク、TLS のハンドシェイク、最初のリクエストにそれぞれ 1 往復かかります。QUIC ならこの 3 つを 1 回のやり取りで運べます。
SYN、SYN-ACK、ACK でソケットを開きます。ClientHello、ServerHello、Finished で TLS を確立します。最初のリクエストが送られるのは、そのあとです。
QUIC はトランスポートと暗号のハンドシェイクを 1 回のやり取りにまとめるため、リクエストはハンドシェイクと一緒に送られ、レスポンスも一緒に返ってきます。
以前に接続したことがあるクライアントは、ハンドシェイクが完了する前に、最初のパケットで最初のリクエストを送信できます。
ナレーションと字幕付きのクイックスタートです。HTTP/3 のサーバーとクライアント、続いて複数ストリームの生の QUIC 接続を扱います。再生ボタンを押すまで何もダウンロードされません。
Delphi から HTTP/3 のサーバーとクライアントを動かし、生の QUIC 接続を開きます。
独自のフレーミングを使う素のトランスポートには TsgcQUICClient と TsgcQUICServer を、ワイヤーフォーマットが HTTP であれば TsgcHTTP3Client と TsgcHTTP3Server を直接使用します。
TsgcQUICClient と TsgcQUICServer は、生の QUIC を話します: 1 つの暗号化されたコネクション上での複数の独立したストリーム、信頼性のないデータグラム、そしてセッション途中でクライアントの IP アドレスが変わった場合のコネクションマイグレーションです。
TsgcHTTP3Client と TsgcHTTP3Server は、その上に HTTP のセマンティクスを重ねます: QPACK で圧縮されたリクエスト/レスポンスヘッダー、Alt-Svc によるディスカバリー、そしてすでに HTTP/2 のコードで使っているのと同じメソッドとステータスコードです。
以前に接続したことがあるクライアントは、ハンドシェイクが完了する前に、最初のパケットで最初のリクエストを送信できます。
IP アドレスではなく Connection ID がセッションを識別するため、スマートフォンが Wi-Fi からモバイル回線に切り替わっても、ストリームは開いたままです。
1 つの Extended CONNECT リクエスト上での双方向ストリームと信頼性のないデータグラムを、WebTransport に対応したブラウザクライアントに提供します。
QUIC と TLS 1.3 のハンドシェイクは、OpenSSL 3.5 自身の QUIC エンジン上で動作します。別途ビルドしたりベンダリングしたりする QUIC ライブラリはありません。
sgcQUIC は部分的な実装ではありません。トランスポート、フレーミング、ヘッダー圧縮、そして WebTransport 拡張のすべてを、ネイティブ OpenSSL 3.5 QUIC エンジンの上でカバーしています。
QUIC トランスポートプロトコル: ストリーム、データグラム、フロー制御、コネクションマイグレーション。
HTTP/3。HTTP/2 と同じリクエスト/レスポンスのセマンティクスを、QUIC ストリーム上で運びます。
QPACK ヘッダー圧縮。QUIC の順不同なストリーム配信に対応するよう設計されています。
HTTP/3 上の WebTransport。1 つの Extended CONNECT リクエストで、双方向ストリームとデータグラムを実現します。
他の sgcWebSockets HTTP クライアントと同じ形です。プロパティを設定し、イベントを処理し、メソッドを呼び出します。サーバー側は 1 つのコンポーネントと 1 つのハンドラーだけです。
uses
sgcHTTP3_Client;
var
vClient: TsgcHTTP3Client;
begin
vClient := TsgcHTTP3Client.Create(nil);
vClient.Host := 'api.example.com';
vClient.Port := 443;
vClient.OnResponse :=
procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
begin
Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
end;
vClient.OnAltSvc :=
procedure(Sender: TObject; const AAltSvc: string)
begin
Memo1.Lines.Add('Alt-Svc: ' + AAltSvc); // h3 advertised over HTTP/2
end;
vClient.Connect;
vClient.Get('/pets/42');
end;
uses
sgcQUIC_Client;
var
vQUIC: TsgcQUICClient;
begin
vQUIC := TsgcQUICClient.Create(nil);
vQUIC.Host := 'quic.example.com';
vQUIC.Port := 4433;
vQUIC.EnableMultiStream := True;
vQUIC.OnQUICConnect :=
procedure(Sender: TObject)
var
vStreamId: Int64;
begin
vStreamId := vQUIC.OpenStream;
vQUIC.WriteData(vStreamId, 'ping');
end;
vQUIC.OnQUICStreamData :=
procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
begin
Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
end;
vQUIC.Active := True;
end;
uses
sgcHTTP3_Server;
procedure TForm1.FormCreate(Sender: TObject);
begin
FServer := TsgcHTTP3Server.Create(nil);
FServer.Port := 443;
FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
FServer.QUICOptions.SSLOptions.KeyFile := 'server.key';
// One handler for every incoming HTTP/3 request
FServer.OnH3Request :=
procedure(const Ctx: TsgcHTTP3Context)
begin
if Ctx.Path = '/pets/42' then
Ctx.RespondJSON(200, '{"name":"Rex"}')
else
Ctx.Respond(404, 'Not found');
end;
FServer.Active := True;
end;
クライアントとサーバーは、双方で同じコネクション・ストリーム・データグラムモデルを共有します。 完全な機能マトリックス →
ライセンス、サポート窓口、アップデートの頻度は、すでにお持ちのものと同じです。すべてのライセンスに、フルソースコード、1 年間のアップデート、ロイヤリティフリーの配布が含まれます。
開発者 1 名のライセンス。同時に 1 台のマシンで使用できます。
開発者 2 名のライセンス。同時に 2 台のマシンで使用できます。
開発者数無制限。社内のすべてのマシンで使用できます。
sgcQUIC には sgcWebSockets Enterprise が必要です。同じご注文に追加できます。QUIC クライアントとサーバー、HTTP/3 クライアントとサーバー、QPACK、Alt-Svc、WebTransport を、Delphi、C++ Builder、.NET で利用できます。
価格とエディションを見る世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。
sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!
sgcWebSockets は素晴らしく、サポートも最高です!
ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。
生の QUIC トランスポート、HTTP/3 のクライアントとサーバー、そして WebTransport を、OpenSSL 3.5 の QUIC エンジン上で。完全なソースコード、ロイヤリティフリーの配布、sgcWebSockets Enterprise のアドオンとして。
sgcQUIC は、Delphi、C++ Builder、.NET 向けの他の eSeGeCe コンポーネントライブラリと規約を共有しています。フルソース付きで提供され、ロイヤリティフリーで配布できます。
WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI、そして 30 を超える API 統合。sgcQUIC の土台となる Enterprise ライセンスです。
Bootstrap 5 と htmx を基盤とする、サーバーサイド HTML / UI コンポーネント。同じ HTTP/3 トランスポート上で、レンダリングされた UI を配信できます。
Delphi と C++ Builder 向けの AI、LLM、MCP コンポーネント。1 つのコンポーネントで 7 社の LLM プロバイダーに対応し、MCP、埋め込み、音声も利用できます。単体製品で、sgcWebSockets Core ランタイムを同梱しています。
Delphi と C++ Builder 向けの MQTT、AMQP 0.9.1 および 1.0、Apache Kafka、STOMP のクライアントコンポーネント。単体製品で、sgcWebSockets Core ランタイムを同梱しています。
Delphi と C++ Builder 向けの OAuth2 クライアント、JWT クライアント、WebAuthn 対応。単体で提供され、sgcWebSockets Core ランタイムが同梱されます。
Delphi と C++ Builder 向けの HTTP サーバー、HTTP/2 クライアント、gRPC クライアント、そして Google Cloud の Pub/Sub、Calendar、FCM クライアントです。単体製品で、sgcWebSockets Core ランタイムを同梱しています。
Delphi と C++ Builder 向けの REST サーバー、OpenAPI サーバー、OpenAPI クライアントのコンポーネント。単体で提供され、sgcWebSockets Core ランタイムが同梱されます。
OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、そして 1,195 以上のビルド済みクラウド SDK。
ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。
PDF ファイルの作成、編集、表示、署名、墨消し、検証を純粋な Object Pascal で提供します。DLL の配布は不要で、単体でライセンスされます。
Delphi と C++ Builder 向けの Windows Hello、指紋センサー、Windows Biometric Framework。
モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応します。