Inhaltsverzeichnis

std.net

Netzwerk-Units für TCP/UDP-Kommunikation, Anwendungsprotokolle und Netzwerkmanagement. Alle Units implementieren ihre Protokolle nativ — ohne externe Bibliotheken (Ausnahme: std.net.tls nutzt OpenSSL). Die Schichtarchitektur folgt dem ISO/OSI-Modell: Transport-Units bilden die Basis, darauf aufbauend die Protokoll-Units.

Unit Gruppe Beschreibung
std.net.socket Transport TCP, UDP, Unix, Raw-Sockets, ICMP, ARP, Poll/Select
std.net.types Transport Socket-Adresstypen und IP-Hilfsfunktionen
std.net.tls Transport TLS/SSL-Verbindungen (via OpenSSL)
std.net.syscalls Transport Portable POSIX-Socket-Syscall-Wrapper (unterste Schicht)
std.net.dns Protokolle DNS-Auflösung (A, AAAA, MX, NS, TXT, SOA, SRV, CAA, DNSKEY, DS, PTR)
std.net.http Protokolle HTTP/1.1-Client: GET, POST, Header, Chunked-Transfer
std.net.https Protokolle HTTPS-Client (TLS-gesichert)
std.net.smtp Protokolle SMTP-Mailversand (Ports 25/587/465)
std.net.imap Protokolle IMAP4rev1-Postfachzugriff: SELECT, LIST, FETCH
std.net.ssh Protokolle SSH: Auth, Remote-Befehlsausführung, Output-Capture
std.net.mqtt Protokolle MQTT 3.1.1: Publish, Subscribe, QoS 0/1/2 (IoT)
std.net.ntp Protokolle NTP v3: Zeitabfrage via UDP Port 123
std.net.quic Protokolle QUIC (RFC 9000): UDP-basiert, TLS 1.3 integriert
std.net.sip Protokolle SIP (RFC 3261): REGISTER, INVITE, OPTIONS (VoIP)
std.net.telnet Protokolle Telnet (RFC 854): Option-Negotiation, Legacy-Geräte
std.net.whois Protokolle WHOIS (RFC 3912): Auto-Routing zu Registry-Servern
std.net.ldap Verzeichnis & Routing LDAP (RFC 4511): Bind, Search, Modify, SASL-Auth
std.net.bgp Verzeichnis & Routing BGP-4 (RFC 4271): AS-Routing, UPDATE-Messages
std.net.snmp Management SNMPv1/v2c: OID-basierter Geräteparameter-Zugriff
std.net.asn1 Management ASN.1/BER-Encoding (interne Hilfsbibliothek für SNMP)
std.net.mongo Datenbank MongoDB Wire Protocol: BSON-Dokumente, SCRAM-SHA-1

Schichtarchitektur

Die Net-Units bauen aufeinander auf:

┌─────────────────────────────────────────────────────────┐
│  Anwendungsprotokolle                                   │
│  http · https · smtp · imap · ssh · mqtt · dns · ...   │
├─────────────────────────────────────────────────────────┤
│  Transport                                              │
│  socket · tls · types                                  │
├─────────────────────────────────────────────────────────┤
│  Syscalls                                               │
│  syscalls  (sys_socket, sys_connect, sys_send, ...)    │
└─────────────────────────────────────────────────────────┘

Beim direkten Einsatz importiert man typischerweise nur die Protokoll-Unit — die Transport-Schicht wird automatisch als Abhängigkeit mitgezogen.


Transport-Schicht

std.net.socket

Die Basis aller Netzwerkkommunikation. Unterstützt TCP (verbindungsorientiert), UDP (verbindungslos), Unix-Domain-Sockets, Raw-Sockets (ICMP, ARP) sowie nicht-blockierende I/O mit poll() und select().

import std.net.socket;

// TCP-Server
var srv: Socket := SocketTCPListen("0.0.0.0", 8080, 10);
var client: Socket := SocketAccept(srv);
var buf: pchar := alloc(4096);
var n: int64 := SocketRead(client, buf, 4096);
SocketWrite(client, "HTTP/1.1 200 OK\r\n\r\nHello", 25);
SocketClose(client);
SocketClose(srv);

Vollständige Dokumentation: std.net.socket

std.net.tls

TLS/SSL-Verbindungsschicht über OpenSSL. Wrappet einen bestehenden TCP-Socket mit TLS-Handshake und transparenter Ver-/Entschlüsselung. Basis für std.net.https, std.net.imap (IMAPS) und std.net.smtp (SMTPS).

