ARP Le protocole ARP
Rappel... ARP est un protocole de couche 3.
Pourquoi mapper une adresse MAC avec une adresse IP ? Adresse MAC de destination ??? Table ARP Adresse IP Adresse MAC 172.16.10.3 00-0C-04-32-14-A1 172.16.10.19 00-0C-14-02-00-19 172.16.10.33 00-0C-A6-19-46-C1 Hôte Stevens Hôte Cerf 172.16.10.10 172.16.10.25 255.255.255.0 255.255.255.0 MAC 00-0C-04-17-91-CC MAC 00-0C-04-38-44-AA Source Destination 172.16.10.0/24 Routeur A Ethernet 0 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32
Les composants matériels (hôtes, routeurs, serveurs, etc Les composants matériels (hôtes, routeurs, serveurs, etc.) utilisent des adresses IP pour contacter d'autres unités : dans leur propre réseau/sous-réseau dans des réseaux/sous-réseaux différents.
Les adresses de réseau (IP - couche 3), concernent l'adresse source de l'émetteur et l'adresse du destinataire… qui peut être dans un autre réseau… Dans un datagramme IP on trouve l’adresse IP d'origine et l’adresse IP de destination Les adresses de liaison (niveau 2), telles que les adresses MAC Ethernet, sont utilisées pour obtenir le paquet IP d'un noeud jusqu'au noeud suivant Dans une trame Ethernet on va trouver l’adresse MAC d'origine du noeud qui émet la trame et l’adresse MAC de destination du noeud suivant.
Pourquoi les unités doivent-elles mapper une adresse MAC avec une adresse IP ? Pour livrer le paquet IP dans une trame Ethernet jusqu'au prochain noeud (saut), lequel peut être la destination finale ou une destination intermédiaire (routeur). Pour mieux comprendre ce concept, prenons deux exemples concrets.
Exemple 1 : Deux unités (hôtes) se situent dans le même sous-réseau Hôte Stevens Hôte Cerf 172.16.10.10 172.16.10.25 255.255.255.0 255.255.255.0 MAC 00-0C-04-17-91-CC MAC 00-0C-04-38-44-AA Source Destination 172.16.10.0/24 Routeur A Ethernet 0 172.16.10.1 Dans cet exemple, Stevens situé à l'adresse IP 172.16.10.10 souhaite envoyer un paquet IP à Cerf situé à l'adresse IP 172.16.10.25. 255.255.255.0 MAC 03-0D-17-8A-F1-32
Stevens doit envoyer le paquet : directement à la destination finale Cerf s’il est sur le même réseau/sous-réseau c’est la remise directe ou bien b) à la passerelle par défaut (le routeur), pour qu’elle fasse suivre le paquet si l’hôte Cerf est sur un autre réseau/sous-réseau c’est la remise indirecte Comment Stevens sait-il où envoyer ce paquet ?
soit l'adresse IP de Cerf (172.16.10.25) Selon la réponse, Stevens devra chercher dans sa table ARP (qui ne garde que des adresses du même réseau/sous-réseau que lui) soit l'adresse IP de Cerf (172.16.10.25) cas de la remise directe soit l'adresse IP de la passerelle par défaut, à savoir celle du routeur A : 172.16.10.1 cas de la remise indirecte. C'est LA question !?
La question Comment savoir si l’adresse IP recherchée dans la table ARP appartient ou non au même réseau/sous-réseau ? Et donc à qui adresser la requête ARP ? S'agit-il de : L'adresse IP de l'hôte de destination ? L'adresse IP de la passerelle par défaut (le routeur) ?
La réponse Tout dépend si l'adresse de destination finale se situe sur le même sous-réseau, ou sur un réseau ou sous-réseau différent. L’émetteur doit donc déterminer si l'adresse IP de destination finale se situe sur le même réseau /sous-réseau que lui.
Même sous-réseau Si la destination finale se trouve sur le même sous-réseau que l'émetteur, ce dernier sait qu'il peut envoyer directement le paquet à la destination finale. Il recherche l'adresse IP de la destination finale dans sa table ARP afin de connaître l'adresse MAC.
Si l'adresse IP est présente dans la table ARP: l'émetteur encapsule le paquet IP dans la trame Ethernet et utilise l'adresse MAC extraite de la table ARP comme adresse MAC de destination. Si l'adresse IP ne figure pas dans la table ARP, l'émetteur devra envoyer une requête ARP aux hôtes de son réseau (broadcast FF FF FF FF FF FF) afin d'obtenir l'adresse MAC en retour.
Exemple 1 : Deux hôtes se situent dans le même sous-réseau. Hôte Stevens Hôte Cerf 172.16.10.10 172.16.10.25 255.255.255.0 255.255.255.0 MAC 00-0C-04-17-91-CC MAC 00-0C-04-38-44-AA Source Destination 172.16.10.0/24 Routeur A Ethernet 0 Stevens (172.16.10.10) veut envoyer un paquet IP à Cerf (172.16.10.25). 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32
Stevens, compare son adresse IP à l'adresse IP de l'hôte de destination, en utilisant son masque de sous-réseau pour extraire la partie réseau/sous-réseau des deux adresses IP. En effectuant des opérations ET sur les deux adresses IP, l'hôte Stevens détermine si les deux hôtes se trouvent sur le même réseau/sous-réseau.
------------------------- -------------- Adresse IP de l'hôte Stevens 172.16.10.10 Masque de sous-réseau de Stevens 255.255.255.0 ------------------------- -------------- Réseau de l'hôte Stevens 172.16.10.0 Adresse IP de l'hôte Cerf 172.16.10.25 Masque de sous-réseau de Stevens 255.255.255.0 Réseau de l'hôte Cerf 172.16.10.0 Stevens utilise son propre masque de sous-réseau, pour les deux opérations ET.
Stevens appartient au sous réseau 172. 16. 10 Stevens appartient au sous réseau 172.16.10.0 et Cerf se situe sur le même sous-réseau Même sous-réseau ! Cela signifie que Stevens peut envoyer directement le paquet à Cerf. Il lui reste à rechercher l'adresse IP de Cerf dans sa table ARP afin de connaître l'adresse MAC de Cerf. Ainsi, il pourra encapsuler le paquet IP dans la trame Ethernet et l'envoyer directement à Cerf.
Stevens recherche dans sa table ARP l'adresse IP de Cerf… ce qui devrait lui donner l’adresse MAC Adresse MAC de destination ??? Table ARP Adresse IP Adresse MAC 172.16.10.3 00-0C-04-32-14-A1 172.16.10.19 00-0C-14-02-00-19 172.16.10.33 00-0C-A6-19-46-C1 Hôte Stevens Hôte Cerf 172.16.10.10 172.16.10.25 255.255.255.0 255.255.255.0 MAC 00-0C-04-17-91-CC MAC 00-0C-04-38-44-AA Source Destination 172.16.10.0/24 Routeur A Ethernet 0 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32
Dans l'exemple précédent, l'adresse IP de l'hôte Cerf n'apparaît pas dans la table ARP de l'hôte Stevens. Stevens doit donc envoyer une requête ARP portant sur l'adresse IP 172.16.10.25, (adresse IP de Cerf). Rappelons que Stevens sait qu'il peut émettre directement une requête ARP pour Cerf, car il a identifié qu'ils se trouvaient, tous deux, sur le même sous-réseau.
Passons maintenant à la génération de la requête ARP À quoi ressemble un paquet ARP ?
Requête ARP en provenance de Stevens (172. 16. 10 Requête ARP en provenance de Stevens (172.16.10.10) à destination de “TOUS” " Salut à tous ! J'ai l’adresse IP (172.16.10.10) et j'aimerais que l'hôte (172.16.10.25) m'envoie son adresse MAC. " champ op – Requête ARP = 1 Réponse ARP = 2 Requête RARP = 3 Réponse RARP = 4
Réponse ARP en provenance de Cerf (172. 16. 10 Réponse ARP en provenance de Cerf (172.16.10.25) à destination de Stevens " Salut, émetteur de la requête ARP ! Voici l'adresse MAC dont tu avais besoin pour cette adresse IP. " C'est celle-ci ! champ op – Requête ARP = 1 Réponse ARP = 2 Requête RARP = 3 Réponse RARP = 4
Stevens reçoit la réponse ARP et entre l'adresse MAC et l'adresse IP de Cerf dans sa table ARP. Stevens dispose à présent de tout ce dont il a besoin pour encapsuler le paquet IP dans la trame Ethernet et pour envoyer directement ce paquet à Cerf.
Exemple 2 : Deux hôtes sont situés sur des sous-réseaux différents Hôte Perlman Hôte Stevens 172.16.20.12 172.16.10.10 255.255.255.0 255.255.255.0 MAC 00-0C-22-A3-14-01 MAC 00-0C-04-17-91-CC Source Destination 172.16.10.0/24 172.16.20.0/24 Routeur A Ethernet 0 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32 Dans cet exemple, Stevens (172.16.10.10) souhaite envoyer un paquet IP à l'hôte Perlman à l'adresse IP 172.16.20.12
Stevens doit envoyer ce paquet : directement à la destination finale, à savoir à Perlman (remise directe) ou bien b) à la passerelle par défaut, en l'occurrence le routeur, de sorte que celle-ci fasse suivre le paquet (remise indirecte – routage) Comment Stevens sait-il où envoyer ce paquet ?
En fonction de la réponse, Stevens va rechercher soit l'adresse IP de Perlman, à savoir 172.16.20.12, dans sa table ARP, soit celle de la passerelle par défaut, en l'occurrence l'adresse IP 172.16.10.1 du routeur A. C'est LA question !
La question Quelle adresse IP l'émetteur (Stevens) recherche-t-il dans sa table ARP ? Si cette adresse IP n'y figure pas, pour quelle adresse IP émet-il une requête ARP ? S'agit-il de : L'adresse IP de l'hôte de destination ? L'adresse IP de la passerelle par défaut (le routeur) ?
La réponse Tout dépend si l'adresse de destination finale se situe sur le même sous-réseau, ou sur un réseau ou sous-réseau différent. L’émetteur doit déterminer si l'adresse IP de destination finale se situe sur le même réseau/sous-réseau que lui.
Sous-réseau différent Si la destination finale se situe sur un sous-réseau différent, l'émetteur sait qu'il ne peut pas y envoyer directement le paquet. Dans ce cas, l'émetteur va rechercher l'adresse IP de la passerelle par défaut. C'est pourquoi, en général, les hôtes disposent non seulement d'une adresse IP et d'un masque de sous-réseau, mais aussi de l'adresse IP d'une passerelle par défaut.
La passerelle par défaut est généralement un routeur auquel les hôtes envoient des paquets quand l'adresse IP de destination se trouve sur un réseau ou un sous-réseau différent L'émetteur va alors rechercher l'adresse IP de la passerelle par défaut dans sa table ARP pour en connaître l'adresse MAC.
Si l'adresse IP est présente dans la table ARP de l'émetteur, il encapsulera le paquet IP dans la trame Ethernet et enverra le paquet à la passerelle par défaut (c'est-à-dire le routeur). Si l'adresse IP ne figure pas dans la table ARP, l'émetteur enverra une requête ARP pour connaître l'adresse MAC de la passerelle par défaut (le routeur).
Voyons un peu comment il procède en utilisant notre exemple. Hôte Perlman Hôte Stevens 172.16.20.12 172.16.10.10 255.255.255.0 255.255.255.0 MAC 00-0C-22-A3-14-01 MAC 00-0C-04-17-91-CC Source Destination 172.16.10.0/24 172.16.20.0/24 Routeur A Ethernet 0 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32 Dans cet exemple, Stevens (172.16.10.10) souhaite envoyer un paquet IP à Perlman (172.16.20.12)
Stevens (émetteur) compare son adresse IP à l'adresse IP du destinataire (Perlman) en utilisant son masque de sous-réseau pour extraire la partie réseau/sous réseau des deux adresses IP. En effectuant des opérations ET sur les deux adresses IP, Stevens détermine si les deux hôtes se trouvent sur le même réseau/sous-réseau.
------------------------- -------------- Adresse IP de l'hôte Stevens 172.16.10.10 Masque de sous-réseau de l'hôte Stevens 255.255.255.0 ------------------------- -------------- Réseau de l'hôte Stevens 172.16.10.0 Adresse IP de l'hôte Perlman 72.16.20.12 Réseau de l'hôte Perlman 172.16.20.0 Stevens utilise son masque de sous-réseau pour les deux opérations ET.
Stevens détermine qu'il appartient au sous-réseau 172. 16. 10 Stevens détermine qu'il appartient au sous-réseau 172.16.10.0 et que Perlman se situe sur le sous-réseau 172.16.20.0. Deux sous-réseaux différents ! Concrètement, cela signifie que Stevens ne peut pas envoyer le paquet directement à Perlman. Maintenant que Stevens sait que Perlman se situe sur un autre sous-réseau, il sait qu'il doit envoyer le paquet à la passerelle par défaut, à savoir le routeur. Stevens va alors rechercher l'adresse IP de la passerelle par défaut (adresse “en dur” ou obtenue auprès d'un serveur DHCP) dans sa table ARP.
Stevens recherche l'adresse IP du routeur dans sa table ARP Stevens recherche l'adresse IP du routeur dans sa table ARP... Ce qui lui donnera l’adresse MAC Adresse MAC de la passerelle (du routeur) par défaut ??? Table ARP Adresse IP Adresse MAC 172.16.10.3 00-0C-04-32-14-A1 172.16.10.19 00-0C-14-02-00-19 172.16.10.33 00-0C-A6-19-46-C1 Hôte Perlman Hôte Stevens 172.16.20.12 172.16.10.10 255.255.255.0 255.255.255.0 MAC 00-0C-22-A3-14-01 MAC 00-0C-04-17-91-CC Source Destination 172.16.10.0/24 172.16.20.0/24 Routeur A Ethernet 0 172.16.10.1 255.255.255.0 MAC 03-0D-17-8A-F1-32
Dans l'exemple précédent, l'adresse IP de Perlman n'apparaît pas dans la table ARP de Stevens (logique il n’est pas dans le même réseau/sous réseau !) L'adresse IP de la passerelle n'apparaît pas non plus dans la table ARP de Stevens Stevens doit donc envoyer une requête ARP portant sur l'adresse IP 172.16.10.1, c'est-à-dire l'adresse IP de la passerelle (routeur A). Stevens ne peut pas diffuser directement une requête ARP portant sur Perlman, car ils sont sur des réseaux/sous-réseaux différents.
Passons maintenant à la génération de la requête ARP À quoi ressemble donc un paquet ARP ?
Requête ARP en provenance de Stevens (172. 16. 10 Requête ARP en provenance de Stevens (172.16.10.10) à destination de “TOUS” " Salut à tous ! J'ai l’adresse IP (172.16.10.10) et j'aimerais que l'hôte (172.16.10.1) m'envoie son adresse MAC. " champ op – Requête ARP = 1 Réponse ARP = 2 Requête RARP = 3 Réponse RARP = 4
Réponse ARP du routeur A (172.16.10.1) " Salut, émetteur de la requête ARP ! Voici l'adresse MAC dont tu avais besoin pour cette adresse IP ". C'est celle-ci !
Stevens reçoit la réponse ARP et entre l'adresse MAC et l'adresse IP du routeur dans sa table ARP (même réseau/sous réseau). Stevens dispose à présent de tout ce dont il a besoin pour encapsuler le paquet IP dans la trame Ethernet et pour envoyer ce paquet au routeur.
C'est maintenant au tour du routeur A de réacheminer le paquet.