IPv4 - Internet Protocol Version 4
Das Internet Protocol, kurz IP, wird im Rahmen der Protokollfamilie TCP/IP zur Vermittlung von Datenpaketen verwendet. Es arbeitet auf der Schicht 3 des OSI-Schichtenmodells und hat maßgeblich die Aufgabe, Datenpakete zu adressieren und in einem verbindungslosen paketorientierten Netzwerk zu vermitteln (Routing). Dazu haben alle Stationen und Endgeräte eine eigene Adresse im Netzwerk. Sie dient nicht nur zur Identifikation der Station, sondern auch des Netzes, in der sich die Station befindet.
Das Internet Protocol (IP) im TCP/IP-Protokollstapel
Schicht | Dienste / Protokolle / Anwendungen | |||
---|---|---|---|---|
Anwendung | HTTP | IMAP | DNS | SNMP |
Transport | TCP | UDP | ||
Internet | IP (IPv4 / IPv6) | |||
Netzzugang | Ethernet, ... |
IPv4-Adressen
Das wichtigste von IP (Internet Protocol), neben dem IP-Routing, sind die IP-Adressen, über die jede Station in einem TCP/IP-Netzwerk gefunden werden kann. Pro Hardware-Interface (Netzwerkkarte) wird eine IP-Adresse vergeben. In Ausnahmefällen lässt sich ein Interface auch über zwei oder mehr IP-Adressen ansprechen oder mehrere Interfaces der gleichen Station haben die gleiche IP-Adresse.
Die IP-Adresse ist mit den Angaben zu Straße, Hausnummer und Ort einer Anschrift vergleichbar. Damit die IP-Adresse von Hardware und Software einfach verarbeitet werden kann, liegt sie in einem Bitcode (duales Zahlensystem) vor. Der Bitcode ist 32 Stellen lang bzw. 4 Byte groß und kann wahlweise auch als hexadezimale oder dezimale Zahlenkombination dargestellt werden.
Zahlensystem | Beispiel-Adresse | |||
---|---|---|---|---|
Binär/Dual | 0111 1111 | 0000 0000 | 0000 0000 | 0000 0001 |
Hexadezimal | 7F | 00 | 00 | 01 |
Dezimal | 127 | 0 | 0 | 1 |
Für IPv4-Adressen ist die dezimale Schreibweise üblich. Sie ist am einfachsten lesbar. Dazu werden die 32 Bit einer IPv4-Adresse in jeweils 8 Bit (1 Byte) aufgeteilt und durch einen Punkt getrennt. Jedes Byte kann durch die achtstellige 1er- und 0er-Folge einen Wert von 0 bis 255 annehmen. Das sind 256 Werte pro Stelle. Die binäre IP-Adresse 01111111.00000000.00000000.00000001 ergibt umgerechnet 127.0.0.1.
Jede IP-Adresse besteht aus zwei Teilen. Einmal der Netzadresse und der Host- bzw. der Stationsadresse. Für das IP-Routing ist nur die Netzadresse wichtig. Die Hostadresse ist nur für den Router wichtig, in dessen Netz sich der Host befindet.
Bei einer IP-Adresse ist der vordere Teil die Netzadresse und der hintere Teil die Hostadresse. Die Teilung findet immer an einem Punkt (".") statt. An welcher Stelle die IP-Adresse in Netz- und in Hostteil getrennt wird entscheidet nach einem veralteten Prinzip die Netzklasse oder nach dem aktuellen Prinzip die Netzmaske bzw. das Suffix (nach CIDR).
Netzklassen
Das Prinzip der Netzklassen oder auch die englische Bezeichnung "classful network" definiert eine Unterteilung des IPv4-Adressraums in Teilnetze. Dadurch kann die Größe eines Netzwerks und dessen Adresse aus der IPv4-Adresse abgeleitet werden. Mit der Netzklasse wird allerdings nicht die tatsächliche Größe eines Netzwerks angegeben, sondern nur wie viele Adressen es umfassen kann.
IPv4-Adressen wurden ursprünglich in 5 Netzklassen eingeteilt. In jeder Klasse haben die Netz-ID und die Host-ID eine unterschiedliche Gewichtung.
Klasse A (0.0.0.0 bis 127.255.255.255) | ||||||||
0 | Netz-ID (7 Bit) | Host-ID (24 Bit) | ||||||
Klasse B (128.0.0.0 bis 191.255.255.255) | ||||||||
1 | 0 | Netz-ID (14 Bit) | Host-ID (16 Bit) | |||||
Klasse C (192.0.0.0 bis 223.255.255.255) | ||||||||
1 | 1 | 0 | Netz-ID (21 Bit) | Host-ID (8 Bit) | ||||
Klasse D (224.0.0.0 bis 239.255.255.255) | ||||||||
1 | 1 | 1 | 0 | Multicast-Gruppen-ID (28 Bit) | ||||
Klasse E (240.0.0.0 bis 255.255.255.255) | ||||||||
1 | 1 | 1 | 1 | 0 | Reserviert für zukünftige Anwendungen (27 Bit) |
Klasse-A-Netze sind Netze mit einer großen Anzahl an Stationen Das erste Bit ist immer "0". Der theoretische Adressbereich reicht von 0.0.0.0 bis 127.255.255.255. Der effektive Adressbereich reicht von 1.0.0.1 bis 127.255.255.254. Insgesamt sind also nur 126 Klasse-A-Netze möglich. Das ergibt eine rechnerische Anzahl von 16.777.214 möglichen Stationen pro Klasse-A-Netz.
Klasse-B-Netze sind Netze mit einer mittleren Anzahl an Stationen. Die ersten 2 Bit sind immer "10". Der theoretische Adressbereich reicht von 128.0.0.0 bis 191.255.255.255. Der effektive Adressbereich reicht von 128.0.0.1 bis 191.255.255.254. Insgesamt sind nur 16.384 Klasse-B-Netze möglich. Das ergibt eine rechnerische Anzahl von 65.534 mögliche Stationen pro Klasse-B-Netz.
Klasse-C-Netze sind Netze mit einer kleinen Anzahl an Stationen. Die ersten 3 Bit des Adressbereiches sind immer "110". Der theoretische Adressbereich reicht von 192.0.0.0 bis 223.255.255.255. Der effektive Adressbereich reicht nur von 192.0.0.1 bis 223.255.255.254. Insgesamt sind 2.097.152 Klasse-C-Netze möglich. Das ergibt eine rechnerische Anzahl von 254 Stationen pro Klasse-C-Netz.
Früher hatten Router eine geringere Rechenleistung und weniger Speicher. Durch die Festlegung des IPv4-Adressraums zu Netzklassen konnte das Routing stark vereinfacht werden. Dafür reichte eine einfache Tabelle aus, in der ein Router statische oder dynamische Routen pflegen konnte.
Allerdings sind Netzklassen sehr unflexibel und haben eine großzügigen Vergabe der knappen IP-Adressen zur Folge. Das führte dazu, dass es heute keine freien IPv4-Adressen mehr gibt.
Netzklassen sind ein veraltetes und in der Praxis nicht mehr angewendetes Konzept. Heute leitet man die Größe eines Netzwerks und damit den Teil der Netz- und die Stationsadresse nicht mehr aus der IP-Adresse und der Netzklasse ab, sondern aus der Angabe der Netzmaske oder Subnetzmaske bzw. Subnetmask (Subnetting).
Leider werden in der Lehre und Bildung immer noch Netzklassen behandelt, obwohl sie seit 1993 in der Praxis keine Rolle mehr spielen. Netzklassen sind nur noch dort ein Thema, wo alte Protokolle oder Router im Einsatz sind, die seit 1993 nicht weiterentwickelt oder ersetzt wurden. Zum Beispiel bei PPP (Direktverbindung über IP-Adresse) oder in sehr alten Routing-Protokollen, wie RIPv1. Es betrifft unter Umständen auch sehr alte Betriebssysteme, die seit Jahrzehnten nicht mehr verändert wurden.
Die Netzklassen hatten von 1981 bis 1993 ihre Gültigkeit, wurden 1985 von Subnetting und 1992 von Supernetting ergänzt. Seit 1993 werden die Netzklassen von CIDR (Classless Inter-Domain Routing) ersetzt.
Subnetzmaske / Subnetmask
Durch Subnetting kann man große IP-Adressbereiche, die ehemals einer Netzklasse fest zugewiesen gewesen sind (Netzklasse bestimmt die Größe eines Netzwerks), in mehrere kleine IP-Adressbereich aufteilen. Das bedeutet, mit Subnetting kann man ehemalige Klasse-A- oder Klasse-B-IPv4-Adressbereiche in kleinere Adressebereiche aufteilen.
Supernetting macht es genau umgekehrt. Durch Supernetting kann man mehrere kleine IPv4-Adressbereiche, die ehemals einer Netzklasse fest zugewiesen gewesen sind, in einen größeren IP-Adressbereich umwandeln.
Dezimale Darstellung | Binäre Darstellung (Bit) | |||||||
---|---|---|---|---|---|---|---|---|
IP-Adresse | 192 | .168 | .0 | .1 | 1100 0000 | 1010 1000 | 0000 0000 | 0000 0001 |
Subnetzmaske | 255 | .255 | .255 | .0 | 1111 1111 | 1111 1111 | 1111 1111 | 0000 0000 |
Netz-Adresse | 192 | .168 | .0 | .0 | 1100 0000 | 1010 1000 | 0000 0000 | 0000 0000 |
Host-Adresse | 0 | .0 | .0 | .1 | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0001 |
Jede IP-Adresse besteht aus zwei Teilen. Jedes Teil hat eine bestimmte Bedeutung. Der vordere Teil ist die Adresse für das Netzwerk, indem sich der Host befindet. Der hintere Teil ist die Adresse für den Host. Wo sich die IP-Adresse teilt, wird beim Subnetting von der Subnetzmaske bzw. Subnetmask (engl.) bestimmt. Die Subnetzmaske besteht aus 32 Bit und einer geschlossenen Kette beginnend mit Einsen und abschließenden Nullen. Ein Beispiel: 11111111 11111111 11111111 00000000. Das entspricht in der Dezimaldarstellung 255.255.255.0. Legt man die Subnetzmaske wie eine Maske über die IP-Adresse ergibt sich die Teilung in eine Netz-Adresse und eine Host-Adresse.
CIDR - Classless Inter-Domain Routing
Bei CIDR ist kein Routing-Protokoll, sondern ein Verfahren, um den IPv4-Adressraum effizienter zu nutzen. CIDR wurde 1993 eingeführt, um das Konzept der Netzklassen abzulösen. Mit CIDR entfällt die feste Zuordnung zwischen IPv4-Adresse und einer Netzklasse. Vor CIDR hat die Netzklasse definiert, welcher Teil einer IP-Adresse der Netzwerkteil und welcher der Hostteil ist. Mit CIDR steckt diese Information in der Netzmaske oder der Subnetzmaske bzw. dem Suffix.
Mit CIDR wurden so genannte Suffixe eingeführt. Es handelt sich um eine Schreibweise, die die Subnetzmaske abkürzt. Das Suffix gibt die Anzahl der 1er Bits in der Subnetzmaske an.
- 192.168.0.1/255.255.255.0 (vollständige Schreibweise)
- 192.168.0.1/24 (verkürzte Schreibweise)
- 10.0.0.0/255.0.0.0 (vollständige Schreibweise)
- 10.0.0.0/8 (verkürzte Schreibweise)
Diese Schreibweise hat noch einen weiteren Vorteil. Wenn man sich auf einen IPv4-Adressbereich beziehen will, der zum Beispiel von 172.17.0.0 bis 172.17.255.255 reicht, dann schreibt man einfach 172.17.0.0/16.
Gelegentlich findet man dann auch Schreibweisen, bei denen bei niederwertigen Oktetten die Null weggelassen wird. Zum Beispiel 171.17/16 oder auch 10/8. Diese Schreibweise mag in der Praxis vorkommen ist aber nicht standardkonform.
Seit der Einführung von CIDR sind die Netzklassen abgeschafft. Gelegentlich findet man trotzdem noch Bemerkungen, dass ein 24er-Netz (Suffix) ein Klasse-C-Netz ist. Das ist aber nur dann richtig, wenn es nicht nach der alten Netzklassenordnung ein Teil eines Klasse-A- oder -B-Netzes ist. Obwohl die Bezeichnungen Klasse-A-, Klasse-B- und Klasse-C-Netz falsch sind, sind sie fachsprachlich immer noch erhalten geblieben.
Die Notation mit dem Suffix ist bei IPv6 gleich (z. B. 2001:0:0:CD30::1/60).
Private IP-Adressen
IPv4-Adressen sind begrenzt und müssen offiziell beantragt und zugeteilt werden. Man kann also nicht irgendeine IP-Adresse wählen. Wenn man nun ein privates lokales Netzwerk aufbauen möchte, dann ist es nicht zwingend erforderlich, dass jeder Host von außerhalb des Netzwerks erreichbar sein muss. Für diesen Zweck gibt es private IP-Adressen, die nur in privaten Netzwerken gültig sind und nicht in öffentliche Netzen geroutet werden. Datenpakete mit privaten IP-Adressen verbleiben in den lokalen Netzwerken.
Für die private und nicht öffentliche Nutzung von TCP/IP gibt es Adressräume, die im Internet nicht verwendet werden dürfen, aber innerhalb von privaten Netzen frei zur Verfügung stehen.
Von | Bis | Subnetzmaske | Stationen | (Netzklasse) |
---|---|---|---|---|
10.0.0.0 | 10.255.255.255 | 255.0.0.0 | 16.777.214 | Klasse-A-Netz |
172.16.0.0 | 172.31.255.255 | 255.255.0.0 | 65.534 | Klasse-B-Netze |
192.168.0.0 | 192.168.255.255 | 255.255.255.0 | 254 | Klasse-C-Netze |
Wenn ein lokaler Host mit dem Internet verbunden werden soll, dann benötigt er eine öffentliche IP-Adresse. Leider hat die großzügige Zuteilung der IPv4-Adressen dazu geführt, dass es keine freien IPv4-Adressen mehr gibt. Das Problem gab es schon länger. Die Nutzung privater IP-Adressen hat es etwas entschärft. Bei Internet-Zugängen löst man die Problematik mit NAT. Dabei bekommt nur der Internet-Zugangs-Router eine öffentliche IP-Adresse. Das NAT-Protokoll sorgt dafür, dass mehrere lokale Hosts sich eine öffentliche IP-Adresse teilen können.
IP-Adressen mit besonderem Status
- Die IP-Adresse 127.0.0.1 ist die lokale IP-Adresse jeder Station. Diese IP-Adresse wird auch als Localhost (Name-Auflösung: localhost) bezeichnet, die einem virtuellen Interface, also keiner Hardware zugeordnet ist.
Wird ein Datenpaket mit der Ziel-Adresse 127.0.0.1 verschickt, so wird sie an den Absender selber verschickt. Man spricht dann vom einem Echo. Diese IP-Adresse kann zum Testen verwendet werden. Zum Beispiel, ob TCP/IP korrekt installiert und konfiguriert ist. Das gilt für alle IP-Adressen im Bereich 127.0.0.0 bis 127.255.255.255. - Eine IP-Adresse, deren letzte Stelle eine 0 ist, ist keine gültige IP-Adresse (z. B. 127.0.0.0). Es handelt sich dabei um die Adresse eines Subnetzes.
- Eine IP-Adresse, deren letzte Stelle die Nummer 255 ist (z. B. 127.0.0.255) ist ebenso keine gültige IP-Adresse. Es ist eine Broadcast-Adresse für das Netz 127.0.0.0. Die Datenpakete mit dieser Zieladresse werden in diesem Netz an alle Stationen geschickt.
- Durch die Einschränkung von 0 bis 255 hat ein Subnetz 256 Adressen, aber mit der Adresse x.x.x.0 und der Subnetzmaske von 255.255.255.0 nur maximal 254 mögliche adressierbare Stationen.
Aufbau des IPv4-Headers
Das IP-Datenpaket besteht aus einem Header (Kopf) und dem Bereich, in dem sich die Nutzdaten befinden. Der Header ist den Nutzdaten vorangestellt.
Der Header ist in jeweils 32-Bit-Blöcke unterteilt. Dort sind Angaben zu Servicetypen, Paketlänge, Sender- und Empfängeradresse abgelegt. Ein IP-Paket muss mindestens 20 Byte Header und 8 Byte Nutzdaten bzw. Nutz- und Fülldaten enthalten. Die Gesamtlänge eines IP-Pakets darf 65.535 Byte nicht überschreiten. Je nach Datenmenge und Übertragungsverfahren auf der Bitübertragungsschicht müssen die Nutzdaten in mehrere IP-Pakete aufgeteilt werden. Diesen Vorgang nennt man Fragmentierung.
Der Begriff Fragmentierung ist auch von Dateisystemen und Festplatten bekannt.
Bedeutung der Felder im IPv4-Header
Feldinhalt | Bit | Beschreibung |
---|---|---|
Version | 4 | Hier ist die Version des IP-Protokolls abgelegt, nach der das IP-Paket erstellt wurde. |
IHL | 4 | IHL = Internet Header Length gibt die Länge des IP-Headers als Vielfaches von 32 Bit an. Der Maximalwert von Binär 1111 (15) entspricht einer Header-Länge von 15 x 32 Bit = 480 Bit = 60 Byte. |
ToS | 8 | ToS = Type of Service legt die Qualität des angeforderten Dienstes fest. Das Feld unterteilt sich in Priorität (Priority) von 3 Bit und Eigenschaften für die Übertragung von 5 Bit. |
Paketlänge (Total Length) | 16 | Enthält die Gesamtlänge des IP-Paketes. Abzüglich des IHL ergibt sich die Länge der reinen Nutzdaten. |
Kennung (Identifiction) | 16 | Der Wert wird zur Nummerierung der Datenpakete verwendet. Die Kennung ist eindeutig und fortlaufend. |
Flags | 3 | Da die Nutzdaten in der Regel nicht in ein IP-Paket hineinpassen, werden die Daten zerlegt und in mehrere IP-Pakete verpackt und verschickt. Man spricht dann von Fragmentierung. Die Flags gehen näher darauf ein. Das erste Flag ist immer 0. Das zweite Flag (DF) verbietet die Fragmentierung des Datenpakets, wenn es gesetzt ist. Das dritte Flag (MF) gibt weitere Datenpaket-Fragmente an, wenn es gesetzt ist. |
Fragment-Offset | 13 | Enthält ein IP-Paket fragmentierte Nutzdaten, steht in diesem Feld die Position der Daten im ursprünglichen IP-Paket. |
TTL (Time-to-Live) | 8 | Mit TTL gibt der Sender die Lebensdauer des Pakets in Sekunden an. Jede Station, die ein IP-Paket weiterleiten muss, zieht von diesem Wert mindestens 1 ab. Hat der TTL-Wert 0 erreicht, wird das IP-Paket verworfen. Dieser Mechanismus verhindert, dass Pakete ewig Leben, wenn sie nicht zustellbar sind. TTL-Werte zwischen 30 und 64 sind typisch. |
Protokoll (Protocol) | 8 | Dieses Feld enthält den Port des übergeordneten Transport-Protokolls (z. B. TCP oder UDP). |
Header Checksumme (Header Checksum) | 16 | Diese Checksumme sichert die Korrektheit des IP-Headers. Für die Nutzdaten muss ein übergeordnetes Protokoll die Fehlerkorrektur übernehmen. Da sich die einnzelnen Felder des IP-Headers ständig ändern, muss jede Station auf dem Weg zum Ziel die Checksumme prüfen und auch wieder neu berechnen. Um die Verzögerung gering zu halten wird deshalb nur der IP-Header des Paketes geprüft. |
Quell-IP-Adresse (Source IP-Address) | 32 | An dieser Stelle steht die IP-Adresse der Station, die das IP-Paket abgeschickt hat (Sender). |
Ziel-IP-Adresse (Destination IP-Address) | 32 | An dieser Stelle steht die IP-Adresse der Station, für die das IP-Paket bestimmt ist. Soll das IP-Paket an mehrere Stationen zugestellt werden, muss hier eine Multicast-Adresse stehen. |
Optionen/Füllbits (Options/Padding) | 32 | Das Optionsfeld des IP-Headers enthält hauptsächlich Informationen zu Routing-, Debugging-, Statistik- und Sicherheitsfunktionen. Dieses Feld ist optional und kann bis zu 40 Byte lang sein. Es ist immer in 32 Bit aufgeteilt und wird bei Bedarf mit Nullen aufgefüllt. Auf die genauen Funktionen dieses Feldes wird hier nicht weiter eingegangen. Nur soviel sei noch gesagt: das Optionsfeld wird meist zu Diagnosezwecken verwendet. |