sgcQUIC Pule as viagens de ida e volta. QUIC nativo.

TCP mais TLS precisa de três viagens de ida e volta antes que o primeiro byte de uma resposta chegue. O QUIC combina o handshake de transporte e o handshake de criptografia em um único envio, e uma conexão retomada pode enviar dados já no primeiro pacote. O sgcQUIC dá ao Delphi, C++ Builder e .NET um transporte QUIC nativo e um cliente e servidor HTTP/3 construídos sobre ele, no mecanismo QUIC do OpenSSL 3.5.

Um complemento do sgcWebSockets Enterprise. Ver preços →
  • RFC 9000, 9114, 9204
  • WebTransport (RFC 9220)
  • 0-RTT
  • Migração de conexão
  • Delphi
  • C++ Builder
  • .NET
  • 4Componentes em uma única página da paleta
  • 4RFCs: 9000, 9114, 9204 e 9220
  • 1Viagem de ida e volta antes dos dados, contra três do TCP mais TLS
  • 0-RTTPrimeira requisição no primeiro pacote de uma sessão retomada
  • 3Linguagens: Delphi, C++ Builder e .NET
Por que QUIC

Mesma segurança do TLS 1.3. Menos viagens de ida e volta pela rede.

O handshake de transporte, o handshake TLS e a primeira requisição custam cada um uma viagem de ida e volta sobre TCP. O QUIC leva os três em uma única troca.

TCP + TLS 1.3 QUIC (HTTP/3) Cliente Servidor Cliente Servidor SYN SYN-ACK ACK ClientHello ServerHello, cert Finished GET /pets/42 200 OK 3 viagens de ida e volta antes dos dados Initial + Handshake + GET Handshake + 200 OK 1 viagem de ida e volta antes dos dados Em uma sessão retomada 0-RTT: GET + early data Mesma segurança do TLS 1.3. Menos viagens de ida e volta pela rede.

TCP + TLS: três viagens de ida e volta

SYN, SYN-ACK e ACK abrem o socket. ClientHello, ServerHello e Finished configuram o TLS. Só então a primeira requisição sai.

QUIC: uma viagem de ida e volta

O QUIC funde o transporte e o handshake criptográfico em uma única troca, de modo que a requisição viaja junto com o handshake e a resposta volta com ele.

Retomada: 0-RTT

Um cliente que já se conectou antes pode enviar sua primeira requisição já no primeiro pacote, antes mesmo de o handshake terminar.

Veja rodando

QUIC e HTTP/3 a partir do Delphi, em poucos minutos.

Um início rápido narrado e legendado: um servidor e um cliente HTTP/3, depois uma conexão QUIC pura com vários streams. Nada é baixado até você apertar o play.

Início rápido do sgcQUIC

Rode um servidor e um cliente HTTP/3 e abra uma conexão QUIC pura a partir do Delphi.

  1. O cliente HTTP/3Crie-o, chame Get com uma URL e leia a resposta. Os verbos, códigos de status e cabeçalhos são os que você já conhece.
  2. Síncrono ou assíncronoTrate OnResponse e OnError, depois chame GetAsync, e a requisição roda sem bloquear o seu formulário.
  3. O servidor HTTP/3Crie um TsgcHTTP3Server, informe uma porta, um certificado e uma chave privada, e trate OnH3Request.
  4. QUIC puro e muitos streamsTsgcQUICClient on its own, with EnableMultiStream for independent streams, each ordered and flow controlled.
  5. Antes de implantarO QUIC trafega sobre UDP, então um firewall que só abre o TCP 443 o bloqueia.
Quatro componentes

QUIC puro, ou HTTP/3 por cima.

Use TsgcQUICClient e TsgcQUICServer para um transporte puro com o seu próprio framing, ou vá direto para TsgcHTTP3Client e TsgcHTTP3Server quando o formato de wire for HTTP.

Cliente e Servidor QUIC

TsgcQUICClient e TsgcQUICServer falam QUIC puro: múltiplos streams independentes em uma conexão criptografada, datagramas não confiáveis e migração de conexão quando o endereço IP do cliente muda no meio da sessão.

Ver os componentes QUIC →

Cliente e Servidor HTTP/3

TsgcHTTP3Client e TsgcHTTP3Server colocam a semântica HTTP por cima: cabeçalhos de requisição e resposta comprimidos com QPACK, descoberta via Alt-Svc, e os mesmos métodos e códigos de status que o seu código HTTP/2 já usa.

Ver os componentes HTTP/3 →

Retomada de sessão 0-RTT

Um cliente que já se conectou antes pode enviar sua primeira requisição já no primeiro pacote, antes mesmo de o handshake terminar.

Migração de Conexão

Um connection ID identifica a sessão, não o endereço IP, então um celular que passa do Wi-Fi para os dados móveis mantém seus streams abertos.

WebTransport

Streams bidirecionais e datagramas não confiáveis sobre uma única requisição Extended CONNECT, para clientes de navegador que falam WebTransport.

QUIC nativo, sem dependência externa

O handshake de QUIC e TLS 1.3 roda no próprio mecanismo QUIC do OpenSSL 3.5. Não há nenhuma biblioteca QUIC separada para compilar ou distribuir.

Construído sobre os padrões

QUIC e HTTP/3, ao pé da letra das RFCs.

O sgcQUIC não é uma implementação parcial. Transporte, framing, compressão de cabeçalhos e a extensão WebTransport, tudo coberto, sobre o mecanismo QUIC nativo do OpenSSL 3.5.

RFC 9000

O protocolo de transporte QUIC: streams, datagramas, controle de fluxo e migração de conexão.

RFC 9114

