Socket Library
Aviso de Maturidade: Esta biblioteca é funcional e bem testada, mas recém-lançada. É apropriada para desenvolvimento, ferramentas internas e ambientes controlados. A implantação em produção com entrada de rede não confiável deve aguardar até que a base de código tenha acumulado vários meses de endurecimento em cenários reais.
Conjunto de ferramentas de socket de alto desempenho e orientado a exceções para sistemas POSIX. Fornece uma API C limpa e moderna para TCP, UDP, sockets de domínio Unix, HTTP/1.1, HTTP/2, QUIC, WebSocket e TLS/DTLS com tratamento abrangente de erros, E/S de cópia zero e polling de eventos multiplataforma.
Funcionalidades
Rede Principal
- Sockets de Fluxo TCP - Cliente/servidor TCP completo com E/S scatter/gather
- Sockets de Datagrama UDP - Modos sem conexão e conectados com multicast/broadcast
- Sockets de Domínio Unix - Sockets IPC com suporte a credenciais de pares e passagem de descritores de arquivo
- Suporte a TLS 1.3 - TLS moderno com SNI, ALPN, retomada de sessão, CRL/OCSP, fixação de certificados, Transparência de Certificados (CT), offload de kTLS, dados antecipados 0-RTT, KeyUpdate
- Suporte a DTLS 1.2+ - UDP seguro com troca de cookies para proteção contra DoS, cache de sessão, ALPN
Pilha de Protocolos HTTP
- HTTP/1.1 - Analisador DFA orientado a tabela (RFC 9112), codificação chunked, prevenção de contrabando de requisições
- HTTP/2 - Enquadramento binário, multiplexação de fluxos, controle de fluxo, server push (RFC 9113)
- HPACK - Compressão de cabeçalhos com tabelas estáticas/dinâmicas, codificação Huffman (RFC 7541)
- QPACK - Compressão de cabeçalhos HTTP/3 (RFC 9204), arquitetura de dois fluxos, gerenciamento de fluxos bloqueados
- Cliente HTTP - Pooling de conexões, autenticação (Basic/Digest/Bearer), cookies (RFC 6265)
- Servidor HTTP - Tratamento de requisições orientado a eventos, keep-alive, desligamento gracioso
Transporte QUIC
- Compatível com RFC 9000 - Implementação completa do protocolo de transporte QUIC v1
- Gerenciamento de Conexões - Rotação de ID de conexão, reset sem estado, validação de endereço
- Multiplexação de Fluxos - Fluxos bidirecionais e unidirecionais com controle de fluxo
- Detecção de Perdas - Controle de congestionamento e recuperação de perdas RFC 9002
- Migração de Caminho - Migração de conexão sem interrupções em mudanças de rede
- Retomada 0-RTT - Reconexão rápida com suporte a dados antecipados
QUIC-TLS (RFC 9001)
- Proteção de Pacotes - Criptografia AEAD (AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305)
- Proteção de Cabeçalho - Geração de máscara AES-ECB/ChaCha20 para criptografia de número de pacote
- Derivação de Chaves - Segredos iniciais baseados em HKDF a partir do DCID do cliente, chaves de handshake/tráfego
- Atualização de Chave - Rotação do bit de fase da chave com limites de confidencialidade AEAD (RFC 9001 §6)
- Integridade de Retry - Verificação de tag AEAD para pacotes Retry (RFC 9001 §5.8)
- Parâmetros de Transporte - Extensão TLS (tipo 0x39) para troca de configuração QUIC
QPACK (RFC 9204)
- Compressão de Cabeçalhos - Compressão de cabeçalhos HTTP/3 evitando bloqueio de linha de frente
- Arquitetura de Dois Fluxos - Fluxos separados de codificador (0x02) e decodificador (0x03)
- Tabela Dinâmica - Indexação absoluta com esquemas relativos ao codificador e ao campo
- Tabela Estática - 99 entradas predefinidas (RFC 9204 Apêndice A)
- Sincronização de Estado - Reconhecimento de Seção, Cancelamento de Fluxo, Incremento de Contagem de Inserção
- Gerenciamento de Fluxos Bloqueados - Limites configuráveis de fluxos bloqueados com negociação SETTINGS
WebSocket
- Compatível com RFC 6455 - Implementação completa do protocolo WebSocket
- permessage-deflate - Extensão de compressão (RFC 7692) via zlib
- UTF-8 Incremental - Validação de quadros de texto baseada em DFA
- Auto-Ping/Pong - Heartbeat configurável com integração de temporizador
Tunelamento de Proxy
- HTTP CONNECT - Tunelamento de proxy com autenticação Basic
- SOCKS4/4a - Suporte a SOCKS legado
- SOCKS5 - RFC 1928/1929 com autenticação por usuário/senha
- API Assíncrona - Conexão de proxy não bloqueante com máquina de estados
Sistema de Eventos
- Polling Multiplataforma - epoll (Linux), kqueue (BSD/macOS), fallback poll
- Modo Edge-Triggered - Notificação de eventos de alto desempenho
- E/S Assíncrona - io_uring (Linux 5.1+), kqueue AIO (BSD/macOS)
- Temporizadores - Únicos e repetitivos com heap mínimo O(log n)
Gerenciamento de Conexões
- Pooling de Conexões - Busca O(1) com tabelas hash, buffers de E/S por conexão
- Happy Eyeballs - Corrida de conexão IPv4/IPv6 de pilha dupla RFC 8305
- Reconexão Automática - Backoff exponencial com padrão circuit breaker
- Desligamento Gracioso - Máquina de estados de drenagem do pool com garantia de timeout
Endurecimento de Segurança
- Proteção contra Flood SYN - Pontuação de reputação, limitação de taxa, integração com kernel
- Rastreamento por IP - Limites de conexão e limitação de taxa por cliente
- Limitação de Taxa - Algoritmo token bucket para conexões e largura de banda
- Prevenção de Contrabando de Requisições - Análise rigorosa de HTTP com conformidade com RFC
Resolução DNS
- Resolvedor Assíncrono - Resolução não bloqueante com pool de threads e multiplexação de consultas
- DNS sobre TLS (DoT) - DNS criptografado RFC 7858/8310 com modos oportunístico/estrito
- DNS sobre HTTPS (DoH) - Consultas DNS RFC 8484 sobre HTTPS (métodos POST/GET)
- Validação DNSSEC - Cadeia de confiança RFC 4033-4035, negação autenticada NSEC/NSEC3
- Cookies DNS - Proteção contra falsificação RFC 7873 via EDNS0
- Cache Negativo - Tratamento adequado de NXDOMAIN/NODATA RFC 2308
- Erros DNS Estendidos - Códigos de erro detalhados RFC 8914
Infraestrutura
- Erros Baseados em Exceções - Propagação limpa de erros com
TRY/EXCEPT/FINALLY
- API Simples - Camada de conveniência baseada em código de retorno para operações comuns (sem necessidade de TRY/EXCEPT)
- Gerenciamento de Memória Arena - Alocação eficiente com proteção contra estouro
- Buffer de E/S Circular - Bufferização de cópia zero para operações de rede
- E/S Assíncrona - Operações assíncronas otimizadas por plataforma (io_uring/kqueue)
- Validação UTF-8 - Processamento UTF-8 focado em segurança para quadros de texto WebSocket
- Framework Genérico de Retry - Backoff exponencial com jitter para operações resilientes
- Rastreamento de Conexão por IP - Limites de conexão e limitação de taxa por IP do cliente
- E/S de Cópia Zero -
sendfile() otimizado por plataforma e E/S scatter/gather
- Observabilidade - Logging plugável, exportação de métricas Prometheus/StatsD/JSON, despacho de eventos
- Utilitários Criptográficos - SHA-1/256, HMAC, Base64, aleatório seguro
- Sistema compatível com POSIX (Linux, BSD, macOS)
- Compilador C11 com extensões GNU
- Threads POSIX (pthread) para operações thread-safe
- Suporte a IPv6 no kernel (para sockets de pilha dupla)
- NÃO portável para Windows sem camada de adaptação Winsock