Um in Netz­wer­ken wie dem Internet mit­ein­an­der kom­mu­ni­zie­ren zu können, benötigen teil­neh­men­de Systeme eine IP-Adresse. Diese lässt sich zwar grund­sätz­lich manuell vergeben, doch in der Praxis beziehen die meisten Geräte ihre Adresse in­zwi­schen au­to­ma­tisch. Grundlage hierfür ist das Kom­mu­ni­ka­ti­ons­pro­to­koll DHCP, das ver­bin­dungs­su­chen­de Systeme bei der Be­schaf­fung der not­wen­di­gen In­for­ma­tio­nen un­ter­stützt. In den Anfängen von Computer, Netzwerk und Co. hat das Bootstrap Protocol, das auch als BOOTP bekannt ist, noch die Funktion des Adress-Managers über­nom­men.

Was ist BOOTP (das Bootstrap Protocol)?

Im September 1985 ver­öf­fent­lich­te die Stanford Uni­ver­si­ty Network Group in RFC 951 die erste Version des Bootstrap Protocols (BOOTP). Dies Kom­mu­ni­ka­ti­ons­pro­to­koll, das in Zu­sam­men­ar­beit mit einem Team des Com­pu­ter­her­stel­lers Sun Mi­cro­sys­tems entstand, er­mög­lich­te es den damals ein­ge­setz­ten Terminals und fest­plat­ten­lo­sen Work­sta­tions erstmals, neben der IP-Adresse auch In­for­ma­tio­nen wie die Adresse des Gateways, die Adresse des Boot­ser­vers und das Ver­zeich­nis der Boot-Datei (notwendig für das Laden des Be­triebs­sys­tems) zu beziehen. Es ersetzte das bis dahin ver­wen­de­te Reverse Address Re­so­lu­ti­on Protocol (RRP), das aus­schließ­lich Netz­werk­adres­sen liefern und nur in Subnetzen ein­ge­setzt werden konnte.

Das Bootstrap Protocol ist Teil der In­ter­net­pro­to­koll­fa­mi­lie und funk­tio­niert – wie viele andere Pro­to­kol­le des Stacks – nach dem Client-Server-Modell. Der Nach­rich­ten­aus­tausch zur Über­mitt­lung der Netz­werk­in­for­ma­ti­on findet also zwischen einem BOOTP-Client und dem BOOTP-Server statt. Als Protokoll für den Transport der ent­spre­chen­den Da­ten­pa­ke­te ist das minimale, ver­bin­dungs­lo­se User Datagram Protocol (UDP) vor­ge­se­hen (Port 67 und 68). Selbiges ist im Vergleich zu TCP nicht nur weniger komplex, sondern un­ter­stützt im Gegensatz zu dem Stan­dard­pro­to­koll für Da­ten­trans­port auch Broad­cas­ting. Da der Client beim Ver­bin­dungs­auf­bau weder seine eigene Adresse noch die des BOOTP-Servers kennt, ist diese Nach­rich­ten­me­tho­de, bei der alle Netz­werk­teil­neh­mer kon­tak­tiert werden, die einzige Lösung für den au­to­ma­ti­schen Adress­be­zug.

So funk­tio­niert der Austausch von Netz­werk­in­for­ma­tio­nen über BOOTP

Die Adress­zu­ord­nung via BOOTP basiert auf einem simplen Zwei-Schritte-Nach­rich­ten­aus­tausch zwischen Client und Server, wobei die Client-Kom­po­nen­te der Initiator ist. Da dieser zu Beginn weder seine eigene IP-Adresse noch die des BOOTP-Servers kennt, schickt er einen all­ge­mei­nen Request („BOOT­RE­QUEST“) an die Broadcast-Grup­pen­adres­se 255.255.255.255. Der Server, der auf UDP-Port 67 lauscht, empfängt und ver­ar­bei­tet diese Anfrage. Dabei besteht die Haupt­auf­ga­be darin, der MAC-Adresse des Client-Systems die passende IP-Adresse zu­zu­ord­nen. An­schlie­ßend wird die Antwort („BOOTREPLY“) inklusive weiterer Netz­werk­in­for­ma­tio­nen via Broadcast zurück an den Client gesendet, der in­fol­ge­des­sen das Be­triebs­sys­tem über das Netzwerk beziehen kann.

Hinweis

Wenn der Client die Adresse des BOOTP-Servers bereits kennt, kann er den Request auch direkt per Unicast-Ver­bin­dung an diesen schicken.

So sieht der Aufbau der Nach­rich­ten aus, die Client und Server bei der Kom­mu­ni­ka­ti­on via Bootstrap Protocol ver­schi­cken:

