Datagramme

In dieser interaktiven Lerneinheit untersuchst du den detaillierten Aufbau von UDP-Datagrammen und deren Bestandteile wie Header und Nutzdaten. Du lernst die einzelnen Felder eines UDP-Headers kennen und verstehst deren Funktion bei der Datenübertragung. Diese Grundlagen sind essentiell für die Analyse von Netzwerkverkehr und die Entwicklung von Anwendungen, die UDP zur Kommunikation nutzen.

Einführung

Stell dir vor, du verschickst einen Brief – aber ohne Umschlag. Einfach den Brief, ohne Schutz, ohne Absender, ohne Empfänger. Was würde passieren? Vermutlich käme er nie an.

In der digitalen Welt ist es ähnlich: Daten müssen für den Transport durchs Netzwerk “verpackt” werden. Diese Verpackung nennen wir Datagramm. Es ist wie ein digitaler Umschlag, der wichtige Informationen enthält: Woher kommen die Daten? Wohin sollen sie? Wie groß ist die Sendung?

Das User Datagram Protocol (UDP) nutzt genau solche Datagramme. Aber im Gegensatz zur Post gibt es hier keine Garantie für die Zustellung. UDP arbeitet nach dem Prinzip “fire and forget” – wie ein Postbote, der Briefe einwirft und weiterzieht, ohne zu warten, ob jemand sie erhält.

Warum sollte man ein solches Protokoll überhaupt nutzen? Nun, manchmal ist Geschwindigkeit wichtiger als Zuverlässigkeit. Beim Online-Gaming oder Videostreaming zum Beispiel ist es besser, wenn ein einzelnes Bild verloren geht, als wenn der gesamte Stream ins Stocken gerät.

In dieser Lerneinheit schauen wir uns an, wie UDP-Datagramme aufgebaut sind und wie sie ihre “Pakete” für die Reise durchs Netzwerk vorbereiten.

Lernziele

Nach dieser Lerneinheit kannst du:

  • den grundlegenden Aufbau eines UDP-Datagramms beschreiben und die Funktion der einzelnen Header-Felder erklären

  • die Größenbeschränkungen von UDP-Datagrammen benennen und deren praktische Auswirkungen auf die Datenübertragung einschätzen

  • den Unterschied zwischen Header und Payload eines UDP-Datagramms erläutern und deren jeweilige Bedeutung für die Netzwerkkommunikation verstehen

  • die Vor- und Nachteile der Datagramm-basierten Übertragung analysieren und einschätzen, für welche Anwendungsfälle sie sich besonders eignet

Überleitung

Um zu verstehen, wie UDP-Datagramme ihre “Pakete” für die Reise durchs Netzwerk vorbereiten, müssen wir uns zunächst ihren grundlegenden Aufbau ansehen. Genau wie ein Brief einen Umschlag mit bestimmten Feldern für Absender und Empfänger hat, besitzt auch ein UDP-Datagramm einen Header mit wichtigen Informationen für die Übertragung.

Schauen wir uns also an, aus welchen Teilen ein UDP-Datagramm besteht und welche Rolle diese bei der Datenübertragung spielen.

Grundaufbau eines UDP-Datagramms

Ein UDP-Datagramm besteht aus zwei Hauptkomponenten:

  • Dem Header, der wichtige Steuerinformationen enthält
  • Dem Payload (Nutzdaten), der die eigentlichen zu übertragenden Daten beinhaltet

Der UDP-Header ist dabei erstaunlich kompakt: Er umfasst nur 8 Bytes und enthält vier essentielle Felder, die jeweils 2 Bytes (16 Bit) groß sind. Diese schlanke Struktur ist ein Grund dafür, warum UDP besonders effizient arbeiten kann.

Die vier Header-Felder im Detail

1. Quell-Port (Source Port)

  • Identifiziert den sendenden Prozess
  • Ermöglicht Antworten an den richtigen Absender
  • Kann auf 0 gesetzt werden, wenn keine Antwort erwartet wird

Die vier Header-Felder im Detail

