Encapsulation des protocoles
Lorsqu'un datagramme IP est envoyé sur un réseau éthernet alors sur le réseau il ne va circuler que des trames éthernet. Ces trames éthernet contiendront dans leur champs de données un datagramme IP. On dit que le protocole IP est encapsulé dans éthernet. L'encapsulation peut être plus complexe. Lorsque une machine envoie un datagramme ICMP, celui-ci sera encapsulé dans un datagramme IP qui sera encapsulé dans une trame éthernet.
Format de la trame éthernet
Une trame éthernet contient les champs suivants : * un préambule sur 64 bits : 31 fois 01 suivi de 11. Le preambule sert à la synchronisation. * l'adresse MAC du destinataire. * l'adresse MAC de l'expéditeur. * un code sur 16 bits indiquant le protocole utilisé au dessus d'éthernet. IP aura comme code 0800 (en hexadécimal) et ARP aura comme code 0806. * les données * un code détecteur d'erreur de type CRC permettant de savoir si la trame a été altérée ou non.
Le problème : Imaginons qu'une machine A veuille envoyer un datagramme IP à une machine B via un réseau éthernet. Le datagramme IP sera encapsulé dans une trame éthernet. A va avoir besoin des information suivante : * sa propre adresse IP. A connait son adresse IP car l'administrateur l'a configurée. * l'adresse IP de B. A la connait : un serveur DNS lui a fourni l'adresse IP de B. * sa propre adresse MAC : A la connait car elle est écrite sur sa carte éthernet. l'adresse MAC de B. A ne possède pas cette information ! A est incapable d'envoyer une trame éthernet à B sans cette information. Le protocole ARP va permettre à A de récupérer cette information.
Rôle du protocole ARP
Address Resolution Protocol permet d'obtenir l'adresse MAC d'une machine à partir de son adresse IP. Le format de la trame ARP sur 32 bits est constitué de 9 champs .: * champs 1 : type de réseau physique. Il s'agit d'un code indiquant la nature du réseau physique. Pour éthernet le code sera 01 (en hexadécimal). * champs 2 : il s'agit du code du protocole réseau utilisé. IP aura comme code 0800 (en hexadécimal). * champs 3 : longueur de l'adresse physique. Le protocole éthernet utilise des adresses de 48 bits soit 6 octets. Ce champs vaudra donc 6 pour un réseau éthernet. * champs 4 : longueur de l'adresse protocole. Le protocole IP utilise des adresse de 32 bits soit 4 octets. Ce champs vaudra donc 4 pour un réseau IP. * champs 5: opération indique la nature de l'opération demandée. Une demande ARP aura comme code 01 et une réponse ARP le code 02. * champs 6 : adresse physique de l'expéditeur. * champs 7 : adresse protocole de l'expéditeur. * champs 8 : adresse physique du destinataire. Pour les demandes ce champs est à 0. * champs 9 : adresse protocole du destinataire.
La table ARP
Les réponses des différentes demandes ARP sont mémorisées dans une table ARP qui contient les correspondances entre les adresses MAC et IP de différentes machines.
Un exemple d'échange de trames ARP
On considère 2 machines A et B sur un même réseau. A souhaite connaître l'adresse MAC de B dont l'adresse IP est connue. A envoie en broadcast une demande ARP. B notifie dans sa table ARP la correspondance entre l'adresse IP de A et son adresse MAC. B répond à A en lui transmettant son adresse MAC. A mémorise les correspondances entre l'adresse MAC et IP de B dans sa table ARP. Les données contenues dans la table ARP ont une validité de 20 minutes. Une fois ce delai dépassé, il faut refaire une demande ARP.
|