Internet Control Message Protocol (ICMP)
Die TCP/IP Familie umfasst ein Protokoll zur Übertragung von Informationen und
Fehlermeldungen zwischen IP-Netzknoten: das Internet Control Message Protocol (ICMP).
Dieses Protokoll wird in der Standardimplementierung von IP benötigt. IP benutzt ICMP zum
Senden einer Fehlermeldung, während ICMP zur Übertragung der Meldung IP benötigt. Bei ICMP handelt sich um einen festen Bestandteil von IP und muß somit durch jedes Internet-Modul implementiert werden.
ICMP Nachrichten werden in verschiedenen Situationen gesendet - z.B.:
- wenn ein Datagramm sein Ziel nicht erreichen kann
- wenn ein Gateway keine Pufferkapazität mehr hat
- wenn der Gateway dem Host sagen kann, daß es einen kürzeren Weg zum Ziel gibt
Wie im Beitrag über IP erwähnt, ist das Internet Protocol nicht absolut zuverlässig. Durch ICMP wurde ein Mechanismus geschafffen, der es ermöglicht Informationen über eventuelle Probleme bei der Übertragung zu erhalten. Das Protokoll hat nicht die Aufgabe IP zuverlässiger zu machen! Es besteht keine Garantie, daß auf jeden Fehler eine ICMP-Meldung gesendet wird. Aus diesem Grund haben höhere Protokolle eigene Fehlerroutinen.
Eine ICMP Nachricht berichte typischerweise über Fehler bei der Verarbeitung von Datagrammen. Um eine Flut von ICMP Meldungen zu verhindern, werden ICMP Nachrichten nur bei Fehlern mit IP-Datagrammen versendet, nicht bei fehlerhaften ICMP Meldungen. Aus dem selben Grund werden Fehlermeldungen nur für das erste Fragment eines fragmentierten Datagramms gesendet.
ICMP-Nachrichten-Formate
Eine ICMP Message wird unter Benutzung des Basis-IP-Headers gesendet. Das erste Oktett des Datenbereiches des Datagramms charakterisiert den ICMP Typ. Dieser Typ gibt das Format der Daten an. Jedes Feld, welches als "unused" gekennzeichnet ist, ist für die spätere Verwendung vorgesehen und muß beim Senden 0 sein. Vom Empfänger sollte diese Felder allerdings nicht beachtet werden. Im weiteren Verlauf werden die wichtigsten ICMP-Nachrichten beschrieben. Sollte nichts anderes vermerkt sein, so gelten folgende Werte für die einzelnen Felder:
- Version - 4
- IHL - Länge des Headers
- Type of Service - 0
- Total Lenght - Länge des Headers und der Daten
- Identification, Flags, Fragment Offset - werden nur bei Fragmentierung genutzt
- Time to Live - TTL Wert
- Protocol - 1 (ICMP)
- Header Checksum - Checksumme über den Header
- Source Address - Adresse des Gateways oder Hosts, der die ICMP Nachricht gesendet hat
- Destination Address - Adresse des Gateways oder Host, der die IP Nachricht gesendet hat
Destination Unreachable Message
Wenn ein Netzwerk nach den Informationen des Gateways nicht erreichbar ist, sollte der Gateway eine ICMP Nachricht des Typs 3 senden. Diese Nachricht kann auch gesendet werden, wenn das spezifizierte Protokoll bzw. der Port beim Ziel-Host nicht aktiv ist. Wenn ein Datagramm fragmentiert werden müsste, aber das "don't fragment" Flag (DF) gesetzt ist, wird dieser ICMP Typ verwendet. In Abbildung 1 ist der Aufbau des Nachrichtenkopfes zu sehen.

Abbildung 1 - Nachrichtenkopf einer ICMP-Fehlermeldung
Inhalt der IP-Felder:
- Destination Address - Adresse des ursprünglichen Senders des Paketes
Inhalt der ICMP-Felder:
- Type - 3
- Code
- 0 = Netz nicht erreichbar
- 1 = Host nicht erreichbar
- 2 = Protokoll nicht erreichbar
- 3 = Port nicht erreichbar
- 4 = Fragmentierung nötig, DF aber gesetzt
- 5 = Route nicht möglich
- checksum - Checksumme der ICMP Nachricht
Die Kodes 0,1,4 und 5 werden von Gateways gesendet, Code 2 und 3 können auch von einem Host stammen.
Time Exceeded Message
Stellt ein Gateway bei der Verarbeitung eines Datagramms fest, daß das TTL Feld auf Null steht, so muß er das Datagramm verwerfen. Kann ein Host ein fragmentiertes Paket nicht wieder innerhalb seines Zeitlimit zusammensetzen, weil ein Fragment fehlt, wird ebenfalls eine "time exceeded" Nachricht gesendet. Der Aufbau des ICMP-Kopfes ist in Abbildung 1 dargestellt.
Inhalt der IP-Felder:
- Destinantion Address - Adresse und Netzwerk des Ursprungshosts
Inhalt der ICMP-Felder:
- Type - 11
- Code
- 0 = TTL ist erreicht
- 1 = Zeitüberschreitung bei der Zusammensetzung von Fragmenten
- checksum - Checksumme der ICMP Nachricht
Parameter Problem Message
Findet ein Gateway oder Host bei der Verarbeitung eines Datagramms fest, daß im Kopf fehlerhafte Informationen sind und deswegen die Bearbeitung nicht beendet werden kann, so muß dieses Datagramm verworfen wertden. Über diesen Vorgang informiert die ICMP Nachricht des Typs 12. Eine mögliche Fehlerquelle sind nicht korrekte Argumente im Optionen Feld. Abbildung 2 zeigt den Header dieser ICMP Nachrichten.

Abbildung 2 - Nachrichtkopf einer ICMP Typ 12 Meldung
Inhalt der IP-Felder:
- Destination Address - Absender-Adresse aus dem Original-Datatgramm
Inhalt der ICMP-Felder:
- Type - 12
- Code - 0 = Pointer-Feld zeigt den Fehler
- Pointer - identifiziert den Teil der Nachricht, der fehlerhaft ist - z.B.:
- 1 = Type of Service ist inkorrekt
- 20 = Fehler mit den Typ-Code der ersten Option
Source Quench Message
Wie bereits erwähnt, muß ein Gateway Pakete verwerfen, wenn er nicht genügend Pufferplatz hat, um diese zu verarbeiten. In diesem Fall wird er eine ICMP Nachricht des Typs 4 senden. Ein Host, der den Ankuftstrom von Paketen nicht schnell genug verarbeite kann, wird diese Nachricht ebenfalls senden. Kommt diese Meldung beim Ursprungs-Host an, so sollte dieser die Frequenz der Aussendung verringern bis er keine Fehlermeldungen mehr erhält. Danach kann der Urspungs-Host die Übertragungsrate schrittweise erhöhen bis er wieder "Source Quench Message" erhält. Abbildung 1 zeigt den Aufbau des Headers. Unter Umständen senden Gateways oder Host eine "Source Quench Message" bereits kurz bevor das Limit erreicht ist, damit keine Nachricht verworfen werden muß.
Inhalt der IP-Felder:
- Destinantion Address - Absender-Adresse aus dem Original-Datatgramm
Inhalt der ICMP Felder:
Redirect Message
Eine "Redirect Message" wird in folgenden Fällen gesendet: Stellt ein Gateway (G1) fest, daß sich der nächste Gateway (G2), an den er ein Paket laut Routing-Tabelle schicken muß, im selben Netz wie der sendende Host befindet, sendet er die ICMP Meldung am dem Host. Diese weist den Host an, sein Paket an G2 zu senden. Die bisher empfangenen Daten werden weitergeleitet. Abbildung 3 zeigt den Nachrichtenkopf.

Abbildung 3 - Nachrichtenkopf einer ICMP Typ 5 Nachricht
Inhalt der IP Felder:
- Destination Address - Absender-Adresse aus dem Original-Datatgramm
Inhalt der ICMP Felder:
- Type - 5
- Code
- 0 = Datagramme für diese Netzwerk umleiten
- 1 = Datagramme für diesen Host umleiten
- 2 = Datagramme für diesen Service-Typ und Netzwerk umleiten
- 3 = Datagramme für diesen Service-Typ und Host umleiten
- Gateway Internet Address - Adresse des Gateways, an den das Datagramm gesendet werden soll
Echo oder Echo Reply Message
Echo-Nachrichten sind wohl besser unter dem Befehl ping bekannt. Damit lässt sich die Verfügbarkeit eines Gateways oder Hosts im Netz überprüfen. Dazu werden ICMP Nachrichten des Typs 0 bzw. 8 (Echo Reply) verwendet. Der Inhalt einer Echo-Nachricht muß in der Echo-Reply-Nachricht enthalten sein. Die Felder "Identifier" und "Sequence Number" werden vom Sender genutz um die Echo-Reply Nachricht einer gesendeten Echo-Nachricht zuzuordnen. Abbildung 4 zeigt den Aufbau des Nachrichtenkopfes.
Inhalt der IP Felder:
- Adress-Felder - die Urspungsadresse (Source Address) einer Echo Nachricht, wird die Zieladresse (Destination Address) der Echo Reply Nachricht sein. Sie werden einfach vertauscht.

Abbildung 4 - Nachrichtenkopf einer Echo Message
Inhalt der ICMP Felder:
- Type
- 8 = Echo Nachricht
- 0 = Echo Reply Nachricht
- Code - 0
- Identifier - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
- Sequence Number - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
Timestamp oder Timestamp Reply Message
Der empfangene Zeiitstempel in einer Timestamp Nachricht wird in der Timestamp Reply Nachricht zurückgesendet und durch einen zusätzlich Zeitstempel ergänzt. Der Zeitstempel ist ein 32 Bit Wert, der die Millisekunden seit Mitternacht UT wiederspiegelt. Im Feld "Originate Timestamp" steht die Zeit, zu der der Sender die Nachricht das letzte Mal vor dem Versenden bearbeitet hat. Das Feld "Receive Timestamp" beinhaltet die Zeit, zu der der Empfänger das Paket zum ersten Mal bearbeitet hat. "Transmit Timestamp" wiederum zeigt an, wann der Empfänger die Nachricht vor dem Zurücksenden das letzte Mal bearbeitet hat. Der Aufbau des Kopfes dieser ICMP Nachricht ist in Abbildung 5 zu sehen. Die Felder "Identifier" und "Sequence Number" werden auch hier benutzt, um eine eindeutige Zuordnung zwischen Nachricht und Reply Nachricht herzustellen.

Abbildung 5 - Nachrichtenkopf einer Timestamp Messsage
Inhalt der IP Felder:
- Adress-Felder - die Urspungsadresse (Source Address) einer Timestamp Nachricht, wird die Zieladresse (Destination Address) der Timestamp Reply Nachricht sein. Sie werden einfach vertauscht, der Code auf 14 geändert und eine neue Checksumme berechnet.
Inhalt der ICMP-Felder:
- Type
- 13 = Timestamp Nachricht
- 14 = Timestamp Reply Nachricht
- Code - 0
- Identifier - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
- Sequence Number - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
Eine Anwendung dieses ICMP Nachrichtentyps ist in RFC 778 zu finden.
Information Request oder Information Reply Message
Diese Nachricht kann mit der Adresse des Herkunftsnetzwerkes im Feld "Source Address" und einer 0 im Feld "Destinantion Address" im IP-Header. Die Antwort sollte mit einer richtigen IP-Adresse gesendet werden. Dies gibt dem sendenden Host die Möglichkeit herauszufinden, in welchem Netzwerk er sich befindet. Der Aufbau des ICMP Headers ist in Abbildung 6 zu sehen. Die Felder "Identifier" und "Sequence Number" werden auch hier benutzt, um eine eindeutige Zuordnung zwischen Nachricht und Reply Nachricht herzustellen.

Abbildung 6 - Nachrichtenkopf einer ICMP Nachricht des Typs 15 & 16
Inhalt der IP Felder:
- Adress-Felder - die Urspungsadresse (Source Address) einer Echo Nachricht, wird die Zieladresse (Destination Address) der Echo Reply Nachricht sein. Sie werden einfach vertauscht.
Inhalt Der ICMP Felder:
- Type
- 15 - Information Request Nachricht
- 16 - Information Request Reply Nachricht
- Code - 0
- Identifier - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
- Sequence Number - Eintrag um Echo und Echo Reply eindeutig zuzuordnen
|
| Quellen: |
RFC 792 - Internet Control Message Protocol
|
|
|
|
|
|
Nutzungshinweis und
Copyright |
Dieser Beitrag wurde unter Verwendung der genannten Quellen geschrieben. Alle Rechte liegen beim Autor! Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetztes ist ohne Zustimmung des Autors unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmung und die Einspeicherung und Bearbeitung in elektronischen Systemen.
Die rechtmäßige Verlinkung dieser Seite ist ausdrücklich erwünscht. Dabei muß klar erkennbar sein, daß es sich nicht um eigenen Inhalt der verlinkenden Seiten handelt. Des Weiteren wäre es nett, wenn der Webmaster von der Verlinkung informiert wird. Eine unrechtmäßige Verlinkung (Laden der Seite innerhalb von Frames u.ä.) ist ausdrücklich verboten.
Nutzungserlaubnis für www.protecus.de und www.different-thinking.de wurde durch die Autoren erteilt!
|
|