Comment les adresses IP sont-elles mappées aux adresses MAC?

14

J'ai lu sur les différences entre les adresses MAC et IP, et pourquoi nous avons besoin des deux.

Pour résumer, les adresses MAC sont des ID uniques physiques non modifiables pour chaque périphérique tandis que les adresses IP sont attribuées, modifiables et virtuelles. Pour analogier, les adresses MAC sont comme des personnes qui ont des noms permanents et les adresses IP sont où elles vivent actuellement.

Dans le monde réel, nous lions des adresses et des noms à l'aide d'un répertoire téléphonique. Quel mécanisme relie les adresses IP aux adresses MAC et où se trouve ce mécanisme dans le réseau?

CodyBugstein
la source
5
Après avoir examiné vos questions, je pense que vous bénéficierez d'un bon livre. Envisagez d'étudier quelque chose dans le sens de TCP / IP Illustrated, Vol. 1: Les protocoles de Stevens (FYI, l'édition 1993 est généralement considérée comme meilleure que la réédition 2011, bien que l'édition 1993 ne couvre que IPv4 en profondeur).
Mike Pennington
«Le réseau illustré: comment TCP / IP fonctionne dans un réseau moderne» et / ou «Guide TCP / IP: une référence complète et illustrée aux protocoles Internet» pourrait également valoir le coup d'œil.
Jens Link
4
@MikePennington Merci, c'est une belle façon de le formuler, par opposition à un "RTFM" et un -1. Je le lis maintenant en ligne :)
CodyBugstein
1
Les adresses MAC ne sont, en réalité, ni physiques, ni immuables, ni uniques. J'ai vu des appareils qui randomisent leur MAC à chaque redémarrage. Il existe certainement des utilitaires pour à peu près n'importe quelle plate-forme pour modifier temporairement ou définitivement le MAC de presque toutes les interfaces. iOS 8 va même randomiser le MAC wifi pour scanner les réseaux.
MacLemon

Réponses:

19

Le mécanisme est appelé ARP (Address Resolution Protocol) . Chaque ARP de périphérique Ethernet IPv4 pour résoudre les adresses mac Ethernet pour les adresses IP cibles. Les mappages IP vers mac sont stockés dans la table ARP de chaque appareil (l'annuaire téléphonique dans votre analogie).

Pour simplifier: Dans la plupart des cas, pour résoudre l'adresse MAC associée à une adresse IP, vous envoyez un paquet ARP de diffusion (à tous les périphériques du réseau), en demandant qui a cette adresse IP. L'appareil avec cette adresse IP répond à l'ARP (avec son adresse MAC).

mulaz
la source
la plupart du temps, je regarde juste à partir d'une table d'arp local. Juste la première fois qu'il doit faire une émission
Cruncher
^ ouais bien sûr, après avoir découvert le MAC des périphériques, il le stocke dans une table ARP pendant un certain temps (quelques minutes), il n'a donc pas à répéter le processus de requête ARP pour chaque paquet.
mulaz
Oh, je ne savais pas qu'il avait fait tomber la table après quelques minutes. Je pensais que ça tenait un moment. Est-ce que cela signifie pour le poison ARP, vous devez envoyer des réponses ARP quasi-fréquemment?
Cruncher
Oui, et l'hôte "réel" ne doit envoyer aucun paquet à la machine empoisonnée, sinon la machine stockera le "vrai" MAC.
mulaz
1
Selon ce que vous essayez de réaliser.
mulaz
13

Étant donné que la question a été étiquetée avec IPv6, j'y répondrai car IPv6 est très différent d'IPv4.

Pour commencer, ARPv6 n'existe pas. Le mappage entre les adresses de couche 2 et IPv6 est effectué par le NDP (Neighbour Discovery Protocol), qui est envoyé via ICMPv6. Ainsi, vous ne devez pas ignorer ICMPv6 et le filtrer, comme c'est la coutume avec l'IP hérité. Le NDP fournit deux types de messages qui sont intéressants ici: la sollicitation de voisins et la publicité de voisins. Un nœud qui veut apprendre une adresse de couche liaison pour une adresse IP particulière envoie une sollicitation de voisin à l' adresse de multidiffusion de nœud sollicité local de liaison correspondante - il n'y a plus de diffusion pour IPv6.

Par exemple, si l'adresse en question est 2001:db8::0011:2233:4455:6677, alors l'adresse de multidiffusion du nœud sollicité correspondant est ff02::1:ff55:6677, et l'adresse de multidiffusion Ethernet correspondante est 33:33:ff:55:66:77. Tous les nœuds avec une adresse se terminant par *55:6677appartiennent à ce groupe de multidiffusion et écouteront cela - ce n'est probablement que le système cible lui-même. La sollicitation de voisin contient également les adresses IPv6 unicast et l'adresse MAC du système de sollicitation.

À la réception, le nœud cible répond avec son annonce de voisin, qui est envoyée à l'adresse de monodiffusion (couche de liaison et IPv6) du nœud de sollicitation. Ainsi, le nœud sollicitant apprend l'adresse MAC du nœud cible.

Et oui, l'usurpation d'identité NDP fonctionne un peu comme l'usurpation d'identité ARP. Et non, IPsec n'est pas la réponse.

contre-mode
la source
" ARP lui-même ne peut pas être utilisé, car il a été conçu pour les adresses de couche réseau à 4 octets (par exemple IPv4). " Ce n'est pas vrai. ARP utilise des champs de longueur d'adresse pour spécifier la longueur d'adresse (jusqu'à 255 octets) pour les adresses de couche 2 et de couche 3 (voir RFC 826). La raison pour laquelle ARP ne peut pas être utilisé avec IPv6 est que IPv6 n'a pas de diffusion.
Ron Maupin
1
ARP a été remplacé par NDP dans la v6 pour des raisons de sécurité (et puis, comme tous les bons protocoles adjacents à la v6, a connu un fluage important de fonctionnalités), pas parce que la v6 n'a pas de diffusion - ARP utilise uniquement la diffusion L2 et aurait facilement pu être étendu pour fournir adresses v6.
Nick Bastin
2
Je ne sais pas si ARP a été remplacé pour des raisons de sécurité en premier lieu. Autant que je le vois, il y avait le désir de couvrir tous les protocoles de contrôle par ICMPv6. Comme effet secondaire, oui, vous pouvez sécuriser ICMPv6 par IPsec. Cependant, IPsec nécessite un échange de clés et IKE s'exécute sur UDP - qui nécessite une adresse IP. L'une des tâches du NDP est de négocier une adresse IP, et l'échange de clés manuel n'est pas évolutif, donc l'idée de NDP + IPsec = NDP sécurisé ne fonctionne pas de cette façon. Des alternatives comme SeND n'ont pas décollé (et ne le seront probablement jamais). En fin de compte, je ne vois aucun avantage en matière de sécurité du NDP sur ARP.
contre-mode
4