2. Ziel-Port (Destination Port)

  • Gibt an, welcher Dienst auf dem Zielrechner die Daten erhalten soll
  • Muss immer einen gültigen Wert enthalten
  • Beispiele für bekannte Ports:
    • DNS: Port 53
    • DHCP: Port 67/68
    • TFTP: Port 69

Die vier Header-Felder im Detail

3. Länge (Length)

  • Gibt die Gesamtlänge des UDP-Datagramms in Bytes an
  • Umfasst Header (8 Bytes) plus Nutzdaten
  • Minimaler Wert ist 8 (leeres Datagramm, nur Header)
  • Maximaler theoretischer Wert ist 65.535 (2¹⁶-1)

Die vier Header-Felder im Detail

4. Prüfsumme (Checksum)

Die Prüfsumme ist ein besonders interessantes Feld, da es für die Fehlererkennung zuständig ist:

  • Berechnet sich aus Header, Daten und einem Pseudo-Header
  • Der Pseudo-Header enthält zusätzliche IP-Informationen:
    • Quell-IP-Adresse
    • Ziel-IP-Adresse
    • Protokollnummer (17 für UDP)
    • UDP-Länge

Besonderheiten der Prüfsumme:

  • Bei IPv4 ist sie optional (kann 0 sein)
  • Bei IPv6 ist sie verpflichtend
  • Eine Prüfsumme von 0 bedeutet:
    • Entweder wurde keine Prüfsumme berechnet
    • Oder die Berechnung ergab zufällig 0

Praktisches Beispiel eines UDP-Datagramms

Betrachten wir ein DNS-Query als Beispiel:

Quell-Port:      53612 (zufällig gewählt)
Ziel-Port:       53 (DNS)
Länge:           28 (8 Byte Header + 20 Byte DNS-Query)
Prüfsumme:       0x4D2B

Nutzdaten:       [DNS-Query für www.example.com]

In diesem Fall:

  • Der Client wählte einen zufälligen Port > 1024
  • Der DNS-Server wird über den Standard-Port 53 angesprochen
  • Die Gesamtlänge beträgt 28 Bytes
  • Die Prüfsumme wurde berechnet und enthält einen gültigen Wert
⏳ Lädt Dataview-Inhalt...

Größenbeschränkungen von UDP-Datagrammen

Die maximale Größe eines UDP-Datagramms wird durch mehrere Faktoren begrenzt:

Theoretische Grenzen

  • Das Längenfeld im UDP-Header ist 16 Bit groß
  • Daraus ergibt sich eine theoretische Maximalgröße von 65.535 Bytes (2¹⁶-1)
  • Dies umfasst Header (8 Bytes) und Nutzdaten

Praktische Grenzen

  • IPv4: Maximal 65.507 Bytes (65.535 - 8 [UDP-Header] - 20 [IPv4-Header])
  • IPv6: Maximal 65.487 Bytes (65.535 - 8 [UDP-Header] - 40 [IPv6-Header])

Diese theoretischen Maximalgrößen werden in der Praxis jedoch selten ausgenutzt.

MTU und Fragmentierung

Die tatsächlich nutzbare Größe wird meist durch die Maximum Transmission Unit (MTU) begrenzt:

Standard-MTU-Größen

  • Ethernet: 1500 Bytes
  • PPPoE: 1492 Bytes
  • WLAN: 2304 Bytes

Effektive Nutzdatengröße

Für ein Standard-Ethernet-Netzwerk:

Ethernet MTU:     1500 Bytes
- IPv4 Header:      20 Bytes
- UDP Header:        8 Bytes
------------------------
Maximale Payload: 1472 Bytes

Wenn ein UDP-Datagramm größer als die MTU ist, muss es auf IP-Ebene fragmentiert werden. Dies kann zu verschiedenen Problemen führen:

  • Erhöhte Übertragungslatenz
  • Höhere Verlustwahrscheinlichkeit
  • Zusätzlicher Verarbeitungsaufwand
  • Mögliche Probleme mit Firewalls

Path MTU Discovery

Um Fragmentierung zu vermeiden, können Anwendungen die Path MTU Discovery nutzen:

