Wolfgang Lösch

Contact© Wolfgang Lösch

Lokale Netze (LAN) — Internet-Protokoll und IP-Adressen

Stand: 2007 (weitere Aktualisierung eingestellt)

Das Internet ist schnell: 0.0043 Sekunden dauert es heute, die gesammelten Werke von William Shakespeare in 200 Sprachen von New York nach Omaha zu schicken – das ist die Zeit, die eine Gewehrkugel braucht, um einen Apfel zu durchschlagen.

Detlef Borchers, Die Zeit Nr.47, 14.11.1997

Im Jahre 1973 wurde von der US-amerikanischen Defense Advanced Research Projects Agency (DARPA) ein Projekt ins Leben gerufen mit dem Ziel, technische Lösungen für die Verbindung von paketvermittelnden Datennetzen auszuarbeiten. Insbesondere sollten Kommunikationsprotokolle entwickelt werden, mit deren Hilfe Computer in die Lage versetzt werden sollten, über mehrere Netzwerke hinweg transparent miteinander zu kommunizieren. Das System von Protokollen, das in der Folgezeit aus diesem Projekt entstand, wurde unter der Bezeichnung TCP/IP Protocol Suite bekannt. Der wahrscheinlich bekannteste Vertreter dieser Suite ist das Internet-Protokoll (Internet Protocol, IP), das im Schichtenmodell der Netzwerkschicht zuzuordnen ist.

Neben dem Internet-Protokoll gibt es eine Fülle von weiteren Protokollen, die in der Netzwerkschicht angesiedelt sind. Zunächst sollen daher einige allgemeine Aspekte der Netzwerkschicht betrachtet werden.

Netzwerkschicht

Während man in der MAC- und in der LLC-Schicht einen Kommunikationspartner als Datenendgerät (oder schlicht Station) bezeichnet, verwendet man in der Netzwerkschicht die Begriffe System oder Knoten. Und zwar muss man in der OSI-Welt unterscheiden zwischen einem Endsystem (ES), auf dem typischerweise der Benutzer mit einer Anwendung arbeitet, und einem Relais-System bzw. Zwischensystem (Intermediate System, IS), das für die Kopplung von Netzen eingesetzt wird. In der TCP/IP-Welt gibt es diese Unterscheidung auch, wobei hier ein Endsystem in der Regel als Host bezeichnet wird, und ein Relais-System als Gateway oder Router.

Neue Begriffe gibt es auch beim Aufbau von Datenblöcken. Während die in der MAC-Schicht gebildeten Datenblöcke als Rahmen (Frames) bezeichnet werden, heißen die in den höheren Schichten vorkommenden Datenblöcke meist Pakete (Packets), bei einem verbindungslosen Protokoll auch Datagramme (Datagrams).

Um Endsysteme bzw. Hosts identifizieren zu können, muss man ein nach bestimmten Kriterien aufgebautes Adressierungsverfahren anwenden, das jedem System eine weltweit eindeutige (logische) Netzwerkadresse zuordnet. Dabei ist es vorteilhaft, wenn man beim Aufbau der Netzwerkadresse die Wahl hat, entweder netzbezogene oder organisationsbezogene Aspekte in den Vordergrund zu stellen.

Netz(werk)adressen

Physikalische Adressen (bei LANs identisch mit den MAC-Adressen) sind als Netzwerkadressen aus folgenden Gründen ungeeignet:

Leider gibt es in der Netzwerkschicht kein Adressformat, das für mehrere (im Idealfall sogar für alle vorhandenen) Netzwerkprotokolle geeignet ist. Unterschiedliche Netzwerkprotokolle verwenden völlig verschiedene Adressformate. Einige Beispiele mögen dies verdeutlichen:

Protokolle der Netzwerkschicht
Netzwerkprotokoll Netzwerkadressen
CLNP (Connectionless Network Protocol) NSAP-Adressen (Network Service Access Point)
IP (Internet Protocol) Internet- oder IP-Adressen
IPX (Internet Packet Exchange) Source-Network- + Source-Host-Adressen

IP-Versionen

In den folgenden Abschnitten werden ausschließlich des Internet-Protokoll und die dazugehörigen Internet-Adressen behandelt. Leider gibt es mehrere IP-Versionen, die sich sowohl im Adressformat als auch in der Protokollspezifikation unterscheiden.

IPv4:
Die Version 4 ist der (zur Zeit noch) gültige und offizielle Internet-Standard für das Internet-Protokoll.
IPv6:
Die Version 6 ist die offizielle Nachfolgeversion der Version 4, die vor allem einen größeren und flexibleren Adressraum bietet.
IPv9:
Die Version 9 gibt es gleich zweifach: Einmal als Aprilscherz (RFC 1606 vom 1.4.1994) und einmal als ernstzunehmender Entwurf der Volksrepublik China, der auf einem rein numerischen Adressierungsschema basiert und in China die Version 4 ersetzen soll. Bei beiden Varianten handelt es sich nicht um offizielle Internet-Protokolle.

IP-Terminologie

Es folgt eine Liste von typischen Internet-Fachbegriffen, die in den folgenden Ausführungen immer wieder auftauchen:

