sgcQUIC 功能矩阵
sgcQUIC 的一切功能,按四个组件及其实现的 RFC 标准分类列出。原始 QUIC 组件对为您提供流和数据报;HTTP/3 组件对则加入了请求/响应、QPACK 和 WebTransport。每项功能在 Delphi、C++ Builder 和 .NET 中的行为完全一致,每份许可证均附带完整源代码。点击某个组件可进入其专属页面,查看用法和示例。
sgcQUIC 的一切功能,按四个组件及其实现的 RFC 标准分类列出。原始 QUIC 组件对为您提供流和数据报;HTTP/3 组件对则加入了请求/响应、QPACK 和 WebTransport。每项功能在 Delphi、C++ Builder 和 .NET 中的行为完全一致,每份许可证均附带完整源代码。点击某个组件可进入其专属页面,查看用法和示例。
两个层级:原始 QUIC 传输层,以及构建于其上的 HTTP/3 请求/响应层。
| 组件 | 类 | 分类 | 描述 |
|---|---|---|---|
| QUIC Client | TsgcQUICClient | QUIC | 原始 QUIC 传输客户端:流和数据报、0-RTT、连接迁移(RFC 9000)。 |
| QUIC Server | TsgcQUICServer | QUIC | 原始 QUIC 传输服务器:绑定一个 UDP 端口,终止 TLS 1.3,引发按连接和按流划分的事件。 |
| HTTP/3 Client | TsgcHTTP3Client | HTTP/3 | HTTP/3 客户端,支持 QPACK、Alt-Svc、服务器推送、Extended CONNECT 和 WebTransport(RFC 9114)。 |
| HTTP/3 Server | TsgcHTTP3Server | HTTP/3 | HTTP/3 服务器:通过 QUIC 处理请求,支持服务器推送、WebTransport 会话和数据报。 |
直接暴露的传输层,供您在 QUIC 之上构建自己的协议。
| 能力 | 客户端 | 服务器 | 说明 |
|---|---|---|---|
| 单次合并的传输 + TLS 1.3 握手 | ✓ | ✓ | 一次发送即可完成连接建立;无需单独的 TLS 往返。 |
| 独立的双向流 | ✓ | ✓ | 丢失的数据包只会阻塞其承载数据所属的流。 |
| 单向流 | ✓ | ✓ | 在内置引擎上使用 OpenStream(aUnidirectional := True)。 |
| 每连接多个流 | ✓ | ✓ | qmBuiltin 引擎上的 EnableMultiStream / OpenStream。 |
| 0-RTT 恢复 | ✓ | ✓ | 恢复的会话可以在第一次发送中携带早期数据。 |
| 连接迁移 | ✓ | ✓ | 基于连接 ID;在客户端更换网络后依然存活。 |
| 发送 / 接收字节 | WriteData | WriteData(connection, …) | 流上的字符串或 TBytes 负载。 |
| 连接生命周期事件 | OnQUICConnect / OnQUICDisconnect | OnQUICConnect / OnQUICDisconnect | 另有 OnQUICException 用于处理传输层错误。 |
| 入站流数据事件 | OnQUICStreamData | OnQUICStreamData / OnQUICData | 流字节到达时触发。 |
QUIC 之上的 HTTP 语义,HTTP/3 专属机制以方法和事件的形式暴露。
| 能力 | 客户端 | 服务器 | 说明 |
|---|---|---|---|
| 请求方法 | GET、HEAD、POST、PUT、DELETE、PATCH、OPTIONS、TRACE、CONNECT、QUERY | ✓ | 客户端上每个方法都是阻塞调用,大多数还提供异步变体。 |
| QPACK 头部压缩 | ✓ | ✓ | RFC 9204,动态表更新通过专用的编码器/解码器流传输。 |
| Alt-Svc 发现 | OnAltSvc | 发布公告 | RFC 7838;客户端解析该头部,由您的应用决定何时切换。 |
| 服务器推送 | SetMaxPushId / OnPushPromise / OnPush | 从 OnH3Request 推送 | 客户端声明一个上限,并可以拒绝被推送的响应。 |
| Extended CONNECT 隧道 | ExtendedConnect / TunnelSend / OnTunnelData | OnH3TunnelData / TunnelSend | RFC 9220 通过一个请求流隧道传输另一种协议。 |
| 请求事件 | — | OnH3Request | 每个请求触发一次;由应用填充响应内容。 |
| 优雅关闭 | OnGoAway | GOAWAY | RFC 9114 的连接关闭信令。 |
| 证书 / 密钥 | — | QUICOptions.SSLOptions.CertFile / KeyFile | 监听器所用的 PEM 证书和私钥。 |
通过 Extended CONNECT 协商的会话,直接将 QUIC 流交给应用程序。
| 能力 | 客户端 | 服务器 | 说明 |
|---|---|---|---|
| 建立会话 | WebTransportConnect | OnWebTransportSession | 基于一个 HTTP/3 Extended CONNECT 请求引导建立。 |
| 双向流 | ✓ | ✓ | 内置引擎上的低延迟双向流量。 |
| 数据报 | ✓ | SendDatagram | 与会话的流并行传输的不可靠数据报。 |
| 需要内置引擎 | ✓ | ✓ | 一个会话需要在一个连接(qmBuiltin)上开出多个流。 |
基于原生 OpenSSL 3.5 QUIC 引擎、以标准为基础的技术栈。
| 领域 | 详情 |
|---|---|
| RFC 9000 | QUIC 传输层 — 流、连接 ID、连接迁移、合并的传输 + TLS 握手。 |
| RFC 9114 | HTTP/3 — 映射到 QUIC 流上的 HTTP 语义。 |
| RFC 9204 | QPACK — HTTP/3 的头部压缩。 |
| RFC 9220 | 在 HTTP/3 之上引导 WebTransport(Extended CONNECT)。 |
| RFC 7838 | Alt-Svc — 由服务器发布的 HTTP/3 可用性公告。 |
| TLS | TLS 1.3,内置于 QUIC 握手之中。 |
| 加密引擎 | OpenSSL 3.5 中的原生 QUIC(qmBuiltin,多流)。另有一条 qmCustom 路径,适用于 quictls 风格的构建,每连接限一个流。 |
| 平台 | Win32、Win64 和 Linux64,以及在 OpenSSL 3.5 QUIC 引擎可用的情况下的 macOS、iOS 和 Android。 |
| 语言 | Delphi 和 C++ Builder(7 至 13 版),以及采用同名 Tsgc 类的 .NET。 |