Die Kom­mu­ni­ka­ti­on von Systemen in lokalen Heim- und Fir­men­netz­wer­ken und öf­fent­li­chen Netz­wer­ken wie dem Internet basiert stan­dard­mä­ßig auf der In­ter­net­pro­to­koll­fa­mi­lie. Be­kann­tes­te Kom­po­nen­te dieses Pro­to­koll­stacks ist zwei­fels­oh­ne das Internet Protocol (IP), das nicht nur für die Adres­sie­rung und Frag­men­tie­rung von Da­ten­pa­ke­ten zuständig ist, sondern auch definiert, wie In­for­ma­tio­nen über Quelle und Ziel be­schrie­ben werden. Die Über­tra­gung der Daten übernimmt al­ler­dings für ge­wöhn­lich das ver­bin­dungs­ori­en­tier­te Trans­port­pro­to­koll TCP (Trans­mis­si­on Control Protocol), weshalb die Netze häufig als TCP/IP-Netzwerke be­zeich­net werden. Da TCP zwar für die Si­cher­heit, gleich­zei­tig aber auch für eine Ver­zö­ge­rung der Über­tra­gung sorgt, ver­öf­fent­lich­te David Patrick Reed 1980 sein Konzept zum User Datagram Protocol (UDP) als ein­fa­che­re und schnel­le­re Al­ter­na­ti­ve zum Stan­dard­pro­to­koll.

Was ist UDP (User Datagram Protocol)?

Das User Datagram Protocol, kurz UDP, ist ein Protokoll, das den ver­bin­dungs­lo­sen Versand von Da­ta­gram­men in IP-basierten Netz­wer­ken er­mög­licht. Um die ge­wünsch­ten Services auf den Zielhosts zu erreichen, greift es auf Ports zurück, die als einer der Kern­be­stand­tei­le im UDP-Header ver­zeich­net sind. Wie viele andere Netz­werk­pro­to­kol­le zählt UDP zur In­ter­net­pro­to­koll­fa­mi­lie, wobei es auf der Trans­port­ebe­ne und somit als Ver­mitt­ler­instanz zwischen Netzwerk- und Ap­pli­ka­ti­ons­schicht ein­zu­stu­fen ist.

Hinweis

Das UDP-Protokoll stellt eine direkte Al­ter­na­ti­ve zum ver­brei­te­te­ren TCP dar, wobei sich beide Pro­to­kol­le vor allem in einem Punkt un­ter­schei­den: Während die Über­tra­gung via TCP erst nach dem ob­li­ga­to­ri­schen Drei-Wege-Handshake (wech­sel­sei­ti­ge Au­then­ti­fi­zie­rung zwischen Absender und Empfänger inklusive Ver­bin­dungs­auf­bau) statt­fin­det, ver­zich­tet UDP auf ein solches Prozedere, um die Über­tra­gungs­dau­er möglichst minimal zu halten.

Durch die Nutzung des User Datagram Protocols kann eine Anwendung also sehr schnell In­for­ma­tio­nen versenden, da weder eine Ver­bin­dung zum Adres­sa­ten aufgebaut noch eine Antwort ab­ge­war­tet werden muss. Es gibt al­ler­dings keinerlei Garantie dafür, dass Pakete voll­stän­dig und in der gleichen Rei­hen­fol­ge, in der sie gesendet wurden, ankommen. Zudem bietet das Protokoll keinen eigenen Schutz gegen Ma­ni­pu­la­ti­on bzw. den Zugriff durch Dritte. Feh­ler­haf­te Pakete können jedoch durch eine optional ver­wend­ba­re Prüfsumme (in Kom­bi­na­ti­on mit IPv6 ver­pflich­tend) erkannt werden.

De­fi­ni­ti­on UDP