Knoten (Node) / Netz(werk)-Knoten (Network Node):
Ein System, das über eine IP-Implementation verfügt und mit anderen Systemen über das Internet-Protokoll kommunizieren kann.
Router / Gateway:
Ein Knoten, der IP-Datagramme zustellen kann, ohne explizit adressiert werden zu müssen.
Host:
Jeder Knoten, der kein Router bzw. Gateway ist.
Link:
Ein Netz oder ein Netzsegment, das durch ein bestimmtes Zugriffsverfahren gesteuert wird (z.B. ein Ethernet-basierendes LAN, ein ATM-Netzwerk oder eine PPP-Verbindung).
Nachbarn (Neighbors):
Knoten am selben Link.
Schnittstelle (Interface):
Anschluss eines Knoten an einen Link (z.b. über eine Netzwerkkarte (Network Interface Card, NIC)).

Internet Protocol Version 4 (IPv4)

Die folgenden Ausführungen beziehen sich ausschließlich auf das Internet-Protokoll in der Version 4. Die Grundideen der Version 6 des Internet-Protokolls werden im Abschnitt Ausblick auf Internet Protocol Version 6 (IPv6) vorgestellt.

Internet-Adressen (IP-Adressen)

In der Internet-Protokollwelt werden Netzwerkadressen als Internet-Adressen oder IP-Adressen bezeichnet. Leider widerspricht das IP-Adressformat dem Grundsatz, dass durch eine Netzwerkadresse genau ein Endsystem identifiziert wird. Jeder Netzanschluss bzw. jede Netzverbindung eines IP-Hosts besitzt (mindestens) eine eigene IP-Adresse!

Adressformate

Für IPv4-Adressen gibt es fünf Adressformate (Klasse A bis Klasse E), die alle einheitlich 4 Byte = 32 bit lang sind. Die Klassen A, B und C werden für Individualadressen genutzt, die Klasse D für Multicast-Adressen und die Klasse E ist für besondere Zwecke reserviert.

IP-Adressklassen
Klasse A 0 Network Identifier Host Identifier
    7 bit 24 bit
         
Klasse B 10 Network Identifier Host Identifier
  14 bit 16 bit
             
Klasse C 110 Network Identifier Host Identifier
  21 bit 8 bit
 
Klasse D 1110 Multicast Group
 
Klasse E 11110 Reserved

Jede Adresse setzt sich aus zwei Teilen zusammen: Network-Identifier (Netzwerk-ID) und Host-Identifier (Host-ID). Die Netzwerk-ID, die häufig auch als Netzwerk-Präfix bezeichnet wird, kennzeichnet ein Netz (oder besser gesagt einen Netzbetreiber, der das Netz administriert) und die Host-ID kennzeichnet die Netzverbindungen eines Hosts zu diesem Netz. Die Adressformate der 3 Klassen unterscheiden sich lediglich dadurch, dass Netzwerk-ID und Host-ID verschieden lang sind. Einige Adressen, die für spezielle Zwecke benötigt werden und daher nicht frei vergeben werden sollten, sind in der folgenden Abbildung aufgelistet:

Spezielle IP-Adressen
Netzwerk-ID Host-ID Adress-Beschreibung Beispiel
0...0 0...0 dieser Host an diesem Netz (Quelladresse) 0.0.0.0
0...0 Host-ID spezifizierter Host an diesem Netz (Quelladresse) 0.0.79.85 (in einem Netz der Klasse B)
1...1 1...1 alle an diesem Netz (Broadcast-Zieladresse) 255.255.255.255
beliebig 0...0 als Adresse verboten 172.24.0.0
beliebig 1...1 alle am spezifizierten Netz (Broadcast-Zieladresse) 172.24.255.255
127 (dez) beliebig interne Schleife im Host 127.1.2.3

Unter Berücksichtigung der reservierten Adressbereiche zeigt die folgende Abbildung die maximale Zahl von möglichen Adressen in den drei Adressklassen A, B und C:

IP-Adressbereiche
Adressklasse Gültiger Bereich von Netzwerk-IDs Maximale Zahl von Netzwerk-IDs Maximale Zahl von Host-IDs pro Netzwerk-ID
A 1 - 126 126 16777214
B 128.0 - 191.255 16384 65534
C 192.0.0 - 223.255.255 2097152 254

Notation

Üblicherweise werden die Adressen in dezimaler Schreibweise angegeben, wobei die vier Bytes jeweils durch Punkte getrennt werden (Dotted-Decimal-Notation), z.B.

dezimal:
10.0.0.16
binär:
00001010 00000000 00000000 00010000

Grundregeln

Bei der Vergabe von IP-Adressen sollten folgende Punkte unbedingt beachtet werden:

Subnetz-Masken

Um die starren Grenzen des IP-Adressformats aufzubrechen, kann man eine sogenannte Subnetz-Maske über die IP-Adressen legen und dadurch das Längenverhältnis zwischen Netzwerk-ID und Host-ID flexibel gestalten. Mit Hilfe der Subnetz-Maske wird ein durch eine Netzwerk-ID spezifiziertes Netz in eine Zahl von Subnetzen aufgeteilt, wobei jedem Subnetz eine bestimmte Zahl von Hosts zugeordnet werden kann. Durch diese Subnetz-Bildung kann ein großes LAN oder ein LAN-Verbund in gewisser Weise strukturiert werden. Genaugenommen ist die Subnetz-Maske ein Notbehelf, um den knapp gewordenen Adressraum der Klasse-A- und Klasse-B-Adressen besser ausnutzen zu können.

Die Subnetzmaske ist eine 32-Bit-Zahl, deren höherwertige Bits auf 1 und deren niederwertige Bits auf 0 gesetzt sind. Durch eine bitweise UND-Verknüpfung mit der IP-Adresse eines Hosts folgt die Subnetz-Nummer bzw. Subnetz-ID. Die Subnetz-Nummer identifiziert somit das Subnetz, zu dem dieser Host Zugang hat. Die folgende Abbildung zeigt ein Beispiel für eine Klasse-B-Adresse:

