3. IP

3.1. Allgemeines

Das IP (Internet Protocol) ist das Hauptprotokoll des Internet layers des TCP/IP-Referenzmodells und gleichzeitig zusammen mit dem TCP (Transmission Control Protocol) das Fundament der Internetarchitektur.

Die Hauptaufgabe des Internet Protokolls ist das Adressieren von Hosts sowie das Fragmentieren von Nutzdaten der darüberliegenden Schicht. IP stellt die Ende-zu-Ende-Verbindungen zwischen den Hosts her. Der darüberliegenden Schicht bietet IP einen sogenannten unzuverlässigen und verbindungslosen Dienst an. Das heißt, es ist nicht sichergestellt, dass die Datengramme (wir erinnern uns - im Internet layer heißen die Daten Datengramme) fehlerfrei oder überhaupt ankommen. Packete können z.B. verlorengehen, wenn sie auf einen defekten Router (Verteilungsknoten) treffen, Opfer eines Stromausfalls werden oder die Leitung zu schlecht ist.

Es gibt auch keine Möglichkeit, ein zwar angekommenes, aber fehlerhaftes Datengramm erneut anzufordern. Es wird nicht mal garantiert, dass Datengramme überhaupt ankommen. Doch dies muss kein Nachteil sein, wie wir später noch sehen werden. Diese Aufgaben werden dann von höheren Schichten wahrgenommen.

Jedes IP-Datengramm besteht aus einem Header und einem Rumpf. Im Header sind allgemeine Daten zum Datengramm enthalten, wie z.B. Quell- und Zieladresse. Der Rumpf enthält die Nutzdaten für die nächste Schicht (Achtung: In die Nutzdaten des IP-Datengramms sind die Segmente (TCP) bzw. Pakete (UDP) des Transport layers eingebettet - siehe Kapselung). Ein typisches IP-Datengramm ist einige hundert Byte groß.

IP-Datengramm-Schema

3.2. IP-Headerformat

Ein IP-Header besteht aus einem festen Teil von 20 Byte Länge und einen optionalen Teil. Der Header selbst hat immer eine Größe von einem Mehrfachen von 32 Bytes, also z.B. 192 Bytes oder 224 Bytes.

IP-Header: Felder

Die folgende Tabelle gibt einen Überblick über die Felder des IP-Headers:

Feld Feldlänge in Bytes Beschreibung
Version 4 gibt Version des verwendeten IP-Standarts an, momentan wird mit IP-Version "4" gearbeitet
Internet Header Lenght 4 gibt die Länge des gesamten IP-Headers in Vielfachen von 32 Bit an, IHL ist notwendig, da das Optionsfeld eine variable Länge aufweist
Type of Service 8 definiert den Einsatzzweck des IP-Datengramms, Angabe der Dienstart und weiterer Optionen (vorrangige Behandlung (Priorität), optimierte Übertragung bezüglich Durchsatz, Verzögerung oder Zuverlässigkeit), Feld wird leider nicht von jeden Router unterstützt
Total Lenght 16 Gesamtlänge des Datengramms, inklusive IP-Header und Nutzdaten, beträgt maximal 576 Bytes, größere Datengramme werden vor dem Senden fragmentiert
Identification 16 Kennwert zur Zuordnung von Fragmenten zu einem Datagramm
Flags 3 enthält entweder:
  • "Don't fragment", falls Datengamm nicht fragmentiert ist
  • "More fragments", falls noch mehr zu einen darüberliegendsen Layer gehörende Fragmente kommen
  • oder "Last fragment", falls mit dem Datengramm das letzte Fragment des darüberliegenden Layers transportiert wird
