Un autre protocole, DHCP (Dynamic Host Configuration
Protocol ) permet, lui, d'attribuer cette adresse IP dynamiquement,
c'est-à-dire que l'adresse IP affectée à la machine qui démarre peut
changer d'un démarrage à l'autre.
BOOTP fait cela de manière statique en utilisant un serveur (ou
plusieurs) qui contient dans un fichier l'adresse IP à distribuer à
chaque machine.
Le fichier est maintenu à jour par l'administrateur du réseau et
contient pour chaque machine plusieurs informations comme illustré
ci-après pour le terminal X de l'auteur.
# .........
#
# ba -- broadcast bootp reply for testing with bootpquery
# bf -- bootfile (for tftp download)
# ds -- domain name server IP address
# gw -- gateway IP address
# ha -- hardware address (link level address) (hex)
# hd -- home directory for bootfile (chrooted to tftp home directory)
# hn -- send nodename (boolean flag, no "=value" needed)
# ht -- hardware type (ether) (must precede the ha tag)
# ip -- X terminal IP address
# sm -- network subnet mask
# tc -- template for common defaults (should be the first option listed)
# vm -- vendor magic cookie selector (should be rfc1048)
# T144 remote config file name (file name must be enclosed in "")
#
# H104 (Pascal Nicolas) prise I141 :
tx-pn:\
ht=Ethernet:\
ha=0x08001103ec2c:\
bf=/usr/tekxp/boot/os.350:\
ip=193.49.162.63:\
sm=255.255.255.0:\
gw=193.49.162.220:\
vm=rfc1048:\
ds=193.49.162.9:
Le format du message BOOTP est donné dans la figure 2.30.
Quand il émet une requête BOOTP, le client l'encapsule dans un datagramme UDP en fixant le port source à 68 et le port destination (celui du serveur) à 67. Dans la majorité des cas, il ne sait pas préciser la valeur de l'adresse IP de destination et la fixe donc églae à 255.255.255.255 l'adresse de diffusion. Ainsi, la trame Ethernet correspondante sera diffusée à toutes les machines du réseau et grâce au numéro de port seuls le(s) serveur(s) BOOTP reçoit le message et le traite. Pour cela, il consulte la table de correspondance et retourne sa réponse en y fixant l'adresse IP du client, le nom du fichier à télécharger et l'adresse IP du serveur.
Il reste un problème à régler. Lors de l'émission du datagramme IP contenant la réponse, la couche de liens doit établir la correspondance adresse IP/adresse physique du client pour construire la trame physique à émettre. Or, cette correspondance ne peut être connue dans la table ARP à cet instant puisque la machine client démarre. Et si le logiciel de liens émet une requête ARP (voir section 2.4.4) la machine client ne sait pas répondre puisqu'elle ne peut pas reconnaître son adresse IP qu'elle ne connaît pas encore. Il existe deux solutions à ce problème. Soit, le module BOOTP, qui dispose de cette correspondance, enrichit la table ARP avant d'émettre. Soit, il n'en a pas les droits et alors il diffuse la réponse à toutes les machines du réseau, mais cette solution est à éviter.