Meinels Web-Tutorial: UDP oder wenn es mal schnell gehen muss
Das Transmission Control Protocol (TCP) gehört zum Kernstück des Internets und stellt über seine Funktionalitäten bereit, dass Daten über einen verbindungsorientierten Dienst immer sicher und vollständig dort ankommen, wo sie empfangen werden sollen. TCP spielt damit eine ganz zentrale Rolle unter den Bestandteilen der Internetprotokollsuite. Für eine Reihe spezieller Anwendungen allerdings kostet der Datentransfer mit TCP zu viel Performance. Das gilt für Anwendungen, bei denen der Datenaustausch sehr schnell gehen soll – so schnell, dass man dafür auch den einen oder anderen Fehler in Kauf nimmt, was die garantiert korrekte und vollständige Übertragung anbelangt. Dann kommt statt TCP das »User Datagram Protocol« (UDP) ins Spiel.
Bei der Vorstellung von TCP haben wir gesehen, dass die Datenübertragung per TCP recht aufwändig ist. Um einen sicheren Datenaustausch zu ermöglichen, muss TCP erst eine Verbindung und die digitalen Anlegestellen in den Endsystemen aufbauen sowie einen Quittierungsmechanismus einrichten, um mit Übertragungsfehlern und Engpässen bei den Ein- und Ausgangspuffern von Sender und Empfänger umgehen und die Last auf der Internetschicht zwischen den Systemen regulieren zu können. Für bestimmte Datentransfers ist dieser Aufwand zu hoch. Gerade wenn es um sehr kurze Nachrichten geht oder um Informationen, bei denen Datenpaketverluste wie beim Streaming verkraftbar sind, braucht es einfachere und schnellere Verfahren.
UDP ist angesiedelt auf der Transportschicht und bietet ein solches vereinfachtes Verfahren. Statt den aufwändigen Verbindungsauf- und abbau zu durchlaufen, mit Handshakes und Verkehrskontrollen, definiert das Protokoll lediglich die Anlegestellen in den Endsystemen, also die Ports, die angesteuert werden sollen. So wird ein verbindungsloser Transferdienst bereitgestellt, bei dem keine Quittierung erfolgt. UDP setzt also auf den Protokollen der Internetschicht (IP) auf und bietet als zusätzliche Funktionalität bloß vordefinierte UDP-Ports, die gekapselt in IP-Paketen versendet werden. Von den Anwendungen auf der darüber liegenden Anwendungsschicht können vermittels von UDP-Nachrichten vor allem einfache Frage/Antwort-Interaktionen realisiert werden. Auch bei UDP gibt es festgelegte Portnummern wie beispielsweise für das Datenübertragungsprotokoll TFTP (Port 69), den Domain Name Service (Port 53) und viele mehr. Und wie auch mit TCP kann ein Rechner über UDP-Multiplexing mehrere Anwendungen und ihre Ports ansteuern. Weiterhin können TCP-Verbindungen und UDP-Interaktionen gleichzeitig und parallel laufen und Daten über das jeweils passende Protokoll komplementär übertragen. Dabei muss nur darauf geachtet werden, dass die Portnummern identisch sein müssen, wenn beide Protokolle bei einer gemeinsamen Datenübertragung im Spiel sind.
Auf Grund seiner simplen Funktionalität sind UDP-Header und UDP-Datagramm entsprechend simpel aufgebaut. Über maximal 64 Bit werden Quell-Port, Empfänger-Port, Datagrammlänge und Prüfsumme definiert. Der Rest ist Nutzlast.
Das schlanke UDP-Protokoll wird von vielen Diensten benutzt, um den reibungslosen und schnellen Datenverkehr im Alltag zu ermöglichen. Zu den wichtigsten Anwendungen gehört das »Dynamic Host Configuration Protocol« (DHCP), welches neue Rechner in Netzwerken mit IP-Adressen versorgt; außerdem der »Domain Name Service« (DNS) und das »Network Time Protocol« (NTP), mit dem Rechner im Netzwerk ihre Uhren vergleichen. Weiterhin kommt UDP bei Übertragungen zum Einsatz, wo Paketverluste verkraftbar sind, weil andere Mechanismen für eine Korrektur sorgen, oder weil, wie beim Streaming von Videos oder Audiodaten (zum Beispiel bei Voice-over-IP), einzelne Paketverluste bei der großen übertragenen Datenmenge kaum ins Gewicht fallen. Bei Paketverlusten kommt es nur zu ganz geringfügigen Beeinträchtigung von Bild oder Ton und auch ohne Segmentierung kann die Nachricht verstanden oder rekonstruiert werden.
Ein Nachteil bei der Nutzung von UDP besteht darin, dass Daten in der Regel nicht verschlüsselt übertragen werden. Denn ohne Verbindungsaufbau müsste jedes einzelne Paket neu verschlüsselt werden, und das widerspricht dem angestrebten Effizienzziel. Andererseits gibt es bereits heute erste Überlegungen, wie eine effiziente Verschlüsselung auch mit UDP gelingen kann, Kandidaten dafür werden unter den Namen »SRTP-« und »DTLS-Protokoll« untersucht.
Kurz: UDP wird immer dann genutzt, wenn ein Verbindungsaufbau sich nicht lohnt und die Abwägung zwischen Geschwindigkeit und Datenqualität zum Ersteren tendiert, weil die Datenmenge gering oder der Verlust verkraftbar ist.
Schreiben Sie uns!
Beitrag schreiben