Fragment Offset 13 gibt die Position des transportierten Fragmentes an (z.B. "dies hier ist das zehnte Fragment")
Time-to-Live (TTL) 8 gibt verbleibende Restlebensdauer des Datengramms an, fällt der Wert auf Null, wird das Datengramm verworfen, jeder Router reduziert das Feld TTL um mindestens eine Einheit, Standart-Einstellung ist "64"
Protocol 8 gibt an, welches Protokoll der Nutzdatenteil verwendet, Angabe erfolgt per Zahlencode, z.B.:
  • 1 = ICMP (Internet Control Message Protocol)
  • 2 = IGMP (Internet Group Management Protocol)
  • 6 = TCP (Transmission Control Protocol)
  • 8 = EGP (Exterior Gateway Protocol)
  • 17 = UDP (User Datagram Protocol)
  • 29 = ISO TP4 ISO Transport Class 4 Protocol
  • 88 = IGRP (Interior Gateway Routing Protocol) (Cisco-propritär)
  • 89 = OSPFIGP (Open Shortest Path First Interior Gateway Protocol)
Header Checksum 16 enthält eine Prüfsumme, die den Header auf Fehler überprüft (nicht die Nutzdaten)
Source Adress 32 gibt Adresse des Hosts an, der Datengramm erzeugt und abgesendet hat (Quelladresse)
Destination Adress 32 gibt Adresse des Hosts an, für den das Datengramm bestimmt ist (Zieladresse)
Options variabel IP-Datengramme können durch Optionen an die Anforderungen der darüberliegenden Protokollschichten angepasst werden, leider werden die IP-Optionen nicht von jeden Router unterstützt
Padding variabel Füllbits, der Header wird mit Nullen aufgefüllt, um sicherzustellen, dass er nur aus vollständigen 32 Bit-Werten besteht

3.3. IP-Adressierung

3.3.1. Allgemeines

Um Verwechslungen zu vermeiden, braucht jeder Rechner, der an das Internet angeschlossen wird eine eindeutige Kennung. Diese Aufgabe erfüllt die IP-Adresse. Die IP-Adresse ist eine 32-Bit lange (= 4 Bytes) Binärzahl (Aha, deshalb sind die IP-Header-Felder Source Adress und Destination Adress auch 32 Bit lang), etwa:

11000000 10101000 00010010 01001001

Der besseren Lesbarkeit wegen fasst man jeweils ein Binär-Oktett (8 Bit) zu einer Dezimalzahl im Bereich zwischen 0 und 255 zusammen und trennt die vier neuen Zahlenblöcke mit einem Punkt. Unsere IP-Adresse würde dann etwa so aussehen:

192.168.18.73

Der Wertebereich für jeden Zahlenblock liegt wie gesagt zwischen 0 und 255, wobei die Werte 0 für die Adressierung eines Netzwerkes und 255 für Broadcasts reserviert sind. Jede IP-Adresse besteht aus einer Netzwerkadresse und aus einer Systemadresse. Diese Untergliederung wird bei der Netz-Klassifizierung gebraucht.

3.3.2. Netz-Klassifizierung

Das Internet, wie wie es kennen, besteht aus vielen, kleinen Teilnetzen, z.B. Intranets von großen Firmen oder Organisationen. Man könnte auch Provider (ISPs) mit ihren Kunden als Netzwerke bezeichnen, nur wählen sich die Netzwerkrechner hier nur zeitweise in das Internet ein und sind nicht ständig online (z.B. Modemverbindungen).

Einige Teilnetze können sich dabei zu einem Internet verbinden (z.B. ein Internet zwischen Banken). Die Verbindung zwischen allen Teilnetzen und allen Internets nennt man das Internet. Die folgende Grafik gibt einen Überblick über die Struktur des Internets:

Struktur des Internets

Wie wir gesehen haben, können die Teilnetze bezüglich ihrer Größe sehr unterschiedlich sein. Um diese zu gliedern verwendet man sog. Netz-Klassen. Es gibt fünf Netz-Klassen, geordnet nach der Anzahl ihrer Mitglieder, die man auch mit den Buchstaben A bis E bezeichnet.

3.3.2.1. Klasse-A-Netze

Wie bereits erwähnt, besteht eine IP-Adresse aus einen Teil zur Identifizierung des Zielnetzwerkes (hier mit "a" bezeichnet) und einen zur Identifizierung des Zielhosts (hier mit s bezeichnet). Eine Klasse-A-IP-Adresse hat demnach die folgende Form:

0aaaaaaa ssssssss ssssssss ssssssss