Jede BOOTP-Nachricht beginnt mit dem 8 Bit langen op-Feld, das den Typ der Operation bzw. der Nachricht definiert. Bei Anfragen durch den Client wird an dieser Stelle der Wert 1 (für BOOT­RE­QUEST) gesetzt, während die Antworten des Servers den Wert 2 (für BOOTREPLY) aufweisen. Es folgen jeweils 8 Bit, die den Typ („htype“) sowie die Länge der Hardware-Adresse („hlen“) kenn­zeich­nen. Das ebenfalls 8 Bit lange Feld „hops“ gibt die Zahl an Zwi­schen­sta­tio­nen an, die das Paket auf dem Weg zum Empfänger durch­quert. Bei Client-Anfragen ist der Wert immer 0.

Der nächste Block enthält eine zufällige, 32 Bit lange Trans­ak­ti­ons-ID, die vom Client generiert und später auch in der Antwort des Servers verwendet wird, damit der Client diese eindeutig zuordnen kann. Der Client füllt außerdem das Feld „secs“ (16 Bit) aus, das die Sekunden angibt, die seit dem Boot­ver­such des Clients vergangen sind. Den Abschluss der ein­lei­ten­den In­for­ma­tio­nen bildet ein weiteres 16-Bit-Feld, das gänzlich leer bleibt. Bei den weiteren Einträgen des BOOTP-Pakets handelt es sich nun um die ei­gent­li­chen Netz­werk­in­for­ma­tio­nen, die in der folgenden Auf­lis­tung näher erläutert werden:

  • IP-Adresse des Clients (ciaddr): Mit dem Label „ciaddr“ (client ip address) wird das 32-Bit-Feld aus­ge­zeich­net, in das der Client seine eigene IP-Adresse einträgt, sofern er diese bereits kennt. Ist dies nicht der Fall, erhält das Feld den Wert 0.
     
  • IP-Adresse des Clients (yiaddr): Das Feld „yiaddr“ (your ip address) ist ebenfalls für die IP-Adresse des Clients re­ser­viert. Im Gegensatz zu dem zuvor genannten Abschnitt des Pakets wird dieses 32-Bit-Feld jedoch durch den Server aus­ge­füllt, falls der Client seine IP-Adresse zum Zeitpunkt der Er­stel­lung der Netz­werk­ab­fra­ge nicht kannte.
     
  • IP-Adresse des Servers (siaddr): In der 32-Bit-Sequenz „siaddr“ (server ip address) teilt der BOOTP-Server dem Client seine eigene IP-Adresse mit.
     
  • IP-Adresse des Gateways (giaddr): Ist ein Gateway (z. B. ein Router) in den Kom­mu­ni­ka­ti­ons­pro­zess ein­ge­bun­den, wird dessen Adresse in das Feld „giaddr“ (gateway ip address) ein­ge­tra­gen.
     
  • Hardware-Adresse des Clients (chaddr): Die Hardware-Adresse (128 Bit) zählt zu den Pflicht­an­ga­ben des Clients beim Austausch von Bootstrap-Protocol-Nach­rich­ten. Ohne diese auch Geräte- oder MAC-Adresse genannte ID kann der Server dem Client weder die richtige Adresse noch die passenden Netz­werk­pa­ra­me­ter zuordnen.
     
  • Hostname des Servers (sname): Optional kann der Server in der BOOTP-Antwort außerdem seinen Hostnamen angeben. Hierfür steht ein bis zu 512 Bit großes Feld zur Verfügung, in das er eine ent­spre­chen­de null­ter­mi­nier­te Zei­chen­ket­te (ein Null­zei­chen markiert das Ende der Kette) einfügen kann.
     
  • Name der Bootdatei (file): Ebenfalls optional ist die Angabe einer konkreten Bootdatei, die der Client zum Starten des Be­triebs­sys­tems auf dem je­wei­li­gen Terminal bzw. der je­wei­li­gen Work­sta­tion benötigt. Auch dieses Feld sieht eine null­ter­mi­nier­te Zei­chen­ket­te vor, die in diesem Fall den voll­stän­di­gen Ver­zeich­nis-Pfad der Datei wie­der­gibt. Die Zei­chen­se­quenz kann dabei bis zu 1024 Bit lang sein. In der Request des Clients steht hier entweder der Wert 0 oder ein ge­ne­ri­scher Name.
     
  • Her­stel­ler­spe­zi­fi­sche In­for­ma­tio­nen (vend): Den po­ten­zi­el­len Abschluss der BOOTP-Protokoll-Nachricht bilden her­stel­ler­spe­zi­fi­sche In­for­ma­tio­nen, die nicht durch das Protokoll abgedeckt werden. Dabei kann es sich bei­spiels­wei­se um die Angabe spe­zi­el­ler Hardware-Typen und -Se­ri­en­num­mern handeln. Ferner kann dieser 512 Bit lange In­for­ma­ti­ons­be­reich für einen dritten Bootstrap- oder Ker­nel­pro­zess re­ser­viert werden.

