UDP-Header

UDP-Header
UDP (User Datagram Protocol)
Familie: Internetprotokollfamilie
Einsatzgebiet: Verbindungslose Übertragung
von Daten über das Internet
UDP im TCP/IP‑Protokollstapel:
Anwendung DNS DHCP
Transport UDP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards: RFC 768 (1980)

Das User Datagram Protocol (Abk. UDP) ist ein minimales, verbindungsloses Netzwerkprotokoll, das zur Transportschicht der Internetprotokollfamilie gehört. Aufgabe von UDP ist es, Daten, die über das Internet übertragen werden, der richtigen Anwendung zukommen zu lassen.

Die Entwicklung von UDP begann 1977, als man für die Übertragung von Sprache ein einfacheres Protokoll benötigte als das bisherige verbindungsorientierte TCP. Es wurde ein Protokoll benötigt, das nur für die Adressierung zuständig war, ohne die Datenübertragung zu sichern, da das zu Verzögerungen bei der Sprachübertragung führen würde.

Inhaltsverzeichnis

Funktionsweise

Um die Daten, die mit UDP versendet werden, dem richtigen Programm auf dem Zielrechner zukommen zu lassen, werden bei UDP sogenannte Ports verwendet. Dazu wird bei UDP die Portnummer des Dienstes mitgesendet, der die Daten erhalten soll. Diese Erweiterung der Host-zu-Host- auf eine Prozess-zu-Prozess-Übertragung wird als Anwendungsmultiplexen und -demultiplexen bezeichnet.

Zusätzlich bietet UDP die Möglichkeit einer Integritätsüberprüfung an, indem eine Prüfsumme mitgesendet wird. Dadurch kann eine fehlerhafte Übertragung erkannt werden.

Eigenschaften

UDP stellt einen verbindungslosen, nicht-zuverlässigen Übertragungsdienst bereit. Das bedeutet, es gibt keine Garantie, dass ein einmal gesendetes Paket auch ankommt, dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden, oder dass ein Paket nur einmal beim Empfänger eintrifft. Eine Anwendung, die UDP nutzt, muss daher gegenüber verlorengegangenen und unsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen beinhalten.

Da vor Übertragungsbeginn nicht erst eine Verbindung aufgebaut zu werden braucht, können die Partner schneller mit dem Datenaustausch beginnen. Das fällt vor allem bei Anwendungen ins Gewicht, bei denen nur kleine Datenmengen ausgetauscht werden müssen. Einfache Frage-Antwort-Protokolle wie das Domain Name System verwenden UDP, um die Netzwerkbelastung gering zu halten und damit den Datendurchsatz zu erhöhen. Ein Drei-Wege-Handshake wie bei TCP für den Aufbau der Verbindung würde unnötigen Overhead erzeugen.

Daneben bietet die ungesicherte Übertragung auch den Vorteil von geringen Übertragungsverzögerungsschwankungen: Geht bei einer TCP-Verbindung ein Paket verloren, wird es automatisch neu angefordert. Das braucht Zeit, die Übertragungsdauer kann daher schwanken, was für Multimediaanwendungen schlecht ist. Bei VoIP z. B. käme es zu plötzlichen Aussetzern, bzw. die Wiedergabepuffer müssten größer angelegt werden. Bei verbindungslosen Kommunikationsdiensten bringen verlorengegangene Pakete dagegen nicht die gesamte Übertragung ins Stocken, sondern vermindern lediglich die Qualität.

UDP übernimmt die Eigenschaften der darunterliegenden Vermittlungsschicht. Im Falle des Internet Protocols (IP) können Datenpakete maximal 65535 Bytes lang sein, wovon der IP-Header und UDP-Header insgesamt mindestens 28 Bytes belegen. UDP-Datagramme haben daher maximal 65507 Nutzdatenbytes. Solche Pakete werden jedoch von IP fragmentiert übertragen.

IP löscht Pakete etwa bei Übertragungsfehlern oder bei Überlast. Datagramme können daher fehlen. UDP bietet hierfür keine Erkennungs- oder Korrekturmechanismen, wie etwa TCP. Im Falle von mehreren möglichen Routen zum Ziel kann IP bei Bedarf neue Wege wählen. Dadurch ist es in seltenen Fällen möglich, dass später gesendete Daten früher gesendete überholen. Außerdem kann ein einmal abgesendetes Datenpaket mehrmals beim Empfänger eintreffen.

UDP-Datagramm

Neben den zu übertragenden Nutzdaten werden weitere Informationen mitgesendet, die sich immer am Anfang einer UDP-Botschaft befinden, im sogenannten Header:

0 8 16 24 31
Quell-Port Ziel-Port
Länge Prüfsumme
Daten

Der UDP-Header besteht aus vier Datenfeldern, die alle jeweils 16 Bit groß sind:

  • Der Quellport gibt die Portnummer des sendenden Prozesses an. Diese Information wird benötigt, damit der Empfänger auf das Paket antworten kann. Da UDP verbindungslos ist, ist der Quellport optional und kann auf den Wert "0" gesetzt werden.
  • Der Zielport gibt an, welcher Prozess das Paket empfangen soll.
  • Das Längenfeld gibt die Größe des Paketes, bestehend aus den Daten und dem Header, in Oktetten an. Der kleinstmögliche Wert sind 8 Oktette.
  • Im Prüfsummenfeld kann eine 16 Bit große Prüfsumme mitgesendet werden. Die Prüfsumme wird über den Header, den sogenannten Pseudo-Header, und die Daten gebildet. Die Prüfsumme ist optional, wird aber in der Praxis fast immer benutzt (falls nicht, wird diese auf "0" gesetzt).

Pseudo-Header

Für die Übertragung des UDP-Paketes ist das Internet Protokoll (IP) vorgesehen. Dieses Protokoll setzt vor das UDP-Paket seinerseits einen weiteren Header, in dem sich die von IP benötigten Daten befinden:

UDP-Datagramm-Schema

Für die Erzeugung der UDP-Prüfsumme werden Teile dieses IP-Headers in einen sogenannten „Pseudo-Header“ übernommen. Er dient nur zur Erzeugung der Prüfsumme und wird nicht übertragen. Der Pseudo-Header hat bei IPv4 eine Größe von 12 Byte und setzt sich zusammen aus Quell-IP-Adresse (32 Bit), Ziel-IP-Adresse (ebenfalls 32 Bit), 8 Bit Leerfeld, 8 Bit Protokoll-ID (UDP hat die ID 17) und der Länge des UDP-Datagramms (16 Bit):

0 8 16 24 31
Quell-IP-Adresse
Ziel-IP-Adresse
0 Protokoll UDP Länge

Bei IPv6 besitzt der Pseudo-Header eine Größe von 40 Byte. Er setzt sich dabei folgendermaßen zusammen:

0 8 16 24 31

Quell-IP-Adresse (128 Bit)


Ziel-IP-Adresse (128 Bit)

Upper-Layer Packet Length
Null (24 Bit) Next Header

Die Berechnung der Prüfsumme beim Sender erfolgt nach folgendem Algorithmus:

  1. Setze das Prüfsummenfeld im UDP-Header auf 0000 0000 0000 0000.
  2. Wenn keine Prüfsumme berechnet werden soll, breche ab.
  3. Erzeuge eine vorzeichenlose 32-Bit-Zahl für die Prüfsumme, initialisiere sie mit Nullen.
  4. Fasse direkt benachbarte Bytes des UDP-Paketes zu 16-Bit-Blöcken zusammen
    1. Wenn der letzte Block weniger als 16 Bit hat, dann fülle ihn von hinten mit Nullen auf, bis er 16 Bit hat.
  5. Speichere das Ergebnis der Addition aller 16-Bit-Blöcke mit Übertrag in der Prüfsumme.
  6. Fasse direkt benachbarte Bytes des Pseudo-Headers zu 16-Bit-Blöcken zusammen.
  7. Speichere das Ergebnis der Addition dieser 16-Bit-Blöcke und der bisherigen Prüfsumme mit Übertrag in der Prüfsumme.
  8. Fasse direkt benachbarte Bytes der Prüfsumme zu zwei 16-Bit-Blöcken zusammen, addiere diese und speichere das Ergebnis mit Übertrag in der Prüfsumme, bis kein Übertrag mehr bei der Addition entsteht.
  9. Die signifikantesten 16 Bit der 32-Bit-Prüfsumme sind nun Nullen. Die weniger signifikanten Bits sind die eigentliche Prüfsumme, speichere diese als vorzeichenlosen 16-Bit-Zahl.
  10. Wenn diese 16-Bit-Zahl nicht nur aus Einsen besteht, dann speichere ihr Einerkomplement im UDP-Header (sowohl 1111 1111 1111 1111 und das Einerkomplement hiervon, 0000 0000 0000 0000, symbolisieren die Zahl 0, allerdings wird 0000 0000 0000 0000 verwendet, um zu signalisieren, dass keine Prüfsumme berechnet wurde).

Der Empfänger prüft zunächst, ob das Prüfsummenfeld des empfangenen Paketes nur aus Nullen besteht. Wenn ja, kann er das Paket als richtig empfangen werten, da keine Prüfsumme vorhanden ist. Wenn nicht, so wendet er den oben beschriebenen Algorithmus auf das empfangene Paket und den zugehörigen Pseudo-Header an, lässt den letzten Schritt weg und addiert die selbst berechnete Prüfsumme auf die im Prüfsummenfeld empfangene, was durch die Einerkomplementdarstellung einer Subtraktion entspricht. Erhält der Empfänger 0 als Ergebnis der Addition (bzw. Subtraktion), so wertet er die empfangenen Daten als mit den gesendeten übereinstimmend.

UDP-Lite

Das Lightweight User Datagram Protocol (UDP-Lite) nach RFC 3828 ist eine Variation von UDP, speziell für die Übertragung von Daten, bei denen es auf geringe Verzögerung ankommt, kleinere Fehler jedoch toleriert werden können. Das ist etwa bei Liveaudio- und -videoübertragungen der Fall, die oft UDP als Transportprotokoll verwenden. Ist ein Bit in einem UDP-Datenpaket fehlerhaft, so werden alle Daten des Pakets, d. h. bis zu mehreren tausend Bits, verworfen. Würde das Paket mit dem fehlerhaften Bit dagegen verwendet, wäre der Fehler, je nach Codec, unhörbar bzw. unsichtbar.

UDP-Lite ist kompatibel zu UDP, interpretiert jedoch das Längenfeld als Länge, über die die Prüfsumme berechnet wird. Ein normales UDP-Paket ist damit auch ein UDP-Lite-Paket. Die Länge eines UDP- bzw. UDP-Lite-Pakets kann mit Hilfe der Information aus dem Internet-Protocol-Layer berechnet werden, die IP-Länge ist die Summe aus IP-Headergröße und UDP-Paketgröße.

Ergibt sich bei UDP-Lite eine größere Länge aus dem IP-Header als im Längenfeld des UDP(-Lite)-Headers, so enthält das Paket zusätzliche, ungeprüfte Daten. Ein Längenfeld von acht bedeutet zum Beispiel, dass die Prüfsumme nur über den Header berechnet wird.

Bei Verwendung von UDP-Lite sollte die Überprüfung in den unteren Schichten ebenfalls (möglichst ausschließlich) für UDP-Lite-Pakete unterdrückt werden, etwa die CRC-Überprüfung von Ethernet-Paketen.

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • UDP-Lite — UDP (User Datagram Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Verbindungslose Übertragung von Daten über das Internet UDP im TCP/IP‑Protokollstapel: Anwendung DNS DHCP … …   Deutsch Wikipedia

  • Authentication Header — IPsec im TCP/IP‑Protokollstapel: Anwendung HTTP IMAP SMTP DNS … Transport TCP UDP …   Deutsch Wikipedia

  • RObust Header Compression — ROHC Robust Header Compression (ROHC) est une méthode normalisée dans la RFC 3095 pour compresser les entêtes IP, UDP, RTP et TCP des paquets réseau. Ce système de compression diffère des autres systèmes de compression comme ceux décrits dans les …   Wikipédia en Français

  • Robust Header Compression — (ROHC) est une méthode normalisée dans la RFC 3095 pour compresser les entêtes IP, UDP, RTP et TCP des paquets réseau. Ce système de compression diffère des autres systèmes de compression comme ceux décrits dans les RFC 1144 et RFC 2508 de l IETF …   Wikipédia en Français

  • TCP-Header — TCP (Transmission Control Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Zuverlässiger bidirektionaler Datentransport TCP im TCP/IP‑Protokollstapel: Anwendung HTTP SMTP … Transport …   Deutsch Wikipedia

  • Список портов TCP и UDP — Эта статья содержит незавершённый перевод с английского языка. Вы можете помочь проекту, переведя её до конца. В данной статье приведён список портов TCP и UDP, ко …   Википедия

  • IP-Header — Das IP Paket oder exakt Internet Protocol Datagram ist das Grundelement der Internet Datenkommunikation. Es besteht immer aus zwei Teilen: den Kopfdaten, die Informationen über Quelle, Ziel, Status, Fragmentierung etc. enthalten, und den… …   Deutsch Wikipedia

  • TCP and UDP port — In computer networking, a port is an application specific or process specific software construct serving as a communications endpoint used by Transport Layer protocols of the Internet Protocol Suite such as Transmission Control Protocol (TCP) and …   Wikipedia

  • User Datagram Protocol — UDP (User Datagram Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Verbindungslose Übertragung von Daten über das Internet UDP im TCP/IP‑Protokollstapel: Anwendung DNS DHCP … …   Deutsch Wikipedia

  • Lightweight User Datagram Protocol — UDP (User Datagram Protocol) Familie: Internetprotokollfamilie Einsatzgebiet: Verbindungslose Übertragung von Daten über das Internet UDP im TCP/IP‑Protokollstapel: Anwendung DNS DHCP … …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”