Zwei Mechanismen helfen, Hosts automatisch eine IP-Adresse zu vergeben. BOOTP und DHCP sind zwei verschiedene Mechanismen, welche beide die automatische Vergabe von IP-Adressen an Hosts erlauben.
Bootstrap Protocol (BOOTP)
BOOTP definiert den Mechanismus, welcher es erlaubt, eine disklose Workstation in ein Netz zu setzen ohne vorherige Konfiguration und alle nötigen Infos (IP-Adress Parameter, Bootfile-Parameter) von einem BOOTP-Server zu erhalten.
RFC 951 definiert die Funktionsweise des BOOTP-Protokolls. BOOTP kann jede Art von Workstation mit einer IP-Adresse versehen, nicht nur die Rechner ohne eigene Disk. Der BOOTP-Server ist typischerweise ein UNIX-Host. Der BOOTP-Serverprozess benutzt den UDP-Port 67, während der BOOTP-Clientprozess den Port 68 benutzt.
Der BOOTP-Server benutzt ein Konfigurationsfile „bootptab“, welches den Server instruiert, auf welche Weise er dem Client eine Adresse vergeben soll. Das „bootptab“-File kann so aussehen:
Das folgende Bild zeigt die Struktur eines BOOTP-Pakets.
Die Felder haben die folgende Bedeutung:
- op: Packet op Code / message type: 1=BOOTREQUEST 2=BOOTREPLY
- htype: Hardware address type
- hlen: Hardware address length
- hops: Client sets to 0
- xid: Transaction ID
- secs: Vergangene Sekunden, seit der Bootprozess gestartet wurde
- flags: Option flag
- ciaddr: Client IP address
- yiaddr: „Your“ (client) IP address
- siaddr: Server IP address
- giaddr: Gateway IP address
- chaddr: Client hardware address
- sname: Server host name
- file: Boot file name
- vend: Optional vendor-specific use
Wenn die Diskless-Workstation auf dem Netz eingeschaltet wird, sendet die Workstation einen BOOTP-Request wie folgt raus:
Weil die Workstation die IP-Adresse des BOOTP-Servers nicht kennt, sendet sie einen limitierten Broadcast ins Netz. Die Workstation benutzt die IP-Adresse, welche an jeder Stelle das nullwertige Bit gesetzt hat, als Source-IP-Adresse im IP-Datagramm Header.
Die BOOTP-Struktur sieht kein Feld für die Information der Subnetzmaske vor. Es kann das „vend“-Feld für diesen Gebrauch verwendet werden.
Wenn die Workstation den obigen BOOTP-Reply erhält, kennt sie ihre neue IP-Adresse. Es ist nicht absolut sichergestellt, dass sie eine IP-Adresse bekommen hat, die noch nicht verwendet wird. Zu diesem Zweck sendet der Rechner drei ARP-Requests ins Netz, um zu sehen, ob ein Rechner die Verwendung der IP-Adresse 172.16.1.21 vermeldet. Ist dies nicht der Fall, verwendet die Workstation im dritten ARP-Request die Source-Adresse 172.16.1.21 anstelle von 0.0.0.0 und gibt die Benutzung der Adresse bekannt. Ist sichergestellt, das die Verwendung der Adresse Konsistent ist, leitet die Workstation ein TFTP-File Transfer des Bootfiles ein. Anschliessend startet der Rechner das erhaltene Bootfile und kommt auf diesem Weg in den Betriebszustand.
Dynamic Host Configuration Protocol (DHCP)
DHCP kann benutzt werden, um einem Client in einem IP-Netz alle zum Betrieb notwendigen Parameter zur Verfügung zu stellen. DHCP kann auch dazu benutzt werden, um die Vergabe und das Management von IP-Adressen in einem autonomen System sicherzustellen.
Das folgende Bild zeigt die Struktur eines DHCP-Pakets.
Ein Vergleich mit der BOOTP-Struktur zeigt, dass der Aufbau bis auf das letzte Feld identisch ist. Das „vend“-Feld in BOOTP wurde zum „options“-Feld in DHCP und mehr Bytes wurden diesem Feld zugewiesen (312 DHCP, 64 BOOTP). DHCP verwendet auf der Serverseite UDP-Port 67, während auf der Clientseite Port 68 verwendet wird. Dies sind die selben Nummern, wie sie BOOTP verwendet ! Wie ist das möglich ?
BOOTP ist ein Bestandteil von DHCP! Es ist ja nicht erlaubt, dass zwei verschiedene TCP/IP-Applikationen die gleichen Portnummern verwenden. BOOTP ist eine Untergruppe von DHCP.
Ein DHCP-Server vergibt eine Adresse unter einer der beiden folgenden Voraussetzungen:
- Permanente Zuweisung; Der Server weist dem Client eine IP-Adresse für die exklusive Verwendung des Clients zu
- Dynamische Zuweisung; Der Server weist dem Client eine Adresse zu, die der für eine bestimmte Zeit verwenden darf
Es ist auch möglich, einem DHCP-Server einen Pool von IP-Adressen zuzuweisen, die er an die Clients in einem Subnetz vergeben darf.