UDP - User Datagram Protocol

Die Kommunikation von Systemen in lokalen Heim- und Firmennetzwerken und öffentlichen Netzwerken wie dem Internet basiert standardmäßig auf der Internetprotokollfamilie. Bekannteste Komponente dieses Protokollstacks ist zweifelsohne das Internet Protocol (IP), das nicht nur für die Adressierung und Fragmentierung von Datenpaketen zuständig ist, sondern auch definiert, wie Informationen über Quelle und Ziel beschrieben werden. Die Übertragung der Daten übernimmt allerdings für gewöhnlich das verbindungsorientierte Transportprotokoll TCP (Transmission Control Protocol), weshalb die Netze häufig als TCP/IP-Netzwerke bezeichnet werden. Da TCP zwar für die Sicherheit, gleichzeitig aber auch für eine Verzögerung der Übertragung sorgt, veröffentlichte David Patrick Reed 1980 sein Konzept zum User Datagram Protocol (UDP) als einfachere und schnellere Alternative zum Standardprotokoll.

Was ist UDP (User Datagram Protocol)?

Das User Datagram Protocol, kurz UDP, ist ein Protokoll, das den verbindungslosen Versand von Datagrammen in IP-basierten Netzwerken ermöglicht. Um die gewünschten Services auf den Zielhosts zu erreichen, greift es auf Ports zurück, die als einer der Kernbestandteile im UDP-Header verzeichnet sind. Wie viele andere Netzwerkprotokolle zählt UDP zur Internetprotokollfamilie, wobei es auf der Transportebene und somit als Vermittlerinstanz zwischen Netzwerk- und Applikationsschicht einzustufen ist.

Hinweis

Das UDP-Protokoll stellt eine direkte Alternative zum verbreiteteren TCP dar, wobei sich beide Protokolle vor allem in einem Punkt unterscheiden: Während die Übertragung via TCP erst nach dem obligatorischen Drei-Wege-Handshake (wechselseitige Authentifizierung zwischen Absender und Empfänger inklusive Verbindungsaufbau) stattfindet, verzichtet UDP auf ein solches Prozedere, um die Übertragungsdauer möglichst minimal zu halten.

Durch die Nutzung des User Datagram Protocols kann eine Anwendung also sehr schnell Informationen versenden, da weder eine Verbindung zum Adressaten aufgebaut noch eine Antwort abgewartet werden muss. Es gibt allerdings keinerlei Garantie dafür, dass Pakete vollständig und in der gleichen Reihenfolge, in der sie gesendet wurden, ankommen. Zudem bietet das Protokoll keinen eigenen Schutz gegen Manipulation bzw. den Zugriff durch Dritte. Fehlerhafte Pakete können jedoch durch eine optional verwendbare Prüfsumme (in Kombination mit IPv6 verpflichtend) erkannt werden.

Definition UDP

UDP (User Datagram Protocol) ist ein verbindungsloses Protokoll der Internetprotokollfamilie, das auf der Transportschicht arbeitet und 1980 im RFC (Request for Comments) 768 spezifiziert wurde. Als schlanke und nahezu verzögerungsfrei funktionierende Alternative zu TCP wird UDP zur schnellen Übertragung von Datenpaketen in IP-Netzwerken eingesetzt. Typische Einsatzfelder von UDP sind daher DNS-Abfragen, VPN-Verbindungen und Audio-/Video-Streaming.

Die Eigenschaften von UDP im Überblick

