Socket Library
Hinweis zum Reifegrad: Diese Bibliothek ist funktionsfähig und gut getestet, aber neu veröffentlicht. Sie ist geeignet für Entwicklung, interne Werkzeuge und kontrollierte Umgebungen. Die Produktionsbereitstellung mit nicht vertrauenswürdigen Netzwerkeingaben sollte warten, bis die Codebasis mehrere Monate reale Härtung erfahren hat.
Hochleistungsfähiges, ausnahmegesteuertes Socket-Toolkit für POSIX-Systeme. Bietet eine saubere, moderne C-API für TCP, UDP, Unix-Domain-Sockets, HTTP/1.1, HTTP/2, QUIC, WebSocket und TLS/DTLS mit umfassender Fehlerbehandlung, Zero-Copy-I/O und plattformübergreifender Ereignisabfrage.
Funktionen
Kernnetzwerk
- TCP-Stream-Sockets – Voll ausgestatteter TCP-Client/Server mit Scatter/Gather-I/O
- UDP-Datagramm-Sockets – Verbindungslose und verbundene Modi mit Multicast/Broadcast
- Unix-Domain-Sockets – IPC-Sockets mit Peer-Anmeldeinformationen und Dateideskriptorübergabe
- TLS 1.3-Unterstützung – Modernes TLS mit SNI, ALPN, Sitzungswiederaufnahme, CRL/OCSP, Zertifikat-Pinning, Certificate Transparency (CT), kTLS-Offload, 0-RTT-Frühdaten, KeyUpdate
- DTLS 1.2+-Unterstützung – Sicheres UDP mit Cookie-Austausch zum DoS-Schutz, Sitzungs-Caching, ALPN
HTTP-Protokollstapel
- HTTP/1.1 – Tabellengesteuerter DFA-Parser (RFC 9112), Chunked-Encoding, Request-Smuggling-Verhinderung
- HTTP/2 – Binäres Framing, Stream-Multiplexing, Flusskontrolle, Server Push (RFC 9113)
- HPACK – Header-Kompression mit statischen/dynamischen Tabellen, Huffman-Codierung (RFC 7541)
- QPACK – HTTP/3-Header-Kompression (RFC 9204), Zwei-Stream-Architektur, Blockiertes-Stream-Management
- HTTP-Client – Verbindungspooling, Authentifizierung (Basic/Digest/Bearer), Cookies (RFC 6265)
- HTTP-Server – Ereignisgesteuerte Anfragebearbeitung, Keep-Alive, Graceful Shutdown
QUIC-Transport
- RFC 9000-konform – Vollständige QUIC v1-Transportprotokollimplementierung
- Verbindungsverwaltung – Connection-ID-Rotation, Zustandsloser Reset, Adressvalidierung
- Stream-Multiplexing – Bidirektionale und unidirektionale Ströme mit Flusskontrolle
- Verlusterkennung – RFC 9002 Überlastregelung und Verlustwiederherstellung
- Pfadmigration – Nahtlose Verbindungsmigration bei Netzwerkwechseln
- 0-RTT-Wiederaufnahme – Schnelle Wiederverbindung mit Frühdaten-Unterstützung
QUIC-TLS (RFC 9001)
- Paketschutz – AEAD-Verschlüsselung (AES-128-GCM, AES-256-GCM, ChaCha20-Poly1305)
- Header-Schutz – AES-ECB/ChaCha20-Maskenerzeugung für Paketnummernverschlüsselung
- Schlüsselableitung – HKDF-basierte Initialgeheimnisse aus Client-DCID, Handshake/Verkehrsschlüssel
- Schlüsselaktualisierung – Schlüsselphasenbit-Rotation mit AEAD-Vertraulichkeitsgrenzen (RFC 9001 §6)
- Retry-Integrität – AEAD-Tag-Überprüfung für Retry-Pakete (RFC 9001 §5.8)
- Transportparameter – TLS-Erweiterung (Typ 0x39) für QUIC-Konfigurationsaustausch
QPACK (RFC 9204)
- Header-Kompression – HTTP/3-Header-Kompression zur Vermeidung von Head-of-Line-Blocking
- Zwei-Stream-Architektur – Getrennte Encoder- (0x02) und Decoder-Ströme (0x03)
- Dynamische Tabelle – Absolute Indizierung mit encoder- und feldrelativen Schemata
- Statische Tabelle – 99 vordefinierte Einträge (RFC 9204 Anhang A)
- Zustandssynchronisation – Abschnittsbestätigung, Stromabbrechen, Einfügezählererhöhung
- Blockiertes-Stream-Management – Konfigurierbare Grenzen für blockierte Ströme mit SETTINGS-Aushandlung
WebSocket
- RFC 6455-konform – Vollständige WebSocket-Protokollimplementierung
- permessage-deflate – Kompressionserweiterung (RFC 7692) über zlib
- Inkrementelle UTF-8 – DFA-basierte Textframe-Validierung
- Auto-Ping/Pong – Konfigurierbarer Heartbeat mit Timer-Integration
Proxy-Tunneling
- HTTP CONNECT – Proxy-Tunneling mit Basic-Authentifizierung
- SOCKS4/4a – Legacy-SOCKS-Unterstützung
- SOCKS5 – RFC 1928/1929 mit Benutzername/Passwort-Authentifizierung
- Async-API – Nicht blockierende Proxy-Verbindung mit Zustandsmaschine
Ereignissystem
- Plattformübergreifende Abfrage – epoll (Linux), kqueue (BSD/macOS), poll-Fallback
- Edge-Triggered-Modus – Hochleistungs-Ereignisbenachrichtigung
- Asynchrone I/O – io_uring (Linux 5.1+), kqueue AIO (BSD/macOS)
- Timer – Einmalig und wiederholend mit O(log n) Min-Heap
Verbindungsverwaltung
- Verbindungspooling – O(1)-Suche mit Hash-Tabellen, verbindungsspezifische I/O-Puffer
- Happy Eyeballs – RFC 8305 Dual-Stack IPv4/IPv6-Verbindungsrennen
- Automatische Wiederverbindung – Exponentielles Backoff mit Circuit-Breaker-Muster
- Graceful Shutdown – Pool-Drain-Zustandsmaschine mit Timeout-Garantie
Sicherheitshärtung
- SYN-Flood-Schutz – Reputationsbewertung, Drosselung, Kernel-Integration
- Pro-IP-Verfolgung – Verbindungslimits und Ratenbegrenzung pro Client
- Ratenbegrenzung – Token-Bucket-Algorithmus für Verbindungen und Bandbreite
- Request-Smuggling-Verhinderung – Strenge HTTP-Analyse mit RFC-Konformität
DNS-Auflösung
- Async-Resolver – Nicht blockierende Auflösung mit Thread-Pool und Query-Multiplexing
- DNS-over-TLS (DoT) – RFC 7858/8310 verschlüsseltes DNS mit opportunistischem/striktem Modus
- DNS-over-HTTPS (DoH) – RFC 8484 DNS-Abfragen über HTTPS (POST/GET-Methoden)
- DNSSEC-Validierung – RFC 4033-4035 Vertrauenskette, NSEC/NSEC3 authentifizierte Verneinung
- DNS-Cookies – RFC 7873 Spoofing-Schutz über EDNS0
- Negatives Caching – RFC 2308 korrekte NXDOMAIN/NODATA-Behandlung
- Erweiterte DNS-Fehler – RFC 8914 detaillierte Fehlercodes
Infrastruktur
- Ausnahmebasierte Fehler – Saubere Fehlerweitergabe mit
TRY/EXCEPT/FINALLY
- Einfache API – Rückgabecodebasierte Komfortschicht für allgemeine Operationen (kein TRY/EXCEPT nötig)
- Arena-Speicherverwaltung – Effiziente Allokation mit Überlaufschutz
- Ringpuffer-I/O – Zero-Copy-Pufferung für Netzwerkoperationen
- Asynchrone I/O – Plattformoptimierte asynchrone Operationen (io_uring/kqueue)
- UTF-8-Validierung – Sicherheitsorientierte UTF-8-Verarbeitung für WebSocket-Textframes
- Generisches Wiederholungsframework – Exponentielles Backoff mit Jitter für resiliente Operationen
- Pro-IP-Verbindungsverfolgung – Verbindungslimits und Ratenbegrenzung pro Client-IP
- Zero-Copy-I/O – Plattformoptimiertes
sendfile() und Scatter/Gather-I/O
- Beobachtbarkeit – Einsteckbare Protokollierung, Prometheus/StatsD/JSON-Metrikexport, Ereignisverteilung
- Kryptografische Werkzeuge – SHA-1/256, HMAC, Base64, sicheres Zufallszahlen
- POSIX-konformes System (Linux, BSD, macOS)
- C11-Compiler mit GNU-Erweiterungen
- POSIX-Threads (pthread) für threadsichere Operationen
- IPv6-Unterstützung im Kernel (für Dual-Stack-Sockets)
- Nicht auf Windows portierbar ohne Winsock-Anpassungsschicht
| Merkmal | Linux | BSD/macOS | Ausweichverfahren |
|---|
| Ereignisabfrage | epoll | kqueue | poll(2) |
| Asynchrone I/O | io_uring (5.1+) | kqueue AIO | edge-triggered |
| TCP Fast Open | 3.7+ | 10.0+/10.11+ | deaktiviert |
| Überlastregelung | konfigurierbar | - | - |
| Peer-Anmeldeinformationen | SO_PEERCRED | LOCAL_PEERCRED | - |
| SYN-Schutz | TCP_DEFER_ACCEPT | SO_ACCEPTFILTER | userspace |