Die Grundlagen von IPv4 und IPv6

Last change on 2023-04-17 • Created on 2022-09-16 • ID: RO-A9B97

Einleitung

Der Artikel befasst sich mit den Unterschieden zwischen IPv6 und IPv4.

IPv4 ist ein Protokoll zum Austausch von Informationen zwischen Geräten innerhalb eines Netzwerks. Über die Zeit entwickelte sich dadurch das größte Netzwerk der Welt - das Internet. Das Internet ist rasant gewachsen und der exponentielle Wachstum an benötigten IPv4-Adressen war nicht abzusehen. Als Folge wurden im Jahr 1990 Diskussionen über ein Ersatzprotokoll geführt. Dieses Protokoll heißt IPv6. 1998 wurde IPv6 als „Draft Standard“ von der IEFT (Internet Engineering Task Force) anerkannt. 2017 wurde IPv6 ein „Internet Standard“. Seit der Einführung von IPv6, wächst der Druck Netzwerke auf IPv6 umzustellen und IPv4 langsam abzuschaffen.

In den letzten Jahren war ein großer Schub zu erkennen, um IPv6 im Internet zu etablieren. Allein in den letzten 5 Jahren hat sich die Übernahme von IPv6 von 5 % auf 36 % gesteigert. Aber warum würde jemand IPv6 verwenden wollen? Gibt es zusätzliche Vor- und Nachteile zu IPv6? Welche Unterschiede gibt es zwischen IPv6 und IPv4? Wie Funktioniert IPv6?

Im folgenden Artikel werden die o. g. Fragen beantwortet. Der Artikel setzt voraus, dass Leser mit den Grundlagen von IPv4 vertraut sind.

Warum braucht man IPv6?

Wenn man eine IPv6-Adresse neben einer IPv4-Adresse betrachtet, würde man schnell vermuten, dass die beiden Adressen nicht miteinander verwandt sind. Sie verwenden unterschiedliche Notationen; das Basissystem ist aber das gleiche. Der einzige Unterschied sind die Zahlensysteme, die verwendet werden, um die Adressen darzustellen. IPv4-Adressen bestehen aus vier Gruppen von drei Dezimalziffern, welche durch Punkte voneinander getrennt werden. IPv6-Adressen bestehen aus acht Gruppen von vier Hexadezimalziffern, welche durch Doppelpunkte voneinander getrennt werden.

Hexadezimal IPv6: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
Dezimal IPv4: 192.0.2.223

Da IPv6-Adressen sehr lang sind, ist es schwer sich diese zu merken. Die Entwickler von IPv6 haben dieses Problem ebenfalls erkannt. Sie überlegten sich daher ein paar Kompressionsoptimierungen für IPv6, wodurch die Adressen verkürzt werden können. Genaueres dazu erfahren Sie später im Artikel. Um das Grundprinzip des Aufbaus einer IPv6-Adresse besser verstehen zu können, hilft es die IPv6-Adresse in binär umzuwandeln. Die oben genannte IPv6-Adresse sieht in binär beispielsweise so aus:

0010000000000001:0000110110111000:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111:1111111111111111

Eine IPv6-Adresse sieht im Binärformat ähnlich aus wie eine IPv4-Adresse, nur viel länger. Während eine IPv4-Adresse aus 32 Bits besteht, ist eine IPv6-Adresse mit 128 Bits viermal so lang. Das bedeutet, dass wir 2128 IPv6-Adressen bilden können. Das sind 340.282.366.920.938.463.463.374.607.431.768.211.456 Adressen! Damit ist es fast unmöglich, dass uns die Adressen mal ausgehen werden, so wie es bei IPv4 der Fall ist.

Mit IPv6 stehen uns nicht nur mehr Adressen zur Verfügung, sondern es ist auch für die Zukunft und die Entwicklung vom Internet sehr wichtig.

Vorteile von IPv6