Um zu verstehen, wie die Paketübertragung mit dem Protokoll im Detail funktioniert, ist es sinnvoll, die genannten Eigenschaften des User Datagram Protocols etwas genauer unter die Lupe zu nehmen.

  1. UDP ist verbindungslos: Der Datentransport über das UDP-Protokoll zeichnet sich dadurch aus, dass er ohne eine bestehende Verbindung zwischen Absender und Empfänger stattfindet. Die jeweiligen Pakete werden in der Folge unter Angabe des Ziel-Ports an die präferierte IP-Adresse gesendet, ohne dass der sich dahinter befindende Rechner mit einer Antwort reagieren muss. Sollen jedoch auch Pakete an den Absender zurückgeschickt werden, kann der UDP-Header optional auch den Quell-Port enthalten.
     
  2. UDP verwendet Ports: UDP greift wie TCP auf Ports zurück, damit die Pakete an die richtigen Folgeprotokolle bzw. die gewünschten Anwendungen auf dem Zielsystem übergeben werden. Die Ports sind dabei nach dem bewährten Muster per Nummer definiert, wobei die Nummern zwischen 0 und 1023 festen Services zugeordnet sind.
     
  3. UDP ermöglicht schnelle, verzögerungsfreie Kommunikation: Das Transportprotokoll eignet sich aufgrund des ausbleibenden Verbindungsaufbaus für eine schnelle Datenübertragung. Dies resultiert auch daraus, dass der Verlust einzelner Pakete lediglich die Qualität der Übertragung beeinflusst. Bei TCP-Verbindungen werden verloren gegangene Pakete hingegen automatisch neu angefordert, wodurch der gesamte Übertragungsprozess ins Stocken gerät.
     
  4. UDP bietet keine Garantie für die Sicherheit und Unverfälschtheit der Daten: Der Verzicht auf eine wechselseitige Authentifizierung von Sender und Empfänger sorgt für die hervorragende Übertragungsgeschwindigkeit des UDP-Protokolls – allerdings kann das Protokoll weder die Vollständigkeit noch die Sicherheit der Datenpakete garantieren. Auch die korrekte Reihenfolge der verschickten Pakete ist nicht gewährleistet. Deshalb müssen die Dienste, die auf UDP zurückgreifen, eigene Maßnahmen für die Korrektur bzw. den Schutz bereitstellen.
Fazit

Die wichtigste Eigenschaft des User Datagram Protocols ist seine Möglichkeit, Datenpakete ohne bestehende Verbindung zu transportieren. Die daraus für die Übertragung resultierenden Geschwindigkeitsvorteile sind mit einer hohen Anfälligkeit gegenüber Manipulation, nicht korrigiertem Paketverlust und einer teilweise willkürlichen Sortierung der Pakete verbunden. UDP-Anwendungen müssen aus diesem Grund gut mit fehlenden und unsortierten Datenpaketen arbeiten können und/oder eigene Korrektur- und Sicherheitsmechanismen beinhalten.

Wie ist der UDP-Header aufgebaut?

Wie für Protokolle typisch setzen sich UDP-Pakete aus einem Header – auch Kopfbereich genannt –und den eigentlichen Nutzdaten zusammen. Der UDP-Header enthält dabei alle Informationen, die für die Datenübertragung mit dem Transportprotokoll notwendig sind und ein UDP-Paket als solches identifizierbar machen. Unterteilt in zwei 32-Bit-Blöcke mit vier verschiedenen Datenfeldern, sieht der Aufbau dabei folgendermaßen aus:

Die ersten 16 Bit des Kopfbereichs verraten den Quell-Port, über den das jeweilige Datenpaket gesendet wird. Diese Information benötigt der Empfänger, um auf das Paket antworten zu können. Da UDP verbindungslos und grundsätzlich keinerlei Austausch zwischen Absender und Empfänger vorgesehen ist, ist dieses Feld optional. Daher ist an dieser Stelle meistens der Wert „0“ gesetzt.

Im nächsten Feld wird der Ziel-Port und somit der angesteuerte Service angegeben. Im Gegensatz zum Quell-Port ist diese Information verpflichtend, da das Datagramm ansonsten nicht korrekt zugeordnet werden kann.

Hinweis

Für die Port-Felder gilt folgender Grundsatz: Handelt es sich um eine clientseitige Anwendung, ist die zugewiesene Port-Nummer voraussichtlich flüchtig. Ist der Port einem Server-Prozess zuzuordnen, zählt die Port-Nummer normalerweise zu den „well-known Ports“ (standardisierte Ports).

Im Längenfeld wird die Länge des Datagramms definiert. Diese setzt sich aus der Länge des Headers (8 Bytes) und der Größe der Nutzdaten (theoretisches Maximum: 65.535 Bytes) zusammen. Bei der Verwendung von IPv4 liegt das tatsächliche Limit für die Nutzdaten bei 65.507 Bytes – nach Abzug von IP- und UDP-Header. In IPv6 sind darüber hinaus Pakete (sogenannte Jumbograms) möglich, die das Maximum überschreiten. Nach RFC 2675 wird der Wert des Längenfelds in einem solchen Fall auf „0“ gesetzt.