Subnetzbildung
IP-Adresse Netzwerk-ID Host-ID  
10101100 00011000 01001 111 01010101 = 172.24.79.85
 
    Subnetz-Bits    
Subnetz-Maske 11111111 11111111   11111   000 00000000 = 255.255.248.0
 
Subnetz-Nummer 10101100 00011000 01001 000 00000000 = 172.24.72.0
 
neu strukturierte
IP-Adresse
Netzwerk-ID Subnetz-ID verminderte Host-ID  
10101100 00011000 01001 111 01010101 = 172.24.79.85

Es ist klar zu erkennen, dass der Unterschied zwischen Netzwerk-ID und Subnetz-Nummer durch die auf 1 gesetzten Subnetz-Bits im 3. Oktett bewirkt wird. Es ist üblich, die Gesamtzahl der Einsen der Subnetzmaske an die IP-Adresse direkt anzuhängen, um sich dadurch die explizite Angabe der Subnetzmaske zu sparen. Das obige Beispiel lautet in dieser Schreibweise 172.24.79.85/21.

Wenn vom Netzbetreiber Subnetz-Masken nicht explizit gesetzt werden, gelten die in der folgenden Abbildung gezeigten Standardmasken:

Standardmasken
Adressklasse Standardmaske
binär dezimal
A 11111111 00000000 00000000 00000000 255.0.0.0
B 11111111 11111111 00000000 00000000 255.255.0.0
C 11111111 11111111 11111111 00000000 255.255.255.0

Für Broadcasts stehen folgende Adressen zur Verfügung:

IP-Broadcast-Adressen
Netzwerk-ID Subnetz-ID verminderte Host-ID Adress-Beschreibung Beispiel
beliebig beliebig 1...1 alle am spezifizierten Subnetz (Broadcast-Zieladresse) 172.24.79.255
(unter der Subnetz-Maske 255.255.248.0)
beliebig 1...1 1...1 alle in allen Subnetzen am spezifizierten Netz (Broadcast-Zieladresse) 172.24.255.255

Klasse-B-Netz

Die folgende Abbildung gibt eine Übersicht über die Subnetz-Strukturen in Klasse-B-Netzen. Da es zahlreiche IP-Adressen gibt, die für bestimmte Zwecke reserviert sind, können bei der Subnetz-Bildung nicht alle Kombinationen gewählt werden, die rein theoretisch möglich wären. Insbesondere muss darauf geachtet werden, dass die durch die Extra-Bits charakterisierten Bits der Subnetz-Nummer nicht alle gleichzeitig 0 oder 1 sein dürfen.

Subnetz-Strukturen in Klasse-B-Netzen
Subnetz-Maske 3. Oktett der Subnetz-Maske max. Zahl von Sub­netzen max. Zahl von Hosts pro Subnetz Erstes Subnetz Letztes Subnetz
Erste Host-ID Letzte Host-ID Erste Host-ID Letzte Host-ID
255.255.0.0 ⇔ /16 (Standard-Maske) 00000000 1 65534 x.y.0.1 x.y.255.254 - -
255.255.128.0 ⇔ /17 10000000 0 - - - - -
255.255.192.0 ⇔ /18 11000000 2 16382 x.y.64.1 x.y.127.254 x.y.128.1 x.y.191.254
255.255.224.0 ⇔ /19 11100000 6 8190 x.y.32.1 x.y.63.254 x.y.192.1 x.y.223.254
255.255.240.0 ⇔ /20 11110000 14 4094 x.y.16.1 x.y.31.254 x.y.224.1 x.y.239.254
255.255.248.0 ⇔ /21 11111000 30 2046 x.y.8.1 x.y.15.254 x.y.240.1 x.y.247.254
255.255.252.0 ⇔ /22 11111100 62 1022 x.y.4.1 x.y.7.254 x.y.248.1 x.y.251.254
255.255.254.0 ⇔ /23 11111110 126 510 x.y.2.1 x.y.3.254 x.y.252.1 x.y.253.254
255.255.255.0 ⇔ /24 11111111 254 254 x.y.1.1 x.y.1.254 x.y.254.1 x.y.254.254

Beispiel für Subnetz-Masken

In der obigen Tabelle stellt man fest, dass bei der Bildung von Subnetzen im 3. Oktett gewisse Sprüngen auftreten, deren Größe von der entsprechenden Subnetz-Maske abhängt. Das folgende Beispiel soll dies für die Netzwerk-ID 172.24 anhand der Subnetz-Maske 255.255.224.0 verdeutlichen.

Subnetzbildung am Beispiel eines Klasse-B-Netzes
  Netzwerk-ID  
IP-Netz Klasse B 10101100 00011000 000 00000 00000000 = 172.24.0.0
 
Subnetz-Maske 11111111 11111111 111 00000 00000000 = 255.255.224.0
 
  Netzwerk-ID + Subnetz-ID  
  10101100 00011000 000 00000 00000000 verboten
1. IP-Subnetz 10101100 00011000 001 00000 00000000 = 172.24.32.0
2. IP-Subnetz 10101100 00011000 010 00000 00000000 = 172.24.64.0
3. IP-Subnetz 10101100 00011000 011 00000 00000000 = 172.24.96.0
4. IP-Subnetz 10101100 00011000 100 00000 00000000 = 172.24.128.0
5. IP-Subnetz 10101100 00011000 101 00000 00000000 = 172.24.160.0
6. IP-Subnetz 10101100 00011000 110 00000 00000000 = 172.24.192.0
  10101100 00011000 111 00000 00000000 verboten

Grundregeln

Bei der Einführung von Subnetz-Masken gelten die oben für IP-Adressen genannten Regeln entsprechend:

Die letzte Regel gilt in dieser Form nur für das klassensensitive (classfull) Routing. Beim klassenlosen (classless) Routing kann die Subnetz-Nummer durchaus die Werte 0...0 bzw. 1...1 annehmen. Auf diese Weise erhält man im obigen Beispiel nicht 6, sondern 8 Subnetze.

Als Konsequenz aus den beiden ersten Regeln folgt: Wenn vor der Bildung von Subnetzen zwei Hosts mit derselben Netzwerk-ID über eine Brücke verbunden waren und die beiden Hosts nach der Subnetz-Bildung verschiedene Subnetz-Nummern erhalten haben, muss die Brücke durch einen Router ersetzt werden.

Beispiel für die Bildung von Subnetzen

An einem Beispiel soll nun erläutert werden, wie ein Adressraum der Klasse B mit einer Subnetz-Struktur versehen wird. Die folgenden Abbildungen zeigen einen Ausschnitt aus einem Netz, das über zwei Standorte verteilt ist und sich an jedem Standort über mehrere Gebäude erstreckt: Standort I: Gebäude A und B, Standort II: Gebäude C und D.

Als Ausgangssituation wird ein Netz mit der Netzwerk-ID 172.16 aus dem Klasse-B-Adressraum unter der Standard-Maske 255.255.0.0 betrachtet.

Ausgangssituation
Ausgangssituation

Nun wird mit der Maske 255.255.240.0 eine Subnetzbildung durchgeführt. Standort I erhält die Subnetz-ID 172.16.16 und Standort II die Subnet-ID 172.16.32.

1. Schritt einer Subnetzbildung
1. Schritt einer Subnetzbildung

Schließlich wird die Subnetzbildung durch die Maske 255.255.252.0. verfeinert und es entsteht pro Gebäude jeweils ein Subnetz: Gebäude A mir der Subnetz-ID 172.16.16, Gebäude B mir der Subnetz-ID 172.16.20, Gebäude C mir der Subnetz-ID 172.16.32, Gebäude D mir der Subnetz-ID 172.16.36.

2. Schritt einer Subnetzbildung
2. Schritt einer Subnetzbildung

Nach Durchführung des 2. Schrittes mit der Subnetz-Maske 255.255.252.0 ist es möglich, 62 Subnetze mit jeweils 1022 Hosts zu betreiben. Eine weitere Verfeinerung könnte sein, mit der Subnetz-Maske 255.255.255.0 die einzelnen Gebäude intern zu strukturieren, so dass z.B. jede Abteilung von einem Subnetz versorgt wird. In diesem Fall müßte allerdings die Kommunikation zwischen den Abteilungen eines Gebäudes ebenfalls über Router erfolgen.

Ganz gleich, für welche Subnetz-Struktur man sich auch entscheidet, der entscheidende Punkt ist, dass eine spätere Subnetz-Bildung nur dann ohne erheblichen Aufwand möglich sind, wenn bereits beim ursprünglichen, unstrukturierten Netz die IP-Adressen so vergeben werden, als ob die anvisierte, endgültige Subnetz-Struktur vorliegen würde.

Variable Subnetz-Masken

Um den zur Verfügung stehenden IP-Adressraum effizienter nutzen zu können, gibt es die Möglichkeit, in einem Netz mit einer bestimmten Netzwerk-ID unterschiedliche Netzwerk-Masken zu verwenden, sofern die beteiligten Router dies unterstützen. Indem man zunächst in einem Netz eine Anzahl von Subnetzen definiert, diese dann in weitere Subnetze unterteilt, und diese Sub-Subnetze bei Bedarf weiter unterteilt, kann man eine ganze Hierarchie von Subnetzen aufbauen.

Ein Beispiel mit der Netzwerk-ID 10 aus dem Klasse-A-Adressraum mag dies verdeutlichen:

Subnetzbildung mit variablen Subnetz-Masken
10.0.0.0/8   →   10.1.0.0/16   →   10.1.1.0/24    
10.1.2.0/24


10.1.252.0/24
10.1.253.0/24   →   10.1.253.32/27
10.1.253.64/27


10.1.253.160/27
10.1.253.192/27
10.1.254.0/24    
10.2.0.0/16    


10.252.0.0/16
10.253.0.0/16   →   10.253.32.0/19
10.253.64.0/19


10.253.160.0/19
10.253.192.0/19
10.254.0.0/16    

Auf diese Weise ist es möglich, ein Netz in verschieden große Subnetze aufzuteilen. Im obigen Beispiel können in den Subnetzen 10.2.0.0/16 bis 10.252.0.0/16, sowie 10.254.0.0/16, jeweils bis zu 65534 Hosts adressiert werden, in den Subnetzen 10.1.1.0/24 bis 10.1.252.0/24, sowie 10.1.254.0/24, jeweils bis zu 254 Hosts, in den Subnetzen 10.253.32.0/19 bis 10.253.192.0/19 jeweils bis zu 8190 Hosts und in den Subnetzen 10.1.253.32/27 bis 10.1.253.192/27 jeweils bis zu 30 Hosts.

Das Kommando ifconfig / ipconfig

Um festzustellen, wie ein System für den Netzbetrieb unter IP konfiguriert ist, gibt es bei allen bekannten Betriebssystemen das Zeilenkommando ifconfig bzw. ipconfig. Standarmäßig wird hierbei die IP-Adresse, die Subnetzmaske und das Standard-Gateway (Standard-Router) für jeden an IP gebundenen Netzwerk-Adapter angezeigt. Unter Windows 2000 sieht die Syntax folgendermaßen aus:


   ipconfig [/? | /all | /release [Adapter] | /renew [Adapter]
            | /flushdns | /registerdns
            | /showclassid Adapter
            | /setclassid Adapter [Klassenkennung] ]

   Adapter    Ganzer Name oder Zeichen mit "*" und "?", wobei
              "*" für beliebig viele und "?" für ein Zeichen steht.
   Optionen
       /?           Zeigt diesen Hilfetext an.
       /all         Zeigt die vollständigen Konfigurationsinformationen an.
       /release     Gibt die IP-Adresse für den angegebenen Adapter frei.
       /renew       Erneuert die IP-Adresse für den angegebenen Adapter.
       /flushdns    Leert den DNS-Auflösungscache.
       /registerdns Aktualisiert alle DHCP-Leases und registriert DNS-Namen.
       /displaydns  Zeigt den Inhalt des DNS-Auflösungscaches an.
       /showclassid Zeigt alle DHCP-Klassenkennungen an, die für diesen Adapter
                    zugelassen sind.
       /setclassid  Ändert die DHCP-Klassenkennung.

Internet-Protokoll

Das in der Internet-Welt eingesetzte Netzwerkprotokoll heißt schlicht und einfach Internet Protocol (IP). Es handelt sich hierbei um ein Protokoll, das ohne Bestätigungen arbeitet und eine verbindungslose Kommunikation innerhalb der Netzwerkschicht ermöglicht. Auch hier muss man zwischen zwei Versionen unterscheiden: IPv4 und IPv6.

Die folgende Abbildung zeigt den prinzipiellen Aufbau eines IPv4-Datagramms.

Aufbau eines IPv4-Datagramms
Version / Header Length 1 Byte
Type of Service (TOS)
PPPDTR00
1 Byte
Total Length 2 Byte
Identifier 2 Byte
Flags / Fragment Offset
DM0xxxxxxxxxxxxx
2 Byte
Time to Live (TTL) 1 Byte
Protocol 1 Byte
Header Checksum 2 Byte
Source IP Address 4 Byte
Destination IP Address 4 Byte
Options / Padding  
Data  
Version (4 bit):
Version von IP.
Header Length (4 bit):
Länge des Headers als Hex-Ziffer in Einheiten von 4 Byte (Wert liegt zwischen 5 und 15, d.h. der Header ist mindestens 20 Byte, höchstens jedoch 60 Byte groß).
Type of Service (TOS):
Qualität der Übertragung:
  • Priority Bits PPP: Routine (000), Priority (001), Immediate (010), Flash (011), Flash Override (100), CRITIC/ECP (101), Internetwork Control (110), Normal Control (111);
  • Delay Bit D: Normal (0), Low (1);
  • Throughput Bit T: Normal (0), High (1);
  • Reliability Bit R: Normal (0), High (1).
Total Length:
Gesamtlänge des Datagramms (bzw. eines Fragmentes) in Byte.
Identifier (Fragment ID):
Kennzeichnung der zusammengehörigen IP-Fragmente.
Flags:
Don't Fragment Bit D,
More Fragments Bit M,
ein ungenutztes Bit 0.
Fragment Offset:
relative Position des Datenfeldes des IP-Fragments zum Datenfeld des ersten IP-Fragments in Schritten von 8 Byte (das Feld ist 13 bit groß).
Time to Live (TTL):
Lebensdauer des Datagramms. Der Wert liegt zwischen 0 und 255 und wird bei jedem Router-/Gateway-Durchgang um 1 verringert. Sobald der Wert auf 0 steht, wird das Datagramm verworfen.
Protocol:
Kennzeichnung des höheren Protokolls, dessen Daten in dem IP-Datagramm transportiert werden (siehe folgende Tabelle).
Header Checksum:
Prüfsumme über den Header.
Source IP Address:
IP-Adresse des Senders.
Destination IP Address:
IP-Adresse des Empfängers.
Options:
Source Route (Vorgabe eines Weges des Datagramms über bestimmte Router durch Angabe der entsprechenden IP-Adressen),
Record Route (Eintragung der IP-Adressen jedes Routers, den das Datagramm passiert hat),
Timestamp (wie Record-Route, jedoch mit Angabe des Zeitpunkts),
Security (Angabe von Sicherheitsklassen für Datagramme).
Padding:
Füllbits (um den Header auf ein Vielfaches von 4 Byte aufzufüllen).
Data:
Daten der höheren Protokollschichten.

Die folgende Tabelle zeigt einige der wichtigsten Protokolle, die auf IP aufsetzen. Die Protokollnummer dieser Protokolle wird im Feld Protocol des IP-Headers mitgeführt.

In IP-Datagrammen transportierte Protokolle
Protokollnummer (dez) Protokoll
1 Internet control message protocol (ICMP)
2 Internet group management protocol (IGMP)
3 Gateway to gateway protocol (GGP)
6 Transmission control protocol (TCP)
8 Exterior gateway protocol (EGP)
9 Interior gateway protocol (IGP)
17 User datagram protocol (UDP)
89 Open shortest path first (OSPF)
92 Multicast transport protocol (MTP)

Differentiated Services Code Point (DSCP)

Mit zunehmender Video- und Sprachübertragung spielt das Thema Übertragungsqualität (Quality of Service, QoS) eine immer größere Rolle. So gibt es verschiedene Verfahren, die sich mit der Priorisierung von IP-Datagrammen auseinandersetzen. Eines dieser Verfahren heißt Differentiated Services. Hier wird bereits vom sendenden Host die Priorität eines IP-Datagramms festgelegt und die Router, die das Datagramm weiterleiten, entscheiden anhand dieser Prioritätsangabe, ob das Datagramm mehr oder weniger bevorzugt dem Empfänger zugestellt wird. Hierbei werden die ersten sechs Bits des TOS-Feldes verwendet, das in diesem Zusammenhang dann als Differentiated Services Code Point (DSCP) bezeichnet wird. Mit dem DSCP wird jedes IP-Datagramm einer bestimmten Klasse und innerhalb dieser Klasse einer Behandlungsstufe zugeordnet. Dabei bestimmen die ersten drei Bits die Klasse und die weiteren drei Bits die Behandlungsstufe.

Um zu verhindern, dass ein sendender Host Missbrauch treibt, indem er sich selbst eine unzulässig hohe Priorität einräumt, werden an den Übergängen zu aktiven Netzwerkkomponenten sogenannte Vertrauensgrenzen (Trust Boundaries) definiert. An diesen Grenzen kann der Netzadministrator entscheiden ob er den DSCP-Einstellungen der einkommenden IP-Datagramme glaubt oder diese mit eigenen Werten überschreiben möchte. Typischerweise stellen die Ports von Switch-Systemen solche Vertrauensgrenzen dar.

Fragmentierung und MTU

Ein IP-Datagramm muss über die verschiedenartigsten physikalischen Netze übertragen werden können. Da nun jedes dieser Netze sein eigenes Rahmenformat mit sich bringt, kann es zu Problemen kommen, wenn das IP-Datagramm zu groß ist. Ein Ethernet-Rahmen z.B. kann maximal 1500 Byte Daten aufnehmen. Diese maximal mögliche Zahl von Bytes, die ein Schicht-2-Rahmen in seinem Datenfeld aufnehmen kann, wird als Maximum Transmission Unit (MTU) bezeichnet. Ein IP-Datagramm, dessen Gesamtgröße diesen Wert übersteigt, kann demnach nicht übertragen werden. Um aus diesem Dilemma herauszukommen, gibt es zwei Möglichkeiten: Fragmentierung des IP-Datagramms und/oder Path-MTU-Discovery.

Die folgende Tabelle zeigt einige charakteristische MTU-Werte.

Maximum Transmission Unit (MTU)
Physikalisches Netzwerk MTU
Ethernet 1500
Ethernet + Point-to-Point Protocol (PPPoE) 1492
Ethernet + LLC1 1497
Ethernet + LLC1 + SNAP 1492

Fragmentierung

Wenn ein IP-Datagramm über ein physikalisches Netz übertragen werden soll, dessen MTU kleiner ist als die Gesamtlänge (Total Length) des Datagramms, wird das Datagramm vor der Übertragung in Bruchstücke zerlegt. Diesen Prozess nennt man Fragmentierung und die Bruchstücke heißen IP-Fragmente. Jedes IP-Fragment stellt wiederum ein komplettes IP-Datagramm dar. Der Prozess der Fragmentierung läuft folgendermaßen ab:

Die IP-Fragmente werden erst im Ziel-Host wieder zusammengesetzt. Gateways und Router können zwar (und müssen gegebenenfalls) fragmentieren, können aber Fragmente nicht wieder zusammensetzen. Die Identifizierung der zusammengehörigen Fragmente basiert auf den IP-Adressen (Quelle und Ziel), der Nummer des im IP-Header spezifizierten Protokolls und der Fragment-ID.

Beispiel

Das folgende Beispiel zeigt die Fragmentierung eines IP-Datagramms mit der ID = 1234 in 4 IP-Fragmente. Die Gesamtlänge des ursprünglichen Datagramms beträgt 12000 Byte und es wird eine MTU von 3300 angenommen.

Beispiel für die Fragmentierung eines IP-Datagramms
IP-Header (20 Byte)
Gesamtlänge = 12000
Fragment-ID = 1234
More-Fragments-Bit = 0
Fragment-Offset = 0
Daten
(11980 Byte = 3280 Byte + 3280 Byte + 3280 Byte + 2140 Byte)
IP-Header (20 Byte)
Gesamtlänge = 3300
Fragment-ID = 1234
More-Fragments-Bit = 1
Fragment-Offset = 0
  IP-Header (20 Byte)
Gesamtlänge = 3300
Fragment-ID = 1234
More-Fragments-Bit = 1
Fragment-Offset = 410
  IP-Header (20 Byte)
Gesamtlänge = 3300
Fragment-ID = 1234
More-Fragments-Bit = 1
Fragment-Offset = 820
  IP-Header (20 Byte)
Gesamtlänge = 2160
Fragment-ID = 1234
More-Fragments-Bit = 0
Fragment-Offset = 1230
Daten (3280 Byte)   Daten (3280 Byte)   Daten (3280 Byte)   Daten (2140 Byte)

Path MTU Discovery

Der kleinste zulässige Wert für die MTU eines physikalischen Netzes ist auf 576 festgelegt. Dieser Wert wird von Hosts bei der Bildung von IP-Datagrammen häufig als Standardwert benutzt, obwohl das Netz, an das der Host angeschlossen ist, eine größere MTU aufweist. Auf diese Weise wird zwar sichergestellt, dass die IP-Datagramme auf ihrer Reise durch verschiedene Netze niemals fragmentiert zu werden brauchen, aber besonders effizient ist diese Methode nicht.

Wird bei der Bildung von IP-Datagrammen dagegen ein sehr hoher Wert für die MTU angesetzt, läuft man Gefahr, dass das Datagramm auf seiner Reise (möglicherweise mehrfach) fragmentiert werden muss. Auch diese Methode ist alles andere als effizient.

Das Optimum wäre also, die kleinste auf dem Übertragungsweg vorkommende MTU zu ermitteln und diese bei der Bildung der IP-Datagramme heranzuziehen. Dieses Verfahren, das als Path MTU Discovery bezeichnet wird, sieht folgendermaßen aus: Der sendende Host schickt ein IP-Datagramm mit gesetztem Don't-Fragment-Bit an den Ziel-Host. Die Gesamtlänge des Datagramms entspricht der MTU des lokalen Netzes, an das der Host angeschlossen ist. Wenn das Datagramm ungehindert durchkommt, ist die optimale MTU bereits gefunden. Wenn das Datagramm für ein Transfernetz oder eine Teilstrecke zu groß ist, erhält der sendende Host eine ICMP-Fehlernachricht Destination Unreachable mit dem Fehlercode 4 (Fragmentation needed and Don't Fragment Bit set) zurück und er wiederholt den vorigen Schritt für einen kleineren MTU-Wert. Diese Prozedur wird so lange wiederholt, bis man den größtmöglichen Wert für die MTU gefunden hat. Dieser Wert sollte mit der kleinsten auf dem gesamten Übertragunsweg vorkommenden MTU identisch sein und stellt somit den optimalen Wert dar, der von nun an bei der Bildung von IP-Datagrammen zugrunde gelegt wird.

Das ganze Vefahren lässt sich auch manuell mit Hilfe des Protokolls ICMP, genauer gesagt mit dem PING-Kommando, durchführen (siehe Abschnitt Manuelle MTU-Bestimmung im Kapitel ARP, ICMP und PING).

Ausblick auf Internet Protocol Version 6 (IPv6)

Die Version 6 des Internet-Protokolls weist gegenüber der Version 4 folgende Änderungen bzw. Erweiterungen auf:

Internet-Adressen

Gegenüber IPv4 wurde die Größe der IPv6-Adressen von 32 bit auf 128 bit = 16 Byte erhöht. Theoretisch steht damit die gigantische Zahl von 3.4·1038 Adressen zur Verfügung.

Leider wurde auch hier nicht das Prinzip befolgt, einem Endsystem eine eindeutige Adresse zuzuweisen. Stattdessen besitzt auch hier, wie bei IPv4, jede Schnittstelle eines Knotens, d.h. jeder Anschluss an einen Link, eine eigene Adresse.

Notation

Während IPv4-Adressen in 8-bit-Blöcken (Byte, Oktett) in dezimaler Schreibweise notiert werden, werden IPv6-Adressen in 16-bit-Blöcken in hexadezimaler Schreibweise notiert, wobei die 8 Blöcke jeweils durch Doppelpunkte getrennt werden, z.B.

hexadezimal:
2001:0638:0500:0200:02e0:18ff:fe50:b5da

Führende Nullen innerhalb eines 16-bit-Blocks dürfen weggelassen werden. Außerdem kann man genau einmal innerhalb einer Adresse eine ununterbrochene Folge von Null-Blöcken (z.B. 0000:0000:0000) durch 2 Doppelpunkte ersetzen. Die drei folgenden Adressnotierungen sind also gleichwertig:

Vollständige Notation:
2001:0638:0500:0000:0000:0000:0000:0001
Verzicht auf führende Nullen:
2001:638:500:0:0:0:0:1
Zusammenfassung von Null-Blöcken:
2001:638:500::1

Diese Konventionen gelten sowohl für individuelle Adressen, als auch für Multicast- und Broadcast-Adressen.

Adressformate

Die ersten 64 bit einer IPv6-Adresse werden (in der Regel) nur für Routing-Zwecke verwendet und daher als Routing-Präfix (Routing Prefix) bezeichnet. Die letzten 64 bit einer IPv6-Adresse werden als Host-Identifier (Host-ID) bezeichnet, da sie einen einzelnen Host (genauer gesagt: eine Host-Schnittstelle) in einem IP-Netz kennzeichnen. Subnetzmasken gibt es bei IPv6 nicht mehr.

Einige Adressen, die für spezielle Zwecke benötigt werden, sind in der folgenden Abbildung aufgelistet:

Spezielle IPv6-Adressen
Adresse Beschreibung
:: Unspezifizierte Adresse (entspricht 0.0.0.0 bei IPv4)
::1 Interne Schleife (Loopback)
ff00:: Multicast-Adressbereich
fe80:: bis febf:: Bereich für link-lokale Adressen (link local address), die von Routern nicht weitergeleitet werden dürfen und daher nur im gleichen Teilnetz erreichbar sind)

Stateless Address Autoconfiguration (SLAAC)

Bei IPv6 gibt es zwei Arten von automatischer Adresszuweisung: Stateful Address Autoconfiguration mit Hilfe des Protokolls DHCPv6 und Stateless Address Autoconfiguration (SLAAC).

