Was ist das Internet Protocol?
Um jemanden Daten über digitale Netzwerke zu senden, brauchen Sie ebenso wie beim Briefversand die richtige Adresse – in diesem Fall allerdings eine IP-Adresse. So werden die Datenpakete mit einer IP-Adresse versehen – genau so, wie man Briefumschläge mit einer Postanschrift auszeichnet, damit der Brief den Empfänger erreicht. Anders als Postadressen sind ihre digitalen Pendants allerdings nicht an einen bestimmten Ort gebunden, sondern werden dem Netzwerkgerät beim Verbindungsaufbau automatisch oder manuell zugewiesen. Bei diesem Prozess spielt das sogenannte Internet Protocol (im Deutschen oftmals auch als IP-Protokoll betitelt) eine wichtige Rolle.
- Inklusive Wildcard-SSL-Zertifikat
- Inklusive Domain Lock
- Inklusive 2 GB E-Mail-Postfach
Das Internet Protocol, kurz IP, ist das primäre Protokoll der Internetprotokollfamilie und damit von elementarer Bedeutung für den Nachrichtenaustausch in Computernetzwerken. Das verbindungslose Protokoll, das 1974 vom Institute of Electrical and Electronics Engineers (IEEE) veröffentlicht und in RFC 791 als Standard spezifiziert wurde, soll in erster Linie den erfolgreichen Paketversand vom Absender zum Adressaten gewährleisten. Zu diesem Zweck gibt das Internet Protocol ein Format vor, das die Art der Beschreibung dieser Datenpakete (auch IP-Datagramme genannt) definiert.
Internet Protocol: Definition und Geschichte
Das Internet Protocol (IP) ist ein verbindungsloses Protokoll, das als wichtiger Bestandteil der Internetprotokollfamilie – einer Sammlung von rund 500 Netzwerkprotokollen – für die Adressierung und Fragmentierung von Datenpaketen in digitalen Netzwerken verantwortlich ist. Gemeinsam mit dem Transportprotokoll TCP (Transmission Control Protocol) bildet IP die Grundlage des Internets. Um ein Paket vom Absender zum Adressaten zu senden, definiert das Internet Protocol eine Paketstruktur, die die zu verschickenden Daten zusammenfasst. So legt das Protokoll fest, auf welche Art und Weise Informationen über Quelle und Ziel der Daten beschrieben werden, und trennt diese Informationen im IP-Header von den eigentlichen Nutzdaten. Ein solches Paketformat wird auch als IP-Datagramm bezeichnet.
1974 veröffentlichte das Institute of Electrical and Electronics Engineers (IEEE) eine Forschungsarbeit der amerikanischen Informatiker Robert Kahn und Vint Cerf, die ein Protokoll-Modell für die gegenseitige Paket-Netzverbindung auf der Basis des Internet-Vorgängers ARPANET beschrieb. Hauptkomponente dieses Modells war neben dem Übertragungskontrollprotokoll TCP erstmals auch das IP-Protocol, das – zuzüglich einer speziellen Abstraktionsschicht – die Kommunikation über verschiedene physikalische Netze hinweg erlaubte. In der Folgezeit wurden immer mehr Forschungsnetzwerke auf Basis dieser als „TCP/IP“ bezeichneten Protokollkombination zusammengeschlossen, die 1981 endgültig im RFC 791 als Standard spezifiziert wurde.
IPv4 und IPv6: Das steckt hinter den unterschiedlichen Versionsnummern
Wer sich in der heutigen Zeit mit der Beschaffenheit einer solchen IP-Adresse auseinandersetzt, um beispielsweise Rechner im lokalen Netzwerk adressierbar zu machen, stößt auf die zwei Varianten IPv4 und IPv6. Dabei handelt es sich jedoch keineswegs um die vierte bzw. sechste Generation des IP-Protokolls, auch wenn dieses in der Vergangenheit umfassende Veränderungen erlebt hat. Bei IPv4 handelt es sich nämlich de facto sogar um die erste offizielle Version des Internet Protocol, während die Versionsnummer einzig aus dem Umstand resultiert, dass die vierte Ausgabe des TCP-Protokolls genutzt wird. IPv6 ist wiederum der direkte Nachfolger von IPv4 – die Entwicklung des Protokolls IPv5 wurde aus ökonomischen Gründen vorzeitig eingestellt. Auch wenn es neben IPv4 und IPv6 keine weiteren Versions-Releases gibt, so ist das Internet Protocol wie bereits erwähnt seit 1974 (als es noch nicht eigenständig existierte und Bestandteil von TCP war) dennoch überarbeitet worden. Im Wesentlichen konzentrierte man sich dabei darauf, den Verbindungsaufbau und die Adressierung zu optimieren. So hob man beispielsweise schon früh die Bit-Länge der Host-Adressen von 16 auf 32 Bit an, wodurch der Adressraum auf rund vier Milliarden mögliche Vertreter ausgeweitet wurde. Das zukunftsweisende IPv6 lässt mit seinen 128-Bit-Adressfeldern sogar ca. 340 Sextillionen – eine Zahl mit 37 Nullen – verschiedene Adressen zu, womit der Bedarf an Internetadressen langfristig gedeckt ist.
So ist der IP-Header eines Datagramms aufgebaut
Wie bereits erwähnt, sorgt das Internet Protocol dafür, dass jedem Datenpaket die wichtigen strukturellen Eigenschaften in der Kopfzeile vorangestellt und dem passenden Transportprotokoll (typischerweise TCP) zugeordnet werden. Der Kopfdatenbereich wurde für Version 6 grundlegend überarbeitet, weshalb man zwischen dem IPv4- und dem IPv6-Header unterscheiden muss.
Aufbau des IPv4-Headers
Jeder IP-Header beginnt also immer mit einer 4 Bit langen Angabe der Versionsnummer des Internet Protocols – IPv4 oder IPv6. Es folgen weitere 4 Bits, die Informationen über die Länge der Kopfzeile (IP Header Length) enthalten, da diese nicht konstant ist. Die Gesamtlänge errechnet sich dabei immer aus diesem Wert multipliziert mit 32 Bit. Der kleinstmögliche Wert 5 steht also für eine Header-Länge von 160 Bit (entspricht 20 Byte). In diesem Fall sind keinerlei Optionen hinzugefügt. Das Maximum ist der Wert 15 bzw. 480 Bit (entspricht 60 Byte). Die Bits 8 bis 15 (Type of Service) können Anweisungen zur Behandlung und Priorität des Datagramms beinhalten. Hier kann der Host also beispielsweise angeben, wie wichtig ihm Punkte wie Zuverlässigkeit, Durchsatz und Verzögerung bei der Datenübertragung sind. Die Gesamtlänge gibt an, wie groß das Datenpaket insgesamt ist, addiert mit anderen Worten also die Größe der Nutzdaten zur Header-Länge. Da das Feld eine Länge von 16 Bit hat, liegt die maximale Grenze bei 65.635 Byte. Im RFC 791 ist ferner festgelegt, dass jeder Host in der Lage sein muss, mindestens 576 Bytes zu verarbeiten. Ein IP-Datagramm kann auf dem Weg zum Zielhost von Routern und anderen Geräten nach Belieben fragmentiert werden, wobei die Fragmente jedoch nicht kleiner als die genannten 576 Bytes werden sollten. Die weiteren Felder des IPv4-Kopfes haben folgende Bedeutung:
- Identifikation: Alle Fragmente eines Datagramms verfügen über die gleiche Identifikationsnummer, die sie vom Absender erhalten. Per Abgleich dieses 16-Bit-Feldes kann der Zielhost einzelne Fragmente also einem bestimmten Datagramm zuweisen.
- Flags: Jeder IP-Header enthält 3 Flag-Bits, die Informationen und Richtlinien zur Fragmentierung enthalten. Das erste Bit ist dabei reserviert und hat immer den Wert 0. Das zweite Bit namens „Don’t Fragment“ verrät, ob das Paket fragmentiert werden darf (0) oder nicht (1). Das letzte, sogenannte „More Fragments“-Bit gibt darüber Aufschluss, ob weitere Fragmente folgen (1) oder ob das Paket vollständig oder mit dem aktuellen Fragment abgeschlossen ist (0).
- Fragment-Versatz: Dieses Feld informiert den Zielhost darüber, an welche Stelle ein einzelnes Fragment gehört, sodass dieser das gesamte Datagramm wieder problemlos zusammensetzen kann. Die Länge von 13 Bit bedeutet, dass ein Datagramm maximal in 8192 Fragmente zerteilt werden kann.
- Lebensdauer (Time to Live, TTL): Damit ein Paket im Netzwerk nicht eine unbegrenzte Zeit lang von Knoten zu Knoten wandern kann, wird es beim Verschicken mit einer maximalen Lebensdauer, der Time to Live, versehen. Der RFC-Standard sieht für dieses 8-Bit-Feld die Einheit Sekunden vor, die maximale Lebensdauer beträgt 255 Sekunden. Für jeden passierten Netzwerkknoten wird die TTL um mindestens 1 verringert. Wird der Wert 0 erreicht, wird das Datenpaket automatisch verworfen.
- Protokoll: Das Protokoll-Feld (8 Bit) weist dem Datenpaket das jeweilige Transportprotokoll zu – beispielsweise stehen der Wert 6 für TCP oder der Wert 17 für das UDP-Protokoll. Die offizielle Liste aller möglichen Protokolle wird seit 2002 von der IANA (Internet Assigned Numbers Authority) geführt und gepflegt.
- Header-Prüfsumme: Das 16 Bit breite „Checksum“-Feld enthält die Prüfsumme für den Header. Diese muss, aufgrund der schwindenden TTL pro Zwischenhalt, bei jedem Netzwerkknoten neu berechnet werden. Die Korrektheit der Nutzdaten wird aus Gründen der Effizienz nicht verifiziert.
- Quell- und Zieladresse: Je 32 Bit, also 4 Byte sind für die zugewiesene IP-Adresse von Ausgangs- und Zielhost reserviert. Geschrieben werden diese IP-Adressen üblicherweise in Form von 4 durch Punkte getrennten Dezimalzahlen. Die niedrigste Adresse ist dabei 0.0.0.0, die höchste 255.255.255.255.
- Optionen: Das Optionen-Feld erweitert das IP-Protokoll um Zusatzinformationen, die im Standarddesign nicht vorgesehen sind. Da es sich hierbei lediglich um optionale Ergänzungen handelt, hat das Feld eine variable Länge, die allein durch die maximale Header-Länge begrenzt ist. Zu den möglichen Optionen zählen zum Beispiel „Security“ (kennzeichnet, wie geheim ein Datengramm ist), „Record Route“ (weist alle passierten Netzwerkknoten an, ihre IP-Adresse anzuhängen, um die Paket-Route nachvollziehen zu können) und „Time Stamp“ (fügt zusätzlich den Zeitpunkt hinzu, zu dem ein bestimmter Knoten passiert wurde).
Aufbau des IPv6-Headers
Der Kopfdatenbereich des IPv6-Protokolls hat im Gegensatz zu dem Header seines Vorgängers eine feste Größe von 320 Bit (40 Bytes). Separat können – zwischen dem Standard-Header und den Nutzdaten – zusätzliche, seltener benötigte Informationen angehängt werden. Diese Erweiterungs-Kopfzeilen (Extension Header) sind mit dem Optionsfeld des IPv4-Protokolls zu vergleichen und können jederzeit angepasst werden, ohne den eigentlichen Header verändern zu müssen. Unter anderem lassen sich auf diese Weise Paket-Routen bestimmen, Fragmentierungsinformationen angeben oder die verschlüsselte Kommunikation via IPSec in die Wege leiten. Eine Header-Prüfsumme existiert – unter anderem zugunsten der Performance – nicht. Der eigentliche IP-Header beginnt, wie auch bei IPv4, mit der 4 Bit langen Versionsnummer des Internet Protocols. Das nachfolgende Feld „Traffic Class“ ist mit dem „Type of Service”-Eintrag in der älteren Protokollvariante gleichzusetzen. Diese 8 Bit informieren den Zielhost also wie in der Vorgängerversion über die qualitative Verarbeitung des Datengramms, wobei sogar dieselben Regeln gelten. Neu in IPv6 ist das Flow Label (20 Bit), mit dessen Hilfe es möglich ist, Datenströme aus zusammenhängenden Datenpaketen zu identifizieren, um Bandbreite zu reservieren und das Routing zu optimieren. Die folgende Auflistung erläutert die weiteren Header-Informationen des verbesserten IP-Protokolls:
- Nutzdatengröße: IPv6 übermittelt einen Wert für die Größe der transportierten Nutzdaten inklusive der Extension Header (insgesamt 16 Bit). In der Vorgängerversion musste dieser Wert separat aus der Gesamtlänge abzüglich der Kopfzeilenlänge errechnet werden.
- Next Header: Das 8 Bit lange „Next Header“-Feld ist das Pendant zu der Protokoll-Angabe in IPv4 und hat als solches auch dessen Funktion übernommen – die Zuordnung des gewünschten Transportprotokolls.
- Hop-Limit: Das Hop-Limit (8 Bit) definiert die maximale Zahl an Zwischenstationen, die ein Paket durchlaufen darf, bevor es verworfen wird. Wie bei der TTL in IPv4 wird der Wert mit jedem Knoten um mindestens 1 verringert.
- Quell- und Zieladresse: Den größten Teil des IPv6-Headers nehmen die Adressen von Absender und Adressat ein. Wie eingangs bereits kurz erwähnt, haben diese eine Länge von 128 Bit (das Vierfache von IPv4-Adressen). Auch hinsichtlich der üblichen Notation gibt es deutliche Unterschiede. Die jüngere Version des Internet Protocols greift auf Hexadezimalzahlen zurück und unterteilt diese in 8 Blöcke mit jeweils 16 Bit. Für die Trennung werden Doppelpunkte statt einfacher Punkte verwendet. So sieht eine vollständige IPv6-Adresse in etwa folgendermaßen aus:
2001:0db8:85a3:08d3:1319:8a2e:0370:7344.
Wie funktioniert die Internet-Protocol-Adressvergabe?
Damit die Datagramme in ihrem Header die elementare Angabe von Ausgangs- und Zieladresse überhaupt vornehmen können, müssen selbige zunächst an die Netzwerkteilnehmer vergeben werden. Dabei gilt es traditionell, zwischen internen und externen bzw. öffentlichen IP-Adressen zu unterscheiden. Für erstere, die der Kommunikation in lokalen Netzwerken dienen, sind drei Adressbereiche reserviert:
- 10.0.0.0 bis 10.255.255.255
- 172.16.0.0 bis 172.31.255.255
- 192.168.0.0 bis 192.168.255.255
Für IPv6-Netzwerke ist das Präfix „fc00::/7“ vorgesehen. Adressen dieser Bereiche werden im Internet nicht geroutet und können daher in privaten Netzen oder Firmennetzwerken frei ausgewählt und genutzt werden. Die Zuordnung einer Adresse gelingt entweder per manueller Eingabe oder findet automatisch statt, sobald sich ein Gerät mit dem Netzwerk verbindet – sofern die automatische Adresszuordnung aktiviert und ein DHCP-Server im Einsatz ist. Mithilfe einer Subnetzmaske kann ein solches lokales Netzwerk darüber hinaus wahlweise in weitere Bereiche segmentiert werden. Externe IP-Adressen werden Routern automatisch vom jeweiligen Internetprovider vergeben, wenn diese sich mit dem Internet verbinden. Alle Geräte, die über einen gemeinsamen Router im Internet unterwegs sind, greifen dementsprechend auf dieselbe externe IP zurück. Üblicherweise vergeben die Provider alle 24 Stunden eine neue Internetadresse aus einem Adressbereich, der ihnen wiederum von der IANA zugeteilt wurde. Das gilt auch für das quasi unerschöpfliche Arsenal von IPv6-Adressen, das nur teilweise für die normale Nutzung freigegeben ist. Ferner wird es nicht nur in private und öffentliche Adressen unterteilt, sondern zeichnet sich durch wesentlich vielseitigere Einstufungsmöglichkeiten in sogenannte Gültigkeitsbereiche (Address Scopes) aus:
- Host-Scope: Die als Loopback bezeichnete Adresse 0:0:0:0:0:0:0:1 kann ein Host dazu nutzen, um IPv6-Datagramme an sich selbst zu verschicken.
- Link-Local-Scope: Für die IPv6-Konnektivität ist es von elementarer Bedeutung, dass jeder Host über eine eigene Adresse verfügt, selbst wenn diese nur in einem lokalen Netzwerk gültig ist. Diese Link-Local-Adresse ist durch das Präfix „fe80::/10“ gekennzeichnet und wird beispielsweise für die Kommunikation mit dem Standard-Gateway (Router) benötigt, um eine öffentliche IP-Adresse generieren zu können.
- Unique-Local-Scope: Hierbei handelt es sich um den bereits thematisierten Adressbereich „fc00::/7“, der ausschließlich für die Konfiguration lokaler Netzwerke vorbehalten ist.
- Site-Local-Scope: Der Site-Local-Scope ist ein mittlerweile veralteter Adressbereich mit dem Präfix „fec0::/10“, der ebenfalls für lokale Netzwerke definiert wurde. Beim Zusammenschluss verschiedener Netzwerke oder bei der Herstellung von VPN-Verbindungen zwischen Netzen, die mit Site-Local-Adressen nummeriert waren, kam es jedoch zu Komplikationen, weshalb der Standard als überholt eingestuft wurde.
- Global-Scope: Jeder Host, der Verbindung mit dem Internet aufbauen möchte, benötigt mindestens eine eigene, öffentliche Adresse. Diese bezieht er per Autokonfiguration, wobei er entweder auf das SLAAC (zustandslose Adresskonfiguration) oder auf DHCPv6 (zustandsorientierte Adresskonfiguration) zurückgreift.
- Multicast-Scope: Netzwerkknoten, Router, Server und andere Netzwerkdienste können mit IPv6 in Multicast-Gruppen zusammengefasst werden. Jede dieser Gruppen verfügt über eine eigene Adresse, wodurch sich mit einem einzigen Paket alle involvierten Hosts erreichen lassen. Das Präfix „ff00::/8“ gibt an, dass eine Multicast-Adresse folgt.
Immer wenn ein Datenpaket via TCP/IP verschickt werden soll, findet automatisch eine Überprüfung der Gesamtgröße statt. Liegt diese über der Maximum Transmission Unit (dt. maximale Übertragungseinheit) der jeweiligen Netzwerkschnittstelle, werden die Informationen fragmentiert, also in kleinere Datenblöcke zerlegt. Diese Aufgabe übernimmt entweder der sendende Host (IPv6) oder ein zwischengeschalteter Router (IPv4). Standardmäßig wird das Paket vom Empfänger zusammengesetzt, wofür dieser auf die im IP-Header bzw. im Extension-Header hinterlegten Fragmentierungsinformationen zurückgreift. In Ausnahmefällen kann das Reassembling (dt. Wieder-Zusammensetzen) auch von einer Firewall übernommen werden, insofern diese entsprechend konfiguriert ist.
Da IPv6 die Fragmentierung im Allgemeinen nicht mehr vorsieht und die Fragmentierung durch Router nicht mehr erlaubt, muss das IP-Paket bereits vor dem Verschicken eine angemessene Größe haben. Erreichen einen Router IPv6-Datagramme, die über der Maximum Transmission Unit liegen, verwirft er diese und informiert den Absender in Form einer ICMPv6-Nachricht des Typs 2 „Packet Too Big“ (dt. Paket [ist] zu groß). Die datenverschickende Anwendung kann nun entweder kleinere, nicht fragmentierte Pakete erstellen oder eine Fragmentierung in die Wege leiten. Anschließend wird dem IP-Paket der passende Extension-Header hinzugefügt, damit der Zielhost die einzelnen Fragmente nach dem Empfang auch wieder zusammensetzen kann.