Vollständige Dokumentation: std.net.tls


Protokoll-Units

std.net.dns

DNS-Client mit Unterstützung für alle gängigen Record-Typen (A, AAAA, MX, NS, CNAME, TXT, PTR, SOA, SRV, CAA, DNSKEY, DS). Direkte UDP-Abfrage an den Resolver, keine Abhängigkeit von systemd-resolved oder libc-Resolver.

import std.net.dns;

var ip: pchar := DNSResolveA("example.com");
var mx: pchar := DNSResolveMX("example.com");
PrintStr(ip);

Vollständige Dokumentation: std.net.dns

std.net.http / std.net.https

HTTP/1.1-Client für GET und POST-Anfragen. std.net.http kommuniziert unverschlüsselt (Port 80), std.net.https schaltet TLS davor (Port 443). Unterstützt Custom-Header, Request-Body und Chunked-Transfer-Encoding.

import std.net.https;

var resp: HTTPResponse := HTTPSGet("example.com", 443, "/api/data");
PrintStr(resp.body);

std.net.http · std.net.https

std.net.smtp

SMTP-Client für Mailversand. Unterstützt Plaintext (Port 25), STARTTLS (Port 587) und SMTPS (Port 465). Implementiert den vollständigen SMTP-Dialog: EHLO, AUTH, MAIL FROM, RCPT TO, DATA.

Vollständige Dokumentation: std.net.smtp

std.net.imap

IMAP4rev1-Client für Postfachzugriff. Unterstützt SELECT, LIST, FETCH, SEARCH und tagged Response-Parsing. Ermöglicht das Abrufen, Lesen und Verwalten von E-Mails aus einem IMAP-Postfach.

Vollständige Dokumentation: std.net.imap

std.net.ssh

SSH-Client für Remote-Verbindungen und Befehlsausführung. Authentifizierung per Passwort oder Key, Remote-Befehl ausführen und Ausgabe als String zurückbekommen.

import std.net.ssh;

var sess: SSHSession := SSHSessionNew();
SSHConnect(sess, "192.168.1.10", 22);
SSHAuth(sess, "admin", "secret");
var output: pchar := SSHExecOutput(sess, "uptime");
PrintStr(output);
SSHDisconnect(sess);

Vollständige Dokumentation: std.net.ssh

std.net.mqtt

MQTT 3.1.1-Client für IoT-Kommunikation. Verbindet mit einem MQTT-Broker, publiziert Nachrichten auf Topics und abonniert Topics. Unterstützt QoS-Level 0 (fire-and-forget), 1 (at-least-once) und 2 (exactly-once).

import std.net.mqtt;

var conn: MQTTConn := MQTTConnect("broker.example.com", 1883, "sensor-01");
MQTTPublish(conn, "sensors/temperature", "23.4", 4, 0);
MQTTDisconnect(conn);

Vollständige Dokumentation: std.net.mqtt

std.net.whois

WHOIS-Client für Domain- und IP-Informationsabfragen (RFC 3912). Routet automatisch zur zuständigen Registry (Verisign für .com, DENIC für .de, RIPE für europäische IPs etc.).

Vollständige Dokumentation: std.net.whois

Weitere Protokoll-Units


Verzeichnis & Management

std.net.ldap

LDAP-Client (RFC 4511) für Verzeichnisdienste wie Active Directory oder OpenLDAP. Unterstützt Bind (einfach und SASL), Search mit Filtern, Modify, Add, Delete und Compare-Operationen auf dem DN-basierten Verzeichnisbaum.

Vollständige Dokumentation: std.net.ldap

std.net.bgp

BGP-4-Implementierung (RFC 4271) für AS-Routing. Implementiert die BGP Finite State Machine (IDLE → CONNECT → ACTIVE → OPEN SENT → OPEN CONFIRM → ESTABLISHED) und verarbeitet UPDATE-Messages mit NLRI und Path-Attributes.

Vollständige Dokumentation: std.net.bgp

std.net.snmp

SNMP-Client v1/v2c für Netzwerkmanagement. Liest und setzt Geräteparameter über OID-Pfade (GET, SET, WALK). Kompatibel mit allen SNMP-fähigen Geräten (Router, Switches, Server-Hardware). Nutzt std.net.asn1 für die BER-Kodierung der PDUs.

Vollständige Dokumentation: std.net.snmp


Verwandte Units