ICMP
|
Übersicht
|
Einführung |
Mehr... |
Links |
RFCs |
Books
|
TECHNIK |
Die Funktion des ICMP
Der Aufbau des ICMP
ICMP Typen
Credits
|
Die Funktion des ICMP
|
Das ICMP (Internet Control Message Protocol) wird, wie der Name schon sagt, zur Meldung von Fehlern bei der
Kommunikation und Übertragung von Daten verwendet. So wird es z.B. benutzt, wenn ein Datengramm nicht zustellbar
ist. Dabei ist das ICMP nicht 100%ig zuverlässig, da trotzdem Pakete verloren gehen können, ohne dass eine
Fehlermeldung erfolgt und auch keine ICMP-Nachrichten über ICMP-Nachrichten versendet werden
(d.h. wenn eine Fehlermeldung verloren geht, erfährt der Empfänger weder dies noch die Tatsache,
dass eines seiner Pakete überhaupt nicht angekommen ist).
Desweiteren werden bei fragmentierten Daten nur ICMP-Nachrichten verschickt, wenn bei dem ersten Fragment
(Fragment Offset ist 0) ein Fehler auftritt, nicht bei den weiteren. Das ICMP ist fester Bestandteil des IP.
|
Der Aufbau des ICMP
|
Für das Versenden von ICMP-Nachrichten wird der Basis-Header des IP verwendet. Dabei ist das erste Oktett des
Datengramms das ICMP-Typ Feld. Hier wird festgelegt, wie die restlichen Felder zu handhaben sind
(mit welchen Informationen diese gefüllt sind)
.
Dies ist notwendig, da es verschiedene, jeweils anders aufgebaute ICMP-Nachrichten gibt. Gleich ist bei den meisten
dieser Meldungen, dass die ersten 8 Oktetts (64 Bits) für die ICMP-Meldung benötigt werden; die Verwendung
dieses Platzes ist jedoch unterschiedlich
(genaueres dazu weiter unten im vorliegenden Dokument). Nach den ersten 8 Oktetts folgt
normalerweise der Internet Header (IP) und nach diesem die ersten 64 Bits des ursprünglichen Paketes. Diese Daten
werden für den Host benötigt, um die Nachricht dem entsprechenden Prozess zuordnen zu können. Wenn von
einem höheren Protokoll Portnummer benutzt werden, so sind diese in den ersten 64 Bits vorhanden.
Bei dem IP müssen für das ICMP bestimmte Felder gefüllt sein, alle anderen werden nach den allgemeinen
Regeln gefüllt
(z.B. Destination Address, Flags, etc.; siehe dazu IP)
.
Die benötigten Felder samt den entsprechenden Werten sind:
Version: 4
Type of Service: 0
Protocol: 1 (ICMP)
ICMP verwendet IP zum Übertragen der Nachrichten. Entsprechend wird eine ICMP Nachricht in einem IP-Datengramm
eingekapselt. Hier ist der allgemeine Aufbau einer ICMP-Nachricht:
Bei der Beschreibung der einzelnen Fehlermeldungen wird jeweils nur auf die ersten 8 Oktetts
(die ersten zwei Zeilen) eingegangen, da der Rest immer gleich bleibt. Ausnahmen: Echo oder Echo Reply
Nachrichten und Timestamp oder Timestamp Reply Nachrichten.
|
ICMP Typen
|
Destination Unreachable Message (Empfänger nicht erreichbar)
Erklärungen:
Type: 3
Code:
0 = Netz nicht erreichbar
1 = Host nicht erreichbar
2 = Protokoll nicht erreichbar
3 = Port nicht erreichbar
4 = Fragmentierung benötigt und DF-Flag gesetzt
5 = source route failed
|
|
Dieser Typ wird benutzt, wenn der vom IP der ursprünglichen Nachricht angegebene Empfänger bzw. Dienst
nicht erreichbar ist, sei es weil eine falsche Adresse angegeben wurde, sei es weil der Empfänger nicht mehr
mit dem Netz in Verbindung steht. Es wird auch benutzt, wenn für den weiteren Transport des Datengramms eine
Fragmentierung nötig ist, das DF-Flag (don't fragment) aber gesetzt ist.
Die Codes 0, 1, 4 und 5 werden von einem Gateway gesetzt, die Codes 2 und 3 von einem Host.
|
Time Exceeded Message
Erklärungen:
Type: 11
Code:
0 = Time to Live wurde während des Transportes überschritten
1 = fragment reassembly time exceeded
|
|
Wenn während des Transportes der TTL-Wert 0 erreicht, muss die Nachricht gelöscht werden und dem Sender die
entsprechende Nachricht geschickt werden. Dies ist auch der Fall, wenn beim Defragmentieren nicht alle Daten vorhanden sind.
(Ausnahme: Wenn Fragment 0 nicht vorhanden ist, wird auch keine Time Exceeded Nachricht geschickt).
Code 0 wird von einem Gateway gesetzt, Code 1 von einem Host.
|
Parameter Problem Message
Erklärungen:
Type: 12
Code: 0 (der Zeiger verweist auf den Fehler)
Pointer: wenn der Code 0 ist, dann verweist der Zeiger auf das
fehlerhafte Oktett
|
|
Wenn beim Transport des Datengramms ein Fehler bei den Header-Parametern festgestellt wird, der das Weitersenden
unmöglich macht, dann muss das Datengramm gelöscht werden und eine entsprechende Fehlermeldung an den
Absender geschickt werden. Bei einem Fehler verweist der Zeiger dann auf das fehlerhaft Oktett. So ist bei einem Wert
von 1 ein Fehler beim Type of Service aufgetreten, bei 20 ist etwas bei dem TypeCode der ersten Option falsch. Code 0
wird von einem Gateway oder Host gesetzt.
|
Source Quench Message
Erklärungen:
Type: 4
Code: 0
|
|
Diese Nachricht wird verschickt, wenn das Datengramm entweder wegen mangelndem Speicherplatz seitens des Gateways oder
wegen zu schnellem Verschicken der Pakete gelöscht wird. In letzterem Fall schraubt der Sender solange die
Geschwindigkeit, mit der er Daten versendet, zurück, bis er keine Fehlermeldungen mehr erhält. Danach kann er
wieder langsam seine Geschwindigkeit erhöhen, bis er wieder Fehlermeldungen erhält.
Dadurch erreicht er die optimale Sendegeschwindigkeit Code 0 wird von einem Gateway oder Host gesetzt.
|
Redirect Message
Erklärungen:
Type: 5
Code:
0 = Leite die Datengramme für das Netzwerk um
1 = Leite die Datengramme für den Host um
2 = Leite die Datengramme für den Type of Service und das Netzwerk um
3 = Leite die Datengramme für den Type of Service und den Host um
Gateway Internet Address: Adresse des Gateways, zu welchem Nachrichten für den gewünschten Bestimmungsort geschickt werden sollten, um das Senden zu beschleunigen
|
|
Wenn es einen schnelleren Weg als den momentan benutzten gibt, um Daten von Punkt A nach Punkt B zu senden, dann sendet
der entsprechende Gateway, der dies anhand seiner Routing-Tabelle feststellt, die entsprechende Nachricht an den Sender.
Für Datengramme, die dies ausdrücklich untersagen, wird dennoch der umständlichere Weg benutzt. Die Codes
0, 1, 2 und 3 werden von einem Gateway gesetzt.
|
Echo oder Echo Reply Message
Erklärungen:
Type:
8 = für Echo Nachrichten
0 = für Echo Reply Nachrichten
Code: 0
Identifier: hi
lft bei der Zuordnung der Echo und Echo Reply Nachricht
Sequence Number: hilft bei der Zuordnung der Echo und Echo Reply Nachricht
|
|
Die Daten der Echo Nachricht müssen mit der Echo Reply Nachricht zurückgeschickt werden.
|
Timestamp oder Timestamp Reply Message
Erklärungen:
Type:
13 = Timestamp Nachricht
14 = Timestamp Reply Nachricht
Code: 0
Identifier: hilft bei der Zuordnung der Timestamp und Timestamp Reply
Nachricht
Sequence Number: hilft bei der Zuordnung der Timestamp und Timestamp
Reply Nachricht
|
|
Ein Timestamp beinhaltet die Anzahl an vergangenen Millisekunden seit Mitternacht (UT). Das Feld Originate Timestamp
beinhaltet die Zeitangabe, zu der der Sender das Paket vor dem Versenden zuletzt berührt hat, das Feld
Receive Timestamp die Zeitangabe, zu der der Echo-Absender das Paket empfangen hat und das Feld Transmit Timestamp die
Zeitangabe, zu der der Echo-Absender das Paket vor dem Versenden zuletzt berührt hat. Code 0 wird von einem Gateway
oder Host gesetzt.
|
Information Request oder Information Reply Message
Erklärungen:
Type:
15 = für eine Information Request Nachricht
16 = für eine Information Reply Nachricht
Code: 0
Identifier: hilft bei der Zuordnung der Information und Information Reply Nachricht
Sequence Number: hilft bei der Zuordnung der Information und Information Reply Nachricht
|
|
Diese Nachricht wird geschickt, um die Nummer des Netzwerkes, in dem man sich befindet, herauszufinden. Dazu sendet man
eine Request Nachricht, wobei die Source und Destination Address Felder beide den Wert 0 haben (dies bedeutet,
dass es sich um "dieses" (sein) Netzwerk handelt). Die Antwort (Reply Nachricht) enthält dann die
vollständigen Adressen in den entsprechenden Feldern. Code 0 wird von einem Gateway oder Host gesetzt.
|
Bericht von : [ Chronyx ]
|
Überarbeitet von : [ CONVEX ]
|
|