Funktionsweise

  1. Senden eines Pakets mit gesetztem “Don’t Fragment”-Bit
  2. Bei zu großer Paketgröße kommt eine ICMP-Nachricht zurück
  3. Diese enthält Informationen über die maximale Paketgröße
  4. Die Anwendung passt ihre Datagrammgröße entsprechend an

Beispiel

sock.setsockopt(socket.IPPROTO_IP, socket.IP_MTU_DISCOVER,
                socket.IP_PMTUDISC_DO)
 
mtu = sock.getsockopt(socket.IPPROTO_IP, socket.IP_MTU)
max_payload = mtu - 20 - 8

Optimale Datagrammgröße

Vergleich von Datagrammgrößen

KategorieVorteileNachteile
Kleine Datagramme
(< 512 Bytes)
- Geringere Latenz
- Keine Fragmentierung
- Höhere Erfolgswahrscheinlichkeit
- Mehr Header-Overhead
- Geringerer Durchsatz
Große Datagramme
(> 1472 Bytes)
- Bessere Effizienz bei großen Datenmengen
- Weniger Header-Overhead
- Fragmentierungsrisiko
- Höhere Latenz bei Verlust

Empfehlungen zur Datagrammgröße

AnwendungstypEmpfohlene Größe
Echtzeit-Anwendungen500–1000 Bytes
DateitransferMTU-basierte Größe
Internet-AnwendungenMax. 1472 Bytes (IPv4)
Max. 1452 Bytes (IPv6)
⏳ Lädt Dataview-Inhalt...

Zusammenfassung und Ausblick

Zusammenfassung

In dieser Lerneinheit hast du die Struktur und die praktischen Aspekte von UDP-Datagrammen kennengelernt.

Aufbau eines UDP-Datagramms

  • Quell-Port: Identifiziert die sendende Anwendung, wichtig für Rückantworten.
  • Ziel-Port: Gibt an, welche Anwendung auf dem Zielsystem angesprochen wird.
  • Länge: Gibt die Gesamtlänge des Datagramms an (Header + Nutzdaten).
  • Prüfsumme: Dient zur Sicherstellung der Datenintegrität. Unter IPv4 optional, unter IPv6 verpflichtend.

Technische Begrenzungen

  • Das Längenfeld im Header ist 16 Bit groß und begrenzt die maximale Größe eines UDP-Datagramms auf 65.535 Byte (inkl. Header).

  • Praktisch begrenzen IP-Header und die verwendete IP-Version die Nutzdaten:

    • IPv4: max. 65.507 Byte Nutzdaten (65.535 - 20 IP-Header - 8 UDP-Header)
    • IPv6: max. 65.487 Byte Nutzdaten (65.535 - 40 IP-Header - 8 UDP-Header)

MTU und Fragmentierung

  • Die MTU (Maximum Transmission Unit) legt die maximale Paketgröße im Netzwerk fest (z. B. 1500 Byte bei Ethernet).
  • Überschreiten UDP-Datagramme die MTU, müssen sie fragmentiert werden. Das erhöht das Risiko von Paketverlust.

Best Practices

  • MTU beachten: Datagramme sollten kleiner als die MTU sein (IPv4: max. 1472 Byte; IPv6: max. 1452 Byte).
  • Payload optimieren: Gerade bei Echtzeitanwendungen wie VoIP oder Online-Games empfiehlt es sich, kleinere Pakete zu senden.
  • Prüfsumme nutzen: Auch wenn unter IPv4 optional, hilft die Prüfsumme, beschädigte Daten frühzeitig zu erkennen.

Relevanz

Ein fundiertes Verständnis für den Aufbau und die Grenzen von UDP-Datagrammen ist entscheidend für die Entwicklung performanter und robuster Netzwerk-Anwendungen. Fehlerhafte Port-Zuweisungen, übergroße Pakete oder fehlende Prüfsummen können zu Datenverlust, Fehlfunktionen oder Sicherheitsrisiken führen.

Ausblick

In der nächsten Lerneinheit erfährst du, was verbindungslose Kommunikation bedeutet und welche Chancen und Risiken sie im Vergleich zu verbindungsorientierten Protokollen wie TCP mit sich bringt.