Aller au contenu
Réseaux medium

Ethernet et l'adresse MAC : la couche 2

11 min de lecture

L'adresse MAC est l'identifiant de votre carte réseau sur le réseau local : 48 bits notés en hexadécimal (a4:83:e7:1b:2c:9f). Ethernet est le protocole qui transporte les données sur ce segment local, dans des trames. Ensemble, ils forment la couche 2 du modèle OSI. Ce guide explique la structure d'une trame Ethernet, comment décoder une adresse MAC (constructeur, unicast, locale), et comment un switch commute les trames grâce à sa table d'adresses, le tout vérifié dans un lab Docker avec tcpdump et bridge fdb.

  • Lire une trame Ethernet : ses champs et leurs tailles.
  • Décoder une adresse MAC : OUI constructeur, bit unicast/multicast, bit local/universel.
  • Reconnaître une adresse de broadcast, de multicast et localement administrée.
  • Comprendre la commutation d'un switch : apprentissage, table MAC, flooding.
  • Voir et changer une adresse MAC sous Linux.
  • Ne pas confondre MAC (couche 2, locale) et IP (couche 3, routable).

Une adresse MAC (Media Access Control) identifie une carte réseau sur un segment local. Elle fait 48 bits, soit 6 octets, notés en hexadécimal séparés par des deux-points :

a4:83:e7:1b:2c:9f
└──────┘ └──────┘
OUI NIC
(constructeur) (carte)
  • Les 3 premiers octets (24 bits) forment l'OUI (Organizationally Unique Identifier), attribué par l'IEEE à chaque constructeur. a4:83:e7 désigne par exemple un fabricant précis.
  • Les 3 derniers octets (24 bits) identifient la carte elle-même, gérés par le constructeur.

Contrairement à l'adresse IP qui change selon le réseau, l'adresse MAC est rattachée à la carte et sert uniquement sur le réseau local.

Sur la couche 2, les données voyagent dans des trames Ethernet (format Ethernet II, le standard actuel). Chaque champ a une taille fixe :

ChampTailleRôle
Préambule + SFD7 + 1 octetssynchronisation (couche physique)
MAC destination6 octetsà qui la trame est destinée
MAC source6 octetsqui l'envoie
EtherType2 octetsprotocole transporté
Payload46 à 1500 octetsles données (paquet IP, ARP...)
FCS / CRC4 octetscontrôle d'intégrité

Quelques valeurs à retenir :

  • La trame fait 64 à 1518 octets (hors préambule). La payload maximale de 1500 octets est la fameuse MTU Ethernet ; en dessous de 46 octets, un padding complète la trame.
  • L'EtherType indique le contenu : 0x0800 pour IPv4, 0x86DD pour IPv6, 0x0806 pour ARP, 0x8100 pour un tag VLAN.

Deux bits du premier octet changent radicalement le sens d'une adresse MAC :

  • Le bit I/G (le bit le moins significatif du 1er octet) : 0 = unicast (une seule carte), 1 = multicast (un groupe).
  • Le bit U/L (le 2e bit le moins significatif) : 0 = universel (OUI gravé par le constructeur), 1 = localement administré (générée par une VM, un conteneur, ou aléatoire).

En pratique, on les lit sur le 2e caractère hexadécimal. Une adresse dont le premier octet finit par 2, 3, 6, 7, A, B, E ou F est localement administrée. C'est ce que confirme le lab sur deux conteneurs Docker, dont les MAC sont générées localement :

Fenêtre de terminal
# Decodage du premier octet de chaque MAC
f2:e3:95:50:c4:45 : 1er octet 0xf2 -> I/G=0 (unicast), U/L=1 (local)
de:0a:af:d4:44:dd : 1er octet 0xde -> I/G=0 (unicast), U/L=1 (local)

f2 et de ont leur bit U/L à 1 : ce sont des adresses locales, typiques des environnements virtualisés, et non des OUI constructeur.

Certaines adresses MAC ne désignent pas une carte unique :

AdresseSignification
ff:ff:ff:ff:ff:ffbroadcast : toutes les cartes du segment
01:00:5e:..multicast IPv4
33:33:..multicast IPv6

