Netzwerk-Grundlagen: Das Internet-Protokoll IP

15.09.2005 von PROF. DR. Stephan Euler
Der Erfolg des Internets zeigt, dass eine weltweite Vernetzung unterschiedlichster Rechner und Systeme möglich ist und dass damit funktionierende Anwendungen global angeboten werden können. Die Grundlage diese komplexen Netzwerks ist IP, das Internet Protokoll.

Das Internet ist kein einheitliches Netz, sondern ein Verbund vieler Netze mit unterschiedlicher Technologie. Insgesamt entstand ein riesiger Verbund von Knoten mit weiterhin starkem Wachstum. Bei dem Aufbau des Internets und seiner zukünftigen Erweiterung treten folgende Kernprobleme auf:

Grundlage des Internets ist IP – das Internet Protokoll. IP beinhaltet die Adressvergabe und einen verbindungslosen, unzuverlässigen Datagramm-Dienst. Im OSI-Modell stellt IP die Schicht 3 (Vermittlungsschicht) dar. Unzuverlässig bedeutet, dass keine Garantie bezüglich der richtigen Zustellung von Paketen gegeben wird. Pakete können verfälscht eintreffen, verloren gehen und mehrfach oder in der falschen Reihenfolge ankommen. Das Netzwerk bemüht sich, die Pakete zuzustellen, aber um eventuelle Fehler müssen sich Sender und Empfänger selbst kümmern. Man sagt, das Netz arbeitet nach dem Prinzip Best-Effort.

IP-Adressen

Eine IP-Adresse (in Version 4, IPv4) besteht aus 32 Bit. Üblicherweise schreibt man die Adressen als vier durch Punkte getrennte Dezimalzahlen, also zum Beispiel 120.56.222.94, wobei jede Zahl acht Bit repräsentiert. Sie kann damit maximal den Wert 255 annehmen. Insgesamt sind 2^32 verschiedene Adressen zwischen 0.0.0.0 und 255.255.255.255 möglich.

Im Gegensatz zu den Ethernet-Adressen sind die IP-Adressen hierarchisch aufgebaut. Ethernet-Adressen sind nur hierarchisch bezüglich des Herstellers der Netzwerkkarte – eine Information, die allerdings beim Routing nicht hilft. Der erste Teil der IP-Adresse bezeichnet ein Netzwerk und der zweite Teil einen Knoten. Dadurch vereinfacht sich das Routing, da zunächst nur die Netzwerkadresse ausgewertet werden muss.

Netzwerke sind unterschiedlich groß. Beispielsweise haben Firmen verschieden große Netze. So unterscheidet sich der Bedarf eines weltweiten Großkonzerns sehr von dem einer kleinen Software-Firma. Deshalb wurde ein flexibles Schema mit mehreren Klassen eingeführt. Die Position der ersten Null in der Adresse legt die Klasse fest. Ist das erste Bit Null (das heißt in der Hälfte der Fälle), so handelt es sich um eine Adresse der Klasse A. In diesem Fall sind die nächsten sieben Bit die Netzwerkadresse, und die restlichen 24 Bit bezeichnen den Knoten. Berücksichtigt man noch zwei Sonderfälle, verbleiben 126 Adressen für Netze der Klasse A. Diese 126 Netze belegen bereits die Hälfte aller zur Verfügung stehenden Adressen. Im Bild ist die Zuordnung der Bits zu den Feldern für die verschiedenen Klassen zusammengestellt.

Klasseneinteilung

Betrachten wir als Beispiel die Adresse 212.201.24.18. Das erste Byte hat den Dezimalwert 212. Die Umwandlung in die Darstellung als Binärzahl ergibt 1101 0100. Die erste Null ist an der dritten Stelle von links. Es handelt sich also um eine Adresse aus der Klasse C.

Die Grundidee bei der Festlegung der Klassen war, dass es nur wenige sehr große Netze mit vielen Knoten, aber sehr viele kleine Netze mit wenigen Knoten gibt. Die jeweilige Anzahl der Netze und darin enthaltenen Knoten finden Sie in folgender Tabelle. Dabei ist berücksichtigt, dass einige Adressen besondere Bedeutung haben. Solche mit dem Wert 0 beziehen sich auf das eigene Netz oder den eigenen Knoten. Sind andererseits alle Bits im Knotennamen gesetzt, so handelt es sich um eine Broadcast-Nachricht. Die Adresse 127 in der Klasse A wird für Tests benutzt, bei denen ein Knoten sein gesendetes Paket zurückerhält (Loop-Back).

IP-Adressen: Klasseneinteilung

Klasse

Anzahl Netze

Anzahl Knoten

A

126

16.777.214

B

16.384

65.534

C

2.097.152

254

Die Netznummern werden vom Network Information Center (NIC) beziehungsweise jetzt durch die Internet Assigned Numbers Authority (IANA, www.iana.org) verwaltet. In der Praxis hat sich die Einteilung als nicht optimal erwiesen. Es gibt einerseits zu wenige Netze der Klasse B für große Firmen oder Institutionen. Andererseits ist die Klasse B für die meisten Firmen überdimensioniert, während die Klasse C zu klein ist oder zumindest zu wenig Reserven hat. Eine Lösung, die die starre Einteilung überwindet, ist Classless InterDomain Routing (CIDR). Wie der Name zeigt, ersetzt CIDR die feste Klasseneinteilung durch eine flexible Aufteilung der Bits zwischen Netzkennung und Knotennummer. Gleichzeitig wurden die Adressen den vier Weltzonen Europa, Nordamerika, Mittel-/Südamerika sowie Asien/Pazifik zugeordnet, um das Routing zu vereinfachen.

Subnetze

Eine andere Verfeinerung des Adressraums erreicht man durch Subnetzadressierung. Angenommen eine Firma betreibt mehrere LANs, die aber unter einer einheitlichen Netzadresse angesprochen werden sollen. Um die interne Weiterleitung zu vereinfachen, werden die einzelnen LANs als Subnetze behandelt. Dazu kommt ein Teil der Bits der Host-ID als Subnetz-ID zum Einsatz. Wie viele Bits für diese weitere Hierarchie zur Verfügung stehen, spezifiziert eine Subnetzmaske. Angeschlossene Knoten können dann an der Adresse erkennen, ob das Paket in ihrem eigenen LAN bleibt oder über einen Switch in ein anderes LAN soll.

Die Subnetzmaske hat die Form einer IP-Adresse. Gesetzte Bits kennzeichnen den Netzwerkteil inklusive Subnetzadresse. Beispielsweise bedeutet eine Subnetzmaske 255.255.255.0, dass nur die letzten acht Bit die Knotennummer beinhalten. Alle anderen Bits, bei denen die Subnetzmaske den Wert Eins hat, gehören zur Netzwerkadresse. Die genaue Interpretation – Netzadresse und Subnetzadresse – hängt von der Klasse der Adresse ab. Bei einer Adresse der Klasse B enthalten die ersten 16 Bit die Netzwerkadresse. Bei der Subnetzmaske 255.255.255.0 bilden dann die nächsten 8 Bit, die ursprünglich zur Host-Adresse gehörten, die Subnetzadresse.

Der Netzwerkteil einer Adresse lässt sich leicht durch bitweise UND-Verknüpfung mit der Subnetzmaske berechnen. Als Beispiel berechnen wir in der Tabelle für die Adresse 212.201.25.18 und die Subnetzmaske 255.255.252.0 die Adresse des Netzwerkteils.

Subnetze: Adressberechnung des Netzwerkteils

IP-Adresse

212.201.25.18

11010100.11001001.00011001.00010010

Subnetzmaske

255.255.252.0

11111111.11111111.11111100.00000000

bitweise UND

11010100.11001001.00011000.00000000

Netzwerkteil

212.201.24.0

Lösungen für mehr Adressen

Um das prinzipielle Problem von zu wenigen Adressen zu lösen, wird in der Version IPv6 deren Größe auf 16 Byte erhöht. Damit stehen selbst bei schlechter Ausnutzung des Adressraums rechnerisch mehr als 1000 IP-Adressen pro Quadratmeter der Erdoberfläche zur Verfügung.

Die IP-Adressen der einzelnen Knoten können – beispielsweise vom Systemadministrator – fest vergeben werden. Eine Alternative sind dynamische Adressen. Damit können insbesondere für temporäre Verbindungen zeitlich befristete Adressen vergeben werden. Über das Protokoll DHCP (Dynamic Host Configuration Protocol) erhält ein Rechner von einem DHCP-Server eine IP-Adresse. Der DHCP-Server verwaltet die Nummern und sorgt für deren eindeutige Vergabe. Der Client erhält die Adresse nur für einen bestimmten Zeitraum (Lease). Vor dem Ablauf der Gültigkeitsdauer muss er sie dann wieder verlängern oder eine neue Lease beziehen. Beispiel:

ipconfig /all

Ethernet-Adapter „LAN-Verbindung„:
Verbindungsspezifisches DNS-Suffix: fh-friedberg.de
Beschreibung: Accton EN2242 Series MiniPCI Fast Ethernet Adapter
Physikalische Adresse: 00-D0-59-6A-88-63
DHCP-aktiviert: Ja
Autokonfiguration aktiviert: Ja
IP-Adresse: 212.201.26.252
Subnetzmaske: 255.255.255.0
Standardgateway: 212.201.26.1
DHCP-Server: 212.201.26.1

Lease erhalten Dienstag, 22. Juni 2004 14:21:28
Lease läuft ab Dienstag, 22. Juni 2004 14:31:28

