TL; DR> Les adresses MAC sont un composant de bas niveau d'un réseau Ethernet (et d'autres normes similaires, telles que le WiFi). Ils permettent à un périphérique de communiquer avec une machine sur le réseau physique local (LAN) et ne peuvent pas être routés sur Internet, car le matériel physique pourrait en théorie être branché n'importe où dans le monde.
En revanche, les adresses IP couvrent l’ensemble de l’Internet et les routeurs les utilisent pour déterminer où envoyer les données, même si plusieurs sauts sont nécessaires pour atteindre leur destination. Toutefois, elles ne facilitent pas l’interface avec le matériel physique de votre réseau local.
Si nous trouvions un meilleur standard qu'Ethernet, il pourrait ne pas utiliser d'adresses MAC, mais le trafic IP provenant d'Internet pourrait toujours y circuler, même si d'autres personnes sur Internet n'en avaient jamais entendu parler.
Si nous trouvions un meilleur standard que l'IP (par exemple IPv6 si toutes les adresses IPv4 étaient épuisées), la plupart des matériels Ethernet pourraient transporter le nouveau type de trafic sans modification - et une simple mise à jour du logiciel / micrologiciel résoudrait l'essentiel du reste.
Les adresses MAC sont nécessaires pour assurer une fonction de réseau Ethernet local (ou wifi). Ils permettent à un périphérique réseau d'attirer l'attention d'un seul périphérique directement connecté, même si la connexion physique est partagée. Cela peut être important lorsque des milliers de périphériques sont connectés ensemble au sein d'une même organisation. Ils ne servent à rien sur l'internet au sens large.
Pour bien comprendre la réponse à cette question, vous devez comprendre le modèle OSI (parfois appelé le modèle à 7 couches) .
Pour que la communication se déroule entre 2 applications exécutées sur des machines distinctes ne disposant pas d'une connexion physique directe, il faut beaucoup de travail.
Autrefois, chaque application savait exactement quelles instructions de code machine devaient être exécutées afin de produire un signal approprié qui atteindrait et pourrait être décodé par l'application située à l'extrémité distante. Toute communication était effectivement point à point et le logiciel devait être conçu pour s'adapter à la situation exacte dans laquelle il devait être déployé. Évidemment, c'était insoutenable.
Au lieu de cela, le problème de la mise en réseau a été divisé en couches, et chaque couche savait comment parler à la couche correspondante sur une machine distante et comment communiquer avec la couche située en dessous (et parfois au-dessus) sur sa machine locale. Il ne connaissait rien des autres couches en place - votre navigateur Web n'a donc pas besoin de savoir s'il tourne sur une machine utilisant un réseau à jeton, Ethernet ou wifi - et n'a certainement pas besoin de savoir quel matériel la machine distante utilise.
Pour que cela fonctionne, le modèle à 7 couches utilise un système assez semblable aux enveloppes imbriquées; l'application crée ses données et les enveloppe dans une enveloppe à livrer par le système d'exploitation. Le système d'exploitation enveloppe cette information dans une autre enveloppe et la transmet au pilote réseau. Le pilote de réseau enveloppe cela dans une autre enveloppe et la place sur le câble physique. Etc.
La couche inférieure, la couche 1 , est la couche physique. Il s’agit de la couche de fils, de transistors et d’ondes radio. Dans cette couche, la communication n’est en général qu’un flot d’ondes et de morpions. Les données vont partout où il y a une connexion physique. Vous connectez le port réseau de votre ordinateur à votre commutateur à l'aide d'un câble CAT-5.
La couche 2 est la couche liaison de données. Cela fournit une certaine structure aux uns et aux autres, des capacités de détection et de correction des erreurs, ainsi que des indications sur le périphérique connecté physiquement (les connexions physiques peuvent ici se faire par wifi) devraient prêter attention au message. C’est la couche dans laquelle les adresses MAC entrent en jeu, et nous y reviendrons plus tard. Mais les adresses MAC ne sont pas la seule possibilité à cette couche. Les réseaux en anneau à jeton, par exemple, nécessitent une implémentation différente de la liaison de données.
La couche 3 est la couche réseau. C’est la couche sur laquelle l’IP travaille (bien que ce ne soit pas le seul protocole de couche réseau), et c’est ce qui permet aux ordinateurs d’envoyer un message qui peut parvenir à n’importe quel ordinateur du réseau. Il n’est pas nécessaire qu’il y ait une connexion directe entre les machines en question.
Les couches 4 à 7 sont des protocoles de niveau supérieur. Ils s'éloignent de plus en plus du matériel et se rapprochent de l'application. TCP, par exemple, repose sur le dessus de l'IP et fournit des mécanismes qui renvoient automatiquement les messages quand ils sont manquants.
Les adresses MAC fonctionnent donc sur la couche 2 et permettent à deux machines physiquement connectées d'envoyer des messages qui seront ignorés par d'autres machines partageant la même connexion physique.
Supposons que j’ai une application qui souhaite envoyer des données à la machine avec l’adresse IP 8.8.8.8.
La couche 3 encapsule les données dans une enveloppe contenant entre autres l'adresse IP 8.8.8.8, puis la transmet à la couche 2.
La couche 2 examine cette adresse IP et décide quelle machine à laquelle elle est directement connectée est capable de traiter ce message. Il disposera d'une table de recherche contenant une sélection des adresses IP directement connectées ainsi que l'adresse MAC correspondante de la carte réseau de cette machine. Cette table de consultation est construite à l'aide d'un protocole appelé ARP, qui permet à une carte réseau de poser des questions aux autres périphériques directement connectés. Ethernet réserve une adresse MAC spéciale, FF: FF: FF: FF: FF: FF, qui permet à un périphérique de communiquer avec tous les périphériques connectés physiquement.
Si l'adresse IP se trouve dans la table (ou peut être résolue via ARP), l'enveloppe de couche 3 sera enveloppée dans une enveloppe de couche 2 avec l'adresse MAC dans le nouvel en-tête, puis l'ensemble du paquet sera envoyé au matériel de couche 1. Le message sera transmis à la carte réseau avec l'adresse MAC correspondante et le pilote du réseau ouvrira l'enveloppe de couche 2 et transmettra le contenu à la partie du système d'exploitation qui s'attend à recevoir des messages à l'adresse IP spécifique.
Sinon, si l'adresse IP ne se trouve pas sur le réseau local, l'adresse MAC de la passerelle par défaut (routeur) configurée pour cette interface réseau sera configurée sur la nouvelle enveloppe, et le matériel transportera le paquet vers le routeur.
Le routeur remarque sa propre adresse MAC dans l'enveloppe de couche 2 et ouvre le paquet de niveau 2. Il examine l’adresse IP de l’enveloppe de niveau 3 et détermine l’orientation suivante du message, qui sera probablement le routeur de votre fournisseur de services Internet. Si le routeur utilise NAT (ou similaire), il peut même modifier l'enveloppe de niveau 3 à ce stade, afin de garder vos adresses IP internes privées. Il enveloppe ensuite l'enveloppe de niveau 3 dans une nouvelle enveloppe de niveau 2 adressée à l'adresse MAC du routeur du fournisseur de services Internet et envoie le message à cet emplacement.
Ce processus de suppression de l'enveloppe externe et d'envelopper le contenu dans une nouvelle enveloppe adressée à l'étape suivante de la chaîne se poursuivra jusqu'à ce que le message atteigne la machine de destination.
Les enveloppes continueront ensuite à être déchirées au fur et à mesure que le message remontera dans les couches jusqu'à ce qu'il atteigne enfin le destinataire souhaité. Ce sera une application qui, espérons-le, saura quoi faire avec le message - mais n'aura aucune idée de message reçu ni toutes les étapes nécessaires pour obtenir la réponse à la machine d'origine.
Mais tout fonctionne, presque comme par magie!
Notez que les commutateurs réseau peuvent utiliser des adresses MAC pour optimiser le flux de trafic réseau. Alors qu'un concentrateur Ethernet transfère simplement tout le trafic entrant à tous ses ports, en revanche, un commutateur ne peut transférer du trafic que vers le seul port auquel l'adresse MAC de destination du paquet est connectée. Cela augmente la bande passante effective du réseau; en ciblant des ports spécifiques, le commutateur évite de transférer du trafic sur des segments inutiles du réseau. Le commutateur utilisera ARP ou le reniflage de paquets pour identifier les périphériques connectés à quel port. Les commutateurs ignorent complètement le contenu des paquets de couche 2.