Das Internet Control Message Protocol ist eines der grundlegenden Protokolle der Internet Protocol Suite . Es wird verwendet, um Steuerungs- und Fehlermeldungen für diese Protokollsuite zu übermitteln, beispielsweise wenn ein Dienst oder ein Host nicht erreichbar ist.
ICMP befindet sich auf derselben Ebene wie das IP- Protokoll , bietet jedoch nicht die Dienstprimitive, die normalerweise einem Netzwerkschichtprotokoll zugeordnet sind . Seine Verwendung ist normalerweise aus Sicht von Anwendungen und Benutzern in den Netzwerken transparent .
Dieser Artikel beschreibt ICMP Version 4, die mit IPv4 geliefert wird . Die Version 6 des Protokolls wird im Artikel Internet Control Message Protocol Version 6 vorgestellt .
ICMP ( I nternet C teuerung M Nachricht P rotokoll - Internet Control Message Protocol ) ist ein Level 3 Protokoll auf dem OSI - Modell , das die Steuerung von Übertragungsfehlern ermöglicht. Da das IP- Protokoll nur den Transport von Paketen verwaltet und das Senden von Fehlermeldungen nicht zulässt, kann ein sendender Computer dank dieses Protokolls erkennen, dass ein Netzwerkfehler aufgetreten ist. Es ist in RFC 792 detailliert beschrieben .
Obwohl es sich auf einer Ebene befindet, die dem IP-Protokoll entspricht (wenn wir versuchen, das OSI-Modell näher an das TCP / IP- Modell heranzuführen), ist ein ICMP-Paket dennoch in einem IP- Datagramm gekapselt . Im Zusammenhang mit IPv4 lautet die allgemeine Form eines solchen Pakets wie folgt:
Bit 0 - 7 | Bit 8 - 15 | Bit 16 - 23 | Bit 24 - 31 |
---|---|---|---|
Version / IHL | Art der Leistung | Gesamtlänge | |
Identifizierung (Fragmentierung) | Flags und Offset (Fragmentierung) | ||
Lebensdauer (TTL) | Protokoll | Header-Prüfsumme | |
Ursprungs IP-Addresse | |||
Ziel-IP-Adresse | |||
Nachrichtentyp | Codiert | Prüfsumme | |
Stau oder Daten | |||
Daten ( optional und variable Länge ) |
Ein solches Datagramm besteht aus:
Die verschiedenen möglichen Vorfälle werden unten mit dem entsprechenden Fehlercode gemeldet.
Art | Codiert | Beschreibung |
---|---|---|
0 - Echoantwort | 0 | ECHO-Antwort (Typ 8-Nachrichtenantwort) |
1 und 2 - Reserviert | Reserviert | |
3 - Nicht erreichbarer Empfänger | 0 | Das Netzwerk ist nicht zugänglich |
1 | Die Maschine ist nicht zugänglich | |
2 | Auf das Protokoll kann nicht zugegriffen werden | |
3 | Der Port ist nicht zugänglich | |
4 | Fragmentierung notwendig, aber aufgrund des DF- Flags nicht möglich | |
5 | Routing fehlgeschlagen | |
6 | Unbekanntes Netzwerk | |
7 | Unbekannte Maschine | |
8 | Maschine nicht mit dem Netzwerk verbunden (nicht verwendet) | |
9 | Kommunikation mit dem Netzwerk verboten | |
10 | Kommunikation mit der Maschine verboten | |
11 | Netzwerk für diesen Dienst nicht erreichbar | |
12 | Maschine für diesen Service nicht zugänglich | |
13 | Kommunikation verboten (Filterung) | |
14 | Hostpriorität verletzt | |
fünfzehn | Prioritätsgrenze erreicht | |
4 - Quelle ausschalten | 0 | Quelle ausschalten ( Quenchquelle ) |
5 - Umleitung | 0 | Umleitung für einen Host |
1 | Umleitung für einen Host und einen Dienst | |
2 | Umleitung für ein Netzwerk | |
3 | Umleitung für ein Netzwerk und einen Dienst | |
8 - Echoanforderung | 0 | ECHO-Anfrage (wird vom Ping- Befehl verwendet ) |
11 - Zeit überschritten | 0 | Datagrammlebensdauer überschritten |
1 | Die Zeit für den Zusammenbau des Datagrammfragments wurde überschritten | |
12 - Falscher Header | 0 | Der Zeiger zeigt den Fehler an |
1 | Fehlen einer obligatorischen Option | |
2 | Falsche Länge | |
13 - Zeitanforderung | 0 | Zeitstempelanforderung |
14 - Antwortzeit | 0 | Zeitstempel Antwort |
15 - IP-Adresse anfordern | 0 | Netzwerkadressenanforderung |
16 - IP-Adressantwort | 0 | Antwort der Netzwerkadresse |
17 - Subnetzmaskenanforderung | 0 | Subnetzmaskenanforderung |
18 - Subnetzmaskenantwort | 0 | Subnetzmaskenantwort |
Ein Transit-Router oder der Endcomputer fordert den Absender auf, die Rate des Frame-Sendens zu verlangsamen. Transit-Router speichern empfangene Frames in einem Puffer, bevor sie weitergeleitet werden ( Speichern und Weiterleiten ). Wenn dieser Puffer voll sein sollte oder wenn die CPU- Last des Routers einen Schwellenwert (oder einen anderen Grund für eine Überlastung) überschreitet, kann das Routing zukünftiger Pakete nicht mehr übernommen werden. Sie würden dann stillschweigend verloren gehen. Damit dies nicht geschieht, kann somit jeder Transitknoten den Sender informieren, die Rate zu verlangsamen. Und das für jedes Layer 4-Protokoll (UDP, TCP…).
NB: Dies ist nicht redundant mit dem Mechanismus zum Ankündigen der Größe des Schiebefensters einer TCP-Verbindung, da letzteres nur vom Empfänger gesteuert werden kann (außer Proxifizierung ), aber hier geht es um die Transitrouter.
Diese Art von Nachricht wurde 2012 von RFC 6633 veraltet .
Der Router stellt fest, dass die vom sendenden Computer gewählte Route nicht optimal ist, da sich der nächste Router, der den Empfänger erreicht, im selben Netzwerk befindet wie der sendende Computer. Der Router sendet die Adresse des nächsten Routers, der der Routing-Tabelle des sendenden Computers hinzugefügt werden soll, damit das nächste Senden an denselben Empfänger diese nicht unnötig durchläuft. Diese Option wird in Unternehmensnetzwerken häufig blockiert, da sie von einem Angreifer verwendet werden kann, um den Datenstrom von einem Opfer auf seinen eigenen Computer umzuleiten.
Es sind mehrere Angriffe gegen ICMP bekannt. Unter ihnen können wir zitieren: