|
Das ICMP-Protokoll wird für Diagnose und Fehler-Meldungen in einem
IP-Netzwerk verwendet. IP Daten-Pakete zum Transport. Die bekannten Konsolen-Programme ping und traceroute verwenden ICMP. |
ICMP verfügt über max. 256 verschiedene Anweisungen und verwendet Standard IP Daten-Pakete zum Transport. |
Netzwerk
|
Zusammenarbeit - Lokal und weltweit |
| ICMP-Kompress | Protokoll, Aufgaben |
| ICMP-Liste | Liste der Anweisungen und Meldungen |
| Auswahl | Häufig verwendete ICMP-Typen |
| ICMP-Paket | Details zum Aufbau einer ICMP Nachricht oder -Anweisung |
| PING | Ping und verwandtes Werkzeug |
| Links |
Ausgewählte
|
ICMP-Kompress |
|
ProtokollICMP ist ein Protokoll - Eine standardisierte Sammlung von Regeln, nach denen Daten in Netzwerken ausgetauscht werden.OSI-ModellICMP-Software arbeitet in der Vermittlungs-Schicht des → OSI-Modells, ebenso wie → IP.ICMP benötigt zur Arbeit alle darunter liegenden Schichten, z.B. → Ethernet. AufgabenICMP bietet Werkzeuge zur Kontrolle bzw. zum Debuggen von → IP-Verbindungen. ICMP ist zu diesem Zweck besonders einfach und robust angelegt. |
ICMP-AnweisungenEs gibt 256 verschiedene mögliche ICMP-Befehle, davon sind derzeit ca. 40 definiert, der Rest ist Reserve (↓ Liste)IP Daten-PaketeICMP verwendet zum Transport Standard IP Daten-Pakete (↓ Details).↓ Pingist das bekannteste Programm, welches ICMP verwendet. Man prüft damit die Erreichbarkeit entfernter IP-Adressen. |
ICMP-Nachrichten und -Anweisungen |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Liste der ICMP-Anweisungen (ohne Gewähr):
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Die Liste standardisierter ICMP-Typen und Codes wird von der IANA
(Internet Assigned Numbers Authority) verwaltet: |
Die Typen-Liste (unverbindlich !) enthält einige Lücken für reservierte, jedoch noch nicht verwendete Typen. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ausgewählte ICMP-Anweisungen |
|
ICMP-Anweisungen 0..255ICMP verwendet für seine Anweisungen und Nachrichten nicht Klartext sondern im ICMP-Header eine ganze Zahl von 8 Bit = 1 Byte Länge, d.h. mit Werten 0..255 (dezimal) oder 0..FF (hex). Einige Anweisungen gibt es paarweise in der Form Anfrage / Antwort.Hier wird eine Auswahl häufig verwendeter ICMP-Anweisungen vorgestellt: Echo Request (ICMP 008) und Echo Reply (ICMP 000)Dieses Paar von Anweisungen wird vom bekannten Konsolen-Programm ↓ ping verwendet. Der Echo Request provoziert eine Antwort von (fast) jedem erreichten Computer. Mit Hilfe von Optionen lassen sich zusätzlich wertvolle Informationen über die Qualität einer Übertragungs-Strecke gewinnen.Leider wurde diese Anweisung von Viren und anderem Ungeziefer missbraucht. Daher wurde sie von einigen Providern gesperrt, obwohl der Standard RFC 1122 ausdrücklich für jeden Netzwerk Teilnehmer eine Echo-Antwort vorschreibt. |
Destination Unreachable (ICMP 003)Diese Nachricht mit Code=3 sendet → UDP, wenn zwar die IP-Adresse des Ziels, jedoch nicht der gewünschte → Port erreichbar ist. → TCP sendet in diesem Fall keine ICMP-Nachricht, sondern den TCP-Befehl Reset.Source Quench (ICMP 004)Diese Nachricht wird von einem überlasteten Empfänger (z.B. Router) zurück an den Absender geschickt. Sie informiert, dass wegen Überlastung einige IP-Pakete verloren wurden.Time exceeded (ICMP 011)Diese Nachricht wird von einem Router an den ursprünglichen Sender eines IP-Pakets gesendet, wenn dessen maximale Lebenszeit (TimeToLive TTL) angelaufen ist.● Das passiert, wenn ein IP-Paket unzustellbar ist. ● Programme wie ↓ traceroute senden IP-Pakete mit manipulierten TTL-Werten zur Analyse des Netzwerk-Pfads zu einer IP-Adresse. |
ICMP Paket |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Typischer Aufbau eines IP Pakets mit ICMP Nutzdaten
(grün unterlegt):
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ICMP verwendet das Standard-Format des Internet Protocol (→ IP). An Stelle der bei anderen IP-Paketen folgenden TCP- oder UDP-Header folgt der ICMP Datenblock (grün unterlegt). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ICMP-Type:Die Type-Nr (0..255) bezeichnet die ICMP-Nachricht oder -Anweisung. |
ICMP-Code:Die Code-Nr (0..255) kann zusätzliche Details zur Type-Nr angeben. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ♦ Details zum Aufbau eines IP-Pakets, Ethernet Daten-Pakets | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PING Werkzeug |
|
|
♣ Tipp: Überprüfen sie die Konfiguration ihres WLAN Routers und schalten sie bei Verdacht in den Vollbetrieb. |
♣ Betreiben sie Standgeräte (Server, Drucker, Schreibtisch-PC ...) besser mit dem klassischen Kabel. Das ist wesentlich zuverlässiger, verpulvert nicht 99% seiner Energie in schädlichen ElektroSmog, lässt sich nicht so leicht abhören. WLAN ist nur dann wirklich wichtig, wenn sie ihren Notebook-PC auch im kleinsten Raum ihrer Wohnung verwenden wollen - und natürlich für die Hersteller von WLAN Geräten... |
pingAlle Betriebssysteme bieten das Konsolen-Programm ping (Packet Internet Groper).► Damit lässt sich feststellen, ob ein Ziel (seine IP-Adresse) über das Netzwerk erreichbar ist. Ping arbeitet extrem robust und ist eines der meist-verwendeten Konsolen-Programme. ► Ping verwendet die ↑ ICMP-Anweisungen 8 (Echo Request) und 0 (Echo Reply). ▼ Ping und traceroute arbeiten leider nicht auf jeder Internet-Strecke, da einige Provider das Echo sperren. Linux - ping(Hilfe, typische Anwendung im LAN und im Internet)
# man ping
♣
Ohne Option -c erzeugt ein Linux-ping
eine unendliche Folge von PINGs. Das ist z.B. mit Option -a
(piepst) für ein Netzwerk-Service (Kabel, Stecker) praktisch und erspart
den Blick auf den Monitor. Die PING-Folge wird mit ^C
abgebrochen.# ping -c3 192.168.0.123 # ping -c1 -n -t1 192.168.0.123 # ping -c1 google.de ♣ Bei automatischer Ausführung und Auswertung ist es sinnvoll, die Optionen genau einzustellen. Wenn ein bestimmter PING oft benötigt wird, dann kann man dafür ein Alias anlegen, z.B.
# alias ping_server='ping -c3 192.168.0.1'
# ping_server |
Windows - ping(Hilfe, typische Anwendung im LAN und im Internet)
C:\> ping /?
♣
Argumente von Optionen müssen durch ein Leerzeichen getrennt
werden: -w5 ergibt einen Fehler, -w 5
ist korrekt.C:\> ping 192.168.0.123 C:\> ping -i 1 -n 1 -w 5 192.168.0.123 C:\> ping google.de ♣ PINGs innerhalb des eigenen LAN laufen meist problemlos. Bei "paranoider" Konfiguration können auch PINGs verboten werden (nicht empfehlenswert). ♣ Ein PING ins Internet kann am Router oder an einem Firewall scheitern. ♣ Auch auf Windows ist mit Option -t eine unendliche Folge von PINGs möglich. ♣ Die → Windows-Konsole kennt keine Alias. Man kann den Befehl in eine Text-Datei *.cmd eintragen und die Datei in einem der Pfade der → Umgebungs-Variablen PATH verschieben. Bei Eingabe des Datei-Namens (ohne .cmd) werden die Befehle der Datei ausgeführt. |
fpingDas Linux Shell-Programm fping führt mit einem einzigen Befehl PINGs zu einer Liste oder zu einem Bereich mehrerer IP-Adressen durch.Beispiel: Hilfe, PING an alle Adressen im LAN, Anzeige nur der aktiven Adressen:
# man fping
Das Programm ist relativ mächtig und daher auf den meisten Linux-Systemen
dem Administrator root vorbehalten. Das schließt
die Verwendung auf dynamischen Webseiten aus, wenn man den Webserver nicht
die Erlaubnis dazu (Stichwort sudoers gibt.
# fping -r1 -C1 -i5 -t5 -g 192.168.0.0/24 # fping -r1 -C1 -i5 -t5 -g 192.168.0.0/24 2>/dev/null |
Windows bietet kein fping Programm. Im Internet werden kostenlos einige Varianten angeboten, z.B. fping von kwakkelflap oder pingit von googlepages. ♣ Tipp: Im Zweifel als Administrator anmelden Beispiel: Hilfe, PING an alle Adressen im lokalen Netzwerk
C:\> fping /?
C:\> fping -t5 -w5 -n1 -h1 -g 192.168.0.0/192.168.0.254 ♣ Verlängern sie in großen LANs die Zeiten (hier je 5 ms) auf 10..100ms. |
arpingDas Linux Shell-Programm arping liefert mit jedem PING auch die → MAC-Adresse des entfernten PC, z.B.:
# man arping
# arping -c -f -I eth0 192.168.0.123 Unicast reply from 192.168.0.123 [11:22:33:44:55:66] 1.5 ms |
Für Windows scheint es keine Ausgabe von arping zu geben, leider auch nicht für → Cygwin auf Windows. Suchen sie evtl. selbst nach "arping & windows" ♦ Details zum Thema ARP |
bingDas Linux Shell-Programm bing liefert zusätzlich eine Live-Analyse der Übertragungs-Rate:
# bing 127.0.0.1 192.168.0.123
1024 bits in 0.020ms... |
Für Windows scheint es kein derartiges Programm zu geben. Man kann jedoch von jedem Linux-PC oder Server die Verbindung zu einem Windows-PC messen. |
Eigene (Script)-ProgrammeEin Script-Programm kann eine Vielzahl unabhängig (gleichzeitig) laufender Child-Programme starten, von denen jedes einen einzelnen Ping ausführt. |
Da Ping meist keinen Beschränkungen unterliegt, ist es auf diese Weise möglich, alle 254 IP-Adressen eines typischen LAN in ca. 1 Sekunde zu testen und auf einer dynamischen Webseite anzuzeigen. ♦ Beispiel netping als Perl-Programm. |
tracerouteDieses Programm dient zur Analyse des kompletten Netzwerk-Pfades zwischen den IP-Adressen von Sender und Empfänger.• Dazu sendet traceroute (bzw. traceroute6 für IPv6) eine Folge von PINGs (ICMP Type 8) mit speziell manipulierten TTL-Daten an die IP-Adresse des Ziels. • TTL (0..255) bestimmt die Lebenszeit eines IP-Pakets. Jeder Router verringert TTL um 1, bei TTL=0 wird das Paket gelöscht und eine ICMP-Nachricht Type=11 (Time exceeded) mit seiner eigenen IP-Adresse an den Absender zurückgesendet. • Der erste PING wird mit TTL=1 abgesendet und endet daher am nächsten Router. • Danach werden so lange weitere PINGs mit TTL=2, 3, 4, ... gesendet, bis das Ziel erreicht ist. Diese PINGs erreichen der Reihe nach alle am Weg liegenden Router. So lässt sich der Weg durch das Netzwerk analysieren. • Bei längeren Wegen steigt allerdings die Wahrscheinlichkeit, dass zumindest ein Teil der Daten auch über andere Wege ans Ziel kommt. Beispiele:
# man traceroute
# traceroute -w1000 domain.com # traceroute6 -w1000 domain.com Linux bietet auch die Programme mtr (mytraceroute) und die Fenster-Variante xmtr mit ähnlicher Funktionalität. |
Auf Windows sind traceroute-Programme unter ähnlichen Namen verfügbar. Optionen und deren Werte müssen durch Leerzeichen getrennt werden, z.B.
C:\> tracert /?
C:\> tracert -d -w 1000 domain.com C:\> tracert6 -d -w 1000 domain.com C:\> ping -n 1 -r 9 domain.com C:\> pathping -w 1000 domain.com ♣ Hinweis: Manche Provider sperren die Weitergabe von ICMP Echo Anweisungen. ♣ Firewall: Je nach Einstellung kann jeder Firewall ICMP Echo Anweisungen sperren, z.B. auf ihrem eigenen PC oder Router, oder am Router oder Computer des traceroute-Ziels. Im eigenen LAN werden traceroute-Pakete manchmal fälschlich für (gefährliche) Versuche von Port-Scans gehalten. ♣ Blockierende Firewalls kann man manchmal mit UDP- oder TCP-Varianten von traceroute-Programmen täuschen. Diese arbeiten nach dem gleichen Prinzip (z.B. mit dem fast immer freigegebenen Port 80) und schaffen zumindest den Weg bis an ihr Ziel. Oft wird aber trotzdem die zurückgesendete ICMP-Antwort blockiert. ● Windows Entwicklung: Man kann die Windows-Bibliothek icmp.dll verwenden oder mit winsock einen eigenen raw-Socket öffnen. Vorsicht - manche Varianten der Betriebssysteme oder von Firewalls neigen dazu, raw-Sockets ungefragt zu sperren. |
Zugriffs-RechteNetzwerk-Informationen können je nach Situation als sensible Daten eingestuft werden.● Deshalb ist die Ausführung mancher Programme (zumindest auf Linux) an besondere Zugriffs-Rechte (root) gebunden. ● Testen sie die hier vorgestellten und ähnliche Programme nicht nur als User root, sondern auch als gewöhnlicher User. Unberechtigte erhalten die Meldung command not found ● Unabhängig davon können ICMP-Pakete an vielen Stellen durch Firewalls blockiert werden (eigener PC, sämtliche beteiligten Router, Ziel-System). |
AutomatisierungIm Prinzip lassen sich Konsolen-Programme auch von Scripts und von dynamischen Webseiten (CGI-Programmen) ausführen. In diesem Fall benötigen diese Programme jedoch die Ausführungs-Rechte.Auf Linux müssen sie diesen Punkt streng beachten. ● Dynamische Webseiten werden vom Webserver-Programm ausgeführt, auf Linux meist vom User wwwrun Dieser User hat aus gutem Grund nur beschränkten Zugriff auf Betriebssystem und Netzwerk. ● Je nach Konfiguration wird der User wwwrun an der Ausführung sensibler Programme gehindert. Es wird davon abgeraten diesem User auch nur temporär root-Rechte einzuräumen. ● Es ist nicht allzu schwierig, aber einiger Aufwand, ICMP-Anweisungen auf niedriger Ebene mit einem raw-Socket selbst zu programmieren. Das funktioniert auf Linux problemlos, wird jedoch auf Windows je nach System manchmal ohne Angabe von Gründen blockiert. |
|
|
IETF-Standards:
RFC 792,
RFC 1122IANA: ICMP Parameters |
Wikipedia:
ICMP,
(de,
en),
Ping,
Traceroute
Elektronik-Kompendium : ICMP, Ping, Traceroute, |
Live-PINGund verwandte Services (kleine Auswahl)AOn (Ping, Traceroute, DNS, SpeedTest) Gulli (Ping, Traceroute, DNS) Ping (Ping, Traceroute, DNS, WhoIs, Bandwidth) Switch (Traceroute, Traffic-Map CH, SpeedTest Applet) Tellurian (Ping, Traceroute, DNS, Whois, SpeedTest) - etwas warten ! UTA (Traceroute, DNS, Whois) |
Live-TraceRoutetraceroute.org (Live-Router weltweit, A, D, CH)Manipulator (mit Google-Landkarte) |