1.7. Dynamische Adreßvergabe

Bisher waren wir davon ausgegangen, daß jedem Endsystem seine IP-Adresse fest zugeordnet wird und diese auch als Parameter der Protokollsoftware in jedem System fest konfiguriert ist.

Diese Verfahrensweise ist heute in lokalen Netzen noch vorherrschend. In manchen Situationen ist dies aber nicht praktikabel:

Es gibt mehrere unterschiedliche Protokolle, mit denen eine dynamische Zuordnung von IP-Adressen zu Endsystemen erreicht wird:

RARP

Ein Rechner kenne nach dem Einschalten seine IP-Adresse noch nicht. Er schickt deshalb eine RARP-Anforderung als Broadcast (d.h. an alle).
In dem Netz wird es (hoffentlich) einen RARP-Server geben, der auf diese Anforderung reagiert und unserem Rechner eine IP-Adresse zuteilt:

Es sind keine Mechanismen zum Entzug einer einmal zugeteilten IP-Adresse vorgesehen. Daraus ergibt sich, daß Rechner B zumindest bis zum nächsten Booten immer dieselbe IP-Adresse behalten wird.

Eine Änderung der zugeteilten IP-Adresse ist möglich, indem man im RARP-Server die neue zuzuteilende Adresse einstellt und anschließend den Klienten neu bootet.
Der RARP-Server identifiziert einen Rechner an Hand seiner "Hardwareadresse" (z.B. der Ethernet-Adresse). Diese ist fest in einem ROM der Netzhardware abgelegt und damit auch bei plattenlosen Systemen verfügbar. Das Format der RARP-Pakete ist identisch mit dem der ARP-Pakete (Abschnitt "ARP"). RARP-Pakete nutzen direkt die Netzhardware, d.h., die IP-Schicht selbst ist am RARP-Protokoll nicht beteiligt.

BOOTP

Mit RARP konnten wir zwar das Problem der IP-Adreßvergabe lösen; ein plattenloses System braucht aber noch weitere Angaben wie z.B. den Programmkode des Betriebssystems.

Diese Erweiterungen bringt das BOOTP-Protokoll. Aus diesem Grund ist es mittlerweile verbreiteter als RARP.

Als weiterer wesentlicher Unterschied zu RAPR ist BOOTP wie ein typisches Internet-Anwendungsprotokoll in das Schichtenmodell eingeordnet, d.h., es nutzt UDP als Transportschicht und als deren Basis die IP-Schicht.
Letzteres wird den aufmerksamen Leser etwas verwundern, da ja anfangs noch gar keine IP-Adressen bekannt sind.

Die Lösung dieses Widerspruchs besteht darin, daß der BOOTP-Klient (der bootende plattenlose Rechner) seine BOOTP-Anforderung an die IP-Broadcast-Adresse 255.255.255.255 schickt. Das führt wie bei ARP/RARP zu einem Broadcast auf dem jeweiligen lokalen Netz.

Wieder muß es einen Server, diesmal natürlich einen BOOTP-Server geben, der die Anforderung beantwortet.

Das BOOTP-Paketformat ist einheitlich für Anforderung und Antwort. Bei der Anforderung werden natürlich einige Felder "leer" sein (d.h. den Wert 0 haben):

DHCP

DHCP (RFC 1541) stellt eine Weiterentwicklung von BOOTP in zwei Richtungen dar: Mit diesen Eigenschaften ist DHCP nicht nur für plattenlose Systeme oder bei Einwahl über Wählnetze interessant, sondern generell zur Reduzierung des Konfigurierungsaufwands größerer lokaler Netze: Das DHCP-Paketformat ist nahezu identisch mit dem BOOTP-Paketformat:

Unterschiede bestehen darin, daß es jetzt ein Flags-Feld gibt und daß die herstellerspezifischen Informationen jetzt Optionen heißen (mit variabler Länge, mindestens 312 Byte sind zugelassen).

Wenn das Bit B im Flags-Feld bei einer Anforderung vom Klienten gesetzt ist, wird der Server seine Antwort als Broadcast senden. Das kann sinnvoll sein, damit die Antwort im Klienten die IP-Schicht passieren kann (der Klient hat ja zu diesem Zeitpunkt noch keine "eigene" IP-Adresse).

Beim DHCP-Protokoll ist neben der Unterscheidung in Anforderung (Request) und Antwort (Response) eine weitere Differenzierung der geforderten Funktion notwendig. Das erfolgt mit einer Option Message Type:

Typcode Message Type
1 DHCPDISCOVER
2 DHCPOFFER
3 DHCPREQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE

Namen für Rechner mit dynamisch zugewiesener IP-Adresse

Mit den eben beschriebenen Verfahren bekommt der Rechner zwar eine gültige IP-Adresse; auf der Benutzeroberfläche sind aber symbolische Namen weitaus angenehmer zu handhaben. Dieses Problem ist noch nicht befriedigend gelöst. Es gibt eine Reihe von möglichen Vorgehensweisen:

Implementierungen

RARP-Klienten: BOOTP-Klienten:

DHCP-Klienten:

Anmerkung:
Eine weitere Möglichkeit zur dynamischen Zuordnung einer IP-Adresse ist im PPP-Protokoll vorgesehen (wird z.B. von Trumpet-Winsock und Linux-pppd verwendet).


Vertiefung:

Weitere Informationen zu DHCP/BOOTP einschließlich der Serverseite finden Sie unter folgenden URLs:

Eine besondere Form der Behandlung von IP-Adressen ist die Veränderung bzw. Übersetzung von IP-Adressen in einem Netzknoten (es ist offen, ob man diesen dann noch Router nennen sollte). Die typische Anwendung einer solchen Network Address Translation (NAT) ergibt sich beispielsweise dann, wenn ein privates Intranet mit einer Vielzahl von Rechnern mit dem "großen" Internet verbunden werden soll, vom Netzanbieter aber nur eine oder wenige weltweit eindeutige IP-Adressen zugeteilt werden. Die Details der Lösung dieses Problems können Sie z.B. hier finden:


© Uwe Hübner, 20.12.98