IPv6/ICMP: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(114 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
''' | '''IPv6/ICMP''' - ICMPv6 ([[Internet Control Message Protocol]] für [[IPv6]]) | ||
== Beschreibung == | == Beschreibung == | ||
{| class="wikitable | {| class="wikitable float" | ||
| | |- | ||
! style="background:#C0C0FF;" colspan="2"| ICMPv6 (Internet Control Message Protocol Version 6) | ! style="background:#C0C0FF;" colspan="2"| ICMPv6 (Internet Control Message Protocol Version 6) | ||
| | |- | ||
| align="left" | '''Familie | | align="left" | '''Familie''' | ||
| align="left" | [[Internetprotokolle]] | | align="left" | [[Internetprotokolle]] | ||
| | |- | ||
| align="left" | '''Einsatzgebiet | | align="left" | '''Einsatzgebiet''' | ||
| align="left" style="width:210px;"| | | align="left" style="width:210px;"| Fehlermeldungen, Diagnose, Autoconfiguration, Routing | ||
| | |- | ||
| align="center" colspan="2" | | | align="center" colspan="2" | | ||
{| border="0" cellspacing="3" | {| border="0" cellspacing="3" | ||
|+ '''Internet-Protokolle im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]''' | |+ '''Internet-Protokolle im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]''' | ||
| | |- | ||
| rowspan="2" align="center" bgcolor="#FFCC99" | '''Internet''' | | rowspan="2" align="center" bgcolor="#FFCC99" | '''Internet''' | ||
| colspan="5" align="center" bgcolor="#9999FF" | '''ICMPv6''' | | colspan="5" align="center" bgcolor="#9999FF" | '''ICMPv6''' | ||
| | |- | ||
| colspan="5" align="center" bgcolor="#EEEEFF" | [[IPv6]] | | colspan="5" align="center" bgcolor="#EEEEFF" | [[IPv6]] | ||
| | |- | ||
| rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang'' | | rowspan="2" align="center" bgcolor="#FFEEBB" | ''Netzzugang'' | ||
| rowspan="2" align="center" bgcolor="#EEEEEE" | [[Ethernet]] | | rowspan="2" align="center" bgcolor="#EEEEEE" | [[Ethernet]] | ||
Zeile 28: | Zeile 28: | ||
| rowspan="2" align="center" bgcolor="#EEEEEE" | … | | rowspan="2" align="center" bgcolor="#EEEEEE" | … | ||
|} | |} | ||
|} | |} | ||
Das '''Internet Control Message Protocol for the Internet Protocol Version 6''' ('''ICMPv6''') ist die mit [[IPv6]] zusammen verwendete Version des [[Internet Control Message Protocol]] | 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 [[Rechnernetz|Netzwerken]] zum Austausch von Fehler- und Informationsmeldungen | * Es dient, wie schon bei [[IPv4]], in [[Rechnernetz|Netzwerken]] zum Austausch von Fehler- und Informationsmeldungen | ||
* Zusätzlich findet es aber noch im [[Neighbor Discovery Protocol]], dem Ersatz des [[Address Resolution Protocol]], Verwendung | * Zusätzlich findet es aber noch im [[Neighbor Discovery Protocol]], dem Ersatz des [[Address Resolution Protocol]], Verwendung | ||
; ICMPv6 zwingend notwendig | |||
Im Gegensatz zum ICMP bei IPv4 ist ICMPv6 zwingend für den Betrieb von IPv6 nötig | 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 | * 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 | 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 | ||
Zeile 46: | Zeile 42: | ||
== Header == | == Header == | ||
{| class="wikitable float small" cellpadding="2" | |||
{| class="wikitable float | |||
|+ ICMPv6 Header | |+ ICMPv6 Header | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 63: | Zeile 53: | ||
| colspan="32" | ICMPv6-Nachricht … | | colspan="32" | 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 === | === Prüfsumme === | ||
{| class="wikitable float | {| class="wikitable small float" cellpadding="2" | ||
|+ Prüfsummen-Schema | |+ Prüfsummen-Schema | ||
|- | |- | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 117: | Zeile 113: | ||
== Nachrichten-Typen == | == Nachrichten-Typen == | ||
{| class="wikitable options big" | |||
{| class="wikitable" | |||
|- | |- | ||
! Gruppe !! TType !! Beschreibung | |||
|- | |- | ||
| | | Fehlernachrichten || 0–127 || mit dem [[Bitwertigkeit|höchstwertigen Bit]] (engl. ''most significant bit'') auf 0, sind Fehlernachrichten | ||
| | |||
| | |||
|- | |- | ||
| | | Informationsnachrichten || 128–255 || mit dem höchstwertigen Bit auf 1, sind Informationsnachrichten | ||
| | |||
| | |||
|} | |} | ||
{| class="wikitable" | == Fehlernachrichten == | ||
{| class="wikitable big options col1center" | |||
! class="hintergrundfarbe6"| Type | ! class="hintergrundfarbe6"| Type | ||
! class="hintergrundfarbe6"| Beschreibung | ! class="hintergrundfarbe6"| Beschreibung | ||
! class="hintergrundfarbe6"| RFC | ! class="hintergrundfarbe6"| RFC | ||
|- | |- | ||
| | |1 || [[#Destination Unreachable|Destination Unreachable]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] | ||
| | |||
| | |||
| | |||
| | |||
|- | |||
|- | |- | ||
| | |2 || [[#Packet Too Big|Packet Too Big]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] | ||
| | |||
|[https://www.rfc-editor.org/rfc/ | |||
|- | |- | ||
| | |3 || [[#Time Exceeded|Time Exceeded]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] | ||
| | |||
| | |||
|- | |- | ||
| | |4 || [[#Parameter Problem|Parameter Problem]] ||[https://www.rfc-editor.org/rfc/4443 RFC 4443] | ||
| | |||
| | |||
| | |||
| | |||
| | |||
|} | |} | ||
=== Destination Unreachable | ==== Destination Unreachable ==== | ||
{| class="wikitable float | {| class="wikitable float small" | ||
|+ Destination-Unreachable-Schema | |+ Destination-Unreachable-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 299: | Zeile 153: | ||
| colspan="32" | Fehlerhaftes Paket | | colspan="32" | Fehlerhaftes Paket | ||
|} | |} | ||
; Destination Unreachable - Type 1 | |||
''Destination-Unreachable''-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte | ''Destination-Unreachable''-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte | ||
* Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine ''Destination Unreachable'' versandt werden | * Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine ''Destination Unreachable'' versandt werden | ||
Zeile 310: | Zeile 164: | ||
Wenn ein ''Destination Unreachable'' empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden | Wenn ein ''Destination Unreachable'' empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden | ||
=== Packet Too Big | ==== Packet Too Big ==== | ||
{| class="wikitable float small" | |||
{| class="wikitable float | |||
|+ Packet-Too-Big-Schema | |+ Packet-Too-Big-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 328: | Zeile 180: | ||
|} | |} | ||
; Packet Too Big - Type 2 | |||
Eine ''Packet-Too-Big''-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale [[Maximum Transmission Unit|MTU]] des Links, über den es versendet werden soll. ''Packet-Too-Big''-Nachrichten werden vom [https://de.wikipedia.org/wiki/Path_MTU_Discovery Path MTU Discovery] gebraucht, um die pfadabhängige MTU zu ermitteln | Eine ''Packet-Too-Big''-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale [[Maximum Transmission Unit|MTU]] des Links, über den es versendet werden soll. ''Packet-Too-Big''-Nachrichten werden vom [https://de.wikipedia.org/wiki/Path_MTU_Discovery Path MTU Discovery] gebraucht, um die pfadabhängige MTU zu ermitteln | ||
Zeile 334: | Zeile 187: | ||
Wenn ein ''Packet Too Big'' empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden | Wenn ein ''Packet Too Big'' empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden | ||
=== Time Exceeded | ==== Time Exceeded ==== | ||
{| class="wikitable float small" | |||
{| class="wikitable float | |||
|+ Time-Exceeded-Schema | |+ Time-Exceeded-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"|0 | ! class="hintergrundfarbe6" colspan="1"|0 | ||
Zeile 352: | Zeile 203: | ||
|} | |} | ||
; Time Exceeded - Type 3 | |||
Wenn ein Router ein Paket mit einem [[Hop (Netzwerktechnologie)|Hop]]-Limit von 0 erhält, oder den [[Time to Live|Time-to-Live]]-Wert auf 0 reduziert, muss er das Paket verwerfen und ein ''Time Exceeded'' mit Code 0 an den Absender versenden | Wenn ein Router ein Paket mit einem [[Hop (Netzwerktechnologie)|Hop]]-Limit von 0 erhält, oder den [[Time to Live|Time-to-Live]]-Wert auf 0 reduziert, muss er das Paket verwerfen und ein ''Time Exceeded'' mit Code 0 an den Absender versenden | ||
* Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit | * Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit | ||
Zeile 357: | Zeile 209: | ||
Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein ''Time Exceeded'' mit Code 1 versendet werden | Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein ''Time Exceeded'' mit Code 1 versendet werden | ||
=== Parameter Problem | ==== Parameter Problem ==== | ||
{| class="wikitable float small" | |||
{| class="wikitable float | |||
|+ Parameter-Problem-Schema | |+ Parameter-Problem-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 375: | Zeile 225: | ||
|} | |} | ||
; Parameter Problem - Type 4 | |||
Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine ''Parameter-Problem''-Nachricht verschicken | Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine ''Parameter-Problem''-Nachricht verschicken | ||
Mit dem Code wird dabei die Art des Problems genauer beschrieben | Mit dem Code wird dabei die Art des Problems genauer beschrieben | ||
{| class="wikitable" | {| class="wikitable big options col1center" | ||
| 0 | | 0 | ||
| Fehlerhaftes Header-Feld gefunden | | Fehlerhaftes Header-Feld gefunden | ||
Zeile 395: | Zeile 246: | ||
Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist | Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist | ||
=== | == Informationsnachrichten == | ||
{| class="wikitable big options" | |||
! class="hintergrundfarbe6"| Type | |||
! class="hintergrundfarbe6"| Beschreibung | |||
! class="hintergrundfarbe6"| RFC | |||
|- | |||
|128 || [[#Echo Request|Echo Request]] || [https://www.rfc-editor.org/rfc/4443 RFC 4443] | |||
|- | |||
|129 || [[#|Echo Reply|Echo Reply]] ||[https://www.rfc-editor.org/rfc/4443|RFC 4443] | |||
|- | |||
|130 || [[#Multicast Listener Query|Multicast Listener Query]] ||RFC 2710 und RFC 3810 | |||
|- | |||
|131 || Version 1 Multicast Listener Report |RFC 2710 | |||
|- | |||
|132 || Multicast Listener Done ||RFC 2710 | |||
|- | |||
|133 || Router Solicitation || RFC 4861 | |||
|- | |||
|134 || Router Advertisement || RFC 4861 | |||
|- | |||
|135 || |Neighbor Solicitation ||RFC 4861 | |||
|- | |||
|136 || Neighbor Advertisement ||RFC 4861 | |||
|- | |||
|137 || Redirect || RFC 4861 | |||
|- | |||
|138 | |||
|Router Renumbering | |||
|RFC 2894 | |||
|- | |||
|139 | |||
|ICMP Node Information Query | |||
|RFC 4620 | |||
|- | |||
|140 | |||
|ICMP Node Information Response | |||
|RFC 4620 | |||
|- | |||
|141 | |||
|Inverse Neighbor Discovery Solicitation Message | |||
|RFC 3122 | |||
|- | |||
|142 | |||
|Inverse Neighbor Discovery Advertisement Message | |||
|RFC 3122 | |||
|- | |||
|143 | |||
|Version 2 Multicast Listener Report | |||
|RFC 3810 | |||
|- | |||
|144 | |||
|Home Agent Address Discovery Request Message | |||
|RFC 3775 | |||
|- | |||
|145 | |||
|Home Agent Address Discovery Reply Message | |||
|RFC 3775 | |||
|- | |||
|146 | |||
|Mobile Prefix Solicitation | |||
|RFC 3775 | |||
|- | |||
|147 | |||
|Mobile Prefix Advertisement | |||
|RFC 3775 | |||
|- | |||
|148 | |||
|Certification Path Solicitation Message | |||
|RFC 3971 | |||
|- | |||
|149 | |||
|Certification Path Advertisement Message | |||
|RFC 3971 | |||
|- | |||
|150 | |||
|ICMP messages utilized by experimental mobility protocols such as Seamoby | |||
|RFC 4065 | |||
|- | |||
|151 | |||
|Multicast Router Advertisement | |||
|RFC 4286 | |||
|- | |||
|152 | |||
|Multicast Router Solicitation | |||
|RFC 4286 | |||
|- | |||
|153 | |||
|Multicast Router Termination | |||
|RFC 4286 | |||
|- | |||
|155 | |||
|RPL Control Message | |||
|[https://www.rfc-editor.org/rfc/rfc6550.html RFC 6550] | |||
|- | |||
|200 | |||
|Private experimentation | |||
| | |||
|- | |||
|201 | |||
|Private experimentation | |||
| | |||
|- | |||
|255 | |||
|Reserved for expansion of ICMPv6 informational messages | |||
| | |||
|} | |||
{| class="wikitable float | ==== Echo Request ==== | ||
{| class="wikitable float small" | |||
|+ Echo-Request-Schema | |+ Echo-Request-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 414: | Zeile 370: | ||
|} | |} | ||
; Echo Request - Type 128 | |||
Mit einem ''Echo Request'' wird um eine Antwort gebeten | Mit einem ''Echo Request'' wird um eine Antwort gebeten | ||
* Ein ''Echo Request'' ist nichts anderes als ein simpler [[Ping (Datenübertragung)|Ping]] | * Ein ''Echo Request'' ist nichts anderes als ein simpler [[Ping (Datenübertragung)|Ping]] | ||
Zeile 425: | Zeile 382: | ||
Empfangene ''Echo Request'' können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen | Empfangene ''Echo Request'' können an Anwendungen weitergeleitet werden, die auf ICMP-Nachrichten horchen | ||
=== Echo Reply | ==== Echo Reply ==== | ||
{| class="wikitable float small" | |||
{| class="wikitable float | |||
|+ Echo-Reply-Schema | |+ Echo-Reply-Schema | ||
|- align="center" | |- align="center" | ||
! class="hintergrundfarbe6" colspan="1"| 0 | ! class="hintergrundfarbe6" colspan="1"| 0 | ||
Zeile 444: | Zeile 399: | ||
|} | |} | ||
; Echo Reply - Type 129 | |||
Auf eine ''Echo-Request''-Nachricht muss mit einem ''Echo Reply'' geantwortet werden | 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 | * Das Paket ist bis auf das Typenfeld dasselbe. ''Echo-Reply''-Nachrichten sollen nur an Unicast-Adressen verschickt werden | ||
Zeile 452: | Zeile 408: | ||
* An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden | * An die restlichen auf ICMP horchende Anwendungen kann es weitergereicht werden | ||
=== Multicast Listener Discovery | ==== Multicast Listener Discovery ==== | ||
; Multicast Listener Discovery - Type 130 | |||
MLD ist die Implementation von [[Internet Group Management Protocol|IGMP]] (IPv4) in IPv6 | MLD ist die Implementation von [[Internet Group Management Protocol|IGMP]] (IPv4) in IPv6 | ||
* Es wird also genutzt, um [[Multicast]]-Abonnements zu verwalten | * Es wird also genutzt, um [[Multicast]]-Abonnements zu verwalten | ||
Zeile 462: | Zeile 419: | ||
== Anhang == | == Anhang == | ||
=== Siehe auch === | === Siehe auch === | ||
{{Special:PrefixIndex/IPv6}} | {{Special:PrefixIndex/IPv6/ICMP}} | ||
==== RFC ==== | ==== RFC ==== | ||
{| class="wikitable sortable options" | |||
|- | |||
! RFC !! Titel | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc3122 3122] || Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc4443 4443] || Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc4604 4604] || | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc4861 4861] || Neighbor Discovery for IP Version 6 (IPv6) | |||
|- | |||
|- [https://www.rfc-editor.org/rfc/rfc4890 4890] || Recommendations for Filtering ICMPv6 Messages in Firewalls | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc7112 7112] || Implications of Oversized IPv6 Header Chains | |||
|- | |||
| [https://www.rfc-editor.org/rfc/rfc8200 8200] || Internet Protocol, Version 6 (IPv6) Specification, löst [https://www.rfc-editor.org/rfc/rfc2460 2460] ab | |||
|} | |||
==== Links ==== | ==== Links ==== | ||
===== Weblinks ===== | ===== Weblinks ===== | ||
# https://de.wikipedia.org/wiki/ICMPv6 | # https://de.wikipedia.org/wiki/ICMPv6 | ||
# https | # [https://www.iana.org/assignments/icmpv6-parameters IANA ICMP Parameters] - Vollständige Liste der ICMPv6-Typen und -Codes | ||
ICMPv6-Typen | |||
[[Kategorie:IPv6/ICMP]] | [[Kategorie:IPv6/ICMP]] | ||
</noinclude> | </noinclude> |
Aktuelle Version vom 9. November 2024, 11:29 Uhr
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 | |||||||||||||||||
|
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
- ICMPv6 zwingend notwendig
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
Gruppe | TType | Beschreibung |
---|---|---|
Fehlernachrichten | 0–127 | mit dem höchstwertigen Bit (engl. most significant bit) auf 0, sind Fehlernachrichten |
Informationsnachrichten | 128–255 | mit dem höchstwertigen Bit auf 1, sind Informationsnachrichten |
Fehlernachrichten
Type | Beschreibung | RFC |
---|---|---|
1 | Destination Unreachable | RFC 4443 |
2 | Packet Too Big | RFC 4443 |
3 | Time Exceeded | RFC 4443 |
4 | Parameter Problem | RFC 4443 |
Destination Unreachable
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Unbenutzt | |||||||||||||||||||||||||||||||
… | Fehlerhaftes Paket |
- Destination Unreachable - Type 1
Destination-Unreachable-Nachrichten sollten vom Router erzeugt werden, wenn ein Paket nicht ausgeliefert werden konnte
- Wenn das Paket wegen Überlastung fallen gelassen wurde, muss keine Destination Unreachable versandt werden
Wenn das Paket wegen fehlender Routen nicht ausgeliefert wurde, wird der Code 0 gesetzt
- Ist das Ausliefern administrativ verboten (Firewall), wird der Code 1 gesetzt
- Wenn der Router die IPv6-Adresse nicht auflösen kann, oder ein Problem mit dem Link hat, wird der Code 3 gesetzt
- Wenn ein Zielhost für ein UDP-Paket keinen Listener hat, sollte er ein Destination Unreachable mit Code 4 versenden
Wenn ein Destination Unreachable empfangen wird, muss es der darüberliegenden Schicht weitergereicht werden
Packet Too Big
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | MTU | |||||||||||||||||||||||||||||||
… | Fehlerhaftes Paket |
- Packet Too Big - Type 2
Eine Packet-Too-Big-Nachricht muss vom Router erzeugt werden, wenn ein Paket nicht weitergeleitet werden kann, weil es größer ist als die maximale MTU des Links, über den es versendet werden soll. Packet-Too-Big-Nachrichten werden vom Path MTU Discovery gebraucht, um die pfadabhängige MTU zu ermitteln
Der Code sollte vom Sender auf 0 gesetzt und vom Empfänger ignoriert werden
Wenn ein Packet Too Big empfangen wird, muss es dem darüberliegenden Layer weitergereicht werden
Time Exceeded
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Unbenutzt | |||||||||||||||||||||||||||||||
… | Fehlerhaftes Paket |
- Time Exceeded - Type 3
Wenn ein Router ein Paket mit einem Hop-Limit von 0 erhält, oder den Time-to-Live-Wert auf 0 reduziert, muss er das Paket verwerfen und ein Time Exceeded mit Code 0 an den Absender versenden
- Das zeigt entweder eine Endlosschleife im Routing an oder ein zu kleines anfängliches Hop-Limit
Wenn von einer fragmentierten Nachricht nicht alle Fragmente innerhalb einer gewissen Zeit ankommen, wird das Paket verworfen und es muss ein Time Exceeded mit Code 1 versendet werden
Parameter Problem
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Pointer | |||||||||||||||||||||||||||||||
… | Fehlerhaftes Paket |
- Parameter Problem - Type 4
Wenn ein Host beim Verarbeiten eines IPv6-Pakets ein Problem in einem Feld feststellt und nicht mit der Verarbeitung weiterfahren kann, muss er das Paket verwerfen und eine Parameter-Problem-Nachricht verschicken
Mit dem Code wird dabei die Art des Problems genauer beschrieben
0 | Fehlerhaftes Header-Feld gefunden |
1 | Unbekannter Next-Header-Typ gefunden |
2 | Unbekannte IPv6-Option |
3 | Unvollständiger IPv6 Header Chain im ersten IPv6 Fragment |
Der Pointer zeigt dabei auf die Stelle im Paket, an der das Problem aufgetreten ist
Informationsnachrichten
Type | Beschreibung | RFC |
---|---|---|
128 | Echo Request | RFC 4443 |
129 | Echo Reply|Echo Reply | RFC 4443] |
130 | Multicast Listener Query | RFC 2710 und RFC 3810 |
131 | RFC 2710 | |
132 | Multicast Listener Done | RFC 2710 |
133 | Router Solicitation | RFC 4861 |
134 | Router Advertisement | RFC 4861 |
135 | Neighbor Solicitation | RFC 4861 |
136 | Neighbor Advertisement | RFC 4861 |
137 | Redirect | RFC 4861 |
138 | Router Renumbering | RFC 2894 |
139 | ICMP Node Information Query | RFC 4620 |
140 | ICMP Node Information Response | RFC 4620 |
141 | Inverse Neighbor Discovery Solicitation Message | RFC 3122 |
142 | Inverse Neighbor Discovery Advertisement Message | RFC 3122 |
143 | Version 2 Multicast Listener Report | RFC 3810 |
144 | Home Agent Address Discovery Request Message | RFC 3775 |
145 | Home Agent Address Discovery Reply Message | RFC 3775 |
146 | Mobile Prefix Solicitation | RFC 3775 |
147 | Mobile Prefix Advertisement | RFC 3775 |
148 | Certification Path Solicitation Message | RFC 3971 |
149 | Certification Path Advertisement Message | RFC 3971 |
150 | ICMP messages utilized by experimental mobility protocols such as Seamoby | RFC 4065 |
151 | Multicast Router Advertisement | RFC 4286 |
152 | Multicast Router Solicitation | RFC 4286 |
153 | Multicast Router Termination | RFC 4286 |
155 | RPL Control Message | RFC 6550 |
200 | Private experimentation | |
201 | Private experimentation | |
255 | Reserved for expansion of ICMPv6 informational messages |
Echo Request
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Identifikation | Sequenznummer | ||||||||||||||||||||||||||||||
… | Daten |
- Echo Request - Type 128
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
0 | Type | Code | Prüfsumme | |||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 | Identifikation | Sequenznummer | ||||||||||||||||||||||||||||||
… | Daten |
- Echo Reply - Type 129
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
RFC
RFC | Titel |
---|---|
3122 | Extensions to IPv6 Neighbor Discovery for Inverse Discovery Specification |
4443 | Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification |
4604 | |
4861 | Neighbor Discovery for IP Version 6 (IPv6) |
7112 | Implications of Oversized IPv6 Header Chains |
8200 | Internet Protocol, Version 6 (IPv6) Specification, löst 2460 ab |
Links
Weblinks
- https://de.wikipedia.org/wiki/ICMPv6
- IANA ICMP Parameters - Vollständige Liste der ICMPv6-Typen und -Codes