
|
|
IP - ICMP
Das Internet Control Message Protocol (ICMP) ermöglicht den höheren
Protokollschichten, Fehlerzustände auf der Vermittlungsschicht zu erkennen
und gibt dem Netzwerkbetreuer Werkzeuge zur Diagnose an die Hand. ICMP-Pakete
werden als Nutzdaten von gewöhnlichen IP-Paketen übertragen und können je nach
Typ unterschiedliche Länge haben. Jedes ICMP-Paket enthält jedoch zuerst zwei
8-Bit-Felder, "Type" und "Code". Der Type legt dabei die grundsätzliche
Funktion des Pakets fest, Code kann diesen dann genauer spezifizieren. Bei
Paketen, die bei Fehlern automatisch generiert werden, enthält das ICMP-Paket
zudem den Header und die ersten 8 Bytes der Nutzdaten des den Fehler
verursachenden IP-Pakets.
Ping:
Der wichtigste Typ der ICMP-Pakete ist der "Echo Request", der mit Type=8 und
Code=0 verschickt wird. Der Empfänger dieses Pakets muss es zurücksenden, wobei
er Type=0 und Code=0 setzt und es damit zum "Echo Reply" macht. Dieser
Mechanismus ermöglicht es, die Erreichbarkeit einer bestimmten Adresse zu
prüfen. Der Echo Request lässt sich bei fast jedem Betriebssystem mit
folgendem Befehl auslösen:
ping <adresse> [<paketgroesse>]
An dem Parameter "Paketgröße" ist zu erkennen, dass man einen Echo Request mit
Testdaten füllen kann, um das Verhalten des Netzes bei verschiedenen Paketgrößen
prüfen zu können. Je nach Implementierung läuft der Ping-Befehl entweder im
Sekundentakt so lange, bis er mit Strg-C abgebrochen wird, oder erzeugt nur
4 Echo Requests im Sekundentakt und beendet sich dann wieder. Dieses
Standardverhalten lässt sich jedoch über Parameter ändern.
Ziel nicht erreichbar:
Dieses ICMP-Paket wird erzeugt, wenn ein Gerät im Netz ein Paket als nicht
zustellbar erkennt und deswegen verwerfen muss. Es hat den Type von 3 und
kennzeichnet mit dem Code den Fehler genauer:
0 network unreachable (Netzwerk nicht erreichbar)
1 host unreachable (Endgerät nicht erreichbar)
2 protocol unreachable (Protokoll nicht verfügbar)
3 port unreachible (Port nicht erreichbar)
4 fragmentation needed and DF set
(Fragmentierung wäre notwendig, ist aber per DF-Flag untersagt)
5 source route failed (vom Sender vorgegebenes Routing fehlgeschlagen)
Source Quench:
Falls ein Router oder Endgerät Datenpakete von einem bestimmten Sender in
schnellerer Folge erhält, als es sie verarbeiten kann, sendet es dieses
ICMP-Paket mit Type=4 und Code=0. Der Sender sollte dann seine Pakete mit
größeren Pausen versenden, ansonsten wird der Empfänger voraussichtlich
Pakete verwerfen müssen.
Route ändern:
Gesetzt den Fall, ein Router erhält ein Datenpaket, das er aufgrund seiner
Routingtabellen weiterleiten kann. Stellt er nun fest, dass der Sender des
Datenpakets und der Router, an den er es weiterleiten möchte, sich im gleichen
Netz befinden, könnte das Paket günstiger direkt über diesen verschickt werden.
Dies wird dem Sender mit einem "Change Route" ICMP-Paket (Type=5) mitgeteilt.
Der Code gibt hierbei an, ob die bessere Route für das ganze Zielnetz gilt (0)
oder nur für den Zielhost des ursprünglichen Pakets (1).
Lebenszeit abgelaufen:
Der IP-Header enthält ja ein TTL-Feld (Time To Live), das mit jeder
Zwischenstation auf dem Weg des Pakets durchs Netz um eins vermindert wird.
Erreicht es den Wert Null, wird das Paket verworfen und der Sender durch ein
"Time Exceeded" ICMP-Paket mit Type=11 und Code=0 informiert. Eine zweite
Variante (Type=11 und Code=1) wird gesendet, wenn ein fragmentiertes Paket
innerhalb eines Timeouts nicht komplett rekonstruiert werden kann, z.B. weil
ein Fragment verloren gegangen ist.
Die erste Variante wird von einem weiteren Befehl zur Netzwerkdiagnose genutzt,
nämlich Traceroute. (Auf Windows-Systemen meist "tracert" genannt). Dieser
verschickt Datenpakete an einen Zielhost, und zwar zunächst eines mit einer
TTL von 1. Dieses wird also bereits von der ersten Zwischenstation verworfen
und ein "Time Exceeded" ICMP-Paket zurückgesendet. Die IP-Adresse dieser
Station wird angezeigt und nun ein Paket mit einer TTL von 2 verschickt.
Dieses wird von der zweiten Station verworfen und so weiter. Irgendwann ist
die TTL groß genug und das Paket erreicht sein Ziel. Nun beendet sich der
Traceroute-Befehl. Als Ergebnis ist eine Liste der Zwischenstationen vom
Sender zum Empfänger zu sehen. Dabei ist zu beachten, dass man von Routern
immer die IP-Adresse jenes Interfaces zurückgemeldet bekommt, über das das
ICMP-Paket zum anfragenden Host geschickt wird.
Beispiel: Sie arbeiten an dem Rechner mit der IP-Adresse 10.1.1.50:
|
|