UDP (User Datagram Protocol) ist ein ver­bin­dungs­lo­ses Protokoll der In­ter­net­pro­to­koll­fa­mi­lie, das auf der Trans­port­schicht arbeitet und 1980 im RFC (Request for Comments) 768 spe­zi­fi­ziert wurde. Als schlanke und nahezu ver­zö­ge­rungs­frei funk­tio­nie­ren­de Al­ter­na­ti­ve zu TCP wird UDP zur schnellen Über­tra­gung von Da­ten­pa­ke­ten in IP-Netz­wer­ken ein­ge­setzt. Typische Ein­satz­fel­der von UDP sind daher DNS-Abfragen, VPN-Ver­bin­dun­gen und Audio-/Video-Streaming.

Die Ei­gen­schaf­ten von UDP im Überblick

Um zu verstehen, wie die Pa­ket­über­tra­gung mit dem Protokoll im Detail funk­tio­niert, ist es sinnvoll, die genannten Ei­gen­schaf­ten des User Datagram Protocols etwas genauer unter die Lupe zu nehmen.

  1. UDP ist ver­bin­dungs­los: Der Da­ten­trans­port über das UDP-Protokoll zeichnet sich dadurch aus, dass er ohne eine be­stehen­de Ver­bin­dung zwischen Absender und Empfänger statt­fin­det. Die je­wei­li­gen Pakete werden in der Folge unter Angabe des Ziel-Ports an die prä­fe­rier­te IP-Adresse gesendet, ohne dass der sich dahinter be­fin­den­de Rechner mit einer Antwort reagieren muss. Sollen jedoch auch Pakete an den Absender zu­rück­ge­schickt 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 Fol­ge­pro­to­kol­le bzw. die ge­wünsch­ten An­wen­dun­gen auf dem Ziel­sys­tem übergeben werden. Die Ports sind dabei nach dem bewährten Muster per Nummer definiert, wobei die Nummern zwischen 0 und 1023 festen Services zu­ge­ord­net sind.
     
  3. UDP er­mög­licht schnelle, ver­zö­ge­rungs­freie Kom­mu­ni­ka­ti­on: Das Trans­port­pro­to­koll eignet sich aufgrund des aus­blei­ben­den Ver­bin­dungs­auf­baus für eine schnelle Da­ten­über­tra­gung. Dies re­sul­tiert auch daraus, dass der Verlust einzelner Pakete lediglich die Qualität der Über­tra­gung be­ein­flusst. Bei TCP-Ver­bin­dun­gen werden verloren gegangene Pakete hingegen au­to­ma­tisch neu an­ge­for­dert, wodurch der gesamte Über­tra­gungs­pro­zess ins Stocken gerät.
     
  4. UDP bietet keine Garantie für die Si­cher­heit und Un­ver­fälscht­heit der Daten: Der Verzicht auf eine wech­sel­sei­ti­ge Au­then­ti­fi­zie­rung von Sender und Empfänger sorgt für die her­vor­ra­gen­de Über­tra­gungs­ge­schwin­dig­keit des UDP-Pro­to­kolls – al­ler­dings kann das Protokoll weder die Voll­stän­dig­keit noch die Si­cher­heit der Da­ten­pa­ke­te ga­ran­tie­ren. Auch die korrekte Rei­hen­fol­ge der ver­schick­ten Pakete ist nicht ge­währ­leis­tet. Deshalb müssen die Dienste, die auf UDP zu­rück­grei­fen, eigene Maßnahmen für die Korrektur bzw. den Schutz be­reit­stel­len.
Fazit

Die wich­tigs­te Ei­gen­schaft des User Datagram Protocols ist seine Mög­lich­keit, Da­ten­pa­ke­te ohne be­stehen­de Ver­bin­dung zu trans­por­tie­ren. Die daraus für die Über­tra­gung re­sul­tie­ren­den Ge­schwin­dig­keits­vor­tei­le sind mit einer hohen An­fäl­lig­keit gegenüber Ma­ni­pu­la­ti­on, nicht kor­ri­gier­tem Pa­ket­ver­lust und einer teilweise will­kür­li­chen Sor­tie­rung der Pakete verbunden. UDP-An­wen­dun­gen müssen aus diesem Grund gut mit fehlenden und un­sor­tier­ten Da­ten­pa­ke­ten arbeiten können und/oder eigene Korrektur- und Si­cher­heits­me­cha­nis­men be­inhal­ten.

