IPv6/ICMP
ICMPv6 - Internet Control Message Protocol für IPv6
Beschreibung
ICMPv6 (Internet Control Message Protocol Version 6) | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Familie | Internetprotokolle | |||||||||||||||||
Einsatzgebiet | Fehlermeldungen, Diagnose, Autoconfiguration, Routing | |||||||||||||||||
| ||||||||||||||||||
Standards |
Das Internet Control Message Protocol for the Internet Protocol Version 6 (ICMPv6) ist die mit IPv6 zusammen verwendete Version des Internet Control Message Protocol
- Es dient, wie schon bei IPv4, in Netzwerken zum Austausch von Fehler- und Informationsmeldungen
- Zusätzlich findet es aber noch im Neighbor Discovery Protocol, dem Ersatz des Address Resolution Protocol, Verwendung
Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig
- Ein generelles Blockieren von ICMPv6 auf der Firewall führt dazu, dass IPv6 nicht funktioniert (vgl. RFC 4890)
ICMPv6 dient als Hilfsprotokoll für IPv6, ist in derselben OSI-Schicht 3 wie dieses angesiedelt und nutzt das IPv6-Protokoll zum Versand von ICMP-Nachrichten
- Als Protokoll-Nummer wird dabei 58 ins Next-Header-Feld des IPv6-Headers eingefügt
Header
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
… | ICMPv6-Nachricht … |
- Das Feld Type gibt die Klasse der ICMP-Nachricht an, welche mit dem Feld Code genauer spezifiziert werden kann
- Die Prüfsumme wird zur Verifizierung der Gültigkeit des ICMPv6-Pakets benutzt
- Der restliche Inhalt der ICMP-Nachricht wird durch den jeweiligen Typ bestimmt
- Bei Fehlernachrichten wird nach den möglichen zusätzlichen Feldern immer noch so viel wie möglich vom fehlerverursachenden Paket angehängt
Prüfsumme
0 | IPv6-Absender-Adresse | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | ||||||||||||||||||||||||||||||||
64 | ||||||||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||||||||
128 | IPv6-Ziel-Adresse | |||||||||||||||||||||||||||||||
160 | ||||||||||||||||||||||||||||||||
192 | ||||||||||||||||||||||||||||||||
224 | ||||||||||||||||||||||||||||||||
256 | IPv6-Nutzlast-Größe | |||||||||||||||||||||||||||||||
288 | Checksumme 0 | Next Header 58 |
Die Prüfsumme (engl. checksum) eines ICMPv6-Pakets ist ein 16-Bit-Einerkomplement der Summe des Einerkomplements der gesamten ICMPv6-Nachricht
- Zusätzlich zur Nachricht wird noch ein IPv6-Pseudoheader vorne angehängt
- Zur Berechnung der Prüfsumme wird das Prüfsummenfeld auf 0 gesetzt
- Der zur Berechnung der Prüfsumme verwendete Pseudoheader sieht wie im Schema nebenan aus
Dies ist eine der Neuerungen von ICMPv6 gegenüber ICMP, wo die Prüfsumme nur über den ICMP-Header berechnet wurde
Verarbeitung
- Regeln für die Verarbeitung von ICMPv6-Nachrichten
- Unbekannte ICMPv6-Fehlernachrichten müssen an die darüberliegende Netzwerkschicht weitergereicht werden
- Unbekannte ICMPv6-Informationsnachrichten müssen ohne Benachrichtigung des Absenders verworfen werden
- Jeder Fehlernachricht wird am Ende so viel wie möglich des fehlerverursachenden Pakets angehängt
- Die Protokollnummer zum Weiterreichen von unbekannten Fehlernachrichten wird aus dem angehängten Originalpaket entnommen
- Auf folgende Pakete werden keine Fehlernachrichten versandt
- Fehlernachrichten
- Pakete an Multicast-, Link-Level-Multicast- oder Link-Level-Broadcast-Adressen mit folgenden Ausnahmen:
- Packet-Too-Big-Nachrichten
- Parameter-Problem-Nachrichten mit Code 2 – unbekannte IPv6-Option
- Das Netz darf nicht mit ICMPv6-Fehlernachrichten geflutet werden
Nachrichten-Typen
- Die Nachrichten-Typen werden in zwei Gruppen unterteilt
Die ersten 128 Typen (0–127) | mit dem höchstwertigen Bit (engl. most significant bit) auf 0, sind Fehlernachrichten |
Die zweiten 128 Typen (128–255) | mit dem höchstwertigen Bit auf 1, sind Informationsnachrichten |
Fehlernachrichten
Informationsnachrichten
|
Echo Request
- Echo Request - Type 128
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Identifikation | Sequenznummer | ||||||||||||||||||||||||||||||
… | Daten |
Mit einem Echo Request wird um eine Antwort gebeten
- Ein Echo Request ist nichts anderes als ein simpler Ping
- Das Datenfeld kann mit Daten vergrößert werden, um größere Pakete zu produzieren
- So kann man zum Beispiel die MTU ermitteln
Jedes System muss gemäß RFC auf Echo Requests reagieren und mit Echo Replies antworten
- Auch sollte jedes System eine Anwendung zum Versenden und Empfangen von Echo Request/Replies besitzen
- Hiervon wird in der Praxis jedoch oft abgewichen, so blockiert beispielsweise die Windows-Firewall standardmäßig ICMPv6-Echo-Request-Anfragen
Empfangene Echo Request können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen
Echo Reply
- Echo Reply - Type 129
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Identifikation | Sequenznummer | ||||||||||||||||||||||||||||||
… | Daten |
Auf eine Echo-Request-Nachricht muss mit einem Echo Reply geantwortet werden
- Das Paket ist bis auf das Typenfeld dasselbe. Echo-Reply-Nachrichten sollen nur an Unicast-Adressen verschickt werden
Anhand der Identifikation und der Sequenznummer wird der Empfänger die Antworten zu seinen Anfragen zuordnen können
Empfangene Echo-Reply-Nachrichten müssen an die Anwendung weitergereicht werden, die den zugehörigen Echo Request versendet hat
- An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden
Multicast Listener Discovery
- Multicast Listener Discovery - Type 130
MLD ist die Implementation von IGMP (IPv4) in IPv6
- Es wird also genutzt, um Multicast-Abonnements zu verwalten
- Dabei entspricht MLDv1 IGMPv2 und MLDv2 IGMPv3
- Bei den jeweils neueren Versionen lässt sich bestimmen, welche Quell-Adressen für Multicast-Streams akzeptabel sind.), Windows seit 2006 (Vista), FreeBSD seit 2009 (8.0)
Anhang
Siehe auch
- IPv6
- IPv6/Adress-Aufloesung
- IPv6/Adress/Typen
- IPv6/Adresse/Eigenschaften
- IPv6/Adresse/Konfiguration
- IPv6/Adresse/Notation
- IPv6/Adressierung
- IPv6/Adressraum
- IPv6/BIND
- IPv6/DHCP
- IPv6/Default Router List
- IPv6/Dienste
- IPv6/Eigenschaften
- IPv6/Entwicklung
- IPv6/Fehlersuche
- IPv6/Firewall
- IPv6/Fragmentierung
- IPv6/Funktionen
- IPv6/Glossar
- IPv6/Header
- IPv6/Header/Extension
- IPv6/Header/tmp
- IPv6/Host
- IPv6/Host/Interface Identifier
- IPv6/Host/Link Layer Multicast
- IPv6/Host/Linux
- IPv6/Host/Multicast
- IPv6/Host/Neighbor Cache
- IPv6/Host/Neighbor Cache/TMP
- IPv6/Host/Windows
- IPv6/ICMP
- IPv6/ICMPv6/Fuktionen
- IPv6/IPv4-in-IPv6
- IPv6/IPv6-in-IPv4
- IPv6/Implementierungen
- IPv6/Interface/Identifier
- IPv6/Interface/Konfiguration
- IPv6/Konfiguration
- IPv6/Konfiguration normaler IPv6-Routen
- IPv6/Link
- IPv6/Link/Multicast
- IPv6/Link/Namensauflösung
- IPv6/Link/Präfix
- IPv6/Migration
- IPv6/MobileIP
- IPv6/Motivation
- IPv6/Multicast Address
- IPv6/Multicast Scopes
- IPv6/Multihoming
- IPv6/Neighbor/Advertisement
- IPv6/Neighbor/Cache/Linux
- IPv6/Neighbor/Cache/Windows
- IPv6/Neighbor/Solicitation
- IPv6/Neighbor Discovery Protocol
- IPv6/Parallelbetrieb
- IPv6/Prefix List
- IPv6/Priorisierung
- IPv6/Privacy/Android
- IPv6/Privacy/IOS
- IPv6/Privacy/Linux
- IPv6/Privacy/Mac OS X
- IPv6/Privacy/Windows
- IPv6/Privacy Extension
- IPv6/QoS
- IPv6/Router
- IPv6/Router/Advertisement
- IPv6/Router/Advertisement/Daemon
- IPv6/Router/Solicitation
- IPv6/SLAAC
- IPv6/SLAAC/TMP
- IPv6/Sicherheit
- IPv6/Statische Adressen
- IPv6/Subnetting
- IPv6/System-Check
- IPv6/Tunnel
- IPv6/Upper Layer Protokolle
- IPv6/Verschlüsselung und Authentifizierung
- IPv6/Windows
- IPv6/Windows/Allgemein
- IPv6/Windows/DHCP mit IPv6
- IPv6/Windows/Grundkonfiguration
- IPv6/Windows/IPv6-Labor
- IPv6/Windows/IPv6Support
- IPv6/Windows/IPv6 Subnetz
- IPv6/Windows/IPv6 unter Windows
- IPv6/Windows/Netsh-Befehle
- IPv6/Windows/Router Advertisements
- IPv6/Windows/Teredo
- IPv6/WindowsIPv6ImWindowsNetz
- IPv6/proc
- IPv6/tmp
- IPv6/tmp1
- IPv6 Over IPv4
RFC
RFC | Titel |
---|---|
4861 | Neighbor Discovery for IP Version 6 (IPv6) |
4443 | Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification |
3122 | Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification |
7112 | Implications of Oversized IPv6 Header Chains |
8200 | Internet Protocol, Version 6 (IPv6) Specification, löst 2460 ab |
4604 | |
IANA ICMP Parameters | vollständige Liste der ICMPv6-Typen und -Codes |