Bei SLAAC werden weder ein spezieller Server noch ein zusätzliches Protokoll benötigt, da SLAAC zum Standardumfang von IPv6 gehört und somit auf jedem IPv6-Host verfügbar ist. SLAAC erlaubt einem Host, sich selber mit IPv6-Adressen zu konfigurieren. Dazu benötigt er Informationen von einem Router, die dieser in Form von sogenannten Router-Ankündigungen (Router Advertisement, RA) verschickt. Diese Router-Ankündigungen enthalten unter anderem Informationen über das Routing-Präfix (die ersten 64 bit der IPv6-Adresse), mit dem sich die Hosts in ihrem Subnetz konfigurieren sollen und die für das entsprechende Subnetz festgelegte IPv6-Standardroute, die in der Regel auf den Router selbst zeigt.

Der SLAAC-Prozess beginnt, sobald ein Host gebootet bzw. das IPv6-Protokoll initialisiert wird. Dabei konfiguriert der Host zunächst aus seiner MAC-Adresse eine link-lokale Adresse:

Temporäre link-lokale Adresse:
fe80::<erste Hälfte der MAC-Adresse>ff:fe<zweite Hälfte der MAC-Adresse>

Über einen Algorithmus, der als Duplicate Address Detection (DAD) bezeichnet wird, wird dann überprüft, ob diese Adresse eindeutig ist. Dieser erste Teil des SLAAC-Prozesses läuft auch ab, wenn für die Adresszuweisung DHCPv6 eingesetzt wird.

Nach der Konfiguration einer link-lokalen Adresse versucht der Host einen Router zu finden, der Router-Ankündigungen verschickt. Mit diesen Router-Ankündigungen wird u.a. das für den Host zutreffende, exakt 64 bit lange Routing-Präfix verschickt. Schließlich konfiguriert der Host hiermit seine endgültige IPv6-Adresse:

Endgültige IPv6-Adresse:
<Routing-Präfix>:<erste Hälfte der MAC-Adresse>ff:fe<zweite Hälfte der MAC-Adresse>

Internet-Protokoll

Die folgende Abbildung zeigt den prinzipiellen Aufbau eines IPv6-Paketes.

Aufbau eines IPv6-Paketes
Version 4 bit
Traffic Class 8 bit = 1 Oktett
Flow Label 20 bit
Payload Length 16 bit = 2 Oktette
Next Header 8 bit = 1 Oktette
Hop Limit 8 bit = 1 Oktette
Source IP Address 128 bit = 16 Oktette
Destination IP Address 128 bit = 16 Oktette
Header Extensions  
Payload  
Version:
Version von IP, hier also 6.
Traffic Class:
Wert zur Festsetzung von QoS-Funktionen und Prioritäten durch den Absender (ähnlich dem Feld Type of Service im IPv4-Header; standardmäßig auf 0 gesetzt).
Flow Label:
Kennzeichnung einer Folge von IP-Paketen, für die der Absender eine besondere Behandlung durch die Router erfordert (standardmäßig auf 0 gesetzt).
Payload Length:
Länge des IP-Paketes ohne IP-Header (d.h. Länge des dem Header folgenden Teils des Paketes).
Next Header:
Kennzeichnung des Headers, der unmittelbar dem IP-Header folgt; dies kann der Header eines höheren Protokolles sein (dann werden dieselben Werte wie im Feld Protocol des IPv4-Headers verwendet), oder aber eine Header-Erweiterung (Extension Header).
Hop Limit:
Wert, der nach jedem Knoten-Durchgang um 1 erniedrigt wird, bis er 0 erreicht hat; dann wird das Paket verworfen (entspricht dem Feld Time to Live im IPv4-Header).
Source IP Address:
IP-Adresse des Senders.
Destination IP Address:
IP-Adresse des Empfängers.
Header Extensions:
Header-Erweiterungen (optional).
Payload:
Daten der höheren Protokollschichten.

Header-Erweiterungen (Extension Headers)

Bei IPv6 gibt es mehrere optionale Header-Erweiterungen (Extension Headers). Sie dienen dazu, zusätzliche Informationen der Netzwerkschicht zu transportieren. Folgende Header-Erweiterungen sind vorgesehen und müssen auch in genau dieser Reihenfolge nach dem IPv6-Header und vor dem Protokoll-Header der höheren Protokollschicht erscheinen:

Jede Erweiterung darf nur einmal auftauchen. Eine Ausnahme bildet der Destination-Options-Header: Dieser kann zweimal erscheinen. Mit Ausnahme des Hop-by-Hop-Headers werden die Erweiterungen nicht von Routern oder Gateways beachtet, sondern erst im Zielsystem ausgelesen und interpretiert.

Hop-by-Hop Options Header

Die Header-Erweiterung für Hop-by-Hop-Optionen wird im Feld Next Header des IPv6-Headers durch den Wert 0 gekennzeichnet und hat folgenden Aufbau:

Aufbau einer Header-Erweiterung für Hop-by-Hop-Optionen
Next Header 8 bit = 1 Oktett
Header Extension Length 8 bit = 1 Oktett
Option Type 8 bit = 1 Oktett
Option Data Length 8 bit = 1 Oktett
Option Data  
Next Header:
Kennzeichnung des Headers, der unmittelbar dieser Header-Erweiterung folgt; dies kann der Header eines höheren Protokolles sein (dann werden dieselben Werte wie im Feld Protocol des IPv4-Headers verwendet), oder aber eine weitere Header-Erweiterung (Extension Header).
Header Extension Length:
Länge der Header-Erweiterung als Vielfaches von 8 Oktetten (ohne die ersten 8 Oktette).
Option Type:
Kennzeichnung der Option
Option Data Length:
Länge des Feldes Option Data in Oktetten.
Option Data:
Daten und Informationen.