Klasse-A-Netzwerke werden verwendet um Teilnetze mit sehr vielen Rechnern anzuschließen. So können 16.777.216 Zielrechner innerhalb des Netzwerkes adressiert werden (224). Allerdings kann es nur 128 (27) solcher Klasse-A-Netze geben, da nur sieben Stellen für die Zielnetzwerk-Identifizierung verwendet werden (mit "a" gekenntzeichnete Bits in der IP-Adresse). Die vorangestellte 0 dient dazu, dem Router klarzumachen, dass es sich hier um ein Klasse-A-Netzwerk handelt (er weiß das ja nirgendwoher).

Klasse-A-Netzwerk lassen sich an IP-Adressen zwischen 1.0.0.0 und 126.0.0.0 erkennen, wobei die Nullen natürlich nur symbolisch sind (sie steht nur für den Teil der IP-Adresse, der die Hosts adressiert). Auch das lässt sich wieder mathematisch überprüfen, denn es gibt genau 126 Möglichkeiten, ein Zielnetzwerk zu adressieren (nein, nicht 128, da die 0.0.0.0 und die 256.0.0.0 nicht genutzt werden dürfen).

Ein typisches Klasse-A-Netzwerk ist das Milnet, das Military Network in den USA. Da die wenigsten Klasse-A-Netze auch tatsächlich 16.777.216 Hosts verwalten (das sind über 16 Millionen Computer!), werden hier meist sehr viele IP-Adressen verschwendet (sie werden weltweit knapp, Abhilfe soll mit IPv6 geschaffen werden, siehe entsprechendes Kapitel).

3.3.2.2. Klasse-B-Netze

Klasse-B-Netzwerke werden für mittelgroße Teilnetzwerke verwendet und haben folgende Form:

10bbbbbb bbbbbbbb ssssssss ssssssss ssssssss

Es können insgesamt maximal 2 14 (entsprechend den b-Bits in der IP-Adresse), also 16.384 Klasse-B-Netzwerke existieren. Jedes Klasse-B-Netzwerk kann 65.536 Zielsysteme (2 16)(s-Bits) verwalten. Auch hier benötigt man wieder eine Kennung für Router. Bei Klasse-B-Netzwerken werden dazu die ersten beiden Bits der IP-Adresse auf "10" gesetzt.

Klasse-B-Netzwerke lassen sich an IP-Adressen von 128.1.0.0 bis 191.254.0.0 erkennen. Rechnerisch mit den Methoden der Statistik überprüft ergibt das auch hier wieder (191-128+1)x(254-1+1) (+1 wegen Einschließlichkeitsproblem), also 16.256 tatsächlich nutzbare Netzwerke (nicht 16.384, da das zweite Byte die reservierten Werte 0 und 255 nicht annehmen kann.)

Klasse-B-Netzwerke werden heutzutage von verschiedenen größeren, internationalen Firmen genutzt, z.B. zur Anbindung des Intranets von Siemens an das Internet. Auch hier werden teilweise Adressen verschwendet, wenn nicht die tatsächlich mögliche Anzahl von 65.536 Hosts angeschlossen wird.

3.3.2.3. Klasse-C-Netze

Mit Klasse-C-Netzwerke können kleinere Teilnetzwerke angebunden werden. Eine IP-Adresse eines Klasse-C-Netzwerkes hat folgende Form:

110ccccc cccccccc cccccccc ssssssss

Wie wir sehen kann es in einem Internet (oder dem Internet) 2.097.152 Teilnetze geben (2 21), dafür können nur 254 Hosts adressiert werden (2 8-2). Die Routerkennung ist hier "110" für die ersten drei Bits der IP-Adresse. Klasse-C-Netzwerken sind besonders im Privat-, Bildungs- und Mittelstandsbereich beliebt, wo die Rechnerzahl 254 Hosts nicht überschreitet.

Klasse-C-Netzwerke lassen sich allgemein an Netzwerkadressen zwischen 192.0.1.0 und 223.255.254.0 erkennen. Das ergibt hier (223-192+1)x(255-0+1)x(254-1+1) Zielnetzwerke, also 2.080.768 tatsächlich nutzbare Klasse-C-Netzwerke.