Le broadcast est utilisé par exemple par ARP pour demander « qui a cette IP ? ». On le voit dans une capture tcpdump -e (l'option -e affiche la couche 2) :

Fenêtre de terminal
tcpdump -e -n -i eth0 arp
f2:e3:95:50:c4:45 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42:
Request who-has 172.20.0.3 tell 172.20.0.2

La trame part de la MAC source vers le broadcast ff:ff:ff:ff:ff:ff : toutes les cartes du segment la reçoivent, mais seule la machine concernée répondra. Les MAC multicast (01:00:5e et 33:33) apparaissent, elles, dans la table d'un bridge Linux pour les groupes IPv4 et IPv6.

Un switch (commutateur) est l'équipement de la couche 2. Son intelligence tient en trois mécanismes :

  1. Apprentissage (learning)

    À chaque trame reçue, le switch lit la MAC source et l'associe au port d'arrivée dans sa table MAC (aussi appelée table CAM).

  2. Commutation (forwarding)

    Si la MAC destination est connue dans la table, la trame part uniquement sur le bon port.

  3. Inondation (flooding)

    Si la destination est inconnue (ou en broadcast/multicast), la trame est envoyée sur tous les ports sauf celui d'origine.

Sous Linux, un bridge se comporte exactement comme un switch. Avec deux conteneurs qui se pinguent, sa table de forwarding montre chaque MAC apprise sur son port :

Fenêtre de terminal
bridge fdb show br br0
de:0a:af:d4:44:dd dev veth1c834db master br0
f2:e3:95:50:c4:45 dev vethd683848 master br0

Chaque adresse MAC est associée à un port (veth...) : c'est la table CAM en action. Une entrée vieillit (typiquement 300 secondes) si la carte ne parle plus.

C'est le piège le plus fréquent. Les deux adresses cohabitent mais n'ont rien à voir :

Adresse MACAdresse IP
Couche2 (Liaison)3 (Réseau)
Portéelocale, le segmentglobale, routable
Routeurne la traverse pasla traverse

Point crucial : la MAC source change à chaque saut de routeur. Quand un paquet traverse un routeur, celui-ci remplace les adresses MAC source et destination par les siennes et celles du saut suivant. En revanche, les adresses IP source et destination restent inchangées de bout en bout (hors NAT).

Autrement dit : l'IP identifie la machine sur l'inter-réseau, la MAC identifie la carte sur le segment courant. Le protocole ARP fait le lien entre les deux, et la distinction des couches est la base du modèle OSI.

Fenêtre de terminal
# Voir la MAC d'une interface
ip link show eth0 # champ "link/ether a4:83:e7:..."
cat /sys/class/net/eth0/address
# Changer la MAC (interface down recommandee)
sudo ip link set dev eth0 down
sudo ip link set dev eth0 address 02:11:22:33:44:55
sudo ip link set dev eth0 up

Une MAC que vous définissez vous-même porte presque toujours le bit local (préfixe 02:, 06:...), justement pour signaler qu'elle ne provient pas d'un OUI d'usine.

En 2026, le pistage par adresse MAC est largement neutralisé : les systèmes grand public utilisent des MAC aléatoires par réseau Wi-Fi.

  • Android 10+ et iOS 14+ : MAC aléatoire par défaut, une par réseau (SSID).
  • Windows 10/11 : randomisation par réseau, avec rotation optionnelle.
  • Linux / NetworkManager : option wifi.cloned-mac-address=random.

Ce sont des MAC localement administrées (bit U/L=1). Conséquence terrain : le filtrage par MAC, les baux DHCP « stables » et les portails captifs basés sur la MAC deviennent peu fiables. Ne construisez plus de sécurité sur l'adresse MAC seule.

  • Une adresse MAC fait 48 bits (6 octets) : OUI constructeur (3 octets) + identifiant de carte (3 octets).
  • La trame Ethernet : MAC destination + MAC source + EtherType + payload (46 à 1500 octets, la MTU) + FCS.
  • Le bit I/G distingue unicast (0) de multicast (1) ; le bit U/L distingue universel (0) de local (1, préfixe 02:, 06:...).
  • ff:ff:ff:ff:ff:ff = broadcast ; 01:00:5e et 33:33 = multicast IPv4 et IPv6.
  • Un switch apprend les MAC source par port (table CAM), commute vers le bon port, et inonde quand la destination est inconnue.
  • La MAC reste locale (couche 2) et change à chaque saut de routeur ; l'IP (couche 3) reste, elle, inchangée de bout en bout.
  • En 2026, les MAC aléatoires rendent le filtrage par MAC peu fiable.

FAQ : questions fréquentes sur Ethernet et les adresses MAC

Section intitulée « FAQ : questions fréquentes sur Ethernet et les adresses MAC »

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn