UDP: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(viele Links zurück auf Orginal)
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
{{Wikipedia}}
 
{| {{Prettytable-R}}
 
{| {{Prettytable-R}}
 
|-----
 
|-----
Zeile 4: Zeile 5:
 
|-----
 
|-----
 
| align="left" | '''Familie:'''
 
| align="left" | '''Familie:'''
| align="left" | [[Internetprotokollfamilie]]
+
| align="left" | [http://de.wikipedia.org/wiki/Internetprotokollfamilie Internetprotokollfamilie]
 
|-----
 
|-----
 
| align="left" | '''Einsatzgebiet:'''
 
| align="left" | '''Einsatzgebiet:'''
Zeile 14: Zeile 15:
 
{| border="0" cellspacing="3"
 
{| border="0" cellspacing="3"
 
| align="center" bgcolor="#FFEEBB" | ''Anwendung''
 
| align="center" bgcolor="#FFEEBB" | ''Anwendung''
| align="center" bgcolor="#EEEEFF" | [[Domain Name System|DNS]]
+
| align="center" bgcolor="#EEEEFF" | [http://de.wikipedia.org/wiki/Domain_Name_System DNS]
| align="center" bgcolor="#EEEEFF" | [[Dynamic Host Configuration Protocol|DHCP]]
+
| align="center" bgcolor="#EEEEFF" | [http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol DHCP]
| align="center" bgcolor="#EEEEFF" | [[File_Transfer_Protocol|FTP]]
+
| align="center" bgcolor="#EEEEFF" | [http://de.wikipedia.org/wiki/File_Transfer_Protocol FTP]
 
| align="center" bgcolor="#EEEEFF" | ...
 
| align="center" bgcolor="#EEEEFF" | ...
 
|-----
 
|-----
 
| align="center" bgcolor="#FFCC99" | '''Transport'''
 
| align="center" bgcolor="#FFCC99" | '''Transport'''
 
| colspan="2" align="center" bgcolor="#9999FF" | '''UDP'''
 
| colspan="2" align="center" bgcolor="#9999FF" | '''UDP'''
| colspan="2" align="center" bgcolor="#9999FF" | [[Transmission Control Protocol|TCP]]
+
| colspan="2" align="center" bgcolor="#9999FF" | [http://de.wikipedia.org/wiki/Transmission_Control_Protocol TCP]
 
|-----
 
|-----
 
| rowspan="1" align="center" bgcolor="#FFEEBB" | ''Internet''
 
| rowspan="1" align="center" bgcolor="#FFEEBB" | ''Internet''
| colspan="4" align="center" bgcolor="#EEEEFF" | [[Internet Protocol|IP]]
+
| colspan="4" align="center" bgcolor="#EEEEFF" | [http://de.wikipedia.org/wiki/File_Transfer_Protocol IP]
 
|-----
 
|-----
 
| rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang''
 
| rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang''
| rowspan="2" align="center" bgcolor="#EEEEEE" | [[Ethernet]]
+
| rowspan="2" align="center" bgcolor="#EEEEEE" | [http://de.wikipedia.org/wiki/Ethernet Ethernet]
| rowspan="2" align="center" bgcolor="#EEEEEE" | [[Token Ring|Token<br>Ring]]
+
| rowspan="2" align="center" bgcolor="#EEEEEE" | [http://de.wikipedia.org/wiki/Token_Ring Token<br>Ring]
| rowspan="2" align="center" bgcolor="#EEEEEE" | [[Fiber Distributed Data Interface|FDDI]]
+
| rowspan="2" align="center" bgcolor="#EEEEEE" | [http://de.wikipedia.org/wiki/Fiber_Distributed_Data_Interface FDDI]
 
| rowspan="2" align="center" bgcolor="#EEEEEE" | ...
 
| rowspan="2" align="center" bgcolor="#EEEEEE" | ...
 
|}
 
|}
Zeile 36: Zeile 37:
 
| align="left" | '''Standards:'''
 
| align="left" | '''Standards:'''
 
| align="left" |  
 
| align="left" |  
RFC 768 ([[1980]])
+
RFC 768 (1980)
 
|}
 
|}
  
Das '''User Datagram Protocol''' ([[Abkürzung|Abk.]] '''UDP''') ist ein minimales, verbindungsloses [[Netzwerkprotokoll|Netzprotokoll]], 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.
+
Das '''User Datagram Protocol''' ([http://de.wikipedia.org/wiki/Abk%C3%BCrzung Abk.] '''UDP''') ist ein minimales, verbindungsloses [http://de.wikipedia.org/wiki/Netzwerkprotokoll Netzprotokoll], das zur Transportschicht der [http://de.wikipedia.org/wiki/Internetprotokollfamilie 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 [[Internettelefonie|Übertragung von Sprache]] ein einfacheres Protokoll benötigte als das bisherige verbindungsorientierte [[Transmission Control Protocol|TCP]]. Es wurde ein Protokoll benötigt, das nur für die Adressierung zuständig war, ohne die Datenübertragung zu sichern, da dies zu Verzögerungen bei der Sprachübertragung führen würde.
+
Die Entwicklung von UDP begann 1977, als man für die [http://de.wikipedia.org/wiki/Internettelefonie Übertragung von Sprache] ein einfacheres Protokoll benötigte als das bisherige verbindungsorientierte [http://de.wikipedia.org/wiki/Transmission_Control_Protocol TCP]. Es wurde ein Protokoll benötigt, das nur für die Adressierung zuständig war, ohne die Datenübertragung zu sichern, da dies zu Verzögerungen bei der Sprachübertragung führen würde.
  
 
== Funktionsweise ==
 
== Funktionsweise ==
Um die Daten, die mit UDP versendet werden, dem richtigen Programm auf dem Zielrechner zukommen zu lassen, werden bei UDP sogenannte [[Port (Protokoll)|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.
+
Um die Daten, die mit UDP versendet werden, dem richtigen Programm auf dem Zielrechner zukommen zu lassen, werden bei UDP sogenannte [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 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.
 
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 ==
 
== Eigenschaften ==
UDP stellt einen [[Nachrichtenverbindung|verbindungslosen]], [[Zuverlässigkeit (Telekommunikation)|nicht-zuverlässigen]] Übertragungsdienst bereit. Das bedeutet, dass es keine Garantie gibt, dass ein einmal gesendetes [[Datenpaket|Paket]] auch ankommt oder dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden. Eine Anwendung, die UDP nutzt, muss daher gegenüber verloren gegangenen und umsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen beinhalten.
+
UDP stellt einen [http://de.wikipedia.org/wiki/Nachrichtenverbindung verbindungslosen], [http://de.wikipedia.org/wiki/Zuverl%C3%A4ssigkeit_%28Telekommunikation%29 nicht-zuverlässigen] Übertragungsdienst bereit. Das bedeutet, dass es keine Garantie gibt, dass ein einmal gesendetes [http://de.wikipedia.org/wiki/Datenpaket Paket] auch ankommt oder dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden. Eine Anwendung, die UDP nutzt, muss daher gegenüber verloren gegangenen und umsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen beinhalten.
  
Da vor Übertragungsbeginn nicht erst eine Verbindung aufgebaut werden muss, können die Hosts schneller mit dem Datenaustausch beginnen. Dies 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.
+
Da vor Übertragungsbeginn nicht erst eine Verbindung aufgebaut werden muss, können die Hosts schneller mit dem Datenaustausch beginnen. Dies fällt vor allem bei Anwendungen ins Gewicht, bei denen nur kleine Datenmengen ausgetauscht werden müssen. Einfache Frage-Antwort-Protokolle wie das [http://de.wikipedia.org/wiki/Domain_Name_System Domain Name System] verwenden UDP um die Netzwerkbelastung gering zu halten und damit den Datendurchsatz zu erhöhen. Ein [http://de.wikipedia.org/wiki/Drei-Wege-Handshake 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, so wird es automatisch erneut angefordert. Dies braucht Zeit, die Übertragungsdauer kann daher schwanken, was für Multimediaanwendungen schlecht ist. Bei [[IP-Telefonie|VoIP]] z.B. würde es zu plötzlichen Aussetzern kommen bzw. die Wiedergabepuffer müssten größer angelegt werden. Verlorengegangene Pakete bringen dagegen nicht die gesamte Übertragung ins Stocken sondern vermindern lediglich die Qualität.
+
Daneben bietet die ungesicherte Übertragung auch den Vorteil von geringen Übertragungsverzögerungsschwankungen: geht bei einer TCP-Verbindung ein Paket verloren, so wird es automatisch erneut angefordert. Dies braucht Zeit, die Übertragungsdauer kann daher schwanken, was für Multimediaanwendungen schlecht ist. Bei [http://de.wikipedia.org/wiki/IP-Telefonie VoIP] z.B. würde es zu plötzlichen Aussetzern kommen bzw. die Wiedergabepuffer müssten größer angelegt werden. Verlorengegangene Pakete bringen dagegen nicht die gesamte Übertragung ins Stocken sondern vermindern lediglich die Qualität.
  
UDP übernimmt die Eigenschaften der darunterliegenden Netzwerkschicht. Im Falle des [[Internet Protocol|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 [[IP-Fragmentierung|fragmentiert]] übertragen, so dass UDP nur bei Datenpaketgrößen bis zu einigen Kilobytes sinnvoll ist.
+
UDP übernimmt die Eigenschaften der darunterliegenden Netzwerkschicht. Im Falle des [http://de.wikipedia.org/wiki/Internet_Protocol 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 [http://de.wikipedia.org/wiki/IP-Fragmentierung fragmentiert] übertragen, so dass UDP nur bei Datenpaketgrößen bis zu einigen Kilobytes sinnvoll ist.
  
 
IP löscht Pakete etwa bei Übertragungsfehlern oder bei Überlast. Datagramme können daher fehlen. Das UDP-Protokoll 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. Hierdurch ist es in seltenen Fällen sogar möglich, dass später gesendete Daten früher gesendete überholen.
 
IP löscht Pakete etwa bei Übertragungsfehlern oder bei Überlast. Datagramme können daher fehlen. Das UDP-Protokoll 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. Hierdurch ist es in seltenen Fällen sogar möglich, dass später gesendete Daten früher gesendete überholen.
Zeile 61: Zeile 62:
 
== UDP-Datagramm ==
 
== UDP-Datagramm ==
  
UDP schreibt vor, dass neben den zu übertragenden Daten zusätzliche Informationen mitgesendet werden müssen, die zur Bewältigung der Aufgaben von UDP benötigt werden. Diese Informationen werden vor die Nutzdaten gesetzt als sogenannter [[Header]]:
+
UDP schreibt vor, dass neben den zu übertragenden Daten zusätzliche Informationen mitgesendet werden müssen, die zur Bewältigung der Aufgaben von UDP benötigt werden. Diese Informationen werden vor die Nutzdaten gesetzt als sogenannter [http://de.wikipedia.org/wiki/Header Header]:
  
 
{| cellpadding="5" cellspacing="1" width="50%"
 
{| cellpadding="5" cellspacing="1" width="50%"
Zeile 79: Zeile 80:
 
|}
 
|}
  
Der UDP-Header besteht aus vier Datenfeldern, die alle jeweils 16 [[Bit]] groß sind:
+
Der UDP-Header besteht aus vier Datenfeldern, die alle jeweils 16 [http://de.wikipedia.org/wiki/Bit Bit] groß sind:
  
 
* Der '''Quell-Port''' 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 Quell-Port optional und kann auf den Wert "0" gesetzt werden.
 
* Der '''Quell-Port''' 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 Quell-Port optional und kann auf den Wert "0" gesetzt werden.
Zeile 85: Zeile 86:
 
* Der '''Zielport''' gibt an, welcher Prozess das Paket empfangen soll.
 
* 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 [[Oktett (Informatik)|Oktett]]en an. Der kleinstmögliche Wert sind 8 Oktette.
+
* Das '''Längenfeld''' gibt die Größe des Paketes, bestehend aus den Daten und dem Header, in [http://de.wikipedia.org/wiki/Oktett_%28Informatik%29 Oktetten] an. Der kleinstmögliche Wert sind 8 Oktette.
  
* In dem '''Prüfsummenfeld''' kann eine 16 Bit große [[Prüfsumme]] mitgesendet werden. Die Prüfsumme wird über den Header, den so genannten ''Pseudo-Header'' und die Daten gebildet. Die Prüfsumme ist auch optional, wird aber in der Praxis fast immer benutzt (falls nicht, wird sie ebenfalls auf "0" gesetzt).
+
* In dem '''Prüfsummenfeld''' kann eine 16 Bit große [http://de.wikipedia.org/wiki/Pr%C3%BCfsumme Prüfsumme] mitgesendet werden. Die Prüfsumme wird über den Header, den so genannten ''Pseudo-Header'' und die Daten gebildet. Die Prüfsumme ist auch optional, wird aber in der Praxis fast immer benutzt (falls nicht, wird sie ebenfalls auf "0" gesetzt).
  
 
=== Pseudo-Header===
 
=== Pseudo-Header===
  
Für die Übertragung des UDP-Paketes ist das [[Internet Protocol| 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:
+
Für die Übertragung des UDP-Paketes ist das [http://de.wikipedia.org/wiki/Internet_Protocol 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:
  
 
[[Bild:UDP.PNG|center|UDP-Datagramm-Schema]]
 
[[Bild:UDP.PNG|center|UDP-Datagramm-Schema]]
 
<br style="clear:both;" />
 
<br style="clear:both;" />
  
Für die Erzeugung der UDP-Prüfsumme werden Teile dieses IP-Headers in einen so genannten Pseudo-Header übernommen. Er dient nur zur Erzeugung der Prüfsumme und wird nicht übertragen. Der Pseudo-Header hat eine Größe von 12 [[Byte]] und setzt sich zusammen aus IP-Quelladresse (32 Bit), IP-Ziel-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):
+
Für die Erzeugung der UDP-Prüfsumme werden Teile dieses IP-Headers in einen so genannten Pseudo-Header übernommen. Er dient nur zur Erzeugung der Prüfsumme und wird nicht übertragen. Der Pseudo-Header hat eine Größe von 12 [http://de.wikipedia.org/wiki/Byte Byte] und setzt sich zusammen aus IP-Quelladresse (32 Bit), IP-Ziel-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):
  
 
{| cellpadding="5" cellspacing="1" width="50%"
 
{| cellpadding="5" cellspacing="1" width="50%"
Zeile 114: Zeile 115:
 
|}
 
|}
  
Für die Erzeugung der Prüfsumme werden dieser Pseudo-Header und das UDP-Paket (UDP-Header und Daten) in 16 Bit große Teile unterteilt. Der Sender addiert die [[Einerkomplement]]e dieser Teile und bildet hiervon wiederum das Einerkomplement. Das Ergebnis ist die zu übertragende Prüfsumme.
+
Für die Erzeugung der Prüfsumme werden dieser Pseudo-Header und das UDP-Paket (UDP-Header und Daten) in 16 Bit große Teile unterteilt. Der Sender addiert die [http://de.wikipedia.org/wiki/Einerkomplement Einerkomplemente] dieser Teile und bildet hiervon wiederum das Einerkomplement. Das Ergebnis ist die zu übertragende Prüfsumme.
  
Der Empfänger addiert gleichermaßen Pseudo-Header, UDP-Paket und zusätzlich die empfangene Prüfsumme. Bei einer korrekten Übertragung muss als Ergebnis FFFF<small>[[Hexadezimalsystem|Hexadezimal]]</small> heraus kommen.
+
Der Empfänger addiert gleichermaßen Pseudo-Header, UDP-Paket und zusätzlich die empfangene Prüfsumme. Bei einer korrekten Übertragung muss als Ergebnis FFFF<small>[http://de.wikipedia.org/wiki/Hexadezimalsystem Hexadezimal]</small> heraus kommen.
  
 
== Weblinks ==
 
== Weblinks ==
Zeile 127: Zeile 128:
 
[http://de.wikipedia.org/wiki/UDP Link zum Wikipedia-Artikel]  <br/>
 
[http://de.wikipedia.org/wiki/UDP Link zum Wikipedia-Artikel]  <br/>
 
[http://de.wikipedia.org/w/index.php?title=User_Datagram_Protocol&oldid=22711520 Permanentlink zu dieser Artikelversion bei Wikipedia]  <br/>
 
[http://de.wikipedia.org/w/index.php?title=User_Datagram_Protocol&oldid=22711520 Permanentlink zu dieser Artikelversion bei Wikipedia]  <br/>
[[Category:DHCP und DNS]]
+
[[Category:DHCP und DNS]][[Category:TCP/IP]]

Aktuelle Version vom 25. Oktober 2006, 13:02 Uhr

Höhe=24px Dieser Artikel ist aus der Wikipedia mit der dortigen Lizenz GFDL (Wikipedia) übernommen worden. Die Quelle in der Wikipedia unter UDP ist zum Zeitpunkt der Einfügung identisch mit dem, was im Linux-Cub Wiki unter UDP steht. Der Artikel kann gerne überarbeitet werden. Wenn der Artikel der Quelle im Wortlaut nicht mehr entspricht, kann der Baustein entfernt werden, es muss aber die Quellenangabe unten eingefügt werden. Zudem sollte dann der Bausteine Vorlage:GFDL eingefügt werden, da der Artikel dann unter diese Lizenz fällt. In der Wikipedia ist eine Liste der Autoren verfügbar.
UDP (User Datagram Protocol)
Familie: Internetprotokollfamilie
Einsatzgebiet: Verbindungslose Übertragung
von Daten über das Internet

UDP im TCP/IP-Protokollstapel

Anwendung DNS DHCP FTP ...
Transport UDP TCP
Internet IP
Netzzugang Ethernet Token
Ring
FDDI ...
Standards:

RFC 768 (1980)

Das User Datagram Protocol (Abk. UDP) ist ein minimales, verbindungsloses Netzprotokoll, 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 dies zu Verzögerungen bei der Sprachübertragung führen würde.

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, dass es keine Garantie gibt, dass ein einmal gesendetes Paket auch ankommt oder dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden. Eine Anwendung, die UDP nutzt, muss daher gegenüber verloren gegangenen und umsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen beinhalten.

Da vor Übertragungsbeginn nicht erst eine Verbindung aufgebaut werden muss, können die Hosts schneller mit dem Datenaustausch beginnen. Dies 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, so wird es automatisch erneut angefordert. Dies braucht Zeit, die Übertragungsdauer kann daher schwanken, was für Multimediaanwendungen schlecht ist. Bei VoIP z.B. würde es zu plötzlichen Aussetzern kommen bzw. die Wiedergabepuffer müssten größer angelegt werden. Verlorengegangene Pakete bringen dagegen nicht die gesamte Übertragung ins Stocken sondern vermindern lediglich die Qualität.

UDP übernimmt die Eigenschaften der darunterliegenden Netzwerkschicht. 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, so dass UDP nur bei Datenpaketgrößen bis zu einigen Kilobytes sinnvoll ist.

IP löscht Pakete etwa bei Übertragungsfehlern oder bei Überlast. Datagramme können daher fehlen. Das UDP-Protokoll 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. Hierdurch ist es in seltenen Fällen sogar möglich, dass später gesendete Daten früher gesendete überholen.

UDP-Datagramm

UDP schreibt vor, dass neben den zu übertragenden Daten zusätzliche Informationen mitgesendet werden müssen, die zur Bewältigung der Aufgaben von UDP benötigt werden. Diese Informationen werden vor die Nutzdaten gesetzt als sogenannter 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 Quell-Port 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 Quell-Port 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.
  • In dem Prüfsummenfeld kann eine 16 Bit große Prüfsumme mitgesendet werden. Die Prüfsumme wird über den Header, den so genannten Pseudo-Header und die Daten gebildet. Die Prüfsumme ist auch optional, wird aber in der Praxis fast immer benutzt (falls nicht, wird sie ebenfalls 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 so genannten Pseudo-Header übernommen. Er dient nur zur Erzeugung der Prüfsumme und wird nicht übertragen. Der Pseudo-Header hat eine Größe von 12 Byte und setzt sich zusammen aus IP-Quelladresse (32 Bit), IP-Ziel-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 Länge

Für die Erzeugung der Prüfsumme werden dieser Pseudo-Header und das UDP-Paket (UDP-Header und Daten) in 16 Bit große Teile unterteilt. Der Sender addiert die Einerkomplemente dieser Teile und bildet hiervon wiederum das Einerkomplement. Das Ergebnis ist die zu übertragende Prüfsumme.

Der Empfänger addiert gleichermaßen Pseudo-Header, UDP-Paket und zusätzlich die empfangene Prüfsumme. Bei einer korrekten Übertragung muss als Ergebnis FFFFHexadezimal heraus kommen.

Weblinks


Quellenangabe dieses Artikels

Dieser Artikel stammt aus der Wikipedia - http://de.wikipedia.org
Link zum Wikipedia-Artikel
Permanentlink zu dieser Artikelversion bei Wikipedia