Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ udp(7) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

read(2)

write(2)

bind(3N)

connect(3N)

recv(3N)

send(3N)

icmp(7)

inet(7)

ip(7)

tcp(7)

udp(7)                                                               udp(7)

NAME
     udp - Internet User Datagram Protocol

SYNTAX
     #include <sys/socket.h>
     #include <netinet/in.h>

     s = socket(AFINET, SOCKDGRAM, 0);

     t = topen("/dev/udp", ORDWR);

BESCHREIBUNG
     UDP ist ein einfaches Protokoll zur Übertragung von Datagrammen; es
     ist direkt oberhalb des Internet-Protokolls (IP) angesiedelt. Pro-
     gramme können auf UDP unter Verwendung der Socket-Schnittstelle
     zugreifen, wobei der Socket-Typ SOCKDGRAM unterstützt wird, oder
     unter Verwendung der Schnittstelle auf Transportebene (Transport Level
     Interface, TLI), dort wird der verbindungslose Dienst (TCLTS) unter-
     stützt.

     Im Zusammenhang mit der Socket-Schnittstelle wird UDP normalerweise
     mit den Funktionen sendto(), sendmsg(), recvfrom() und recvmsg() ver-
     wendet [siehe send(3N) und recv(3N)]. Wird die Funktion connect(3N)
     verwendet, um den Empfänger aller weiteren Pakete fest einzustellen,
     so können danach die Funktionen recv(3N) oder read(2) und send(3N)
     oder write(2) verwendet werden.

     Die Adreßformate von UDP sind dieselben wie jene des Transmission Con-
     trol Protocol (TCP). Ebenso wie TCP, verwendet UDP eine Portnummer
     zusammen mit einer IP-Adresse zur Identifikation des Kommunikations-
     partners. Der Portnummernbereich von UDP ist getrennt von dem Portnum-
     mernbereich von TCP (das bedeutet, daß ein UDP-Port nicht mit einem
     TCP-Port verbunden ("connected") sein kann). Die Funktion bind(3N)
     kann dazu verwendet werden, die lokale Adresse und Portnummer eines
     UDP-Sockets zu setzen. Die lokale IP-Adresse kann in einem Aufruf von
     bind() unspezifiziert bleiben, wenn dafür der Wert INADDRANY verwen-
     det wird. Wird die Funktion bind() nicht aufgerufen, so werden eine
     lokale IP-Adresse und eine lokale Portnummer dem Kommunikationsend-
     punkt zugewiesen, sobald das erste Paket gesendet wird. Broadcasts
     können verschickt werden (vorausgesetzt, das zugrundeliegende Netzwerk
     unterstützt dies) unter Verwendung einer reservierten "Broadcast-
     Adresse"; diese Adresse hängt von der jeweiligen Netzwerk-
     Schnittstelle ab. Broadcasts können nur durch einen privilegierten
     Benutzer gesendet werden.











Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

udp(7)                                                               udp(7)

     Optionen auf IP-Ebene können mit UDP verwendet werden [siehe ip(7)].

     Es besteht eine Reihe von Möglichkeiten, wie ein UDP-Paket verloren
     gehen oder verfälscht werden kann, einschließlich der Möglichkeit des
     Versagens des zugrundeliegenden Kommunikationsmechanismus. UDP verwen-
     det eine Prüfsumme über den Datenanteil eines Paketes. Wenn die Prüf-
     summe eines empfangenen Paketes fehlerhaft ist, so wird das Paket ver-
     worfen, ohne daß der Benutzer darüber informiert wird. Für jeden UDP-
     Socket wird eine Warteschlange für eingehende Pakete verwaltet. Diese
     Schlange hat eine begrenzte Kapazität. Eingehende Pakete, die nicht
     innerhalb der Hochwasser-Markierung gespeichert werden können, werden
     ohne Meldung verworfen.

     UDP bearbeitet Fehlermeldungen des Internet Control Message Protocol
     (ICMP), die in Reaktion auf ein von ihm gesendetes UDP-Paket empfangen
     werden [siehe icmp(7)]. ICMP-Meldungen "source quench" (Quelle langs-
     amer) werden ignoriert. Die ICMP-Meldungen "destination unreachable"
     (Ziel nicht erreichbar), "time exceeded" (Zeitüberschreitung) und
     "parameter problem" (fehlerhafter Parameter) führen dazu, daß der Sok-
     ket von seinem Prozeß getrennt wird, so daß nachfolgende Versuche,
     Pakete über diesen Socket zu senden, lediglich einen Fehler produzie-
     ren. UDP garantiert nicht, daß Pakete in derselben Reihenfolge ausge-
     liefert werden, in der sie gesendet wurden. Weiterhin ist es möglich,
     daß durch den Kommunikationsprozeß gesendete Pakete dupliziert werden.

DIAGNOSE
     Eine Operation auf einem Socket kann unter folgenden Bedingungen
     scheitern:

     EISCONN        Es wurde versucht, die Operation connect() auf einem
                    Socket auszuführen, auf dem die Operation connect()
                    bereits ausgeführt wurde, und die Verbindung wurde vor
                    dem Versuch, eine neue Verbindung aufzubauen, nicht
                    erfolgreich getrennt.

     EISCONN        Es wurde versucht, eine der Operationen sendto() oder
                    sendmsg() unter Angabe einer Empfängeradresse auf einem
                    Socket auszuführen, auf dem bereits eine Operation con-
                    nect() ausgeführt wurde.

     ENOTCONN       Es wurde versucht, eine der Operationen send(),
                    write(), sendto() oder sendmsg() ohne Angabe einer Emp-
                    fängeradresse auf einem Socket auszuführen, auf dem die
                    Operation connect() bisher nicht ausgeführt wurde.

     EADDRINUSE     Es wurde versucht, auf einem Socket die Operation
                    bind() unter Angabe einer Netzwerkadresse und einer
                    Portnummer auszuführen, die bereits an einen anderen
                    Socket gebunden waren.





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

udp(7)                                                               udp(7)

     EADDRNOTAVAIL  Es wurde versucht, auf einem Socket die Operation
                    bind() mit einer Netzwerkadresse auszuführen, für die
                    keine Netzwerk-Schnittstelle existiert.

     EINVAL         Es wurde versucht, die Operation sendmsg() auszuführen,
                    mit msgaccrights ungleich NULL.

     EACCES         Es wurde versucht, die Operation bind() mit einer
                    "reservierten" Portnummer auszuführen, ohne daß die
                    effektive Benutzerkennung (ID) des Prozesses gleich der
                    des privilegierten Benutzers war.

     ENOBUFS        Im System wurde Speicherplatz für interne Datenstruktu-
                    ren knapp.

SIEHE AUCH
     read(2), write(2), bind(3N), connect(3N), recv(3N), send(3N), icmp(7),
     inet(7), ip(7), tcp(7).

     Postel, Jon, User Datagram Protocol, RFC 768, Network Information
     Center, SRI International, Menlo Park, Calif., August 1980.

































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026