Wie ist der UDP-Header aufgebaut?

Wie für Pro­to­kol­le typisch setzen sich UDP-Pakete aus einem Header – auch Kopf­be­reich genannt –und den ei­gent­li­chen Nutzdaten zusammen. Der UDP-Header enthält dabei alle In­for­ma­tio­nen, die für die Da­ten­über­tra­gung mit dem Trans­port­pro­to­koll notwendig sind und ein UDP-Paket als solches iden­ti­fi­zier­bar machen. Un­ter­teilt in zwei 32-Bit-Blöcke mit vier ver­schie­de­nen Da­ten­fel­dern, sieht der Aufbau dabei fol­gen­der­ma­ßen aus:

Die ersten 16 Bit des Kopf­be­reichs verraten den Quell-Port, über den das jeweilige Da­ten­pa­ket gesendet wird. Diese In­for­ma­ti­on benötigt der Empfänger, um auf das Paket antworten zu können. Da UDP ver­bin­dungs­los und grund­sätz­lich keinerlei Austausch zwischen Absender und Empfänger vor­ge­se­hen 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 an­ge­steu­er­te Service angegeben. Im Gegensatz zum Quell-Port ist diese In­for­ma­ti­on ver­pflich­tend, da das Datagramm ansonsten nicht korrekt zu­ge­ord­net werden kann.

Hinweis

Für die Port-Felder gilt folgender Grundsatz: Handelt es sich um eine cli­ent­sei­ti­ge Anwendung, ist die zu­ge­wie­se­ne Port-Nummer vor­aus­sicht­lich flüchtig. Ist der Port einem Server-Prozess zu­zu­ord­nen, zählt die Port-Nummer nor­ma­ler­wei­se zu den „well-known Ports“ (stan­dar­di­sier­te Ports).

Im Län­gen­feld wird die Länge des Da­ta­gramms definiert. Diese setzt sich aus der Länge des Headers (8 Bytes) und der Größe der Nutzdaten (theo­re­ti­sches Maximum: 65.535 Bytes) zusammen. Bei der Ver­wen­dung von IPv4 liegt das tat­säch­li­che Limit für die Nutzdaten bei 65.507 Bytes – nach Abzug von IP- und UDP-Header. In IPv6 sind darüber hinaus Pakete (so­ge­nann­te Jum­bo­grams) möglich, die das Maximum über­schrei­ten. Nach RFC 2675 wird der Wert des Län­gen­felds in einem solchen Fall auf „0“ gesetzt. Den Abschluss des UDP-Headers bildet die Prüfsumme, die der Feh­ler­er­ken­nung bei der Über­tra­gung dient. Auf diese Weise können Ma­ni­pu­la­tio­nen an den über­tra­ge­nen Daten erkannt werden – ent­spre­chen­de Pakete werden al­ler­dings ohne erneute An­for­de­rung verworfen. Zur Erzeugung der Summe werden Teile

  • des UDP-Headers,
  • der Nutzdaten
  • sowie des so­ge­nann­ten Pseudo-Headers (enthält In­for­ma­tio­nen des IP-Headers)

ein­be­zo­gen. Die Prüfsumme ist in IPv4 optional, wird von den meisten An­wen­dun­gen aber stan­dard­mä­ßig genutzt. Bei einem Verzicht nimmt auch dieses Feld den Wert „0“ an. Kommt UDP in Kom­bi­na­ti­on mit IPv6 zum Einsatz, ist die Prüfsumme ob­li­ga­to­risch.

Welche An­wen­dun­gen nutzen UDP?

