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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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).
Qu'est-ce qu'une adresse MAC ?
Section intitulée « Qu'est-ce qu'une adresse MAC ? »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:e7dé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.
La trame Ethernet : structure
Section intitulée « La trame Ethernet : structure »Sur la couche 2, les données voyagent dans des trames Ethernet (format Ethernet II, le standard actuel). Chaque champ a une taille fixe :
| Champ | Taille | Rôle |
|---|---|---|
| Préambule + SFD | 7 + 1 octets | synchronisation (couche physique) |
| MAC destination | 6 octets | à qui la trame est destinée |
| MAC source | 6 octets | qui l'envoie |
| EtherType | 2 octets | protocole transporté |
| Payload | 46 à 1500 octets | les données (paquet IP, ARP...) |
| FCS / CRC | 4 octets | contrô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 :
0x0800pour IPv4,0x86DDpour IPv6,0x0806pour ARP,0x8100pour un tag VLAN.
Décoder une adresse MAC : les bits qui comptent
Section intitulée « Décoder une adresse MAC : les bits qui comptent »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 :
# Decodage du premier octet de chaque MACf2: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.
Broadcast et multicast Ethernet
Section intitulée « Broadcast et multicast Ethernet »Certaines adresses MAC ne désignent pas une carte unique :
| Adresse | Signification |
|---|---|
ff:ff:ff:ff:ff:ff | broadcast : 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) :
tcpdump -e -n -i eth0 arpf2: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.2La 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.
Le switch : commutation et table MAC
Section intitulée « Le switch : commutation et table MAC »Un switch (commutateur) est l'équipement de la couche 2. Son intelligence tient en trois mécanismes :
-
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).
-
Commutation (forwarding)
Si la MAC destination est connue dans la table, la trame part uniquement sur le bon port.
-
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 :
bridge fdb show br br0de:0a:af:d4:44:dd dev veth1c834db master br0f2:e3:95:50:c4:45 dev vethd683848 master br0Chaque 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.
MAC contre IP : ne pas confondre les couches
Section intitulée « MAC contre IP : ne pas confondre les couches »C'est le piège le plus fréquent. Les deux adresses cohabitent mais n'ont rien à voir :
| Adresse MAC | Adresse IP | |
|---|---|---|
| Couche | 2 (Liaison) | 3 (Réseau) |
| Portée | locale, le segment | globale, routable |
| Routeur | ne la traverse pas | la 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.
Sous Linux : voir et changer sa MAC
Section intitulée « Sous Linux : voir et changer sa MAC »# Voir la MAC d'une interfaceip 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 downsudo ip link set dev eth0 address 02:11:22:33:44:55sudo ip link set dev eth0 upUne 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.
MAC aléatoire et vie privée (2026)
Section intitulée « MAC aléatoire et vie privée (2026) »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.
À retenir
Section intitulée « À retenir »- 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:5eet33: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 »L'identifiant de la carte réseau
Une adresse MAC (Media Access Control) identifie une carte réseau sur un segment local. Elle fait 48 bits (6 octets) en hexadécimal :a4:83:e7:1b:2c:9f
└──────┘ └──────┘
OUI carte
- Les 3 premiers octets = l'OUI (Organizationally Unique Identifier), attribué par l'IEEE au constructeur.
- Les 3 derniers octets = l'identifiant de la carte.
Deux couches, deux rôles
| Adresse MAC | Adresse IP | |
|---|---|---|
| Couche | 2 (Liaison) | 3 (Réseau) |
| Portée | locale (segment) | globale (routable) |
| Routeur | ne la traverse pas | la traverse |
L'unité de la couche 2
| Champ | Taille | Rôle |
|---|---|---|
| MAC destination | 6 o | destinataire |
| MAC source | 6 o | émetteur |
| EtherType | 2 o | protocole transporté |
| Payload | 46 à 1500 o | données (paquet IP, ARP) |
| FCS / CRC | 4 o | intégrité |
0x0800 IPv4, 0x86DD IPv6, 0x0806 ARP, 0x8100 VLAN. On observe ces champs avec tcpdump -e, qui affiche la couche 2.ip link et /sys/class/net
# Voir la MAC
ip link show eth0 # champ "link/ether ..."
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 porte presque toujours le bit local (préfixe 02:, 06:, 0a:...), qui signale qu'elle ne vient pas d'un OUI d'usine. Attention : deux cartes avec la même MAC sur un segment provoquent du MAC flapping (trames mal commutées).Une trame pour tout le segment
Le broadcast est une trame envoyée à l'adresse spécialeff:ff:ff:ff:ff:ff : toutes les cartes du segment la reçoivent.C'est ainsi que fonctionne ARP : « qui a l'IP 192.168.1.10 ? », diffusé à tout le monde, et seule la machine concernée répond. On le voit avec tcpdump -e :f2:e3:95:50:c4:45 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806)
Request who-has 192.168.1.10
Le broadcast reste cantonné au segment (ou au VLAN) : un routeur ne le propage pas vers d'autres réseaux. C'est ce qui délimite un domaine de broadcast.Apprentissage, commutation, inondation
Un switch (couche 2) repose sur trois mécanismes :- Apprentissage : il lit la MAC source de chaque trame et l'associe à son port dans la table MAC (table CAM).
- Commutation : si la MAC destination est connue, la trame part uniquement sur le bon port.
- Inondation (flooding) : si la destination est inconnue (ou broadcast/multicast), la trame part sur tous les ports sauf l'origine.
bridge fdb show :de:0a:af:d4:44:dd dev veth1 master br0
f2:e3:95:50:c4:45 dev veth2 master br0
Chaque MAC est associée à son port. Une entrée vieillit (environ 300 s) si la carte ne parle plus.