Was ist eine IP Adresse

Allgemeines

Um eine Kommunikation zwischen zwei technischen Geräten aufzubauen, muss jedes der Geräte in der Lage sein, dem anderen Gerät Daten zu senden. Damit diese Daten bei der richtigen Gegenstelle ankommen, muss diese eindeutig benannt (adressiert) werden. Dies geschieht in IP-Netzen mit einer IP-Adresse. So wird zum Beispiel ein Webserver von einem Webbrowser direkt über seine IP-Adresse angesprochen. Der Browser fragt dazu für einen Domainnamen, zum Beispiel „www.example.com“, die IP-Adresse bei einem Nameserver an und spricht den Webserver dann direkt unter seiner IP-Adresse an.

Eine IP-Adresse ist eine Adresse, die – wie z. B. das Internet – auf dem Internetprotokoll (IP) basiert. Sie wird Geräten zugewiesen, welche an das Netz angebunden sind und macht die Geräte so adressierbar und damit erreichbar. Die IP-Adresse kann einen einzelnen Empfänger oder eine Gruppe von Empfängern bezeichnen (Multicast, Broadcast). Umgekehrt können einem Netzknoten mehrere IP-Adressen zugeordnet sein.

Die IP-Adresse wird verwendet, um Daten von ihrem Absender zum vorgesehenen Empfänger transportieren zu können. Ähnlich der Postanschrift auf einem Briefumschlag werden Datenpakete mit einer IP-Adresse versehen, die den Empfänger eindeutig identifiziert. Aufgrund dieser Adresse können die „Poststellen“, die Router, entscheiden, in welche Richtung das Paket weiter transportiert werden soll. Im Gegensatz zu Postadressen sind IP-Adressen nicht an einen bestimmten Ort gebunden.

Schreibweise von IP-Adressen

Technisch gesehen ist eine IP-Adresse eine Zahl, z.B. 3232236074. Da sich die Zahlen so aber schwer merken lassen, hat man sich eine alternative Schreibweise einfallen lassen.

Die bekannteste Notation der heute geläufigen IPv4-Adressen besteht aus vier Zahlen, die Werte von 0 bis 255 annehmen können und mit einem Punkt getrennt werden, beispielsweise 192.168.2.42 (entspricht der obigen Zahl, davon später mehr).
Um diese Schreibweise zu verstehen ist etwas Zahlentheorie notwendig.

Zahlentheorie

Wir schreiben Zahlen immer in einem Zahlensystem. Am weitesten Verbreitet ist heutzutage ein Positionssystem (auch Stellenwertsystem genannt), das im Vergleich zu Additionssystemen mit wenigen Symbolen (meist Ziffern oder Zahlzeichen genannt) große Zahlen darstellt. In diesem Zusammenhang wird auch oft von der b-adischen Darstellung von Zahlen gesprochen, wobei die Variable b für die Anzahl der Ziffern steht. Der Wert von b wird in diesem Zusammenhang auch oft als Basis oder Grundzahl bezeichnet.

Beispiele für Stellenwertsysteme sind das im Alltag gewöhnlich gebrauchte Dezimalsystem (dekadisches System mit der Grundzahl 10), das Dualsystem (oder Binärsystem, dyadisches System mit der Grundzahl 2) und das Hexadezimalsystem (hexadekadisches System mit der Grundzahl 16).

Insbesondere diese Systeme werden bei der Darstellung von IP-Adressen verwendet.

Die b-adische Darstellung einer Zahl verwendet genau b verschiedene Ziffern (wobei b hier für eine beliebige natürliche Zahl größer als 1 steht). Jeder dieser b Ziffern wird eindeutig eine der Zahlen von 0 bis b-1 zugeordnet. Dazu ein paar Beispiele:

Der Wert einer Ziffer in einer Zahl wird im Positionssystem durch seine Position (also der Stelle innerhalb der Zahl) bestimmt. So hat die erste 2 in 282 einen anderen Wert als die zweite. Im Dezimalsystem entspricht jede Stelle einem Produkt aus Ziffer und einer Potenz zur Basis 10. Die Zahl 282 kann man entsprechend folgendermaßen schreiben:
2·102 + 8·101 + 2·100

Allgemein kann also jede beliebige Zahl in einem beliebigen Positionssystem als Folge geschrieben werden:
Zn · bn + ... + Z2 · b2 + Z1 · b1 + Z0 · b0
Dabei ist Zn die Ziffer an der Stelle n (von rechts nach links) und b die Basis des Positionssystem.

Die obige Zahl, 3232236074, kann also folgendermaßen dargestellt werden:

3·109 + 2·108 + 3·107 + 2·106 + 2·105 + 3·104 + 6·103 + 0·102 + 7·101 + 4·100
3000000000 + 200000000 + 30000000 + 2000000 + 200000 + 30000 + 6000 + 000 + 70 + 4
=3232236074

Äquivalent dazu sind die anderen Zahlensysteme: Im Hexadezimalsystem schreibt sich die 3232236074 als C0A8022A:

C·167 + 0·166 + A·165 + 8·164 + 0·163 + 2·162 + 2·161 + A·160
12·268435456 + 0·16777216 + 10·1048576 + 8·65536 + 0·4096 + 2·256 + 2·16 + 10
3221225472 + 0 + 10485760 + 524288 + 0 + 512 + 32 + 10
=3232236074

Und der vollständigkeithalber im Dualsystem und selber rechnen: 11000000101010000000001000101010

Das Umrechnen von einem Zahlsystem ins andere spare ich hier aus. Zum einen kann man das woanders nachlesen, zum anderen sollte man dazu geschickterweise einen dazu fähigen Taschenrechner (z.B. bc) verwenden.

Die byteweise Schreibweise bei IPv4

In der elektronischen Datenverarbeitung nennt sich die kleinstmögliche Speichereinheit Bit. Ein Bit kann zwei mögliche Zustände annehmen, die meist als „Null“ und „Eins“ bezeichnet werden. Und wie es der Zufall will, passt das prima zu dem oben beschriebenen Dualsystem.

Das Byte ist ein Mengenbegriff (Maßeinheit) der Digitaltechnik, der für eine Folge von meist 8 Bit steht. Historisch gesehen war ein Byte die Anzahl der Bits zur Kodierung eines einzelnen Text-Schriftzeichens im jeweiligen Computersystem und ist daher das kleinste adressierbare Element in vielen Rechnerarchitekturen. Um ausdrücklich auf eine Anzahl von 8 Bit hinzuweisen, wird auch die Bezeichnung Oktett verwendet.
Deshalb erfolgt die Zahlendarstellung am Computer in vielen Fällen entweder Bit- oder Byteweise.

Eine IPv4 Adresse hat immer 32-Bit. Dadurch ergibt sich die maximale Anzahl darstellbarer IPv4 Adressen: 232=4294967296 mögliche Adressen.
Ebenfalls praktisch sind die 32 Bit, weil sich diese in 4 Oktets teilen lassen und sich so IPv4 Adressen als 4er-Tupel schreiben lassen:

Im Falle der obigen IP Adresse unterteilt man die duale Darstellung in 8-Bit Teilchen, also Oktets:

11000000 10101000 00000010 00101010

Schreibt man diese Oktets nun in Dezimalschreibweise kommen wir zu der (bei IPv4) üblichen Schreibweise:

192 168 4 42

Da IP Adressen nicht zufällig gewählt werden sondern einem hierachischem Schema folgen kann man sich so die Adressen leichter merken.

Textuelle Darstellung von IPv6 Adressen

Bei IPv6 wächst die Bitbreite auf 128. Die maximale Anzahl der darstellbaren Adressen damit auf 2128=340282366920938463463374607431768211456.
Diese Bitbreite ist weder im Dual- noch im Dezimalsystem überschaubar. Deshalb hat man sich hier für das Hexadezimalsystem entschieden. Dabei werden jeweils 16 Bits, also 2 Oktets, als Block zusammengefasst und mehrere Blöcke durch Doppelpunkte getrennt. Eine typische IPv6 Adresse sieht also z.B. so aus:

2001:0AA0:0801:0001:0000:0000:0000:0001

Dabei ergeben immer 4 Bit (genannt nibble) eine Hexadezimalstelle:

2001 : 0AA0 : 0801 : 0001 : 0000 : 0000 : 0000 : 0001
0010000000000001 : 0000101010100000 : 0000100000000001 : 0000000000000001 : 0000000000000000 : 0000000000000000 : 0000000000000000 : 0000000000000001

(das entspricht dezimal 42540703665054970582385730117527666689)

Da dies immer noch sehr unübersichtlich ist, gibt es zusätzlich noch folgende Möglichkeiten:

Führende Nullen in einem Feld können ausgelassen, Gruppen von hintereinanderfolgenden Nullen können durch "::" repräsentiert werden. Dazu zwei Beispiele:

Die vollständige Schreibweise: 2001:0AA0:0801:0001:0000:0000:0000:0001

oder die verkürzte Schreibweise: 2001:AA0:801:1::1

Aber: 2001:AA0:801:1::2::3 ist nicht erlaubt, da zweimal "::" in der Zeichenkette vorkommen. Ein Computer weiß nicht, wieviele Nullen jeweils einzufügen sind.

Netze

Netzmasken

Möchte man die Kommunikation mehrerer Rechner ermöglichen, muss man diese zu einem sog. Netz zusammenschliessen. Aus Sicht der IP Adressen muss man also zusammenhängende Blöcke von IPs definieren. Diese Blöcke definiert man über die sog. Netzmaske oder Präfixlänge. Diese unterteilt eine IP in zwei Bereiche: den Netzwerkteil und einem Geräteteil. Dabei sollten die Prefixlängen bei allen Geräten eines Netzes gleich, der Geräteteil bei jedem beteiligten System verschieden sein.

Die Netzmaske ist genauso lang (oder breit im Sinne von Bits) wie die IP selbst. Bei IPv4 also 32, bei IPv6 128 Bit. Alle Bits des Netzwerkteils sind auf 1 gesetzt, alle Bits des Geräteteils auf 0. Durch diese Konvention kann man die Netzmaske durch einen ganzzahligen Wert angeben, der die Anzahl der gesetzten Bits angibt. Dieser Wert wird im allgemeinen direkt an die IP durch einen / (slash) getrennt angegeben. Beispiel: 192.168.1.10/24
(Der Übersicht zuliebe hier Beispiele für IPv4 Adressen, für IPv6 gilt das aber äquivalent)

Schreiben wir dieses im Dualsystem ergebt sich:

IP-Adresse11000000101010000000000100001010
Netzmaske 11111111111111111111111100000000

Der Netzwerkanteil der IP ergibt sich nun aus der logischen UND-Verknüpfung mit der Netzmaske. Dabei wird im Ergebnis ein Bit gesetzt, wenn es sowohl in der Adresse als auch in der Maske gesetzt ist:

IP-Adresse 11000000 10101000 00000001 00001010
Netzmaske 11111111 11111111 11111111 00000000
Netzwerkanteil 11000000 10101000 00000001 00000000

Schreiben wir den Netzwerkanteil wieder dezimal:

Netzwerkanteil 11000000101010000000000100000000
Dezimal 19216810

Der Netzwerkanteil wird auch als Netzadresse bezeichnet und Netze generell mit der Netzadresse und zugehöriger Präfixlänge angegeben. Der Rechner mit der IP 192.168.1.10/24 gehört demnach zum Netz 192.168.1.0/24. Diese Schreibweise wird auch als CIDR (Classless InterDomain Routing) Notation bezeichnet.
Der Geräteanteil wird in Zusammenhang mit IPv6 als Interface Identifier bezeichnet, da dieser Anteil das Interface innerhalb eines Subnetzes eindeutig identifiziert.

Aus der Präfixlänge ergibt sich auch die Anzahl der Rechner, die in diesem Netz adressiert werden können. So können in einem /24 Netz 28=256 Adressen für Rechner verwendet werden. (32 Bit insgesamt und 24 Bit für die Präfixlänge, bleiben 8 Bit für die Rechner). In der IPv4 Welt müssen wir von dieser Zahl noch 2 Adressen subtrahieren, da sowohl die erste (Netzadresse) als auch die letzte (Broadcastadresse) per Definition nicht verwendet werden dürfen. Das gilt jedoch nicht bei IPv6.

Subnetting

Als Subnetting bezeichnet man die Zerteilung eines Netzes in kleinere Bereiche. Technisch erreicht man die Zerteilung durch Vergrößerung der Präfixlänge. Möchte man ein /24 Netz in 4 gleichegroße Netze zerteilen haben diese Netze eine /26 Netzmaske.

Generell kann man ein Netz in beliebige kleinere Netze zerlegen. Bei IPv6 sollte man sich jedoch an bestimmte Konventionen halten, da sonst eventuell bestimmte Mechanismen nicht mehr greifen. Aber davon später mehr.

Routing

Allgeimeines

Will man nur ein paar Rechner miteinander verbinden ist ein Netz völlig ausreichend. In diesem Fall reicht es also, alle Rechner in das selbe Netz zu konfigurieren und über geeignete Netzelemente (z.B. Switche) miteinander zu verbinden.

Will ein Rechner in diesem Netz mit einem anderen kommunizieren, weiß er automatisch wie er das Ziel erreicht: über das lokale Netz.

In der Praxis wird man aber mehrere Netze miteinander verbinden wollen, z.B. das heimische Netz mit dem Internet. Wir brauchen also ein Netzelement welches mehrere Netze miteinander Verbindet. Dieses Element nennt man Router.

Möchte ein Rechner nun eine Verbindung zu einem nicht-lokalen Netz herstellen braucht er dazu eine Art Wegbeschreibung, gennant Route. Die Route sagt dem Rechner über welchen Router das andere Netz zu erreichen ist.

Routen

Ein Rechner kann auf verschiedene Arten eine Route lernen:

Konfiguriert man auf einem Rechner eine IP Adresse, lernt er dadurch automatisch eine Route: das lokale Netz ist über die Netzwerkschnittstelle erreichbar, dieses Netz ist lokal erreichbar.

Man legt explizit eine Route an und teilt dem Rechner mit, dass z.B. das Netz 2001:AA0:801:1::/48 über 2001:AA0:801:1230::1/64 erreichbar ist. Dabei muss die 2001:AA0:801:1230::1 lokal erreichbar sein.

Der Rechner lernt die Routen dynamisch, z.B. über dynamische Routingprotokolle (z.B. OSPF, ISIS, BGP etc). Wir werden später sehen, dass IPv6 auch hier etwas neues zu bieten hat.

Man legt eine default Route an. Diese sagt dem Rechner, dass er jedes nicht bekannt Netz über diesen Weg erreichen kann.



copyright © 1997-2019  Oliver Schroeder (remove XYZ)