icmp(7) icmp(7)
NAME
icmp - Internet Control Message Protocol
SYNTAX
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ipicmp.h>
s = socket(AFINET, SOCKRAW, proto);
t = topen("/dev/icmp", ORDWR);
BESCHREIBUNG
ICMP ist das Protokoll für Fehler- und Steuermeldungen der Internet-
Protokollfamilie. Es wird vom Kern benutzt, um Fehler in der Proto-
kollbearbeitung zu beheben und um sie zu melden. Zu Zwecken der Net-
zwerküberwachung und für Diagnosefunktionen kann es auch von Program-
men über die Socket-Schnittstelle oder über die Transport-
Schnittstelle (Transport Level Interface, TLI) erreicht werden. Soll
die Socket-Schnittstelle verwendet werden, so ist ein Raw-Socket zu
verwenden. Die Protokollnummer für ICMP, die für den Parameter proto
im Socket-Aufruf zu verwenden ist, kann mit getprotobyname() bestimmt
werden [siehe getprotoent(3N)]. ICMP-Dateideskriptoren und -Sockets
arbeiten verbindungslos, sie werden normalerweise mit den Funktionen
tsndudata/trcvudata und sendto()/recvfrom() verwendet.
Abgehende Pakete bekommen automatisch einen Vorspann gemäß dem
Internet-Protokoll (IP) vorangestellt. Eingehende Pakete werden dem
Benutzer mit intaktem IP-Vorspann und Optionen zur Verfügung gestellt.
ICMP ist ein Datagramm-Protokoll, das auf IP aufbaut. Es wird intern
von den Implementierungen der Protokolle für verschiedene Zwecke ver-
wendet, einschließlich der Suche der richtigen Übertragungswege (Rou-
ting), der Fehlersuche und der Flußkontrolle. Eine empfangene ICMP-
Umlenkungsnachricht (redirect message) fügt einen neuen Eintrag in die
Routing-Tabelle ein oder verändert einen bereits existierenden Ein-
trag. ICMP-Nachrichten werden regelmäßig von den verschiedenen Proto-
kollen gesendet. Empfangene ICMP-Nachrichten können zu den Benutzern
höherer Protokolle, wie beispielsweise TCP oder UDP, in Form von Feh-
lermeldungen bei Systemaufrufen durchgereicht werden. Eine Kopie aller
ICMP-Nachrichten, die von dem System empfangen werden, wird an jeden
Halter eines ICMP-Sockets oder eines TLI-Deskriptors zugestellt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
icmp(7) icmp(7)
DIAGNOSE
Eine Operation auf einem Socket kann unter Rückgabe einer der folgen-
den Fehlerwerte scheitern:
EISCONN Es wurde versucht, auf einem verbundenen Socket eine
weitere Verbindung einzurichten oder ein Datagramm
unter Angabe einer Empfängeradresse zu versenden.
ENOTCONN Über einen Socket, auf dem auch keine Verbindung einge-
richtet war, wurde versucht, ein Datagramm ohne Angabe
einer Zieladresse zu versenden.
ENOBUFS Das System hat keinen Speicher für interne Datenstruk-
turen.
EADDRNOTAVAIL Es wurde versucht, einen Socket mit einer Netzwerka-
dresse zu erzeugen, für die keine Netzwerk-
Schnittstelle existiert.
HINWEISE
Antworten auf ICMP-Echo-Nachrichten, deren Routing vom Sender bestimmt
wurde, werden nicht auf dem umgekehrten Weg vom Sender zurückgesendet,
sondern verwenden den normalen Routing-Mechanismus.
SIEHE AUCH
getprotoent(3N), recvfrom(3N), send(3N), trcvudata(3N),
tsndudata(3N), routing(4), inet(7), ip(7).
Postel, Jon, Internet Control Message Protocol - DARPA Internet
Program Protocol Specification, RFC 792, Network Information Center,
SRI International, Menlo Park, Calif., September 1981.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98