next up previous contents
Next: Connexion à distance : Up: Les applications. Previous: Les applications.

Protocole de démarrage : BOOTP.

  BOOTP (Bootsrap Protocol ) est un protocole de démarrage de terminaux X ou stations sans disque qui utilise UDP comme couche de transport et est généralement associé à TFTP (voir 2.7.4) ou NFS (voir 2.7.3). Comme RARP (voir section 2.4.4), il sert principalement à fournir son adresse IP à une machine que l'on démarre sur un réseau. Cependant il est plus intéressant que RARP, car il se situe à un niveau supérieur, il est donc moins lié au type de matériel du réseau. De plus, il transmet plus d'information que RARP qui, lui, ne renvoie qu'une adresse IP.

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.

  
Figure: Format de requête ou réponse BOOTP.
\begin{figure}
 \begin{center}
 
\includegraphics 
*{figbootp.eps} \end{center}\end{figure}

Le code vaut 1 pour une requête et 2 pour une réponse, le type de matériel vaut par exemple 1 pour un réseau Ethernet et dans ce cas le champ longueur de l'adresse physique vaut 6 (octets). Le champ compteur de saut vaut 0 en standard, mais si la demande transite par un routeur celui-ci l'incrémente de 1. L'identificateur de transaction est un entier de 32 bits fixé aléatoirement et qui sert à faire correspondre les réponses avec les requêtes. Le nombre de secondes est fixé par le client et sert à un serveur secondaire de délai d'attente avant qu'il ne réponde au cas où le serveur primaire serait en panne. Parmi les 4 adresses IP d'une requête, le client remplit celles qu'il connaît et met les autres à 0 (généralement il n'en connait aucune). Dans sa réponse, le serveur indique l'adresse IP de la machine client dans le champ votre adresse IP et sa propre adresse dans le champ adresse IP du serveur . Il peut aussi donner son nom terminé par le caractère nul. Si un proxy est utilisé, celui-ci indique son adresse dans le champ prévu. Le champ adresse matérielle du client sert à celui-ci pour y indiquer son adresse physique. Ainsi cette adresse sera plus facilement disponible pour le processus BOOTP serveur que celle placée dans la trame Ethernet. Le nom du fichier de boot est le nom du fichier transmis par le serveur au client pour que celui-ci puisse ensuite continuer son démarrage. La dernière partie du message est réservée à des caractéristiques particulières données par chaque constructeur de matériel et permet d'ajouter des fonctionnalités supplémentaires.

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.


next up previous contents
Next: Connexion à distance : Up: Les applications. Previous: Les applications.
Pascal Nicolas Université d'Angers
mardi, 2 novembre 1999, 09:20:50 MET