ARP, table CAM et commutation
Sommaire
Comment une trame trouve son destinataire sur un réseau local, et comment le commutateur apprend qui est branché où.
1. La couche liaison
La couche 2 du modèle OSI assure l'acheminement entre équipements d'un même réseau local. Elle manipule des trames et des adresses MAC, là où la couche 3 manipule des paquets et des adresses IP.
| Couche 2 — liaison | Couche 3 — réseau | |
|---|---|---|
| Unité | Trame | Paquet |
| Adresse | MAC, 48 bits, physique | IP, logique |
| Portée | Un lien, un saut | De bout en bout |
| Équipement | Commutateur | Routeur |
Structure d'une trame Ethernet
| Champ | Taille | Contenu |
|---|---|---|
| Préambule | 8 o | Synchronisation |
| MAC destination | 6 o | Destinataire de la trame |
| MAC source | 6 o | Émetteur |
| Type / EtherType | 2 o | 0x0800 = IPv4, 0x0806 = ARP, 0x8100 = 802.1Q |
| Données | 46 à 1500 o | Le paquet encapsulé |
| FCS | 4 o | Somme de contrôle, détection d'erreur |
Le FCS (Frame Check Sequence) permet au récepteur de vérifier que la trame n'a pas été altérée. Une trame dont le FCS ne correspond pas est simplement détruite, sans demande de retransmission — c'est le rôle des couches supérieures.
2. Le protocole ARP
ARP (Address Resolution Protocol) établit la correspondance entre une adresse IP et une adresse MAC.
Le besoin vient d'un décalage entre les couches :
- les communications réseau utilisent les adresses MAC pour envoyer des trames Ethernet ;
- les applications utilisent les adresses IP pour identifier les machines ;
- un hôte connaît généralement l'IP du destinataire, mais pas son adresse MAC.
ARP traduit donc l'IP en MAC pour permettre l'envoi effectif des données. Sans lui, un réseau Ethernet ne peut tout simplement pas fonctionner : la couche 3 saurait à qui parler, la couche 2 ne saurait pas comment.
Le déroulé
- A veut joindre 192.168.1.20 et ne connaît pas sa MAC.
- A émet une requête ARP en diffusion : destination
FF:FF:FF:FF:FF:FF, « qui a 192.168.1.20 ? ». - Toutes les machines du domaine de diffusion reçoivent la trame ; seule B se reconnaît.
- B répond par une réponse ARP en monodiffusion, directement à A.
- A enregistre le couple IP / MAC dans son cache ARP.
| Requête ARP | Réponse ARP | |
|---|---|---|
| MAC source | MAC de A | MAC de B |
| MAC destination | FF:FF:FF:FF:FF:FF | MAC de A |
| Type d'envoi | Diffusion | Monodiffusion |
| EtherType | 0x0806 | 0x0806 |
Le cache ARP
arp -a # afficher la table ARP (Windows et Linux)
arp -d * # vider la table (Windows, en administrateur)
ip neigh show # équivalent moderne sous Linux
ip neigh flush all # vider sous Linux
Colonnes affichées : l'adresse Internet (IP), l'adresse physique (MAC) et le type — dynamique pour une entrée apprise par ARP, statique pour une entrée configurée manuellement ou réservée par le système.
Expérience à mener et à savoir expliquer : vider la table, faire un ping, réafficher.
L'entrée est revenue. Elle a été recréée automatiquement par l'échange requête / réponse ARP
qui a précédé le premier paquet ICMP. Relancer un ping ensuite ne produit
aucune nouvelle requête ARP : l'information est en cache, pour quelques minutes.
3. Analyser ARP avec Wireshark
- Lancer la capture sur la bonne carte réseau — erreur fréquente quand la machine en a plusieurs.
- Vider la table ARP.
- Envoyer un
pingvers une machine voisine. - Filtrer avec
arp.
Ce qu'on doit pouvoir commenter :
- La requête part en diffusion : destination
ff:ff:ff:ff:ff:ff, ce que Wireshark affiche comme Broadcast. - La réponse revient en monodiffusion, directement vers l'émetteur.
- Le champ Type vaut
0x0806, ce qui distingue ARP d'IPv4. - Le FCS n'est souvent pas affiché : la carte réseau le retire après vérification.
Filtres utiles : arp, icmp, eth.addr == aa:bb:cc:dd:ee:ff,
ip.addr == 192.168.1.20.
Le mode promiscuous
Par défaut, une carte réseau ignore les trames qui ne lui sont pas destinées. En mode promiscuous (Capture Options > Enable Promiscuous Mode), elle les remonte toutes au système, ce qui permet à Wireshark de les analyser.
Point de sécurité : sur un concentrateur, ce mode permettait d'écouter tout le trafic du segment. Sur un commutateur, on ne voit plus que ses propres trames, les diffusions et les trames inondées — ce qui constitue déjà, en soi, une amélioration de la confidentialité.
4. La table CAM
La table CAM (Content Addressable Memory), ou table d'adresses MAC, stocke les adresses MAC connues du commutateur et leur association avec les ports physiques.
show mac address-table
clear mac address-table dynamic
| VLAN | Adresse MAC | Type | Port |
|---|---|---|---|
| 1 | 0050.56a1.3b0c | DYNAMIC | Fa0/1 |
| 1 | 0050.56a1.7f22 | DYNAMIC | Fa0/2 |
| 10 | 00e0.4c68.11a3 | DYNAMIC | Fa0/5 |
Ne pas confondre les deux tables, la confusion est classique :
| Table ARP | Table CAM | |
|---|---|---|
| Où | Sur les hôtes | Sur le commutateur |
| Associe | IP ↔ MAC | MAC ↔ port physique |
| Couche | 2 et 3 | 2 uniquement |
| Remplie par | Requêtes ARP | Observation des MAC source |
5. Comment le switch apprend
Le commutateur lit l'adresse MAC source de chaque trame entrante et l'associe au port par lequel elle est arrivée. Il apprend donc en écoutant, sans configuration.
| Situation | Comportement du switch |
|---|---|
| MAC destination connue | Commutation : la trame part uniquement sur le bon port |
| MAC destination inconnue | Inondation : la trame est envoyée sur tous les ports sauf celui d'origine |
| Trame de diffusion | Envoyée sur tous les ports du VLAN |
| Entrée inutilisée | Supprimée après expiration (5 minutes par défaut) |
Le cas « les PC se connaissent, mais pas le switch »
Scénario du TP : les postes ont déjà leurs entrées ARP, puis on vide la table CAM du commutateur. Un PC envoie un ping à un seul destinataire, et pourtant toutes les machines voient passer la trame dans Wireshark.
Explication attendue : l'émetteur n'a pas besoin d'ARP, il connaît la MAC. Mais le commutateur, lui, a tout oublié : la destination lui est inconnue, il inonde. Dès la réponse du destinataire, il apprend la MAC correspondante et les échanges suivants redeviennent ciblés.
Conséquence de sécurité directe : l'attaque par saturation de la table CAM (MAC flooding) consiste à injecter des milliers de fausses adresses pour la remplir. Le commutateur, débordé, se met à inonder en permanence — et se comporte alors comme un concentrateur, ce qui permet d'écouter le trafic. La parade est le port security, traité dans la fiche Sécurité de la commutation.
Changement de port
Si l'on déplace un PC vers un autre port, la première trame émise suffit : le commutateur voit la même MAC arriver ailleurs et met à jour l'entrée. L'apprentissage est permanent, pas figé.
6. Duplex et collisions
| Half-duplex | Full-duplex | |
|---|---|---|
| Transmission | Émission et réception alternées | Simultanées |
| Collisions | Possibles → CSMA/CD | Impossibles |
| Contexte | Concentrateurs, matériel ancien | Commutateurs modernes |
configure terminal
interface fastEthernet 0/1
duplex half ! ou full, ou auto
speed 10 ! ou 100, ou auto
exit
end
show interfaces fastEthernet 0/1 ! compteur de collisions, erreurs, duplex négocié
Une collision survient quand deux équipements émettent simultanément sur un même support partagé. Le mécanisme CSMA/CD les détecte, interrompt l'émission et fait réémettre après un délai aléatoire.
Sur un commutateur en full-duplex, chaque port constitue son propre domaine de collision : il ne peut donc plus y avoir de collision. En forçant le half-duplex et en saturant le lien, on peut les observer artificiellement — c'est le principe du test de collision en TP, où deux machines téléchargent simultanément un fichier volumineux tout en maintenant un ping continu.
Piège de production : le duplex mismatch. Si un côté est en full et l'autre en
half, le lien fonctionne, mais avec des performances catastrophiques et un compteur de collisions qui explose.
Symptôme typique : « le réseau marche, mais c'est très lent ». Vérifier avec
show interfaces des deux côtés.
7. Modes de commutation
| Mode | Principe | Latence | Erreurs |
|---|---|---|---|
| Store-and-Forward | Reçoit la trame entière, vérifie le FCS, puis retransmet | Plus élevée | Filtrées : les trames corrompues sont détruites |
| Cut-Through | Lit seulement l'adresse de destination (6 premiers octets) et commute aussitôt | Très faible | Propagées : le FCS n'est pas vérifié |
| Fragment-Free | Compromis : lit les 64 premiers octets, où se produisent la plupart des collisions | Intermédiaire | Partiellement filtrées |
Le choix est un arbitrage entre latence et intégrité. Les commutateurs d'entreprise actuels fonctionnent en store-and-forward, qui est aussi le seul mode permettant de commuter entre des ports de débits différents — il faut bien mémoriser la trame pour changer de cadence. Le cut-through reste utilisé dans les environnements à très faible latence, comme le trading haute fréquence.
À retenir
- Couche 2 = trames + MAC | couche 3 = paquets + IP
- ARP traduit une IP en MAC — sans lui, Ethernet ne peut pas livrer
- Requête ARP = diffusion (FF:FF:FF:FF:FF:FF) | réponse = monodiffusion
- EtherType 0x0806 = ARP | 0x0800 = IPv4
arp -aaffiche,arp -d *vide le cache- Table ARP = sur les hôtes, IP↔MAC | table CAM = sur le switch, MAC↔port
- Le switch apprend par l'adresse MAC source des trames entrantes
- Destination inconnue → inondation sur tous les ports sauf l'entrant
- Saturer la table CAM → le switch inonde en permanence → écoute possible
- Full-duplex → plus de collisions | duplex mismatch → lenteur extrême
- Store-and-Forward vérifie le FCS | Cut-Through commute sans vérifier