HTTP/3, a mesma semântica de requisição e resposta do HTTP/2, transportada sobre streams QUIC.

RFC 9204

Compressão de cabeçalhos QPACK, projetada para a entrega fora de ordem de streams do QUIC.

RFC 9220

WebTransport sobre HTTP/3, streams bidirecionais e datagramas em uma única requisição Extended CONNECT.

O código

Uma requisição sobre HTTP/3.

O mesmo formato de qualquer outro cliente HTTP do sgcWebSockets: defina propriedades, trate um evento, chame um método. O lado do servidor é um componente e um tratador.

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. Uma porta, um certificado, dois protocolosTsgcHTTP3Server speaks HTTP/3 over QUIC on a UDP port. Pair it with an existing HTTP/2 server and legacy clients keep working over TCP, with the same certificate your HTTP/2 server already loads.
  2. Alt-Svc, para que as atualizações sejam automáticasUma resposta HTTP/2 normal carrega um cabeçalho Alt-Svc: h3=":443". Os clientes que o entendem abrem QUIC na requisição seguinte, sem redirecionamento nem um segundo domínio.
  3. WebTransport, na mesma portaUma requisição Extended CONNECT atualiza um stream para WebTransport, dando a um cliente de navegador streams bidirecionais e datagramas ao lado das requisições HTTP/3 comuns.

O cliente e o servidor compartilham o mesmo modelo de conexão, stream e datagrama nos dois lados. A matriz completa de recursos →

O componente servidor HTTP/3

Parte do sgcWebSockets

Um complemento do sgcWebSockets Enterprise.

A licença, o canal de suporte e o ritmo de atualizações são os que você já tem. Toda licença inclui código-fonte completo, um ano de atualizações e implantação sem royalties.

Single

1 licença de desenvolvedor. Uso em uma máquina por vez.

€149

Team

2 licenças de desenvolvedor. Uso em duas máquinas por vez.

€249

Site

Desenvolvedores ilimitados. Todas as máquinas da empresa.

€399

O sgcQUIC requer o sgcWebSockets Enterprise, que você pode adicionar ao mesmo pedido. Cliente e servidor QUIC, cliente e servidor HTTP/3, QPACK, Alt-Svc e WebTransport, para Delphi, C++ Builder e .NET.

Ver preços e edições
DEPOIMENTOS

O Que os Desenvolvedores Dizem

Confiado por desenvolvedores Delphi, C++ Builder, Lazarus e .NET ao redor do mundo.

A biblioteca sgcWebSockets de vocês é muito útil e fácil de configurar. Continuem com o ótimo trabalho!
Simone Moretti Desenvolvedor Delphi
O sgcWebSockets é incrível e o suporte de vocês é o melhor!
Christian Meyer Fundador & CTO
Muito obrigado pela ajuda e pelo suporte, eu adoro os componentes de vocês.
Mark Steinfeld CTO

Entregue QUIC e HTTP/3 sem sair da sua IDE.

Transporte QUIC bruto, cliente e servidor HTTP/3, e WebTransport, no mecanismo QUIC do OpenSSL 3.5. Código-fonte completo, implantação sem royalties, como um complemento do sgcWebSockets Enterprise.

Mais da eSeGeCe

Outros Produtos da eSeGeCe

O sgcQUIC compartilha convenções com as outras bibliotecas de componentes eSeGeCe para Delphi, C++ Builder e .NET. Elas vêm com código-fonte completo e são implantadas sem royalties.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA e 30+ integrações de API. A licença Enterprise sobre a qual o sgcQUIC é construído.

sgcHTML

Componentes HTML e de UI server-side sobre Bootstrap 5 e htmx. Sirva a UI renderizada pelo mesmo transporte HTTP/3.

sgcAI

Componentes de IA, LLM e MCP para Delphi e C++ Builder. Sete provedores de LLM por trás de um único componente, além de MCP, embeddings e fala. Produto autônomo, com o runtime sgcWebSockets Core incluído.

sgcMQ

Componentes cliente de MQTT, AMQP 0.9.1 e 1.0, Apache Kafka e STOMP para Delphi e C++ Builder. Produto autônomo, com o runtime sgcWebSockets Core incluído.

sgcAuth

Cliente OAuth2, cliente JWT e suporte a WebAuthn para Delphi e C++ Builder. Independente, com o runtime sgcWebSockets Core embutido.

sgcHTTP

Servidor HTTP, cliente HTTP/2, cliente gRPC e clientes Google Cloud Pub/Sub, Calendar e FCM para Delphi e C++ Builder. Produto autônomo, com o runtime sgcWebSockets Core incluído.

sgcREST

Servidor REST, servidor OpenAPI e componentes cliente OpenAPI para Delphi e C++ Builder. Produto autônomo, com o runtime sgcWebSockets Core incluído.

sgcOpenAPI

Analisador OpenAPI 3.x, gerador nativo de SDK Pascal, componente servidor OpenAPI e mais de 1.195 SDKs de nuvem pré-compilados.

sgcSign

XAdES, PAdES, CAdES e ASiC para documentos, Authenticode, ClickOnce, NuGet e VSIX para código.

sgcPDF

Crie, edite, visualize, assine, censure e valide arquivos PDF em Object Pascal puro, sem DLL para implantar. Licenciado separadamente.

sgcBiometrics

Windows Hello, sensores de impressão digital e o Windows Biometric Framework para Delphi e C++ Builder.

sgcIndy

Componentes Indy TCP/IP atualizados com TLS moderno, IPv6 e HTTP/2, do Delphi 7 ao 13.

Últimas do blog

Ver todas as publicações →

Você está vendo a visão sgcQUIC da eSeGeCe.

Mostre outro ângulo →
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso