2.3.1 IP

Das IP-Protokoll (internet protocol) - es wird gelegentlich auch als das Hauptprotokoll von TCP/IP bezeichnet - liegt auf dem OSI-Layer 3 (internet) und ist ein verbindungsloses Protokoll. Das bedeutet, dass keine Verbindung zum Zielknoten aufgebaut wird, sondern die Pakete einfach dem Netz übergeben werden und dort ihren Weg quasi selbst finden. Es wird nicht überprüft, ob der Zielrechner überhaupt erreichbar ist und innerhalb des IP-Protokolls auch nicht gewährleistet, dass die Datenpakete tatsächlich beim Empfänger ankommen. Zusätzlich gibt es noch die Möglichkeit, Datagramme in kleinere Blöcke zu fragmentieren und getrennt weiterzuleiten, falls in einem Teilnetz eine MTU (Maximum Transmisson Unit) (=Längenbeschränkung) vorgegeben ist. In diesem Fall werden die IP-Header im Wesentlichen repliziert und vor die Datenfragmente gesetzt. Umgekehrt ist es auch möglich, kleinere Teildatagramme zu einem größeren zu reassemblieren.

Der IP-Header hat folgenden Aufbau:

IPv4 Header
(aus: https://commons.wikimedia.org)

Legende:


Besondere Beachtung verdient die IP-Adresse, wobei hier die immer noch gängige Version IPv4 ausführlich behandelt werden soll.

IP-Adresse (IPv4)


Zur Adressierung der Netzknoten, die innerhalb der TCP/IP-Familie auch Hosts heißen, werden Adressen verwendet, die jeweils aus einer 32 Bit langen Binärzahl bestehen. Diese wird der bessern Lesbarkeit halber in Form von vier, durch Punkte getrennten, Bytes dezimal dargestellt.

193.170.8.138
11000001.10101010.00001000.10001010

Weiters sind bei IP-Adressen zwei Teile zu unterscheiden, deren Längen variabel sind, die Netzwerkadresse (Net-ID) und die Hostadresse (Host-ID). Man teilt Netzwerke wie folgt ein:


31
30
29
28
27
24
16
8
0
Klasse A 0         Net-ID  Host-ID 
Klasse B 1 0       Net-ID Host-ID 
Klasse C 1 1 0     Net-ID Host-ID 
Klasse D 1 1 1 0 Multicast Adresse (28 Bit)
Klasse E 1 1 1 1 0 Reserviert


Die Netzklassen haben damit folgende leicht überprüfbare Eigenschaften:

  Klasse A Klasse B Klasse C
Klassen-ID 0 10 110
Netz-ID 8 Bit 16 Bit 24 Bit
Host-ID 24 Bit 16 Bit 8 Bit
Netzmaske 255.0.0.0 255.255.0.0 255.255.255.0
Wertebereich
(theoretisch)
0.0.0.0
127.255.255.255
128.0.0.0
191.255.255.255
192.0.0.0
223.255.255.255
Anzahl der Netze 27=128 26*256 =16384 25*256*256=2097152
Anzahl der Hosts 2563=16777216 2562=65536 2561=256


Die Klassen D und E sind besondere Netzklassen. Die Identifikation für die Adressen der Klasse D ist die Bitkombination 1110. Der Adressbereich geht von 224.0.0.0 bis 239.255.255.255. Durch den 28 Bit langen Identifikator für die Multicast-Gruppen, ist die Bildung von bis zu 268 435 456 Gruppen möglich.
Kennzeichnung der Klasse E ist die Bitkombination »11110« in den fünf Bits höchster Ordnung. Bei den Adressen der Klasse E handelt es sich um reservierte Adressen für zukünftige Anwendungen. Der Adressbereich reicht von 240.0.0.0 bis 247.255.255.255.

Die Netzmaske hat den gleichen Aufbau wie eine IP-Adresse und hat die Aufgabe, Netzwerkadresse und Hostadresse zu trennen. In der Binärdarstellung erhält man die Netzmaske, indem man die Netz-ID auf 1 und die Host-ID auf 0 setzt. In unserem einleitenden Beispiel, das die IP-Adresse eines TGM-Servers zeigt, stellen wir fest, dass die Adresse zu einem Klasse-C-Netz gehört und fügen die passende Netzmaske hinzu. Wir wenden nun auf IP-Adresse und Netzmaske eine bitweise AND-Verknüpfung an, die bekanntlich folgende Rechenregeln kennt:

A 0 0 1 1
B 0 1 0 1
A AND B 0 0 0 1

Die Verknüpfung liefert 1, falls beide Summanden 1 sind, sonst 0, was auch im [fasch,wahr]-Modell nachvollziehbar ist.

  Dezimal Binär
IP-Adresse 193.170.8.138 11000001.10101010.00001000.10001010
Netzmaske 255.255.255.0 11111111.11111111.11111111.00000000
IP AND Mask 193.170.8.0 11000001.10101010.00001000.00000000
Broadcast 193.170.8.255 11000001.10101010.00001000.11111111


Die AND-Verknüpfung liefert eine Adresse, die aus der Netz-ID und dem Wert 0 im letzten Byte zusammengesetzt ist, die Netzwerkadresse.

Es gilt:

Neben der Netzwerkadresse, die natürlich keinem Host zugewiesen werden darf, ist auch noch die zum Netzwerk gehörige Broadcastadresse reserviert, die im Bereich der Host-ID acht mal die 1, also den Dezimalwert 255 enthält. Damit sollte klar sein, dass in einem Klasse-C-Netz lediglich 254 Hosts mit den Adressen X.X.X.1 - X.X.X.254 adressierbar sind und Analoges gilt für die anderen Netzklassen.

Daneben treten speziell in Routingtabellen ungültige IP-Adressen auf, die ebenfalls nicht vergeben werden dürfen. Sie haben folgende Bedeutung, wobei das Beispiel für ein Klasse-B-Netz gilt:

0.0.0.0 beliebiger Host mit Netzwerk und Host-ID
0.0.x.x Host in beliebigem Netz
255.255.255.255 Broadcast im lokalen Netz
x.x.255.255 Broadcast im angegebenen Netz
127.0.0.0 Loopbackadresse für Testzwecke
127.0.0.1 Host bei Loopback

Wir sind damit in der Lage, eine Routingtabelle zu analysieren. Wir betrachten dazu noch einmal die drei Netze aus dem Kapitel über Router samt der nun etwas komplexeren Routingtabelle auf Router 01, die natürlich als Beispiel aufzufassen ist:

Routingtabelle Router 01
Netzwerkziel Netzwerkmaske Gateway Schnittstelle Anzahl
192.168.1.0 255.255.255.0 192.168.1.1 192.168.1.1 1
192.168.0.0 255.255.255.0 192.168.0.1 192.168.0.1 1
192.168.2.0 255.255.255.0 192.168.0.2 192.168.0.1 2
0.0.0.0 0.0.0.0 192.168.0.2 192.168.0.1 1
255.255.255.255 255.255.255.255 192.168.0.1 192.168.0.1 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1


Die ersten beiden Zeilen routen Datagramme in die entsprechenden Netzwerke über die geeigneten Schnittstellen bzw. Gateways, Zeile 3 routet ins Netzwerk 192.168.2.0, Zeile 4 setzt eine Defaultroute in der Annahme, dass es im Netzwerk 192.168.2.0 noch weitere Router gibt, Zeile 5 routet Broadcasts, Zeile 6 schickt Loop-Backs an den Router selbst.

Routingtabellen können noch wesentlich komplizierter aussehen, vor allem dann, wenn Subnetze zu bedienen sind oder Mehrfachwege zu anderen Routern programmiert sind. Die Erstellung der Tabellen erfolgt natürlich in der Regel softwareunterstützt, ihre Wartung wird zum Teil von eigenen Protokollen wie RIP, IGRP, OSPF oder NLSP bewerkstelligt, wobei Teile von Routingtabellen von einem Router zum anderen übertragen oder Algorithmen zur Wegzeitverkürzung angewendet werden.

Grundsätzlich ist die Vergabe der Netz-ID in einem LAN völlig frei, jedenfalls solange sichergestellt ist, dass das Netz nicht mit größeren Netzwerken wie etwa dem Internet verbunden wird. Im Internet dürfen IP-Adressen - mit Ausnahmen - weltweit nur einmal vergeben werden, damit die Datagramme richtig zugestellt werden können. Eine statische oder dynamische IP-Adresse muss dann beantragt werden. Verfügungsgewalt über die IP-Adressen hat die in den USA ansässige IANA (Internet Assigned Numbers Authority). Die Mieter solcher IP-Adressen sind öffentlich, sie können in der Whois-DB der RIPE NCC (Réseaux IP Européens Network Coordination Centre) abgefragt werden, die die Europa zugeteilten IP-Adressen verwaltet. In der Praxis erhält ein Host seine IP-Adresse vom zuständigen Provider, sie ist das, was im Volksmund Internetzugang heißt.

Damit Netzwerke mit TCP/IP betrieben werden können ohne IP-Adressen zu mieten, wurden einige IP-Ranges freigegeben. Diese Adressen werden im Internet nicht geroutet und dürfen von jedermann kostenfrei verwendet werden.

Netzklasse Anzahl IP-Range
A 1 10.x.x.x
B 16 172.16.x.x - 172.31.x.x
C 256 192.168.x.x


Die IANA hat auch das Klasse-B-Netz 169.254.0.0 für private Netze reserviert. Es wird von Applehosts mit dem Protokoll Rendevouz und von Microsofthosts mit dem Protokoll APIPA (Automatic Private IP Addressing) verwendet und teilt jedem Host automatisch eine IP-Adresse aus diesem Adressraum zu, falls ein DHCP-Server nicht erreichbar ist.

Trotz ihrer scheinbar großen Anzahl, reichen die zur Verfügung stehenden IP-Adressen schon lange nicht mehr aus. Abhilfe schaffen drei Maßnahmen:

Subnetze

dienen dazu, innerhalb der schon definierten Netzklassen durch Router getrennte Teilnetze zu bilden. Dadurch wird eine Strukturierung von Netzwerken innerhalb einer Netzklasse ermöglicht. Bei der Konstruktion ist sicherzustellen, dass die beteiligten Router Host-ID und Teilnetz-ID trennen können. Das geschieht durch Setzen einer sogenannten Subnetzmaske, die die IP-Adresse auch innerhalb der Bytes trennt, ansonsten aber gleich operiert.

Es ergeben sich für das zweite, dritte und vierte Byte:

Subnetzmaske (pro Byte) Hostanteil Anzahl
128 1 7 Bit 126
192 1 1 6 Bit 62
224 1 1 1 5 Bit 30
240 1 1 1 1 4 Bit 14
248 1 1 1 1 1 3 Bit 6
252 1 1 1 1 1 1 2 Bit 2

Die Spalte Hostanteil zeigt, wieviele - hier auf 1 gesetzte - Bits des Maskierbytes durch die in der linken Spalte stehende Subnetzmaske auf die Netz-ID entfallen. Wird also zum Beispiel in einem Klasse-B-Netz eine Subnetzmaske 255.255.224.0 gesetzt, so verbleibt im dritten Byte ein Hostanteil von 5 Bit (Zeile 3). Weil die Randadressen für Netzwerkadresse und Broadcastadresse reserviert sind, können im dritten Byte 30 Adressen vergeben werden, die natürlich mit allen zulässigen Adressen des vierten Bytes kombiniert werden dürfen. Es wären also 30*254 Hosts adressierbar.

Zum besseren Verständnis der Tabelle dient:

Wir zeigen im Folgenden Subnetting an einem einfachen Beispiel:

Das Netzwerk der Klasse C 192.168.1.0 soll in Subnetze aufgeteilt werden, in denen jeweils 30 Hosts adressierbar sind.

  1. Wir berechnen mit Hilfe der Formel das Maskierbyte mit 256-30-2=224 und überzeugen uns, dass das auch die obige Tabelle liefert.
  2. Aufgrund der Netzklasse C ergibt sich damit eine Subnetzmaske: 255.255.255.224
  3. Der Netzanteil im Maskierbyte hat eine Länge von 3 Bit, weshalb wir 8(6) Subnetze erwarten dürfen, deren Subnetzadressen tabellarisch ermittelt werden können. Dabei sind lediglich die Hostanteile mit 0 aufzufüllen. Das erste Subnetz ist problematisch, weil seine Subnetz-ID die Netzadresse des gegebenen Klasse-C Netzes ist.

          Maskierbyte Subnetz-ID
    0 0 0 0 0 0 0 0 192.168.1.0
    0 0 1 0 0 0 0 0 192.168.1.32
    0 1 0 0 0 0 0 0 192.168.1.64
    0 1 1 0 0 0 0 0 192.168.1.96
    1 0 0 0 0 0 0 0 192.168.1.128
    1 0 1 0 0 0 0 0 192.168.1.160
    1 1 0 0 0 0 0 0 192.168.1.192
    1 1 1 0 0 0 0 0 192.168.1.224

    An dieser Stelle sei erwähnt, dass in der einschlägigen Literatur die Darstellung der Netzklassen und Subnetze gelegentlich auch in der Form Netzadresse/Anzahl der Netzbits erfolgt. Das dritte Subnetz wäre demnach durch 192.168.1.64/27 beschreibbar.

  4. Die Broadcastadressen der Subnetze enthalten in den Hostteilen überall 1. Das letzte Subnetz ist problematisch, weil seine Broadcastadresse mit der des gegebenen C-Netzes übereinstimmt.

          Maskierbyte Broadcast
    0 0 0 1 1 1 1 1 192.168.1.31
    0 0 1 1 1 1 1 1 192.168.1.63
    0 1 0 1 1 1 1 1 192.168.1.95
    0 1 1 1 1 1 1 1 192.168.1.127
    1 0 0 1 1 1 1 1 192.168.1.159
    1 0 1 1 1 1 1 1 192.168.1.191
    1 1 0 1 1 1 1 1 192.168.1.223
    1 1 1 1 1 1 1 1 192.168.1.255


  5. Der Bereichsanfang ergibt sich, wenn man alle Hostbits auf 0 und das letzte Bit auf 1 setzt.

          Maskierbyte Bereichsanfang
    0 0 0 0 0 0 0 1 192.168.1.1
    0 0 1 0 0 0 0 1 192.168.1.33
    0 1 0 0 0 0 0 1 192.168.1.65
    0 1 1 0 0 0 0 1 192.168.1.97
    1 0 0 0 0 0 0 1 192.168.1.129
    1 0 1 0 0 0 0 1 192.168.1.161
    1 1 0 0 0 0 0 1 192.168.1.193
    1 1 1 0 0 0 0 1 192.168.1.225



  6. Das Bereichsende erhält man, indem man alle Hostbits auf 1 und nur das letzte Bit auf 0 setzt.

          Maskierbyte Bereichsende
    0 0 0 1 1 1 1 0 192.168.1.30
    0 0 1 1 1 1 1 0 192.168.1.62
    0 1 0 1 1 1 1 0 192.168.1.94
    0 1 1 1 1 1 1 0 192.168.1.126
    1 0 0 1 1 1 1 0 192.168.1.158
    1 0 1 1 1 1 1 0 192.168.1.190
    1 1 0 1 1 1 1 0 192.168.1.222
    1 1 1 1 1 1 1 0 192.168.1.254

Damit sind die Vorbereitungen getroffen. Es sei noch erwähnt, dass speziell Internet Service Provider Verfahren zur Verfügung haben, die auch die problematischen Randbereiche ohne Konflikt mit den übergeordneten Netzklassen routen (CIDR - classless internet domain routing).

Die tatsächliche Konfiguration des Subnetzes 192.168.1.64/27 (Zeile 3) als Subnetz von 192.168.1.0/24 (siehe obiges Beispiel) erfolgt nun in drei Schritten:


zurück
Inhalt
vor