TCP + TLS: tres viajes de ida y vuelta
SYN, SYN-ACK y ACK abren el socket. ClientHello, ServerHello y Finished configuran TLS. Solo entonces sale la primera petición.
TCP más TLS necesita tres viajes de ida y vuelta antes de que llegue el primer byte de una respuesta. QUIC reúne el transporte y el handshake criptográfico en uno solo, y una conexión reanudada puede enviar datos en el primer paquete. sgcQUIC ofrece a Delphi, C++ Builder y .NET un transporte QUIC nativo y un cliente y servidor HTTP/3 construidos encima, sobre el motor QUIC de OpenSSL 3.5.
Un complemento para sgcWebSockets Enterprise. Ver precios →El handshake de transporte, el handshake TLS y la primera petición cuestan cada uno un viaje de ida y vuelta sobre TCP. QUIC transporta los tres en un solo intercambio.
SYN, SYN-ACK y ACK abren el socket. ClientHello, ServerHello y Finished configuran TLS. Solo entonces sale la primera petición.
QUIC reúne el transporte y el handshake criptográfico en un solo intercambio, así la petición viaja con el handshake y la respuesta vuelve con él.
Un cliente que ya se ha conectado antes puede enviar su primera petición en el primer paquete, antes de que termine el handshake.
Un inicio rápido narrado y subtitulado: un servidor y un cliente HTTP/3, y después una conexión QUIC en bruto con varios streams. No se descarga nada hasta que pulsas reproducir.
Ejecuta un servidor y un cliente HTTP/3, y abre una conexión QUIC en bruto desde Delphi.
Usa TsgcQUICClient y TsgcQUICServer para un transporte desnudo con tu propio entramado, o ve directo a TsgcHTTP3Client y TsgcHTTP3Server cuando el formato en el cable es HTTP.
TsgcQUICClient and TsgcQUICServer hablan QUIC en bruto: varios streams independientes en una sola conexión cifrada, datagramas no fiables y migración de conexión cuando cambia la dirección IP del cliente a mitad de sesión.
TsgcHTTP3Client and TsgcHTTP3Server añaden semántica HTTP encima: cabeceras de petición y respuesta comprimidas con QPACK, descubrimiento con Alt-Svc, y los mismos métodos y códigos de estado que ya usa tu código HTTP/2.
Un cliente que ya se ha conectado antes puede enviar su primera petición en el primer paquete, antes de que termine el handshake.
Un Connection ID identifica la sesión, no la dirección IP, así un teléfono que pasa de Wi-Fi a datos móviles mantiene abiertos sus streams.
Streams bidireccionales y datagramas no fiables sobre una sola petición Extended CONNECT, para clientes de navegador que hablan WebTransport.
El handshake QUIC y TLS 1.3 se ejecuta sobre el propio motor QUIC de OpenSSL 3.5. No hay ninguna biblioteca QUIC aparte que compilar o incluir.
sgcQUIC no es una implementación parcial. Cubre el transporte, el entramado, la compresión de cabeceras y la extensión WebTransport, sobre el motor QUIC nativo de OpenSSL 3.5.
El protocolo de transporte QUIC: streams, datagramas, control de flujo y migración de conexión.
HTTP/3, la misma semántica de petición y respuesta que HTTP/2, transportada sobre streams QUIC.
Compresión de cabeceras QPACK, diseñada para la entrega de streams fuera de orden de QUIC.
WebTransport sobre HTTP/3, streams bidireccionales y datagramas en una sola petición Extended CONNECT.
La misma forma que cualquier otro cliente HTTP de sgcWebSockets: asigna propiedades, gestiona un evento, llama a un método. El lado servidor es un componente y un manejador.
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;
El cliente y el servidor comparten el mismo modelo de conexión, stream y datagrama en ambos lados. La matriz de características completa →
La licencia, el canal de soporte y el ritmo de actualizaciones son los que ya tienes. Cada licencia incluye el código fuente completo, un año de actualizaciones y distribución libre de royalties.
1 licencia de desarrollador. Úsala en una máquina a la vez.
2 licencias de desarrollador. Úsalas en dos máquinas a la vez.
Desarrolladores ilimitados. Todas las máquinas de la empresa.
sgcQUIC requiere sgcWebSockets Enterprise, que puedes añadir al mismo pedido. Cliente y servidor QUIC, cliente y servidor HTTP/3, QPACK, Alt-Svc y WebTransport, para Delphi, C++ Builder y .NET.
Ver precios y edicionesLa confianza de desarrolladores de Delphi, C++ Builder, Lazarus y .NET en todo el mundo.
Vuestra librería sgcWebSockets es muy útil y fácil de configurar. ¡Seguid así!
sgcWebSockets es increíble y vuestro soporte es el mejor.
Muchas gracias por vuestra ayuda y soporte, me encantan vuestros componentes.
Transporte QUIC en bruto, cliente y servidor HTTP/3 y WebTransport, sobre el motor QUIC de OpenSSL 3.5. Código fuente completo y distribución libre de royalties, como complemento de sgcWebSockets Enterprise.
sgcQUIC comparte convenciones con las demás bibliotecas de componentes de eSeGeCe para Delphi, C++ Builder y .NET. Se entregan con código fuente completo y se distribuyen libres de royalties.
WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA y más de 30 integraciones de APIs. La licencia Enterprise sobre la que se construye sgcQUIC.
Componentes HTML y de interfaz del lado del servidor sobre Bootstrap 5 y htmx. Sirve la interfaz renderizada sobre el mismo transporte HTTP/3.
Componentes de IA, LLM y MCP para Delphi y C++ Builder. Siete proveedores de LLM tras un único componente, además de MCP, embeddings y voz. Producto independiente, incluye el runtime de sgcWebSockets Core.
Componentes cliente de MQTT, AMQP 0.9.1 y 1.0, Apache Kafka y STOMP para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.
Cliente OAuth2, cliente JWT y compatibilidad con WebAuthn para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.
Servidor HTTP, cliente HTTP/2, cliente gRPC y clientes de Google Cloud Pub/Sub, Calendar y FCM para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.
Componentes de servidor REST, servidor OpenAPI y cliente OpenAPI para Delphi y C++ Builder. Producto independiente, incluye el runtime de sgcWebSockets Core.
Parser de OpenAPI 3.x, generador nativo de SDK en Pascal, componente de servidor OpenAPI y más de 1.195 SDK en la nube ya generados.
XAdES, PAdES, CAdES y ASiC para documentos, Authenticode, ClickOnce, NuGet y VSIX para código.
Crea, edita, visualiza, firma, redacta y valida ficheros PDF en Object Pascal puro, sin DLL que distribuir. Se licencia por separado.
Windows Hello, sensores de huella dactilar y Windows Biometric Framework para Delphi y C++ Builder.
Componentes Indy TCP/IP actualizados con TLS moderno, IPv6 y HTTP/2 para Delphi 7 a 13.