Das User Datagram Protocol ist mit seiner mi­ni­ma­lis­ti­schen Struktur und den fehlenden Me­cha­nis­men zur Ge­währ­leis­tung einer kom­plet­ten, er­folg­rei­chen Über­tra­gung nicht als uni­ver­sel­les Trans­port­pro­to­koll ein­setz­bar. Es wurde vielmehr von Beginn an für An­wen­dun­gen kon­zi­piert, die (noch) keinen zu­ver­läs­si­gen Über­mitt­lungs­dienst benötigen. Das Ein­satz­feld von UDP ist in der Kon­se­quenz zwar ein­ge­schränkt, un­ter­streicht aber dennoch den enormen Wert des Pro­to­kolls, wie die folgenden An­wen­dungs­klas­sen für UDP unter Beweis stellen:

  • „Best-Effort-Delivery“-An­wen­dun­gen: Das klas­si­sche Ein­satz­sze­na­rio für UDP sind An­wen­dun­gen, die auf einer „Da­ten­aus­lie­fe­rung nach bestem Bemühen“ basieren. Solchen Pro­gram­men, die das User Datagram Protocol als „Best Effort“-Service nutzen, reicht die un­zu­ver­läs­si­ge Über­tra­gung der In­for­ma­tio­nen, weil sie die In­for­ma­tio­nen ohnehin re­gel­mä­ßig wie­der­ho­len. Beispiele sind An­wen­dun­gen, die Messwerte über­tra­gen oder immer wieder die gleichen Ar­beits­auf­trä­ge ausführen.
  • Leicht­ge­wich­ti­ge An­wen­dun­gen: Der geringe Overload des Trans­port­pro­to­kolls bietet die optimale Un­ter­stüt­zung für An­wen­dun­gen, die sehr einfach kon­stru­iert sind. In Kom­bi­na­ti­on mit dem Verzicht auf einen Ver­bin­dungs­auf­bau pro­fi­tie­ren diese Programme von einer besonders hohen Per­for­manz bei der Ver­ar­bei­tung und Wei­ter­lei­tung der Da­ten­pa­ke­te in Netz­wer­ken.
  • An­wen­dun­gen mit eigenen Me­cha­nis­men zur zu­ver­läs­si­gen Über­mitt­lung: UDP kann auch für An­wen­dun­gen in­ter­es­sant sein, die ei­gent­lich auf zu­ver­läs­si­gen In­for­ma­ti­ons­aus­tausch an­ge­wie­sen sind, aber über eigene Me­cha­nis­men zur Be­ant­wor­tung von Paketen verfügen sollen. Vorteil solcher Dienste ist, dass sie nicht an feste Muster gebunden sind, um die Voll­stän­dig­keit und Kor­rekt­heit ver­schick­ter Da­ten­pa­ke­te zu ge­währ­leis­ten. Sie können selbst­stän­dig ent­schei­den, wie und wann auf feh­ler­haf­te oder un­sor­tier­te In­for­ma­tio­nen reagiert werden soll.
  • Multicast-An­wen­dun­gen: Während zu­ver­läs­si­ge Trans­port­pro­to­kol­le wie TCP auf die Nutzung von Ende-zu-Ende-Kom­mu­ni­ka­ti­on be­schränkt sind, un­ter­stützt das UDP-Protokoll auch IP-Multicast-Ver­bin­dun­gen. Soll eine Anwendung also IP-Pakete effizient und schnell an viele Empfänger gleich­zei­tig versenden können, schafft UDP eine geeignete Basis.
  • Echt­zeit­an­wen­dun­gen (Real-time Ap­pli­ca­ti­ons): Schließ­lich ist UDP auch als Trans­port­pro­to­koll für Dienste geeignet, die mit Echtzeit-An­for­de­run­gen arbeiten – etwa Audio- oder Vi­deo­über­tra­gun­gen. Diese müssen den Versand, Empfang und die Wie­der­ga­be von Da­ten­strö­men weit­ge­hend selbst steuern können, was mit der ver­bin­dungs­lo­sen UDP-Über­tra­gung pro­blem­los möglich ist.
Hinweis

Echt­zeit­an­wen­dun­gen nutzen mitt­ler­wei­le vor allem das Real-time Transport Protocol (RTP), das auf UDP aufbaut und im Gegensatz zum Ba­sis­pro­to­koll auch den Verlust von Paketen fest­stel­len kann. Die neueste Spe­zi­fi­zie­rung des RTP ist in RFC 3550 zu finden.

Zum Hauptmenü