Zum Hauptinhalt springen

UDP (User Datagram Protocol)

Überblick​

UDP ist ein verbindungsloses Transportprotokoll auf Schicht 4 des OSI-Modells, spezifiziert in RFC 768. Es ergänzt die Paketauslieferung von IP um fast nichts: Portnummern, ein Längenfeld und eine Prüfsumme. Jedes Datagramm wird einzeln adressiert und geroutet, ohne vorherigen Verbindungsaufbau, gemeinsamen Zustand, Bestätigung oder Wiederholung. Ein Datagramm wird gesendet und kommt entweder an oder nicht, und der Sender erfährt nie, welcher der beiden Fälle eingetreten ist. Ein UDP-Endpunkt wird über die Kombination aus IP-Adresse und Portnummer angesprochen.


Eigenschaften​

EigenschaftVerhalten bei UDP
VerbindungVerbindungslos, ein Datagramm kann sofort gesendet werden
AuslieferungUnzuverlässig, verlorene Datagramme werden nicht bemerkt und nicht wiederholt
ReihenfolgeNicht garantiert, Datagramme können in anderer Reihenfolge ankommen
DuplikateMöglich, die Erkennung bleibt der Anwendung überlassen
DatenmodellNachrichtenorientiert, ein Sendevorgang ergibt genau ein Datagramm
RichtungBeide Seiten dürfen jederzeit senden, jedes Datagramm steht für sich
FlusskontrolleKeine
StaukontrolleKeine, ein Sender kann das Netz überfluten
Headergröße8 Byte, fest
Broadcast / MulticastUnterstützt, ein Datagramm kann viele Empfänger adressieren

Im Gegenzug für den geringen Overhead gibt UDP keine Garantien.


Datagramm-Header​

Der Header besteht aus vier Feldern mit je 2 Byte:

FeldZweck
QuellportPort der sendenden Anwendung, darf 0 sein, wenn keine Antwort erwartet wird
ZielportPort der empfangenden Anwendung
LängeLänge von Header und Nutzdaten in Byte
PrüfsummeFehlererkennung über Header, Nutzdaten und Teile des IP-Headers, bei IPv4 optional und bei IPv6 verpflichtend

Ein beschädigtes Datagramm wird stillschweigend verworfen.


Kommunikation ohne Verbindung​

Anders als bei TCP, wo Nutzdaten erst nach dem Drei-Wege-Handshake folgen, trägt bereits das erste Datagramm Nutzdaten. Nach dem letzten bleibt auf keiner Seite ein Verbindungszustand zurück.

Client Server

| ---- Datagramm (Anfrage) ------------------> | Anwendung liest es
| |
| <--- Datagramm (Antwort) ------------------- |
| |
| ---- Datagramm (Anfrage) -----X | verloren, niemand wird informiert
| |
| (Timeout in der Anwendung) |
| |
| ---- Datagramm (Anfrage, wiederholt) ------> |
  • Der Client erfährt erst durch die Antwort, dass seine Anfrage angekommen ist. Eine fehlende Antwort kann eine verlorene Anfrage, eine verlorene Antwort oder einen nicht erreichbaren Server bedeuten.
  • Die Absenderadresse eines Datagramms wird nie durch einen Handshake überprüft. Dadurch sind gefälschte Anfragen möglich, die Amplification-Angriffe über DNS oder NTP ausnutzen.
  • Ein Datagramm an einen geschlossenen Port wird mit der ICMP-Meldung Port Unreachable beantwortet. Ein offener und ein gefilterter Port bleiben meist beide stumm, weshalb ein UDP-Portscan die beiden oft nicht unterscheiden kann.

Keine Fluss- und Staukontrolle​

UDP gibt Datagramme so schnell weiter, wie die Anwendung sie sendet. Ist der Empfangspuffer voll, werden weitere Datagramme ohne Meldung verworfen. Ist das Netz überlastet, gehen Datagramme in den Warteschlangen der Router verloren.

Eine Anwendung, die große Datenmengen über UDP sendet, muss ihre Rate selbst begrenzen (RFC 8085). Andernfalls verdrängt sie TCP-Verkehr, weil TCP bei Paketverlust seine Rate senkt und UDP die frei werdende Kapazität übernimmt.


Typische Einsatzgebiete​

UDP vs. TCP​

UDPTCP
KriteriumEin verspätetes Paket ist wertlos, oder der Aufwand einer Verbindung übersteigt die NutzdatenVollständigkeit ist wichtiger als Latenz
BeispieleLive-Audio und -Video, Online-Spiele, kurze Anfragen, Telemetrie, Dienstsuche über MulticastDateiübertragung, Webseiten, E-Mail, Fernadministration, Datenbankverbindungen

Bekannte UDP-Ports​

PortDienstWarum UDP
53DNSEine kurze Anfrage, eine kurze Antwort, eine Wiederholung ist günstiger als eine Verbindung
67/68DHCPDer Client hat noch keine IP-Adresse und ist auf Broadcast angewiesen
69TFTPAbsichtlich minimal, Einsatz in Boot-Umgebungen
123NTPEin wiederholter Zeitstempel wäre bereits veraltet
161/162SNMPViele kleine Statusmeldungen, der Verlust einer einzelnen ist verkraftbar
443QUIC / HTTP/3Die Zuverlässigkeit wird in QUIC oberhalb von UDP umgesetzt
500/4500IPsec (IKE)Schlüsselaushandlung und NAT-Traversal
5060SIPSignalisierung für Sprachverbindungen

Bei DNS arbeiten beide Protokolle nebeneinander: Anfragen und kurze Antworten laufen über UDP, Zonentransfers und Antworten oberhalb der UDP-Größengrenze über TCP. Diese Grenze liegt bei 512 Byte oder bei der Puffergröße, die der Client per EDNS(0) ankündigt.

Siehe auch​

  • TCP: das verbindungsorientierte Gegenstück mit Zuverlässigkeit, Reihenfolge und Flusskontrolle
  • OSI-Modell: wo die Transportschicht zwischen Netzwerk- und Sitzungsschicht sitzt
  • DHCP: ein Protokoll, das auf UDP-Broadcasts angewiesen ist
  • DNS: nutzt UDP für Anfragen und TCP für große Antworten