Mit der Entwicklung von IPv6 gab es den Wunsch die Sicherheit des Protokolls zu erhöhen. IP-Security (IPsec) bietet einen sicheren Weg sensible Informationen über das Internet zu schicken. Den Rahmen der IPsec bilden öffentliche Standards, die von der IETF einwickelt wurden. IPsec stellt mehrere Netzwerk-Sicherheitsdienste zum Sichern von Daten zur Verfügung.

  1. Verschlüsselung ist ein Feature, das dem Sender erlaubt IP-Pakete vertraulich über das Netzwerk zu schicken. Dadurch kann nur das Zielgerät die IP-Pakete lesen.
  2. Der Empfänger kann die Datenintegrität validieren und somit die Integrität von IPsec-Paketen überprüfen. Dadurch kann festgestellt werden, ob die Daten auf dem Weg zum Zielort auf irgendeine Weise verändert wurden.
  3. Authentifizierung der Datenherkunft ermöglicht es dem Empfänger das Ursprungsgerät zu authentifizieren.

Diese Optimierungen ermöglichen das Senden von Informationen über ein offenes Netzwerk, ohne Veränderung, Beobachtung oder Spoofing.

IPv6 bietet noch weitere Vorteile:

  • NAT ist nicht länger notwendig, kann aber noch verwendet werden
  • Auto-Konfiguration
  • Keine Kollisionen zwischen privaten Adressen
  • Vereinfachung vom IPv6-Paket-Header
  • Bessere Multicast-Routing

Diese Vorteile werden in den folgenden Punkten im Detail erklärt.

Nachteile von IPv6

Trotz der vielen Vorteile von IPv6, gibt es auch einige Nachteile und Probleme, die IPv6 für den Endbenutzer mit sich bringen kann.

Der offensichtlichste Nachteil ist die Länge der IPv6-Adressen. Wie bereits erwähnt, besteht eine IPv6-Adresse aus acht Gruppen von vier Hexadezimalziffern. Es kann mühsam werden, sich eine so lange Adresse zu merken oder sie während der Verwaltungsarbeit in ein Terminal einzugeben.

IPv6-Routing muss auf vielen Systemen erst aktiviert werden, bevor es genutzt werden kann. Dies führt zu mehr Arbeit für die Administratoren und damit zu längeren Einrichtungszeiten. Zu diesem Nachteil kommt hinzu, dass viele ältere Endgeräte nicht für die Nutzung von IPv6 konfiguriert sind.

Da weltweit noch immer am meisten mit IPv4 gearbeitet wird, kann der Betrieb von reinen IPv6-Systemen dazu führen, dass weniger Internetverkehr auf das System gelangt, oder dass das System nicht mit IPv4-Systemen kommunizieren kann. Somit sind Benutzer, die nur IPv4 verwenden von den Diensten, die auf IPv6-Systemen laufen, ausgesperrt.

Wie ist eine IPv6-Adresse strukturiert?

IPv6 erfüllt im Wesentlichen die gleiche Funktion wie IPv4. IPv6-Adressen sind ähnlich aufgebaut wie IPv4, d. h. sie bestehen aus einem Netzwerkpräfix und einer Schnittstellen-/Host-Kennung. Die Präfixe von IPv6 sind die gleichen wie die Subnetzmasken, die bei IPv4-Adressen verwendet werden. Die CIDR-Notation (Classless Inter-Domain Routing) wird bei IPv6 zur Darstellung der Maske verwendet. Die besteht aus einer ganzen Zahl zwischen 1 und 128.

     Netzwerkpräfix              Host-Kennung 
XXXX : XXXX : XXXX : XXXX : XXXX : XXXX : XXXX : XXXX 

In 2001:db8:85a3:8d3:0000:0000:0000:001a/64 ist 2001:db8:85a3:8d3::/64 das Netzwerk-Präfix, und die möglichen IPv6-Adressen in diesem Bereich sind 2001:db8:85a3:8d3:0000:0000:0000:0001/64 bis 2001:db8:85a3:8d3:ffff:ffff:ffff:ffff/64.

