Thursday, September 29, 2016

ARP A quoi tu sers

ARP A quoi tu sers



ARP : A quoi tu sers ?

pour comprendre lutilitŽ dARP nous aborderons rapidement la notion de rŽseau local et dadresse de niveau 2, puis nous Žtudierons le r™le dARP, ses mŽcanismes de fonctionnement et son format de paquet. Enfin, si vous tes sages, nous aborderons Žgalement la notion de Proxy-ARP

 

Introduction

Dans les chapitres prŽcŽdents nous avons ŽtudiŽ ladressage IP et les notions de base du routage. A plusieurs reprises mes schŽmas prŽsentaient des rŽseaux locaux (LAN : Local Area Network) nommŽs Ethernet et raccordŽs ˆ des routeurs.
Sur certains schŽmas jai fait appara”tre des trames de niveau 2 qui vŽhiculaient des paquets IP. Ces trames comportaient ˆ priori une adresse niveau 2 ! Enfin jai plusieurs fois fait allusion ˆ ARP qui permettrait de faire correspondre ladresse de niveau 2 avec celle de niveau 3 !
Si vous tes novices ou dŽbutants vous avez probablement dž me ha•r et me mettre au rang des mauvais formateurs qui font exprs de parler de trucs que vous connaissez pas sans vous Žclairer, pour se donner un air intelligent ! Peut-tre mme que vous nen avez pas dormi !
Je men veux de vous laisser dans cet Žtat, et je ne supporte pas quon me ha•sse ! Alors je vais tout vous dire ... Fini les insomnies !
Dans ce chapitre, pour comprendre lutilitŽ dARP nous aborderons rapidement la notion de rŽseau local et dadresse de niveau 2, puis nous Žtudierons le r™le dARP, ses mŽcanismes de fonctionnement et son format de paquet. Enfin, si vous tes sages, nous aborderons Žgalement la notion de Proxy-ARP (ha ! ha ! Vous la connaissiez pas celle-lˆ, hein ?).

Cest quoi un LAN ?

Un LAN est un RLE (je sais ! jexagre !). Un LAN, pour Local Area Network est, comme son nom anglais lindique, un rŽseau daire locale, ou plut™t un RŽseau Local dEntreprise (RLE). Cest ˆ dire un rŽseau qui ˆ une couverture gŽographique trs limitŽe, gŽnŽralement celle dun site ou dun batiment.

CaractŽristiques

Le but de ce cours nŽtant pas de prŽsenter les LANs je citerai leurs caractŽristiques essentielles :
  • couverture gŽographique faible (je viens de le dire !)
  • hauts dŽbits de transmission (plusieurs MŽga bits par seconde : Mbps). Leur faible couverture gŽographique permet dinstaller des supports physiques dexcellente qualitŽ (affaiblissement faible, peu de diaphonie et paradiaphonie, bande passante ŽlevŽe) pour la transmission de donnŽes. Ces supports sont de la paire torsadŽe (L120, catŽgorie 5, etc.), de la fibre optique ou du c‰ble coaxial (de plus en plus rare !).
  • rŽseau de diffusion (avant larrivŽe des switchs je sais ...Mais une chose ˆ la fois ! Pensez ˆ ceux qui ny connaissent rien !). Cest ˆ dire que toute donnŽe Žmise sur le rŽseau est vue par tous les connectŽs. Lorsquune station envoie une trame de niveau 2 (rappelez-vous le modle OSI ! Sur un support physique on implŽmente une procŽdure de niveau 2), cette trame est diffusŽe ˆ toutes les stations prŽsentes sur le rŽseau local. Cette opŽration est facilitŽe par la topologie logique (et Žventuellement physique) du rŽseau. Les stations sont connectŽs ˆ un bus ou ˆ un anneau (pour 99% des cas !). On dit que les rŽseaux locaux fonctionnent sur des supports partagŽs. Cette caractŽristique est extrmement importante car cest elle qui oblige ˆ la mise en place dun adressage au niveau 2.
  • mŽthode daccs au support. Chaque type de LAN met en oeuvre une procŽdure particulire, et normalisŽe, daccs au support afin dŽmettre les trames. Cette procŽdure est communŽment appelŽe leMAC : Medium Access Control. Dune manire gŽnŽrale Žtant donnŽ que le support est partagŽ entre toutes les stations dun rŽseau local, seule une trame ˆ la fois est vŽhiculŽe par le support. Le MAC veille donc ˆ donner Žquitablement la parole ˆ chaque station, et bien sžr dŽtecte les Žventuelles cacophonie si certaines stations ne respectent pas le jeu. Enfin le MAC dŽfini le format de la trame de niveau 2. Vous pouvez assimilŽ le MAC ˆ la procŽdure de niveau 2 au mme titre quHDLC par exemple pour un rŽseau WAN.
