Handout zum PRRL Referat: ICMP
Internet Control Message Protocol
Referent: David Lenhart
Klasse: 4AHDVN
Überblick
* Dient zum Informationsaustausch über Fehler im Datenaustausch.
* Keine ICMP Nachrichten als Antworten auf ICMP Nachrichten und nur als Reaktion auf den 1ten (0ten) Teil eines
fragmentierten Datagrams
* Werden unter Verwendung des IP Headers gesendet
* Wie funktioniert Checksummenbildung im ICMP Header:
** Zuerst wird beim Sender das Checksum field auf 8*0 gesetzt
** Dann wird der ICMP Header in 8bit Felder unterteilt
** Diese werden alle addiert und anschließend das 1er Komplement dieser Summe gebildet
** Das wird dann in das Checksum field eingefügt
** Der Empfänger wiederholt den Prozess und sollte 8x1 erhalten, falls nicht wurde der Packet Header beim Transport veraendert
* RFC 792 stellt die erstmalige Definiton von ICMP dar.
Überblick über die ICMP Type/Code Arten

* Das Type Feld im ICMP Header wird mit der jeweiligen Type Nummer gefüllt (z.B.: bei Echo Request: Type = 0)
* Das Code Feld dient zur Untergliederung der jeweiligen ICMP Type Msg.
ICMP Type 0/8 (Echo Request/Reply)

* Dient zur Messung der Erreichbarkeit/Verbindungsgeschwindigkeit des Zielhosts.
* Identifier/Seq. Number kann dazu verwendet werden um herauszufinden zu welchem Request ein Reply eingetroffen
ist ("Packet Matching")(vom OS abhängig, beliebiger 16bit Wert)
* Praktisches Beispiel: ping
ICMP Type 3 (Destination Unreachable)

* Dient zur Informationsweitergabe ueber die (Un-) Erreichbarkeit eines:
** Netzwerkes
** Hosts
** Protokolls
** Dienstes
Bei Type = 4, Unused Feld = 2 Byte, Next Hop MTU = 2 Byte (<68 Byte)
ICMP Type 4 (Source Quench)

* Anfrage um Geschwindigkeitsreduktion bei der Datenübertragung vom Empfänger an den Sender
* Vom Empfänger gesendet
ICMP Type 5 (Redirect)

* Vom Router des Zielnetzwerks (Netzwerks in dem sich der Zielhost befindet) gesendet. ("Ich hab zuviel zu tun")
* Umleiten von einem Datentransfer (Bester Router um ein Netzwerk zu erreichen)
ICMP Type 9/10 (Router Advertisement/Solicitation)

* Router sagt: “Ich existiere“
* Nicht mehr unter Verwendung (abgelöst durch BOOTP/BOOTSTRAP bzw. DHCP
* Der “Advertisement count“ gibt an wie viele Router Adress/Pref. Level Paare im Datenteil der Message sind.
* Die “Address entry size“ gibt an wie groß ein Informationspaar ist (in 32bit Worten), normalerweise auf 2 gesetzt.
(Router Adresse + Pref. Level)
* Preference Level = Gibt die Qualitaet des Routers an. (Umso höher umso besser)(Signed 2s complement)
* Lifetime = 16bit TTL
ICMP Type 11 (Time Exceeded)

* TTL wird im IP Header bei der Packet Weitergabe von Router zu Router um jeweils "1" pro Router dekrementiert (vom Router).
* TTL = 0 (Route, bzw. Reassembly)
* Praktisches Beispiel: traceroute
ICMP Type 13/14 (Timestamp Request/Reply)

* Anfrage fuer die korrekte Uhrzeit (In ms nach 2400 (Mitternacht))
* Sender: fuellt “Originate Timestamp“ aus
* Empfänger: füllt “Receive Timestamp“ beim Erhalt und “Transmit Timestamp“ beim Versand aus.
Quellen: RFC 792,
networksorcery.com