( XXXX : XXXX : XXXX ) : XXXX : XXXX : XXXX : XXXX : XXXX 

Die ersten 3 Felder des Netzwerkpräfixes einer IPv6-Adresse (in Klammern markiert) enthalten das Site-Präfix. Dieses Präfix beschreibt die öffentliche Topologie, die einem Standort normalerweise von einem ISP (Internet Service Provider) oder RIR (Regional Internet Registry) zugewiesen wird.

XXXX : XXXX : XXXX : ( XXXX ) : XXXX : XXXX : XXXX : XXXX 

Das vierte Feld (in Klammern markiert) ist das Subnetzpräfix, das die interne Topologie des Netzes für einen Router definiert.

Verkürzung von IPv6-Adressen

Wie zu Beginn des Artikels bereits erwähnt, können IPv6-Adressen verkürzt werden. Es gibt zwei Regeln, die man bei der Verkürzung anwenden kann. Die erste Regel lautet, dass führende Nullen von beliebigen Gruppen (Hextets) aus der Adresse entfernt werden können.
Beispiel:

1001:0005:ffc0:0000:0000:5893:0032:0001 

Diese Adresse kann umgewandelt werden in:

1001:5:ffc0:0:0:5893:32:1 

Nachgestellte Nullen dürfen hingegen nicht gelöscht werden, da der Router immer davon ausgeht, dass die Null von vorne entfernt wurde. Wenn man also beispielsweise aus dem folgenden Hextet die Null entfernen würde,

ffc0 

würde der Router die Null nicht wieder an letzter Stelle einfügen, sondern an erster Stelle.

0ffc 

Die zweite Regel lautet, dass auch durchgehende Gruppen von Nullen gelöscht werden können. Aus dem oben stehenden Beispiel können wir zwei Gruppen von Nullen löschen und mit einem :: ersetzen.

1001:5:ffc0::5893:32:1 

Jeder Router, der diese Adresse lesen muss, wird automatisch die fehlenden Nullen wieder hinzufügen. Die zweite Regel darf man aber nur einmal in einer Adresse anwenden. Somit sieht die IPv6-Adresse schon viel lesbarer aus.

Auto-Configuration

IPv6-Geräte können ihre eigenen Adressen selbst generieren. Das erleichtert die Administration von Netzwerken und spart viel Zeit. Mehrere Schritte müssen dabei durchgeführt werden und am Ende des Prozesses wird schließlich eine link-local-Adresse generiert. Eine link-local-Adresse ist eine IPv6-Adresse, die es Geräten ermöglicht im selben lokalen Netz miteinander zu kommunizieren. Die Adresse kann mit zwei unterschiedlichen Methoden erzeugt werden – Stateless-Methode oder Stateful-Methode.

Stateless-Address-Auto-Configuration (SLAAC) erfordert keine manuelle Konfiguration von den Hosts und keine zusätzliche Konfiguration von den Servern. Der Host kann seine eigene Adresse mit dieser Methode automatisch selbst generieren. Die Adressen werden mit lokalen und nicht-lokalen Informationen generiert, die von Routern übermittelt werden. Zusätzlich übermitteln die Router auch das Präfix eines Subnetzes, bzw. die Präfixe von Subnetzen einer bestimmten Verbindung. Hosts generieren anschließend einen Interface-Identifier, mit welchem ein Interface eines Subnets eindeutig identifiziert werden kann. Durch das Verbinden des Präfixes mit dem Interface-Identifier, entsteht eine einzigartige Adresse. Ein Host kann nur dann eine link-local-Adresse generieren, wenn im Netz keine Router zur Verfügung stehen.

Mit Stateful-Auto-Configuration erhalten Hosts die Interface-Adressen oder Konfigurationsinformationen und Parameter von einem Server. Diese Methode ist vergleichbar mit dem DHCP Prozess von IPv4-Adressen. Server, die diese Informationen an die Hosts übermitteln, heißen auch DHCPv6 Server. Diese Server besitzen eine Datenbank, in der überprüft wird, welche Adressen welchen Hosts zugewiesen wurden. Das Stateful-Auto-Configuration-Protokoll ermöglicht es Hosts, Adressen und andere Konfigurationsinformation vom Server zu beziehen. Stateless- und Stateful-Auto-Konfiguration werden öfters auch gemeinsam genutzt. So könnte ein Host beispielsweise die Stateless-Address-Auto-Configuration verwenden, um seine eigenen Adressen zu konfigurieren und die Stateful-Auto-Configuration, um andere Informationen zu erhalten.

IPv6-Adresstypen

Es gibt mehrere unterschiedliche Arten von IPv6-Adressen. Dieser Teil des Artikels erklärt alle Arten, die es von IPv6-Adressen gibt.

Adresstyp Präfix Verwendet für
Global unicast 2000::/3 Öffentlich routbar
Unique local fc00::/7 Routbar im LAN
Link local fe80::/10 Nicht routbar
Multicast ff00::/8 Adressen für Gruppen
Anycast 2000::/3 Geteilte Adressen

Eine global unicast-Adresse ist eine öffentlich routbare IP-Adresse. Diese Adressen können sehr leicht identifiziert werden, da sie das Präfix 2000::/3 besitzen. Das heißt, dass eine global unicast-Adresse anhand der ersten 3 Bits identifiziert wird.

Eine unique local-Adresse ist so ähnlich wie eine private IPv4-Adresse und kann nicht global geroutet werden. Diese Adressen haben das Präfix fc00::/7. Eine unique local-Adresse beginnt immer mit einem “f”, gefolgt von einem “c” oder einem “d”.

link lokal-Adressen sind automatisch generierte IP-Adressen. Diese Adressen können nicht geroutet werden. Wie zuvor erwähnt, sind diese Adressen nur dafür gedacht, dass Geräte im gleichen lokalen Netz miteinander kommunizieren können. Sie besitzen das Präfix fe80::/10. link local-Adressen verwenden die ersten 10 Bits und beginnen mit “fe”.

Zuletzt gibt es noch anycast-Adressen. Was diese Adressen besonders interessant macht ist, dass diese mehreren Geräten gleichzeitig zugewiesen werden können. Die Daten werden dann an das Gerät geschickt, welches am nächsten ist. Es gibt keine spezifische IP-Range für anycast-Adressen, sie verwenden aber die gleiche IP-Range von Adressen wie global unicast-Adressen.

Die Vereinfachung vom IP-Header

Der IP-Header wurde bei IPv6 vereinfacht und manche Felder wurden beim neueren Protokoll weggelassen. Dadurch werden Bandbreiten-Kosten gesenkt, obwohl die Adresse viermal so lang ist.

IPv6 header
Version Traffic class Flow label
Payload length Next header Hop limit
Source address
Destination address
IPv4 header
Version IHL Type of service Total length
Identification Flags
Fragment offset
TTL Protocol Header checksum
Source address
Destination address
Options Padding

Wie man sehen kann, hat die Vereinfachung dazu geführt, dass manche IPv4-Header-Felder weggefallen sind. Im nächsten Abschnitt wird auf diese fehlenden Felder eingegangen und analysiert, wie IPv6 mit dem Übermitteln dieser Informationen umgeht. Identische Felder wurden mit einem Gleichheitszeichen (=) markiert.

IPv4-Header
IPv6-Header
Version 4 bits = Version 4 bits
IHL (Internet Header Length) 4 bits Existiert nicht in IPv6 -
Type of service 8 bits = Traffic class 8 bits
Existiert nicht in IPv4 - Flow label 20 bits
Total length 16 bits = Payload length 16 bits
Identification 16 bits Existiert nicht in IPv6 -
Flags 3 bits Existiert nicht in IPv6 -
Fragment offset 13 bits Existiert nicht in IPv6 -
TTL (Time To Live) 8 bits = Hop limit 8 bits
Protocol 8 bits = Next header 8 bits
Header checksum 16 bits Existiert nicht in IPv6 -
Source address 32 bits = Source address 128 bits
Destination address 32 bits = Destination address 128 bits
Options 0-320 bits = Extension headers 0-320 bits
Padding Variable length Existiert nicht in IPv6 -

Das “Traffic class” Feld ist für die Klasse oder Priorität des Pakets zuständig und dient dem gleichen Zweck wie das IPv4 “Type of service” Feld.

Das “Flow label” Feld ist das einzige neue Feld bei IPv6. Es zeigt den Zwischengeräten an, dass ein Paket einer bestimmten Reihe an Paketen zwischen Quelle und Ziel angehört. Mit diesem Feld wird der verschiedene Traffic unterschieden, der an IPv6-Router geht.

Das “Payload length” Feld gibt in Bytes die gesamte Länge der Daten eines Pakets an. Bei IPv4 heißt das entsprechende Feld “Total length”.

Das “Time to live” Feld wurde bei IPv6 in “Hop limit” umbenannt, da dieser Name die Funktion des Feldes besser beschreibt.

Das “Protocol” Feld wurde bei IPv6 in das “Next header” Feld umbenannt. Es gibt an, welches Protokoll verwendet wird (z. B. TCP, UDP oder ICMPv6). Im Vergleich zum IPv4 “Protocol” Feld, bietet das Feld von IPv6 ein paar zusätzliche Optionen, wie beispielsweise Generic Routing Encapsulation (GRE), Encapsulating Security Payload (ESP) und Open Shortest Path First (OSPF).

Kein NAT

NAT (Network Address Translation) ist ein Protokoll, welches vor allem dafür verwendet wird, lokalen Hosts Internetzugriff zu ermöglichen, indem eine einzelne öffentliche IP-Adresse mehreren lokalen/privaten IP-Adressen zugewiesen wird und andersherum. Das Ziel der Einführung von NAT war es, die unvermeidliche Erschöpfung von IPv4-Adressen ein wenig hinauszuzögern. Mit IPv6 ist das nicht mehr notwendig, da bei diesem Protokoll wesentlich mehr und vor allem auch ausreichend Adressen verfügbar sind, um jedem Gerät problemlos eine eigene einzigartige öffentliche IPv6-Adresse zuweisen zu können. Für IPv6 wird NAT zwar nicht mehr zwingend benötigt, NAT kann aber trotzdem auch für IPv6-Netzwerke verwendet werden. Es wird hauptsächlich dafür genutzt IPv4-Adressen in IPv6-Adressen umzuwandeln.

Schlussfolgerung

Bisher verwenden die meisten Geräte noch IPv4, um auf das Internet zuzugreifen. Bis IPv6-Adressen einmal mehr genutzt werden als IPv4-Adressen, wird es wohl noch einige Jahre dauern. In moderneren Ländern wie Deutschland, den USA, Saudi-Arabien und Japan, ist die Einführung des neueren Protokolls bereits weiter fortgeschritten. Auch in Ländern mit hohen Bevölkerungszahlen und einem stetig wachsenden IT-Sektor, wie Indien und Basilien, wird IPv6 bereits vermehrt genutzt. In nächster Zukunft werden wir aber voraussichtlich erstmal noch in einer Welt leben, in der sowohl IPv4 als auch IPv6 verwendet werden. Erst wenn IPv6 den Marktanteil von IPv4 überholt hat, wird es möglich sein, mit Systemen zu arbeiten, die ausschließlich IPv6 unterstützen.

Quellen

Table of Contents