IP-Paketformat

Folgendes Bild zeigt das Format der IP-Pakete (Datagramme) in der Version IPv4.

Die Darstellung ist in Vielfachen von 32 Bit organisiert. Die Bedeutung der einzelnen Felder ist:

Weiterleitung

Wenn ein Knoten – ein Rechner oder ein Router – ein Datagramm verschicken oder weiterleiten will, muss er die IP-Adresse analysieren. Zunächst prüft er die Netzwerkadresse. Stimmt die Netzwerkadresse mit seiner eigenen überein, erkennt der Knoten, dass der Zielknoten sich in seinem eigenen physikalischen Netzwerk befindet. Rechner sind normalerweise nur an einem physikalischen Netzwerk angeschlossen, während Router zwei oder mehr Netzschnittstellen haben. Router überprüfen daher, ob die Netzwerkadresse zu einem ihrer Netzanschlüsse passt.

Befindet sich das Ziel im gleichen physikalischen Netzwerk, so kann der Knoten die zugehörige interne Adresse (zum Beispiel eine Ethernet-Adresse) ermitteln und das Datagramm direkt zustellen. Wie dies im Detail geschieht, sehen wir im Teil Zwei dieses Beitrags.

Ist das Ziel außerhalb des eigenen Netzwerkes, wird das Datagramm an einen Router weitergeleitet. Dieser wirkt als Schnittstelle in die externen Netzwerke. Im Allgemeinen wird der Router selbst auch keine direkte Verbindung zu dem Ziel haben, sondern das Paket wieder an einen Router weiterreichen, bis irgendwann ein Router mit Zugang zu dem Zielnetz erreicht ist.

Die Weiterleitung basiert auf Tabellen. Ähnlich wie in Switches gibt es Weiterleitungstabellen für die IP-Adressen. Im einfachsten Fall enthält die Tabelle eine paarweise Zuordnung von Netzwerkadressen und nächsten Routern. Für die Weiterleitung des Datagramms schlägt der Knoten in seiner Weiterleitungstabelle nach, an welchen nächsten Knoten er Datagramme für die gegebene Netzwerk-adresse schicken soll. Den ausgewählten Router nennt man Next-Hop-Router.

Die Weiterleitungstabelle ist in der Regel nicht vollständig. Daher gibt es noch einen Eintrag für einen Default-Router, an den alle nicht direkt zuzuordnenden Datagramme geschickt werden. Ein Rechner hat häufig nur Zugang zu einem Router. In diesem Fall ist die Weiterleitungstabelle leer beziehungsweise enthält nur den Eintrag für diesen Default-Router.

Insgesamt gesehen erfolgt die Zustellung in zwei Schritten. Zunächst wird das Datagramm in das richtige Netzwerk geschickt und anschließend dort an den Zielknoten zugestellt. Dadurch wird der Verwaltungsaufwand beträchtlich reduziert. Die Router müssen nicht für jeden Rechner in der Welt Einträge in ihre Weiterleitungstabellen aufnehmen, sondern nur noch für die Netze. Bleibt die Frage, wie die Router zu ihren Weiterleitungstabellen kommen? Dies ist Thema des übernächsten Abschnitts.

Zuordnung IP-Adresse zu Ethernet-Adresse

Wenn ein Knoten feststellt, dass der Zielknoten sich im gleichen Netzwerk befindet, so kann er das Datagramm direkt an dessen Adresse schicken. Sind etwa die beiden Knoten über Ethernet verbunden, so benötigt er dazu die Ethernet-Adresse des Zielknotens. Die Zuordnung von IP-Adressen zu Ethernet-Adressen erfolgt über das Adressauflösungsprotokoll (Address Resolution Protocol ARP).

Wieder ist die Information in einer Tabelle gespeichert. Jeder Knoten führt eine Zuordnungstabelle mit IP-Adressen und Ethernet-Adressen, die ARP-Tabelle oder auch ARP-Cache. Da die Adresszuordnung sich jederzeit ändern kann, wird die Tabelle dynamisch verwaltet.

Angenommen ein Knoten S möchte zum ersten Mal ein Datagramm an einen bestimmten Zielknoten Z schicken. Zu diesem Zeitpunkt gibt es noch keinen Eintrag für Z in der ARP-Tabelle. Daher schickt S eine Anfrage (Rundruf) an alle Knoten im eigenen Netz. Bei Ethernet wird diese Anfrage als Broadcast gleichzeitig an alle geschickt. Die Anfrage enthält die Zieladresse und die eigene Adresse von S. Jeder Knoten empfängt die ARP-Anfrage. Knoten Z erkennt seine eigene Adresse und reagiert, indem er eine Antwortnachricht mit seiner eigenen Ethernet-Adresse zurückschickt. Gleichzeitig fügt Z die Adresse von S in seine eigene ARP-Tabelle ein, in der Annahme, dass er bald Datagramme an S schickt. S erhält die Antwort, erweitert seine ARP-Tabelle und schickt das Datagramm. Bei weiteren Datagrammen nutzen S und Z die Einträge in ihren ARP-Tabellen.

