Zum Inhalt springen

Bootstrap Protocol

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 1. Februar 2004 um 20:00 Uhr durch Blaselfasel (Diskussion | Beiträge) (Das ''Bootstrap Protocol'' ...(teilweise textspende von meiner HP)). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Das Bootstrap Protocol (BOOTP) dienst dazu, einem Computer in einem TCP/IP Netzwerk eine IP-Adresse zu zuweisen.

Benutzt wird BOOTP zum Beispiel für Terminals, die ihr Betriebssystem von einem Terminal-Server beziehen.

Der Ablauf einer BOOTP Anfrage funktioniert etwa so:

Die Anforderung

Beim Einschalten des festplattenlosen Rechners kennt dieser weder seine eigenen IP-Adresse noch die des BOOTP-Servers. Es wird ein Bootrequest gesendet. Dies ist ein normales IP/UDP Paket. Als Absender wird, da nichts anderes bekannt, die Adresse 0.0.0.0 eingesetzt. Die Empfängerandresse ist die 255.255.255.255 was als Broadcast im eigenen Netz interpretiert wird. (Der BOOTP-Client kennt schließlich auch die Netznummer nicht.)

Ein Bootrequest von einem Client wird immer auf dem Zielport 67 (´BOOTP server´) gesendet. Anschließend lauscht der Client auf dem Port 68 (´BOOTP client´) auf dem die Bootreply gesendet wird.

Das zwei reservierte Ports verwendet werden ist nicht bei jeder IP Verbindug so. Die meisten Protokolle verwenden als ´abgehenden´ Port (der Port vom Client) eine zufällige Portnummer. Auf diesem Port wird dann auch die Antwort des Servers erwartet. Beim BOOTP Protokoll würde dies jedoch nicht funktionieren, da die Antwort des BOOTP-Server (Bootreply ) nicht unbedingt auf eine bestimmte Zieladresse gesendet wird, sondern auch als Broadcast an alle Station im eigenen Subnet gehen kann. Würden keine festen Portnummern verwendet werden, könnte es vorkommen das ein anderer Host gerade auf dem gleichen Port lauscht, jedoch etwas ganz anderes erwartet.


Mit dem Bootrequest sendet der Client einige Informationen über sich: Das wichtigste ist die eigenen Hardware Adresse der Netzwerkkarte (MAC). Dies ist das einzige Erkennungsmerkmal der Station. Der Client generiert außerdem eine 4 Byte lange Zufallszahl, die im Bootreply wieder auftauchen muss. Weiterhin ist ein Timer vorgesehen, der zählt wie lange der client schon auf sein Bootreply wartet.


Die Beantwortung

Bekommt der BOOTP-Server eine gültige Anfrage auf dem entsprechenden Port, so betrachtet dieser zunächst die [[MAC Adresse]]. Die MAC aus der Anfrage wird mit einer Datenbank in der MACs IPs zugeordnet sind verglichen. Wird für die Anfrage ein Eintrag gefunden, gibt der Server eine Antwort (Bootreply). Meist wird die Antwort auch einfach als Broadcast gesendet, es ist jedoch auch möglich die ARP-Tabelle des Clients zu manuell bearbeiten. Die Möglichkeit muß hierfür muss jedoch der Kernel geben. Wird die Antwort als Broadcast gesendet, enthält diese folgende Informationen:

  • Die Hardwareadresse des Client. Der Client erwartet eine Antwort, mit seiner Hardwareadresse um zu erkennen, daß das Paket für ihn ist.
  • Die Zufallszahl, die in der Anfrage vom Client erzeugt wurde.
  • Das wichtigste überhaupt: Die IP Adresse der Client Maschine.
  • Die IP-Adresse und der Hostname des Boot-Servers. Von dort kann im nächsten Schritt über TFTP ein Betriebssystem geladen werden.
  • Der Name und die Pfadangabe der Bootdatei. Die Bootdatei enthält den Kernel der anschließend mit TFTP übertragen wird.
  • Name des Verzeichnises, das vom Kernel über NFS als root (/) Partition eingebunden werden soll.

Der Festplattenlose BOOTP-Client lauscht also auf dem vorgegebenen Port, und wartet auf eine Antwort vom Server. Empfängt er ein Paket, wird die MAC Adresse mit der eigenen, sowie die Zufallszahl mit der gesendeten verglichen. Erkennt der Client, daß die Antwort für ihn gedacht ist, wird die IP-Adresse dem Netzwerk Interface zugewiesen.