3.3.2.4. Klasse-D-Netze

Klasse-D-Netzwerke sind vollkommen unterschiedlich von Klasse-A-, Klasse-B- und Klasse-C-Netzwerken. Sie sind keine Netzwerke im eigentlichen Sinne mehr, sondeln bezeichnen sogenannte Multicast-Adressen. Diese Multicast-Adressen werden dazu verwendet ein IP-Datengramm an mehrere Hosts gleichzeitig zu versenden.

Die Routerkennung von Klasse-D-Adressen ist "1110". Dementsprechend haben Klasse-D-Adressen eine Form von:

1110xxxx xxxxxxxx xxxxxxxx xxxxxxxx

Wie man sieht werden dadurch Adressen zwischen 224.0.0.0 und 239.255.255.255 möglich.

Sendet ein Host ein IP-Datengramm an eine Adresse der Klasse D, wird es an alle Mitglieder der adressierten Gruppe versendet. Die Übermittlung des Datengrammes erfolgt, wie beim "reinen" IP üblich ohne Garantie, daß die Daten auch tatsächlich alle Mitglieder einer Gruppe erreichen.

Für das Multicasting wird ein spezielles Protokoll namens Internet Group Management Protocol (IGMP) verwendet. IGMP kennt nur zwei Arten von Paketen: Anfragen und Antworten. Anfragen werden dazu verwendet, zu ermitteln welche Hosts Mitglieder einer Gruppe sind. Antworten informieren darüber, zu welchen Gruppen ein Host gehört. So kann auf einfachen Wege blitzschnell sichergestellt werden, dass man nur diejenigen Hosts adressiert, die man auch wirklich erreichen will.

3.3.2.5. Klasse-E-Netze

Vom Begriff her sind Klasse-E-Netze irreführend. Sie existieren nicht wirklich, sie sind nur für zukünftige Zwecke reserviert. Ihre Routerkennung ist "1111". Klasse-E-Netze haben IP-Adressen zwischen 240.0.0.1 und 254.255.255.254.

Übersicht Klasse-A-, -B-, und -C-Netze

3.3.3. Adressen für private Netze

Angenommen eine kleine Firma möchte mit ihrem Netz gar nicht fest an das Internet angeschlossen sein. Dann steht ihr die Wahl der Netzadressen im Grunde genommen frei, dies kann aber später zu Problemen führen. Stellt man sich vor, die Firma möchten ein Netzwerk mit der Adresse 141.89.0.0 aufbauen. Kein Problem, die Rechner bekommen IP-Nummern von 141.89.1.1 bis 141.90.254.254 und alles sollte funktionieren. Wenn dieses Netzwerk allerdings irgendwann in das "richtige" Internet eingebunden wird kommt es zwangsläufig zu Konflikten mit Hosts irgendwo da draußen, die die gleichen IP-Adressen verwenden.

Abhilfe schaffen hier die sogenannten privaten Adressräume. Hierbei handelt es sich um Bereiche von IP-Adressen die für Intranets frei verwendet werden können, da diese IP-Nummern im Internet nicht weitergeleitet werden dürfen und folglich dort nicht vorkommen. Im Einzelnen handelt es sich um folgende Adressbereiche.:

3.3.3.1. Masquerading

Wie wir gesehen haben, kann es durch die privaten Adressräume weltwelt tausende von Netzen mit der gleichen IP-Adresse geben. Damit diese im Internet eindeutig voneinander getrennt werden können bedient man sich der Masquerading-Technik.

Ein Gateway (spezieller Computer, der ein Intranet und das Internet verbindet), der sich des Masqueradings bedient, funktiert wie ein Übersetzer. Wenn er online ist, hat er nach außen hin eine eindeutige IP-Adresse. Ob das nun immer die gleiche ist oder ob er dynamisch eine IP-Adresse aus dem Adresspool seines Providers zugewiesen bekommt spielt keine Rolle. Wichtig ist, dass er mit dieser IP-Adresse sein Netzwerk nach außen hin repräsentiert.