La meilleure réponse est bonne. Si cela peut vous aider, voici une description en termes d'analogie avec votre répertoire téléphonique. De vrais termes de réseautage entre parenthèses.

Sur la base de leur nom (adresse IP), vous savez qu'ils vivent dans votre quartier (domaine de diffusion). Vous regardez d'abord dans votre répertoire (cache ARP) pour voir si vous connaissez déjà leur adresse (adresse MAC). S'ils ne figurent pas dans le répertoire, vous sortez et criez (diffusez) «Où habite Steve?» Suffisamment fort pour que tout le monde puisse l'entendre (demande ARP). En supposant que Steve habite en fait là-bas et qu'il est éveillé, il répond - juste à vous, sans crier - «Voici mon adresse» (réponse ARP). Vous l'écrivez dans votre répertoire pour référence future (mise en cache ARP).

Jacktose
la source
Sûr. C'était un exercice amusant pour moi. De vraies choses comme la diffusion / monodiffusion ne correspondent pas parfaitement à l'analogie (crier / parler / courrier?), Alors prenez un grain de sel.
Jacktose
Pour l'éditeur: j'ai utilisé l'adresse plus tard dans l'analogie, pour MAC.
Jacktose
2
  1. Les adresses MAC peuvent être modifiées. Sous Linux, utilisez ip ou ifconfig pour la plupart des fenêtres, regardez les paramètres du pilote de votre interface réseau.

  2. Vous ne convertissez rien. Les adresses MAC sont sur la couche 2, IP sur la couche 3 du modèle OSI. Pour IPv4, ARP est utilisé pour savoir quelle adresse MAC (couche 2) appartient à une certaine adresse IP (couche 3). Pour IPv6, ICMPv6 (découverte du voisin) est utilisé.

Jens Link
la source
Désolé, j'aurais dû dire «traduire» et non «convertir»
CodyBugstein
0

Protocole de résolution d'adresse (ARP)

Adresse IP ---> ARP ---> Adresse MAC

Adresse MAC ---> RARP ---> Adresse IP

Adresse IP = adresse logique [32 bits]

Adresse MAC = adresse physique [48 bits]

Couche réseau (IP) ----> ARP ---> Couche liaison de données (MAC)

L'adresse IP est nécessaire dans la couche réseau pour identifier un hôte source / de destination.

L'adresse MAC est nécessaire dans la couche liaison de données pour identifier un hôte source / de destination.

Dipankar Nalui
la source
Vous avez tort sur RARP (beaucoup de gens ont cette idée incorrecte). C'est quelque chose qui était utilisé par un hôte pour déterminer sa propre adresse IP, et non les adresses IP d'autres hôtes. Il n'est plus utilisé.
Ron Maupin
0

La pile réseau recherche d'abord l'adresse IP de destination dans sa table de routage, à partir de là, elle détermine deux choses.

  1. Quelle interface le paquet doit être envoyé.
  2. Quelle est l'adresse IP du prochain saut. Si aucun saut suivant n'est spécifié dans la table de routage, l'adresse IP de la destination est utilisée comme saut suivant.

Notez que l'adresse IP du prochain bond est un concept purement local, elle ne fait jamais partie d'un paquet envoyé sur le câble.

Si le paquet doit être envoyé sur une couche de liaison multipoint (par exemple Ethernet, etc.), le système d'exploitation recherche alors le saut suivant dans sa table arp (ipv4) ou découverte de voisin (ipv6). S'il y trouve une entrée non périmée, il dispose de l'adresse MAC dont il a besoin et peut envoyer le paquet.

S'il n'a pas d'entrée utilisable, il met les paquets destinés à ce prochain bond en attente et envoie une demande pour trouver l'adresse MAC. Les mécanismes diffèrent ici un peu entre v4 et v6.

Dans v4, les requêtes d'arp sont envoyées. Ceci est normalement diffusé mais dans certains cas, si l'hôte a une entrée périmée, il peut d'abord essayer une demande de monodiffusion et ne retomber en diffusion qu'en cas d'échec. La réponse est normalement unicast.

Dans la version 6, les demandes de sollicitation de voisins sont envoyées à une adresse de multidiffusion générée à partir de l'adresse de saut suivante. La cible répond avec une annonce de voisin unicast. Les hôtes peuvent également envoyer des publicités de voisins au groupe "multidiffusion tous nœuds" (ou diffusion efficace) pour actualiser les entrées dans les caches de découverte de leurs voisins.

Peter Green
la source