Socket Library
Aviso de Madurez: Esta biblioteca es funcional y está bien probada, pero recién publicada. Es apropiada para desarrollo, herramientas internas y entornos controlados. El despliegue en producción con entrada de red no confiable debe esperar hasta que la base de código haya acumulado varios meses de endurecimiento en el mundo real.
Herramienta de sockets de alto rendimiento y controlada por excepciones para sistemas POSIX. Proporciona una API en C limpia y moderna para TCP, UDP, sockets de dominio Unix, HTTP/1.1, HTTP/2, QUIC, WebSocket y TLS/DTLS con manejo integral de errores, E/S de copia cero y sondeo de eventos multiplataforma.
Características
Redes Principales
- Sockets de flujo TCP - Cliente/servidor TCP con todas las funciones con E/S scatter/gather
- Sockets de datagramas UDP - Modos sin conexión y con conexión con multidifusión/difusión
- Sockets de dominio Unix - Sockets IPC con soporte de credenciales de pares y paso de descriptores de archivo
- Soporte TLS 1.3 - TLS moderno con SNI, ALPN, reanudación de sesión, CRL/OCSP, fijación de certificados, Transparencia de Certificados (CT), descarga kTLS, datos tempranos 0-RTT, KeyUpdate
- Soporte DTLS 1.2+ - UDP seguro con intercambio de cookies para protección DoS, almacenamiento en caché de sesión, ALPN
Pila de Protocolo HTTP
- HTTP/1.1 - Analizador DFA controlado por tabla (RFC 9112), codificación fragmentada, prevención de contrabando de solicitudes
- HTTP/2 - Enmarque binario, multiplexación de flujos, control de flujo, push del servidor (RFC 9113)
- HPACK - Compresión de encabezados con tablas estáticas/dinámicas, codificación Huffman (RFC 7541)
- QPACK - Compresión de encabezados HTTP/3 (RFC 9204), arquitectura de dos flujos, gestión de flujos bloqueados
- Cliente HTTP - Agrupación de conexiones, autenticación (Basic/Digest/Bearer), cookies (RFC 6265)
- Servidor HTTP - Manejo de solicitudes basado en eventos, keep-alive, apagado gradual
Transporte QUIC
- Cumplimiento con RFC 9000 - Implementación completa del protocolo de transporte QUIC v1
- Gestión de Conexiones - Rotación de ID de conexión, restablecimiento sin estado, validación de dirección
- Multiplexación de Flujos - Flujos bidireccionales y unidireccionales con control de flujo
- Detección de Pérdidas - Control de congestión y recuperación de pérdidas según RFC 9002
- Migración de Ruta - Migración transparente de conexión a través de cambios de red
- Reanudación 0-RTT - Reconexión rápida con soporte de datos tempranos
QUIC-TLS (RFC 9001)
- Protección de Paquetes - Cifrado AEAD (AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305)
- Protección de Encabezados - Generación de máscara AES-ECB/ChaCha20 para cifrado de números de paquete
- Derivación de Claves - Secretos iniciales basados en HKDF a partir del DCID del cliente, claves de handshake/tráfico
- Actualización de Claves - Rotación del bit de fase de clave con límites de confidencialidad AEAD (RFC 9001 §6)
- Integridad de Reintentos - Verificación de etiqueta AEAD para paquetes Retry (RFC 9001 §5.8)
- Parámetros de Transporte - Extensión TLS (tipo 0x39) para intercambio de configuración QUIC
QPACK (RFC 9204)
- Compresión de Encabezados - Compresión de encabezados HTTP/3 evitando el bloqueo de cabeza de línea
- Arquitectura de Dos Flujos - Flujos separados de codificador (0x02) y decodificador (0x03)
- Tabla Dinámica - Indexación absoluta con esquemas relativos al codificador y relativos al campo
- Tabla Estática - 99 entradas predefinidas (Apéndice A de RFC 9204)
- Sincronización de Estado - Reconocimiento de sección, Cancelación de flujo, Incremento de recuento de inserción
- Gestión de Flujos Bloqueados - Límites configurables de flujos bloqueados con negociación SETTINGS
WebSocket
- Cumplimiento con RFC 6455 - Implementación completa del protocolo WebSocket
- permessage-deflate - Extensión de compresión (RFC 7692) mediante zlib
- UTF-8 Incremental - Validación de tramas de texto basada en DFA
- Auto-Ping/Pong - Latido configurable con integración de temporizador
Túneles Proxy
- HTTP CONNECT - Túnel proxy con autenticación Basic
- SOCKS4/4a - Soporte SOCKS heredado
- SOCKS5 - RFC 1928/1929 con autenticación de nombre de usuario/contraseña
- API Asíncrona - Conexión proxy no bloqueante con máquina de estados
Sistema de Eventos
- Sondeo Multiplataforma - epoll (Linux), kqueue (BSD/macOS), respaldo poll
- Modo Disparado por Borde - Notificación de eventos de alto rendimiento
- E/S Asíncrona - io_uring (Linux 5.1+), kqueue AIO (BSD/macOS)
- Temporizadores - Disparo único y repetitivo con montículo mínimo O(log n)
Gestión de Conexiones
- Agrupación de Conexiones - Búsqueda O(1) con tablas hash, búferes de E/S por conexión
- Happy Eyeballs - Carrera de conexión IPv4/IPv6 de doble pila según RFC 8305
- Reconexión Automática - Retroceso exponencial con patrón de interruptor de circuito
- Apagado Gradual - Máquina de estados de drenaje del pool con garantía de tiempo de espera
Endurecimiento de Seguridad
- Protección contra Inundaciones SYN - Puntuación de reputación, limitación, integración con el núcleo
- Seguimiento por IP - Límites de conexión y limitación de tasa por cliente
- Limitación de Tasa - Algoritmo de cubeta de tokens para conexiones y ancho de banda
- Prevención de Contrabando de Solicitudes - Análisis HTTP estricto con cumplimiento de RFC
Resolución DNS
- Resolvedor Asíncrono - Resolución no bloqueante con pool de hilos y multiplexación de consultas
- DNS sobre TLS (DoT) - DNS cifrado con modos oportunista/estricto según RFC 7858/8310
- DNS sobre HTTPS (DoH) - Consultas DNS sobre HTTPS (métodos POST/GET) según RFC 8484
- Validación DNSSEC - Cadena de confianza RFC 4033-4035, denegación autenticada NSEC/NSEC3
- Cookies DNS - Protección contra suplantación mediante EDNS0 según RFC 7873
- Caché Negativo - Manejo adecuado de NXDOMAIN/NODATA según RFC 2308
- Errores DNS Extendidos - Códigos de error detallados según RFC 8914
Infraestructura
- Errores Basados en Excepciones - Propagación limpia de errores con
TRY/EXCEPT/FINALLY
- API Simple - Capa de conveniencia basada en códigos de retorno para operaciones comunes (no se necesita TRY/EXCEPT)
- Gestión de Memoria Arena - Asignación eficiente con protección contra desbordamiento
- E/S con Búfer Circular - Búfer de copia cero para operaciones de red
- E/S Asíncrona - Operaciones asíncronas optimizadas para la plataforma (io_uring/kqueue)
- Validación UTF-8 - Procesamiento UTF-8 centrado en la seguridad para tramas de texto WebSocket
- Marco de Reintentos Genérico - Retroceso exponencial con variación para operaciones resilientes
- Seguimiento de Conexiones por IP - Límites de conexión y limitación de tasa por IP de cliente
- E/S de Copia Cero -
sendfile() optimizado para la plataforma y E/S scatter/gather
- Observabilidad - Registro conectable, exportación de métricas Prometheus/StatsD/JSON, despacho de eventos
- Utilidades Criptográficas - SHA-1/256, HMAC, Base64, aleatorio seguro