← Réseaux

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 — liaisonCouche 3 — réseau
UnitéTramePaquet
AdresseMAC, 48 bits, physiqueIP, logique
PortéeUn lien, un sautDe bout en bout
ÉquipementCommutateurRouteur

Structure d'une trame Ethernet

ChampTailleContenu
Préambule8 oSynchronisation
MAC destination6 oDestinataire de la trame
MAC source6 oÉmetteur
Type / EtherType2 o0x0800 = IPv4, 0x0806 = ARP, 0x8100 = 802.1Q
Données46 à 1500 oLe paquet encapsulé
FCS4 oSomme 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 :

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é

  1. A veut joindre 192.168.1.20 et ne connaît pas sa MAC.
  2. A émet une requête ARP en diffusion : destination FF:FF:FF:FF:FF:FF, « qui a 192.168.1.20 ? ».
  3. Toutes les machines du domaine de diffusion reçoivent la trame ; seule B se reconnaît.
  4. B répond par une réponse ARP en monodiffusion, directement à A.
  5. A enregistre le couple IP / MAC dans son cache ARP.
Requête ARPRéponse ARP
MAC sourceMAC de AMAC de B
MAC destinationFF:FF:FF:FF:FF:FFMAC de A
Type d'envoiDiffusionMonodiffusion
EtherType0x08060x0806

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

  1. Lancer la capture sur la bonne carte réseau — erreur fréquente quand la machine en a plusieurs.
  2. Vider la table ARP.
  3. Envoyer un ping vers une machine voisine.
  4. Filtrer avec arp.

Ce qu'on doit pouvoir commenter :

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
VLANAdresse MACTypePort
10050.56a1.3b0cDYNAMICFa0/1
10050.56a1.7f22DYNAMICFa0/2
1000e0.4c68.11a3DYNAMICFa0/5

Ne pas confondre les deux tables, la confusion est classique :

Table ARPTable CAM
OùSur les hôtesSur le commutateur
AssocieIP ↔ MACMAC ↔ port physique
Couche2 et 32 uniquement
Remplie parRequêtes ARPObservation 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.

SituationComportement du switch
MAC destination connueCommutation : la trame part uniquement sur le bon port
MAC destination inconnueInondation : la trame est envoyée sur tous les ports sauf celui d'origine
Trame de diffusionEnvoyée sur tous les ports du VLAN
Entrée inutiliséeSupprimé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-duplexFull-duplex
TransmissionÉmission et réception alternéesSimultanées
CollisionsPossibles → CSMA/CDImpossibles
ContexteConcentrateurs, matériel ancienCommutateurs 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

ModePrincipeLatenceErreurs
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