TL;DR> Les adresses MAC sont un composant de bas niveau d'un réseau Ethernet (et d'autres normes similaires, comme le WiFi). Elles permettent à un appareil de communiquer avec une machine sur le réseau physique local (LAN) et ne peuvent pas être acheminées à travers l'Internet, car le matériel physique peut en théorie être branché partout 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 elles doivent faire plusieurs sauts pour atteindre leur destination, mais elles ne sont d'aucune utilité pour l'interface avec le matériel physique de votre réseau local.
Si nous trouvions un jour une meilleure norme qu'Ethernet, elle n'utiliserait peut-être pas les adresses MAC, mais le trafic IP de l'internet pourrait toujours circuler à travers elle, même si d'autres personnes sur l'internet n'en ont jamais entendu parler.
Si nous trouvons un jour une meilleure norme que l'IP (par exemple l'IPv6 si toutes les adresses IPv4 sont épuisées), la plupart des matériels Ethernet pourraient transporter le nouveau type de trafic sans modification - et une simple mise à jour du logiciel/firmware réglerait la plupart des autres problèmes.
Les adresses MAC sont nécessaires pour faire fonctionner un réseau local Ethernet (ou wifi). Elles permettent à un appareil du réseau d'attirer l'attention d'un seul appareil directement connecté, même si la connexion physique est partagée. Cela peut être important lorsque des milliers d'appareils sont connectés entre eux au sein d'une même organisation. Ils n'ont aucune fonction sur l'internet au sens large.
Pour vraiment comprendre la réponse à cette question, vous devez comprendre la Modèle OSI (parfois connu sous le nom de modèle à 7 couches) .
Pour que la communication puisse avoir lieu entre deux applications fonctionnant sur des machines distinctes qui n'ont pas de connexion physique directe, une lot de travail doit avoir lieu.
Autrefois, chaque application savait exactement quelles instructions de code machine devaient être exécutées pour produire un signal approprié qui atteindrait et pourrait être décodé par l'application à l'autre bout. Toutes les communications étaient effectivement de type point à point, et les logiciels devaient être écrits pour s'adapter à la situation exacte dans laquelle ils devaient être déployés. De toute évidence, cette situation n'était pas viable.
Au lieu de cela, le problème du réseau était divisé en couches, et chaque couche savait comment parler à la couche correspondante sur une machine distante, et comment communiquer avec la couche inférieure (et parfois supérieure) sur sa machine locale. Elle ne savait rien des autres couches en place - ainsi, votre navigateur Web n'a pas besoin de se soucier de savoir s'il fonctionne sur une machine qui utilise un réseau token ring, 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 semblable à celui des enveloppes imbriquées ; l'application crée ses données et les enveloppe dans une enveloppe que le système d'exploitation doit livrer. Le système d'exploitation les emballe dans une autre enveloppe et les transmet au pilote réseau. Le pilote réseau l'emballe dans une autre enveloppe encore et la place sur le câble physique. Et ainsi de suite.
La couche inférieure, couche 1 est la couche physique. C'est la couche des fils, des transistors et des ondes radio, et à ce niveau, la communication n'est le plus souvent qu'un flux de uns et de noughts. Les données vont partout où il y a une connexion physique. Vous branchez le port réseau de votre ordinateur sur votre commutateur à l'aide d'un câble CAT-5.
Couche 2 est la couche de liaison de données. Elle fournit une certaine structure aux uns et aux non, des capacités de détection et de correction d'erreurs, et des indications sur le périphérique physiquement connecté (les connexions physiques peuvent ici être en wifi) qui doit prêter attention au message. C'est à ce niveau que 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 Token Ring, par exemple, nécessitent une mise en œuvre différente de la liaison de données.
Couche 3 est la couche réseau. C'est la couche sur laquelle fonctionne le protocole IP (bien qu'il ne s'agisse pas non plus du seul protocole de couche réseau), et c'est elle qui permet aux ordinateurs d'envoyer un message qui peut atteindre n'importe quelle machine n'importe où sur le "réseau". Il n'est pas nécessaire qu'il y ait une connexion directe entre les machines en question.
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. Le protocole TCP, par exemple, se situe au-dessus du protocole IP et fournit des mécanismes qui renvoient automatiquement les messages lorsqu'ils sont manquants.
Les adresses MAC fonctionnent donc au niveau de la couche 2 et permettent à deux machines physiquement connectées l'une à l'autre d'envoyer des messages qui seront ignorés par d'autres machines qui partagent la même connexion physique.
Supposons que j'aie une application qui souhaite envoyer des données à la machine dont l'adresse IP est 8.8.8.8.
La couche 3 emballe les données dans une enveloppe qui contient, entre autres, l'adresse IP 8.8.8.8 et 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. Elle dispose d'une table de consultation contenant une sélection d'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 appareils directement connectés. Ethernet réserve une adresse MAC spéciale, FF:FF:FF:FF:FF:FF:FF, qui permet à un périphérique de parler à un autre périphérique. todo des dispositifs physiquement connectés.
Si l'adresse IP est dans la table (ou peut être résolue par ARP), il enveloppera l'enveloppe de la couche 3 dans une enveloppe de la couche 2 avec l'adresse MAC dans le nouvel en-tête, puis transmettra le tout au matériel de la couche 1. La carte réseau avec l'adresse MAC correspondante recevra le message et le pilote réseau ouvrira l'enveloppe de couche 2 et transmettra le contenu à la partie du système d'exploitation qui attend de recevoir des messages à l'adresse IP spécifique.
Sinon, si l'adresse IP n'est pas sur le réseau local, la nouvelle enveloppe aura l'adresse MAC de la passerelle par défaut (c'est-à-dire le routeur) configurée pour cette interface réseau, et le matériel transportera le paquet vers le routeur.
Le routeur remarque sa propre adresse MAC dans l'enveloppe de niveau 2, et ouvre le paquet de niveau 2. Il regarde l'adresse IP sur l'enveloppe de niveau 3 et détermine où le message doit aller ensuite, ce qui sera probablement le routeur de votre FAI. Si le routeur utilise le NAT (ou un système similaire), il peut même modifier l'enveloppe de niveau 3 à ce stade, afin de préserver la confidentialité de vos adresses IP internes. Il enveloppera ensuite l'enveloppe de niveau 3 dans une nouvelle enveloppe de niveau 2 adressée à l'adresse MAC du routeur du FAI et y enverra le message.
Ce processus consistant à retirer l'enveloppe extérieure et à 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 arrachées au fur et à mesure que le message remontera les couches jusqu'à ce qu'il atteigne enfin son destinataire, qui sera une application quelque part qui, avec un peu de chance, saura quoi faire du message - mais qui n'aura aucune idée de la façon dont le message est arrivé là ni de toutes les étapes nécessaires pour renvoyer la réponse à la machine d'origine.
Mais tout cela fonctionne, presque comme par magie !
Notez que les commutateurs réseau peuvent utiliser les adresses MAC pour optimiser le flux du trafic réseau. Alors qu'un concentrateur Ethernet transmet simplement tout le trafic entrant à tous ses ports, un commutateur ne peut transmettre le trafic qu'au 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 le trafic sur des segments inutiles du réseau. Le commutateur utilisera soit le protocole ARP, soit le reniflage de paquets pour identifier les périphériques connectés à chaque port. Les commutateurs ignorent complètement le contenu des paquets de couche 2.