Insgesamt können die BOOTP-Nach­rich­ten also eine Länge von bis zu 2400 Bit (300 Bytes) haben. Das komplette UDP/IP-Datagramm inklusive ein­ge­bun­de­ner Bootstrap-Protocol-Anfrage bzw. -Antwort hat folgenden Aufbau:

BOOTP vs. DHCP: Warum das Bootstrap Protocol heute nicht mehr zum Einsatz kommt

Für Terminal-Clients und fest­plat­ten­lo­se Work­sta­tions war BOOTP die perfekte Lösung, um eine per­sön­li­che IP-Adresse im ge­wünsch­ten Netzwerk zu erhalten und auf diese Weise das Be­triebs­sys­tem zu beziehen. Dass der Adress­be­zug durch das Kom­mu­ni­ka­ti­ons­pro­to­koll gleich­zei­tig mit dem Boot­pro­zess erledigt werden konnte, war für die sta­tio­nä­ren Computer, die in Netz­wer­ken über­schau­ba­rer Größen zum Einsatz kamen, sowohl praktisch als auch un­kom­pli­ziert. So war es bei­spiels­wei­se auch kaum pro­ble­ma­tisch, dass der Ad­mi­nis­tra­tor die Netz­werk­in­for­ma­ti­ons­ta­bel­len des BOOTP-Servers manuell kon­fi­gu­rie­ren musste.

Als die Netzwerke jedoch immer größer und die Computer immer ei­gen­stän­di­ger und – durch die Ent­wick­lung tragbarer Geräte – auch mobiler wurden, machte sich die fehlende Mög­lich­keit zur Au­to­ma­ti­sie­rung des Kon­fi­gu­ra­ti­ons­pro­zes­ses negativ bemerkbar. Es wurde der Wunsch nach einem neuen Protokoll laut. Mit dem Dynamic Host Con­fi­gu­ra­ti­on Protocol (DHCP) fand man im Jahr 1993 einen solchen Nach­fol­ger (end­gül­ti­ge Spe­zi­fi­ka­ti­on in RFC 2131). DHCP basiert zwar zum Großteil auf der Struktur des Bootstrap Protocols, ergänzt dieses aber durch ver­schie­de­ne zu­sätz­li­che Kon­fi­gu­ra­ti­ons­op­tio­nen und bietet die Mög­lich­keit, ver­bin­dungs­su­chen­den Clients wie­der­ver­wend­ba­re Netz­werk­adres­sen zu­zu­wei­sen. Zudem funk­tio­niert die Zuordnung von Adress­in­for­ma­tio­nen mit DHCP auch während des aktuellen Sys­tem­be­triebs – ein Neustart wie bei BOOTP ist nicht er­for­der­lich.

„BOOTP vs. DHCP“ – nach­fol­gend die wich­tigs­ten Un­ter­schie­de:

BOOTP DHCP
Auto-Kon­fi­gu­ra­ti­on Zuordnung von IP-Adressen setzt manuelle Kon­fi­gu­ra­ti­on der Adress-Tabellen voraus un­ter­stützt au­to­ma­ti­sche Zuordnung und au­to­ma­ti­schen Bezug von IP-Adressen (aber auch manuelle Kon­fi­gu­ra­ti­on)
Temporäre IP-Adressen nicht möglich für einen li­mi­tier­ten Zeitraum möglich
Un­ter­stüt­zung mobiler Geräte IP-Kon­fi­gu­ra­ti­on und Zugriff auf Netz­werk­in­for­ma­tio­nen sind nicht möglich un­ter­stützt die Mobilität von Netz­werk­cli­ents
Feh­ler­an­fäl­lig­keit Aufgrund manueller Kon­fi­gu­ra­ti­on sehr feh­ler­an­fäl­lig nahezu feh­ler­im­mun dank au­to­ma­ti­sier­ter Kon­fi­gu­ra­ti­on der Netz­werk­kom­po­nen­ten
Sys­tem­vor­aus­set­zun­gen keine setzt Fest­plat­te zur Spei­che­rung und Wei­ter­lei­tung der In­for­ma­tio­nen voraus

Dank der diversen Op­ti­mie­run­gen ist DHCP schnell zum Stan­dard­pro­to­koll für das IP-Ma­nage­ment in Netz­wer­ken geworden, während das BOOTP-Protokoll in­zwi­schen nur noch von his­to­ri­schem Wert ist. Da DHCP das Bootstrap Protocol un­ter­stützt, können DHCP-Server prin­zi­pi­ell aber auch jegliche Anfragen be­ant­wor­ten, die von einem BOOTP-Client gestellt wurden.

Zum Hauptmenü