Das Internet Protokoll Version 6 ist ein von der IETF 1998 standardisiertes Verfahren für die Vermittelung von Datenpaketen, in einem paketvermittelnden Netzwerk, z. B. dem Internet. Die Hauptaufgabe des IPv6 besteht in erster Linie darin, Datenpakete mit Informationen von einem Netzwerk zum anderen zu transportieren (Routing). IPv6 ist der Nachfolger von dem Internet Protokoll Version 4 und ist somit genau wie das IPv4 auf der 3. Schicht des OSI-Schichtenmodells zu finden.
Die Grundidee des Internetprotokolls ist eine direkte Ende-zu-Ende-Verbindung zwischen zwei Geräten, die miteinander kommunizieren möchten. IPv4 bringt aber das Problem mit, dass die Adresse nur 32 Bit groß ist. 32 Bit sind 2^32 = 4.294.967.296 eindeutig identifizierbare Adressen. Zu Beginn des Internets kein Problem. In der heutigen Zeit sind jedoch auch einige Privatanwender im Netz unterwegs und die Adressen schon lange aufgebraucht. Die Erkenntnis dazu kam schon in den 90iger Jahren, deshalb wurde 1995 bereits an der Entwicklung des IPv6 gearbeitet und 1998 im RFC 2460 standardisiert.
Wie bereits erwähnt, ist die Version 6 128 Bit lang und wird in jeweils 8 16 Bit große Blöcke unterteilt. 4 Bit werden durch eine hexadezimale Zahl dargestellt. Die Blöcke werden mit einem Doppelpunkt „:“ voneinander getrennt. Um die Schreibweise zu vereinfachen lässt man führende Nullen weg und ab einer Folge von 8 Nullen, können diese durch zwei Doppelpunkte ersetzt werden.
a0e1:0000:0000:86e0:48d5:0fe8:02cf:c8eb = a0e1::86e0:48d5:fe8:2cf:c8eb
Die ersten 64 Bit bilden das Network Präfix und die zweiten 64 Bit den einzigartigen Interface Identifier.
Der Netzkwerpräfix ist mit dem Netzanteil bei IPv4 vergleichbar und wird in der Regel vom Internetprovider der Region zur Verfügung gestellt. Dabei wird dem Internetprovider selbst überlassen, wie lang der Präfix beim Endkunden ist, jedoch ist ein minimal /64 Netz vorgegeben.
a0e1::86e0:48d5:fe8:2cf:c8eb
Die zweiten 64 Bit der IPv6-Adresse bilden den Interface Identifier. Dieser wird entweder aus der MAC-Adresse der physikalischen Netzwerkkarte gebildet, oder via Private Extensions vom Betriebssystem per Zufall gewählt. Man kann den Intercafe Identifier mit dem Hostanteil bei IPv4 vergleichen.
a0e1::86e0:48d5:fe8:2cf:c8eb
Im privaten Anwenderbereich weißt sich jeder Client im LAN eine Link Local Unicast Adresse zu. Diese beginnt immer mit fe80::/64 und ist nur in einem geschlossenem Netzwerksegment gültig. Mit der Link Local Unicast Adresse wird nun über den Multicast zu allen Routern im LAN eine Neighbor Discovery Anfrage (NDP) gesendet. Der Router teilt dem Client alle nötigen Daten (IPv6-Präfix) mit um eine einzigartige IPv6-Adresse zu erstellen. Mit der erstellten IP-Adresse ist ein Routing nun möglich.
Die 3. Schnittstelle (wlp3s0) ist IPv6 fähig. Der Link Local Unicast (fe80::e520:70cb:3183:fd61/64) und eine eindeutige IP-Adresse wurde erzeugt (2a02:8106:21c:6800:65ee:e066:2f0a:8d60/64).
Dabei wurde der Präfix (2a02:8106:21c:6800 ) von meinem Provider an mich verteilt und der Interface Identifier zufällig durch Privacy Extensions erstellt.
Wie gut zu erkennen ist, ist bei der 2. Schnittstelle (enp0s25) nur der Link Lokal Unicast (fe80::3e4a:4ad8:4964:99a4/64) vorhanden, da das Netzwerk nicht IPv6 fähig ist.
Offsets | Octet | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octet | Bit | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Version | Traffic Class | Flow Label | |||||||||||||||||||||||||||||
4 | 32 | Payload Length | Next Header | Hop Limit | |||||||||||||||||||||||||||||
8 | 64 | Source Address | |||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
16 | 128 | ||||||||||||||||||||||||||||||||
20 | 160 | ||||||||||||||||||||||||||||||||
24 | 192 | Destination Address | |||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 | ||||||||||||||||||||||||||||||||
36 | 288 |
Die folgende Liste beschreibt die Funktionen jedes Header-Feldes.