\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{mer. juin 9 12:15:17 CEST 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={rfc951},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={bootp},
CreationDate={D:20100609121517},
ModDate={D:20100609121517},
Keywords={réseaux}
}}
\begin{document}
 
\begin{center}
{\Huge rfc951 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large bootp}
 
\vspace{10mm}
 
\hspace{1mm}  \textbf{BOOTP} est un protocole d'amorçage permettant à une machine sans disque dur de découvrir sa propre adresse IP, l'adresse d'un hôte serveur, et le nom d'un fichier à charger en mémoire pour exécution. Une telle opération d'amorçage se déroule en 2 phases. La première permet de déterminer l'adresse puis le fichier à télécharger, et la 2eme phase consiste à transférer ce fichier via TFTP généralement, mais n'est pas une obligation, il est possible d'utiliser FTP ou SFTP. TFTP est préféré puisque les 2 phases résident dans la PROM du client. Le logiciel PROM devrait fournit un moyen d'effectuer un amorçage complet sans intervention de l'utilisateur. Un mécanisme devrait cependant permettre à l'utilisateur de fournir manuellement l'adresse et le nom de fichier, permettant de passer outre le protocole BOOTP et d'entrer directement dans la phase de transfert de fichier.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Aperçu du protocole }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Un seul échange de paquets est effectué. Des temporisateurs sont utilisés pour la retransmission jusqu'à la réception d'une réponse. La même composition de paquet est utilisée dans les 2 directions. Des champs de longueur fixée à un maximum raisonnable sont utilisés pour simplifier la définition de structure et l'analyse syntaxique.}
\item[\hspace{1mm} -]{Un champ Opcode existe et comprend 2 valeurs. Le client diffuse un paquet bootrequest, le serveur répond avec un paquet bootreply. La requête d'amorçage contient l'adresse matérielle du client et son IP, s'il la connait.}
\item[\hspace{1mm} -]{La requête peut optionnellement contenir le nom du serveur à partir duquel le client veut obtenir une réponse. C'est prévu afin que le client puisse exiger l'amorçage depuis un hôte spécifique.}
\item[\hspace{1mm} -]{La requête peut optionnellement contenir le nom de fichier « générique » à partir duquel démarrer.}
\item[\hspace{1mm} -]{Dans le cas d'un client qui ne connait pas son adresse IP, le serveur doit également disposer d'une base de données associant adresses matérielles et adresses IP. Cette IP est ensuite placée dans un champ de la requête d'amorçage.}
\item[\hspace{1mm} -]{Il est possible d'utiliser des agents relai, permettant aux clients de démarrer depuis des serveurs situés sur une autre réseau.}
\end{description}
 
\vspace{1cm}{\huge Format des paquets }
 
\
 
\hspace{1mm}  Un paquet BOOTP est encapsulé dans un datagramme UDP. Dans l'en-tête IP d'une requête d'amorçage, le client fournit sa propre adresse IP s'il la connaît, ou zéro sinon. Quand l'adresse du serveur est inconnue, l'adresse IP destination sera l'adresse de diffusion 255.255.255.255. L'en-tête UDP contient les numéros de port source et destination. Le protocole BOOTP utilise le port 68 « client BOOTP » et le port 67 « serveur BOOTP ». Le client envoie une requête en utilisant le port 67 en port de destination et 68 en port source.
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} op]{(1 octet) Type de message/code opératoire du paquet: 1= BOOTREQUEST, 2= BOOTREPLY}
\item[\hspace{1mm} htype]{(1 octet) Type d'adresse matérielle voir la RFC « Assigned Numbers » section ARP.}
\item[\hspace{1mm} hlen]{(1 octet) Longueur de l'adresse matérielle (ex : 6 pour Ethernet)}
\item[\hspace{1mm} hops]{(1 octet) Fixé par le client à 0 ; peut être utilisé par des passerelles lors d'amorçages au travers de passerelles}
\item[\hspace{1mm} xid]{(4 octets) ID de transaction : nombre aléatoire utilisé pour associer cette requête de démarrage avec la réponse qu'elle génère.}
\item[\hspace{1mm} secs]{(2 octets) Rempli par le client, secondes aléatoire utilisé pour associer cette requête de démarrage avec la réponse qu'elle génère.}
\item[\hspace{1mm} ciaddr]{(4 octets) Adresse IP du client ; remplie par le client dans la requête d'amorçage si elle est connue}
\item[\hspace{1mm} yaddr]{(4 octets) Votre adresse IP (Client) ; remplie par le serveur si le client ne connait pas sa propre adresse (si ciaddr valait 0)}
\item[\hspace{1mm} siaddr]{(4 octets) Adresse IP du serveur ; renvoyée dans une réponse d'amorçage par le serveur.}
\item[\hspace{1mm} giaddr]{(4 octets) Adresse IP de la passerelle utilisée dans l'amorçage au travers de passerelles optionnel}
\item[\hspace{1mm} chaddr]{(16 octets) Adresse matérielle du client ; remplie par le client}
\item[\hspace{1mm} sname]{(64 octets) Nom de l'hôte serveur}
\item[\hspace{1mm} file]{(128 octets) Nom du fichier de démarrage}
\item[\hspace{1mm} vend]{(64 octets) Zone optionnelle spécifique au vendeur.}
\end{description}
 
\hspace{1mm}  Si aucune réponse n'est reçue durant une certaine période de temps, le client devrait retransmettre la requête.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Utilisation du serveur bootpd }
 
\
 
\hspace{1mm} En général boopd est lancé par /etc/inetd, grâce aux lignes suivante du fichier /etc/inetd.conf : \\
\hspace{1mm} \textbf{bootps dgram udp wait root /etc/bootpd bootpd} \\
\hspace{1mm} bootpd est alors lancé uniquement lorsqu'une requête de démarrage arrive. A son démarrage, bootpd lit le fichier de configuration ( par défaut /etc/bootptab). Les ports utilisés sont spécifiés dans /etc/services \\
\hspace{1mm} \textbf{-c répertoire} \\
\hspace{1mm} Force bootpd à travailler dans le répertoire \\
 
\vspace{1cm}{\huge Configuration }
 
\
 
\hspace{1mm}  Le fichier de configuration de bootpd a un format dans lequel des symboles sensibles à la casse de deux caractères sont utilisé pour représenter les paramètres des hôtes. Ces déclarations de paramètres sont séparés par des « : ». Le format général est:
\vspace{5mm} \\
\hspace{1mm}  \textbf{hôte:tg=valeur:tg=valeur:tg=valeur}
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} bf]{Fichier de démarrage}
\item[\hspace{1mm} bs]{Taille du fichier de démarrage en bloc de 512 octets}
\item[\hspace{1mm} bc]{Liste des adresse des serveurs de cookies}
\item[\hspace{1mm} ds]{Liste des serveurs de nom de domaine}
\item[\hspace{1mm} gw]{Liste des adresses de passerelles}
\item[\hspace{1mm} ha]{Adresse matérielle de l'hôte}
\item[\hspace{1mm} hd]{Répertoire racine du fichier de démarrage}
\item[\hspace{1mm} hn]{Envoi le nom de l'hôte}
\item[\hspace{1mm} ht]{Type de matériel de l'hôte}
\item[\hspace{1mm} im]{Liste des adresses des serveurs d'impression}
\item[\hspace{1mm} ip]{Adresse IP de l'hôte}
\item[\hspace{1mm} ig]{Liste des adresses des serveurs de journalisation}
\item[\hspace{1mm} lp]{Liste des adresses lpr}
\item[\hspace{1mm} ns]{Liste des adresses des serveurs de noms IEN-116}
\item[\hspace{1mm} rl]{Liste des adresses des serveurs de protocole de localisation des ressources}
\item[\hspace{1mm} sm]{Masque de sous-réseau de l'hôte}
\item[\hspace{1mm} tc]{Suite de table}
\item[\hspace{1mm} to]{Décalage horaire en secondes par rapport à UTC}
\item[\hspace{1mm} ts]{Liste d'adresses de serveurs d'heure}
\item[\hspace{1mm} vm]{Sélecteur de cookie magique du revendeur.}
\end{description}
 
\hspace{1mm}  Il existe également le relai bootp: \textbf{bootpgw} qui utilise les même options sauf \textbf{-c}. \textbf{bootptest} est un utilitaire permettant de tester bootpd et bootpgw.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