Wenn jetzt ein Rechner des Intranets eine Verbindung mit einem Rechner des Internets aufgebauen will (z.B. Benutzer X will sich www.gymfloeha.de anschauen :-), so muss er dem Rechner des Internets irgendwie mitteilen, an welchen Intranetrechner er die Daten senden soll, da der Internetserver ja nur die IP-Adresse des Netzwerkes kennt. Der Gateway muss dem IP-Datengramm also noch hinzufügen, von welchen Rechner das Paket kommt. Das kann auf verschiedenen Wegen und verschiedenen Protokollebenen geschehen, so dass ich hier nicht näher darauf eingehen möchte.

Wenn die für den Intranetrechner angeforderten Daten beim Gateway eintreffen, setzt der Gateway die Zieladresse der IP-Pakete auf die IP-Adresse des Intranetrechners zurück und leitet dieses an ihn weiter.

Das bedeutet praktisch, dass die Kommunikationspartner nie die Adresse des Anderen "sehen" können, sondern immer nur die Adresse des Gateways.

Diese Gateways stellen eine besonders sensible Stelle eines jeden Netzwerkes dar, da sie bei unzureichender Konfiguration Angreifer von außen in das Netz eindringen lassen können, obwohl sie eigentlich die Intranetrechner von den Gefahren des Internets schützen sollen (Firewall-Funktionen).

3.3.4. Weitere Einschränkungen und Spezialfälle

Es gibt bei IP bestimmte Einschränkungen und Besonderheiten der Adressvergabe, die teilweise noch nicht erwähnt wurden. Dazu gehört:

3.3.5. Subnetz-Adressen

Da man in den 80er bemerkte, dass man TCP/IP-Netze mit mehr als 1000 Hosts aus technischen Gründen nicht an ein Kabel hängen kann, musste man sich etwas einfallen lassen, um ein Netzwerk in viele kleinere zu teilen. Die Lösung für dieses Problem heißt Subnets.

Subnets (dt.: Unternetze) werden durch die Vergabe von speziellen Subnet-Masken definiert. So kann man erreichen, dass verschiedene Gruppen von Hosts mit der gleichen Subnetmaske in einem größeren Netzwerk zu kleineren Teilnetzen zusammengefasst werden. Das hat folgende Vorteile:

Kommen wir nun zum Technischen: Die Subnetzmaske hat die Form einer IP-Adresse und sieht z.B. so aus:

255.255.255.0

Dabei wird zugrunde gelegt, dass sich der Administrator mehrere Bits vom Hostanteil der IP-Adresse "geborgt" hat und sie zum Netzwerkanteil hinzugefügt hat. So können logischerweise mehr Netzwerke adressiert werden. Um TCP/IP mitzuteilen, wieviele Bits vom Host- zum Netzwerkanteil umgruppiert wurden, werden in der Subnetadresse alle Bits, die in der IP-Adresse jetzt zum Netzwerkanteil gehören, auf "1" gesetzt und alle Bits, die zum Hostanteil gehören auf 0 gesetzt.

Dadurch ergibt sich folgende Tabelle:

Netzwerkanteil in Bits Hostanteil in Bits Subnets Hosts pro Subnet Subnetmaske
Klasse-A-Netzwerke
8 24 0 16.777.216 255.0.0.0
9 23 2 8.388.608 255.128.0.0
10 22 4 4.194.304 255.192.0.0
11 21 8 2.097.152 255.224.0.0
12 20 16 1.048.576 255.240.0.0
13 19 32 524.288 255.248.0.0
14 18 64 262.144 255.252.0.0
15 17 128 121.072 255.254.0.0
Klasse-B-Netzwerke
16 16 0 65.536 255.255.0.0
17 15 2 32.768 255.255.128.0
18 14 4 16.384 255.255.192.0
19 13 8 8.192 255.255.224.0
20 12 16 4.096 255.255.240.0
21 11 32 2.048 255.255.248.0
22 10 64 1.024 255.255.252.0
23 9 128 512 255.255.254.0
Klasse-C-Netzwerke
24 8 0 256 255.255.255.0
25 7 2 128 255.255.255.128
26 6 4 64 255.255.255.192
27 5 8 32 255.255.255.224
28 4 16 16 255.255.255.240
29 3 32 8 255.255.255.248
30 2 64 4 255.255.255.252

Ein Beispiel aus der Tabelle: Wir haben ein Klasse-C-Netzwerk mit ursprünglich 24 Bit Netzwerkanteil und 8 Bit Hostanteil so verändert, dass die IP-Adresse nun auf einen 26-Bit-Netzwerkanteil und einen 6-Bit Hostanteil besteht. Die IP-Adressen entsprechen jetzt folgenden Schema:

nnnnnnnn.nnnnnnnn.nnnnnnnn.nnhhhhhh

Da in einer Subnetmaske der Netzwerkanteil (n) "1" gesetzt wird und der Hostanteil (h) "0" gesetzt wird erhalten wir eine Subnetmaske in der Binärform von:

11111111.11111111.11111111.11000000

was in der Dezimalform

255.255.255.192

entspricht.

Ein anderes Beispiel Rechner A will an Rechner B ein Paket schicken. Leider weiß A nicht, ob beide im selben Subnet sind. Wenn ja, könnte er das Paket direkt senden, wenn nicht, müsste er es über einen Router in ein anderes Subnet schicken. Um die Nummer seines Subnets zu errechnen (bei mehreren Subnets werden Nummern zur Identifikation gebraucht) muss er nur mit seiner IP-Adresse und seiner Netzwerkmaske eine logische AND-Operation machen:

IP-Adresse:  192.168.000.024, binär: 11000000.10101000.00000000.00011000
Subnetmaske: 255.255.255.192, binär: 11111111.11111111.11111111.11000000
------------------------------------------------------------------------
Ergebnis:    192.168.000.000, binär: 11000000.10101000.00000000.00000000

Das Ergebnis 192.168.0.0 ist also seine Subnet-Nummer.

Jetzt muss nur noch auf die Subnet-Nummer des Empfängers geprüft werden:

IP-Adresse:  192.168.000.241, binär: 11000000.10101000.00000000.11110001
Subnetmaske: 255.255.255.192, binär: 11111111.11111111.11111111.11000000
------------------------------------------------------------------------
Ergebnis:    192.168.000.192, binär: 11000000.10101000.00000000.1100000000

Die Subnetz-ID des Empfängers ist also 192, also verschieden von der des Quellhosts. Damit kann das Paket nicht direkt gesendet werden.

Wie wir gesehen haben, wird die Zuordnung von Hosts zu bestimmten Subnets durch den Hostanteil der IP-Adresse des Hosts bestimmt, da die Subnetmaske bei allen Rechnern in allen Subnets gleich ist.

Am häufigsten wird die Subnetbildung wahrscheinlich in Firmen benutzt, die ihr Klasse-B-Netzwerk in 256 Subnets der Klasse C zerlegen. Um dies zu bewerkstelligen, setzt jeder Host seine Subnetzmaske auf 255.255.255.0.

Das Spiel funktioniert natürlich auch andersrum, indem man sich aus dem Netzwerkanteil der Adresse Bits für den Hostanteil leiht. Damit könnte man beispielsweise zwei oder mehr Netzwerke der Klasse C verbinden zu einem sogenannten Supernetz, für die es dann ebenso Supernetzmasken gibt. Eine Beschreibung dessen würde hier aber zu weit ausschweifen.

3.4. Zusammenfassung

Das Internet Protocol ist für die Vergabe von eindeutigen Adressen für alle im Netz angeschlossenen Geräte zuständig. So eine Adresse kann z.B.

192.168.0.5

lauten.

Wichtig ist, dass man weiß, dass IP Daten nicht als "ganzes Stück", sondern häppchenweise, in sogenannten Paketen verschickt. IP stellt nicht sicher, dass die Pakete beim Empfänger ankommen, dafür ist TCP zuständig.

Im Zusammenhang mit IP stehen verschiedene, ziemlich komplizierte Verfahren, um IP-Netzwerke in Unternetzwerke einzuteilen (Subnets), Netzwerke nach ihrer Größe zu klassifizieren (Netz-Klassifizierung) und private Netzwerke ans Internet anzubinden (Masquerading).

vorhergehende Seite Inhalt nächste Seite