Aktualisierung der ARP-Tabelle

Um die ARP-Tabelle aktuell zu halten, wird jeder Eintrag nach 15 Minuten automatisch entfernt. Findet in der Zwischenzeit eine weitere Kommunikation mit dem Knoten statt, verlängert sich die Lebensdauer des Eintrags entsprechend. Sie verlängert sich auch, wenn ein Knoten eine ARP-Abfrage von einem anderen Knoten sieht. Diese Aktualisierung nehmen alle Knoten vor, die einen Eintrag für den Sender haben. Nicht betroffene Knoten ignorieren die ARP-Abfrage und erzeugen keinen neuen Eintrag.

Mit dem Programm arp kann man die Übersetzungstabellen anschauen und manuell ändern. Es lassen sich Einträge löschen oder einfügen. Manuell eingefügte Einträge sind permanent und werden auch bei Zeitüberschreitung nicht aus dem Cache gelöscht. Ein Beispiel:

arp –a

Schnittstelle: 212.201.26.252 on Interface 0x1000003
Internetadresse Physikal. Adresse Typ
212.201.26.1 00-20-18-58-b8-1f dynamisch

Das Gegenstück zu ARP ist RARP (Reverse Address Resolution Protocol). Damit können Computer ohne eigenen Massenspeicher von einem RARP-Server ihre IP-Adresse erfragen.

Internet Control Message Protocol

Das Internet Protokoll wird ergänzt durch das Internet Control Message Protocol (ICMP). Über ICMP tauschen Hosts und Router Nachrichten aus. Dazu gehören unter anderem Fehlermeldungen, Informationen zur Steuerung der Übertragung sowie Echo-Anfragen und Antworten. Um welche Art von Nachricht es sich handelt, wird in einem Typfeld im Kopf des Pakets spezifiziert. Abhängig vom konkreten Typ folgen dann die dazu gehörenden Daten. Eine ICMP-Nachricht wird im Nutzdatenfeld eines IP-Pakets übertragen.

Eine einfache Anwendung auf der Basis von ICMP ist der Befehl Ping. Ping steht für Packet InterNet Groper (das Verb grope bedeutet greifen oder suchend nach etwas tasten). Gleichzeitig ist Ping auch die Bezeichnung für einen kurzen Impuls, wie er bei Echolot oder Radarsuchgeräten ausgesendet wird.

Die gleiche Funktion hat Ping im Netzwerk: Es schickt eine ICMP-Nachricht mit einer Echo-Anforderung an einen Host und wartet auf das Echo. Ein Beispiel:

Ping www.w3.org [128.30.52.25] mit 32 Bytes Daten:

Antwort von 128.30.52.25: Bytes=32 Zeit=160ms TTL=55
Antwort von 128.30.52.25: Bytes=32 Zeit=150ms TTL=55
Antwort von 128.30.52.25: Bytes=32 Zeit=150ms TTL=55
Antwort von 128.30.52.25: Bytes=32 Zeit=150ms TTL=55

Ping-Statistik für 128.30.52.25:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 150ms, Maximum = 160ms, Mittelwert = 152ms

In diesem Fall wurden vier Pakete geschickt und bei allen kam eine Antwort. Das Programm gibt die jeweils benötigte Zeit aus und berechnet aus den einzelnen Werten eine kleine Statistik. Eine solche erfolgreiche Ausführung zeigt, dass die Netzwerkverbindung zu dem angegebenen Rechner funktioniert. Damit ist Ping ein nützliches Prüfwerkzeug. Falls Fehler auftreten, kann man damit schnell prüfen, ob die Kommunikation bis zur Ebene von IP zu Stande kommt. So lassen sich elementare Fehler wie zum Beispiel ein ausgeschalteter Zielknoten oder ein falscher Knotenname aufdecken.

Ausblick

In diesem Teil unserer zweiteiligen Miniserie haben wir behandelt, wie ein Router Pakete weiterleitet. Grundlage sind Weiterleitungstabellen, die die benötigte Information beinhalten. Wir haben gesehen, wie damit das Problem der Weiterleitung effizient gelöst wird. Weit gehend ausgeblendet hatten wir bisher, wie die Weiterleitungstabellen gefüllt werden.

Im zweiten Teil des Beitrags, der in Kürze erscheint, gehen wir detaillierter auf die Aufgaben eines Routers ein. Dabei zeigen wir auch, wie die Router im Internet einen optimalen Weg zwischen zwei Stationen ermitteln. (ala)