Den Abschluss des UDP-Headers bildet die Prüfsumme, die der Fehlererkennung bei der Übertragung dient. Auf diese Weise können Manipulationen an den übertragenen Daten erkannt werden – entsprechende Pakete werden allerdings ohne erneute Anforderung verworfen. Zur Erzeugung der Summe werden Teile

  • des UDP-Headers,
  • der Nutzdaten
  • sowie des sogenannten Pseudo-Headers (enthält Informationen des IP-Headers)

einbezogen.

Die Prüfsumme ist in IPv4 optional, wird von den meisten Anwendungen aber standardmäßig genutzt. Bei einem Verzicht nimmt auch dieses Feld den Wert „0“ an. Kommt UDP in Kombination mit IPv6 zum Einsatz, ist die Prüfsumme obligatorisch.

Welche Anwendungen nutzen UDP?

Das User Datagram Protocol ist mit seiner minimalistischen Struktur und den fehlenden Mechanismen zur Gewährleistung einer kompletten, erfolgreichen Übertragung nicht als universelles Transportprotokoll einsetzbar. Es wurde vielmehr von Beginn an für Anwendungen konzipiert, die (noch) keinen zuverlässigen Übermittlungsdienst benötigen. Das Einsatzfeld von UDP ist in der Konsequenz zwar eingeschränkt, unterstreicht aber dennoch den enormen Wert des Protokolls, wie die folgenden Anwendungsklassen für UDP unter Beweis stellen:

  • „Best-Effort-Delivery“-Anwendungen: Das klassische Einsatzszenario für UDP sind Anwendungen, die auf einer „Datenauslieferung nach bestem Bemühen“ basieren. Solchen Programmen, die das User Datagram Protocol als „Best Effort“-Service nutzen, reicht die unzuverlässige Übertragung der Informationen, weil sie die Informationen ohnehin regelmäßig wiederholen. Beispiele sind Anwendungen, die Messwerte übertragen oder immer wieder die gleichen Arbeitsaufträge ausführen.
  • Leichtgewichtige Anwendungen: Der geringe Overload des Transportprotokolls bietet die optimale Unterstützung für Anwendungen, die sehr einfach konstruiert sind. In Kombination mit dem Verzicht auf einen Verbindungsaufbau profitieren diese Programme von einer besonders hohen Performanz bei der Verarbeitung und Weiterleitung der Datenpakete in Netzwerken.
  • Anwendungen mit eigenen Mechanismen zur zuverlässigen Übermittlung: UDP kann auch für Anwendungen interessant sein, die eigentlich auf zuverlässigen Informationsaustausch angewiesen sind, aber über eigene Mechanismen zur Beantwortung von Paketen verfügen sollen. Vorteil solcher Dienste ist, dass sie nicht an feste Muster gebunden sind, um die Vollständigkeit und Korrektheit verschickter Datenpakete zu gewährleisten. Sie können selbstständig entscheiden, wie und wann auf fehlerhafte oder unsortierte Informationen reagiert werden soll.
  • Multicast-Anwendungen: Während zuverlässige Transportprotokolle wie TCP auf die Nutzung von Ende-zu-Ende-Kommunikation beschränkt sind, unterstützt das UDP-Protokoll auch IP-Multicast-Verbindungen. Soll eine Anwendung also IP-Pakete effizient und schnell an viele Empfänger gleichzeitig versenden können, schafft UDP eine geeignete Basis.
  • Echtzeitanwendungen (Real-time Applications): Schließlich ist UDP auch als Transportprotokoll für Dienste geeignet, die mit Echtzeit-Anforderungen arbeiten – etwa Audio- oder Videoübertragungen. Diese müssen den Versand, Empfang und die Wiedergabe von Datenströmen weitgehend selbst steuern können, was mit der verbindungslosen UDP-Übertragung problemlos möglich ist.
Hinweis

Echtzeitanwendungen nutzen mittlerweile vor allem das Real-time Transport Protocol (RTP), das auf UDP aufbaut und im Gegensatz zum Basisprotokoll auch den Verlust von Paketen feststellen kann. Die neueste Spezifizierung des RTP ist in RFC 3550 zu finden.