Pour la suite de ce chapitre, il est important de retenir que :
  • un LAN est un rŽseau de diffusion qui partage son support entre toutes les stations prŽsentes (technologie logique du bus).
  • un LAN implŽmente une procŽdure de niveau 2 nommŽe MAC qui dŽfinie un format de trame et gre la mŽthode daccs au support.
  • en raison de la caractristique de diffusion, le MAC dŽfini un adressage de niveau 2 pour les trames (adresse de destination et adresse source).

Principaux LAN

La star incontestŽe est Ethernet ! Ce type de rŽseau local reprŽsente aujourdhui plus de 80% du parc. Il se dŽcline en plusieurs dŽbit, 10, 100, 1000 et bient™t 10 000 Mbps ! Les appelations courantes sont respectivmentEthernet, Fast Ethernet, Giga Ethernet et 10 Giga Ethernet (il y a mme des bruits de couloirs sur du Tera Ethernet ! Moi a me fait peur !).
Un autre rŽseau local assez connu, mais en sŽrieuse perte de vitesse : Token Ring (Anneau ˆ jeton). Cest une production dIBM ! Belle technique, bonne qualitŽ de service mais pas assez ouvert, trop complexe. Nexiste que dans les environnement IBM dancienne gŽnŽration (SNA). Il se dŽcline en deux versions 4 et 16 Mbps.
Parfois vous entendrez parler de FDDI mais pour moi cest un MAN (Metropolitan Area Network) offrant une couverture gŽographique dune centaine de Km. Ce nest pas un LAN. Mais il est vrai quil est parfois utilisŽ en LAN pour son dŽbit (100 Mbps) et sa fiabilitŽ (double-anneau ˆ reconfiguration automatique). Cest une technologie assez chre.

Ladressage MAC

Ce qui nous prŽoccupe dans ce cours, cest ladressage de niveau 2. En effet sur un LAN, les stations voient passer toutes les trames Žmises, il faut donc quelles puissent diffŽrencier celles qui les concerne des autres. Pour cela, elles vont se baser sur ladresse destination de la trame. Une station ne lira le contenu que des trames qui lui sont adressŽes.
Quand une trame est adressŽe ˆ une station unique du rŽseau local, elle comporte un format dadresse dit "unicast". Mais une trame peut Žgalement tre adressŽe ˆ un groupe de stations ou ˆ toutes les stations du rŽseau local. Ladressage est alors respectivement nommŽ "multicast" et "broadcast".
La station qui reoit une trame doit pouvoir y rŽpondre. Chaque trame possŽde donc une adresse MAC sourcequi permet au destinataire didentifier lŽmetteur.
Pour des raisons que je ne prŽsenterai pas ici, ladressage MAC garanti lunicitŽ mondiale dune adresse. Ladresse dune station est dailleurs inscrite "en dur" sur la carte rŽseau installŽe dans la machine.
Cette adresse est dŽfinie sur 6 octetsLes trois premiers octets indiquent le numŽro du constructeuret les trois derniers indiquent le numŽro de la carte dans la sŽrie du constructeur. Si demain vous voulez vous mettre ˆ produire des cartes Ethernet, pour faire concurrence ˆ 3Com (les fameuses EtherLink), il vous faudra dabord demander ˆ un organisme central (je sais plus lequel !), une adresse constructeur. Aprs quoi, vous vous engagez ˆ ne pas produire deux cartes ayant le mme numŽro sur les toris derniers octets. Ainsi lunicitŽ de ladresse est garanti ! Bien sžr si vous dŽcidez de concurrencer Cisco il vous faudra prendre plusieurs adresses constructeurs, pour pouvoir produire toutes vos cartes ! Mais sur 6 octets cest :
  • 224 (plus de 16 millions !) constructeurs possibles
  • 224 (plus de 16 millions !) cartes par constructeur !
En vŽritŽ, pour assurer les adressages multicast et broadcast, certains bits sont bloquŽs notamment sur la partie constructeur ! Mais on a de la marge !
Lorsquon Žnonce une adresse MAC, on donne sa valeur en hexadŽcimal pour chaque octet (Et oui ! Aprs le dŽcimale et le binaire, on passe ˆ lhŽxadŽcimal ! Pas facile le rŽseau !). Par exemple : 00.00.0C.1A.BE.34 ! Super lisible non ?
Peu importe ! Retenez simplement :
  • quune adresse MAC se dŽfinie sur 6 octets
  • quil existe des adresses MAC destinations "unicast", et "broadcast" (vous pouvez oublier le "multicast" pour ce cours !). Ladresse destination broadcast a pour valeur hŽxadŽcimale : FF.FF.FF.FF.FF.FF (tous les bits ˆ 1 !).
  • que ladresse est, gŽnŽralement, fixŽe "en dur" sur la carte rŽseau de la machine. Autrement dit, si vous changez la carte rŽseau dune machine vous allez changer dadresse MAC !! Croyez-moi, ce nest pas anodin si jinsiste sur ce point !
Vous navez pas besoin den savoir plus pour aborder ARP.

R™le dARP

Nous avons vu quune station ne lisait le contenu dune trame quˆ la condition quelle lui soit adressŽe. Or le paquet IP est justement placŽ dans la trame ! Lorsquune couche haute transmets des donnŽes ˆ une autre machine, elle communique ˆ la couche IP, ladresse IP de destination.
IP formate ensuite un paquet avec une entte IP. Celle-ci comportent ladresse de destination, transmise par la couche supŽrieure, et ladresse IP source de lŽmetteur. Cette dernire est connu par IP car vous lavez initialisŽe lors de linstallation de la machine.
IP communique ce paquet ˆ la couche 2 (ici le MAC) pour lencapsuler dans une trame MAC avant Žmission sur le support. Mais il doit Žgalement communiquer ladresse MAC de destination de la trame, pour que la couche 2 puisse formater correctement la trame ! Do IP sortira-t-il cette adresse ? Il va linventer ? Non ... ARP est lˆ !
ARP pour Address Resolution Protocol prend en charge, comme son nom lindique, la rŽsolution dadresse entre le niveau 2 et le niveau 3. Il a pour r™le de trouver ladresse MAC correspondant ˆ une adresse IP donnŽe.
Lorsquil a dŽcouvert cette adresse, il met ˆ jour une table ARP !

Fonctionnement dARP

Nous venons de voir quIP doit transmettre ˆ la couche MAC ladresse de destination MAC de la trame qui vŽhiculera le paquet IP transmis. La procŽdure est la suivante :
  • IP scrute sa table ARP pour trouver la correspondance MAC de ladresse IP transmise par la couche supŽrieure :
    • Sil na jamais communiquŽ avec la station ayant cette adresse depuis son "boot" (la table ARP est en RAM, donc volatile !), il ne conna”t pas la correspondance et passe ˆ lŽtape suivante.
    • Sil trouve la correspondance il transmet ladresse MAC ˆ la couche MAC en mme temps que son paquet IP (rappelez-vous le modle OSI et le dialogue vertical inter-couches !) et cest fini pour lui !
  • Sil ne trouve pas de correspondance, il transmet ladresse IP destination au protocole ARP, en lui demandant de trouver la correspondance dadresse MAC :
    • ARP formate un paquet ARP Request (nous verrons son format plus tard), quil place directement dans une trame MAC "broadcast". Celle-ci, parce quelle est Žmise en broadcast, est lue par toutes les stations du LAN. Le paquet ARP_Request dit : "Coucou, je suis 10.0.0.1 sur 00.00.0C.1A.34.EC et je cherche 10.0.0.2. Y a quelquun ??".
    • Toutes les stations actives du rŽseau reoivent la trame et lisent son contenu. Elles dŽtectent un paquet ARP-Request quelles transmettent ˆ leur propre sous-programme ARP.
    • Seule la station ayant ladresse IP indiquŽe dans le paquet ARP_Request rŽpondra ! Elle Žmettra un paquetARP_Reply annonant : "Salut 10.0.0.1 ! Moi je suis bien 10.0.0.2 et jhabite ˆ 00.00.0C.2A.32.55 ! Ecris-moi !". Ce paquet ARP_Reply est encapsulŽ dans une trame Žmise en "unicast" ˆ la station qui a recherchŽe ladresse (adresse MAC : 00.00.0C.1A.34.EC pour notre exemple), il est, en effet, inutile dembter tous le monde avec la rŽponse ! La station en profite Žgalement pour mettre ˆ jour sa table ARP (pour notre exemple : 10.0.0.1 = 00.00.0C.1A.34.EC).
  • La station ayant initiŽ la sŽquence ARP, reoit donc une trame MAC qui lui est adressŽe et contenant un paquet ARP_Response vŽhiculant ladresse MAC en correspondance avec ladresse IP sur laquelle elle a lancŽ la recherche. Elle met ˆ jour sa table ARP (pour notre : 10.0.0.2 = 00.00.0C.2A.32.55).
La sŽquence de recherche est terminŽe ! Maintenant IP peut envoyer son paquet ˆ la couche MAC en transmettant ladresse MAC !
Vous voyez, ARP cest trs simple !


Formats des paquets ARP

ARP est encapsulŽ directement dans IP (il nest pas placŽ dans UDP ou TCP). Il propose deux paquets :
      • La requte pour initier la recherche : ARP_Request
      • La rŽponse ˆ la requte : ARP_Reply
  • Le champ HW : indique le type de rŽseau support sur lequel la sŽquence a ŽtŽ activŽe. Pour Ethernet le code est (0001)h.
  • Le champ Longueur dadresse MAC : indique le nombre doctets des champs dadresse MAC des paquets ARP. La valeur est gŽnŽralement (0006)h.
  • Le champ Longueur dadresse protocolaire : indique la longueur en octets des champs dadresse de niveau 3. Pour IP la valeur est (0004)h..
  • Le champ Code dopŽration : indique le type de paquet ARP. (0001)h = ARP_Request et (0002)h = ARP_Response (appelŽ aussi ARP_Reply).
  • Les champs adresse MAC source et adresse protocolaire source : supportent les adresses MAC et protocolaire (IP) de lŽmetteur du paquet. Dans le cas dun paquet ARP_Request ce sont donc les adresses niveau 2 et 3 de linitiateur de la sŽquence ARP. Dans le cas du paquet ARP_Reply, la station rŽpondant ˆ la requte ARP y place ses propres adresses niveau 2 et 3.
  • Les champs adresse MAC destination et adresse protocolaire destination : supportent les adresses MAC et protocolaire (IP) de la station ˆ atteindre. Dans le cas dun paquet ARP_Request ce sont donc les adresses niveau 2 et 3 de la station pour laquelle linitiateur de la sŽquence ARP a lancŽ la recherche. Comme lŽmetteur du paquet ne connait pas ladresse niveau 2 de la station quil cherche ˆ atteindre (normal ! cest justement ce quil cherche ˆ conna”tre !), le champ adresse MAC destination est placŽ ˆ 0. Dans un paquet ARP_Request le champ adresse MAC destination est donc toujours ˆ 0, par contre le champ adresse protocolaire destination contient toujours ladresse niveau 3 de la station dont on veut faire la rŽsolution dadresse. Dans le cas du paquet ARP_Reply, la station rŽpondant ˆ la requte ARP remplace les valeurs de ces champs par les valeurs dadresse de lŽmetteur du paquet ARP_Request. Elle recopie en fait les champs adresse MAC source et adresse protocolaire source du paquet ARP_Request reu dans les champs destination correspondants du paquet ARP_Reply Žmis en rŽponse.

Quelques remarques ˆ propos dARP

Les problme liŽs ˆ la table ARP

Je vous lai prŽcŽdemment indiquŽ la table ARP est mŽmorisŽe en RAM. De plus, dans la majoritŽ des cas il ny a pas de timeout sur les tables ARP. Ceci veut dire que lorsquune correspondance MAC-IP a ŽtŽ rŽalisŽe elle reste mŽmorisŽe dans la station jusquau "reboot" de celle-ci. Et croyez-moi ! Ce nest pas anodin !
Dans une architecture classique des stations et des serveurs partageant le mme rŽseau local discutent ensemble. Supposons quun PC rencontre un problme vous allez le remplacer. La carte rŽseau du nouveau PC aura une adresse MAC diffŽrente. Par contre vous aurez rŽaffectŽ au PC la mme adresse IP. Mais le serveur a mŽmorisŽ dans sa table ARP la correspondance "Ancienne @MAC-@IP". Sil Žmet des donnŽes vers le PC celui-ci ne lira pas les trames puisque leurs adresses destinations ne correspondent pas ˆ son adresse MAC !
Rassurez-vous ! Pour un PC ce nest pas grave ! En effet, pour le remplacer vous avez dž le mettre hors tension. Le nouveau PC a donc une table ARP vierge. Comme un PC est plut™t client, cest lui qui va demander des infos au serveur, ce nest pas le serveur qui va dŽcider de lui parler de lui-mme (il a autre chose ˆ faire, le bougre, que de faire la causette aux nouveaux qui lui demandent rien !!). Le PC va donc lancer une sŽquence ARP vers le serveur pour mettre ˆ jour sa table et le serveur va en profiter pour dŽtecter la modification dadresse MAC et mettre ˆ jour sa propre table !
Mais imaginons que vous remplaciez une station qui ne cause pas toute seule sans tre sollicitŽe ! Imaginez que vous remplaciez un serveur ou un routeur !! Pensez-bien ˆ faire rebooter les PC du LAN ... Sinon ... Plus de communication avec le serveur ou le routeur ! Toutes les tables ARP des stations sont fausses pour la rŽsolution dadresse de lŽquipement que vous avez remplacŽ !

ARP et la passerelle par dŽfaut

Dans les exemples de routage des chapitres prŽcŽdents, et notamment dans le paragraphe "Sortir du rŽseau" du chapitre 6, nous avons vu quune station envoie son paquet ˆ une passerelle par dŽfaut lorsque le paquet est ˆ destination dun autre rŽseau IP.
Nous avons trs succintement ŽvoquŽ le r™le dARP dans ce mŽcanisme. En effet, comment envoyer un paquet IP ˆ destination de 12.0.0.1 en voulant le tranfŽrer ˆ 10.0.0.254 sans changer ladresse IP du paquet ? Cest simple ... On lenvoie dans une trame ayant pour adresse destination, ladresse MAC du routeur (passerelle).
Lorsque la station doit envoyer un paquet en dehors de son rŽseau IP, elle scrute sa configuration pour trouver ladresse de Gateway Default que vous lui avez donnŽ lors de son installation. Puis elle regarde dans sa table ARP, ladresse MAC correspondante ˆ ladresse IP de la Gateway Default. Si celle-ci existe dans la table ARP, la station encapsule son paquet IP dans une trame ˆ destination de ladresse MAC de la passerelle. Si celle-ci nexiste pas, elle lance une procŽdure de rŽsolution dadresse ARP, telle que nous lavons prŽcŽdemment ŽtudiŽ !
Et le tour est jouŽ ! La passerelle reoit une trame qui lui est destinŽe et qui vŽhicule un paquet IP qui ne lui est pas destinŽ. Elle applique lorganigramme de routage tel que nous lavons vu au chapitre 6.

La tempte du matin ...

Tous le monde commence son travail entre 8 et 9 heures le matin ... Enfin cest la moyenne des bureaux ... En arrivant la premire opŽration est dallumer son PC avant mme de retirer son manteau (on espre que Windows aura fini son boot quand on sera revenu du premier cafŽ !).
Comme les tables ARP sont vides ˆ ce moment lˆ (rappelez-vous, elles sont stockŽes en RAM, donc volatile). Ds quon va appelŽ un serveur il va falloir renseigner la table ARP. Chaque fois quon appelle une ressource il faut de nouveau renseigner cette table.
Les requtes sont vŽhiculŽes par des trames "broadcast", qui sont donc luent par toutes les stations. Bien souvent seuls les serveurs sont sollicitŽs et sont donc les seuls ˆ rŽpondre.
Quoiquil en soit, lorsque vous placez un analyseur sur un rŽseau LAN vous assistez ˆ des "temptes de broadcast" dans ce crŽneau horaire. Ceci entra”ne une surcharge momentanŽe du rŽseau ... Il est dŽconseillŽ de procŽder dans ce crŽneau horaire ˆ des opŽrations lourdes de duplication de bases par exemple !! Vous noterez un ralentissement non nŽgligeable !
Les serveurs doivent rŽpondre ˆ des centaines de requtes ARP, le LAN vŽhicule deux trames par requte, toutes les stations lisent les broadcast des requtes ARP ... Et on travaille quand ?

ARP et la sŽcuritŽ !