Pour effectuer
l'expérimentation précédente, nous avons eu
recours à l'outil
tcpdump afin d'écouter toutes les trames qui
parvenaient à l'interface
eth0 de la machine
B.
Bien que le trafic entre les machines
A et
C ne concerne
absolument pas
B, cette dernière est tout de même atteinte
par toutes les trames relayées par le
hub.
C'est justement ce qui caractérise un équipement de type
hub :
il répète systématiquement sur tous ses autres ports (ses prises) ce
qu'il reçoit sur l'un deux.
Un
hub est un équipement de niveau
1-Physique dans le modèle
OSI : il ne sait retransmettre qu'un signal physique sans
accorder de signification à la trame décrite par ce signal.
Ce comportement est très satisfaisant en ce qui concerne, comme ici, la mise
au point et l'expérimentation
L'administrateur du réseau peut facilement écouter le trafic pour
essayer de détecter et réparer des anomalies.
, mais n'est pas idéal en terme de performances.
En effet, si un
hub relie de nombreuses machines, ou si plusieurs
hubs sont reliés entre-eux, dès que l'une d'elle émet une trame,
elle mobilise tous les brins (les câbles) du sous-réseau.
Cela risque d'engendrer des collisions et un ralentissement du trafic :
chaque carte réseau doit attendre qu'aucune autre n'émette au sein du
sous-réseau pour émettre à son tour !
Depuis de nombreuses années maintenant les
hubs ont laissé place
Il est même devenu quasiment impossible d'acheter un hub.
Les administrateurs réseau gardent très précieusement leurs vieux
hubs pour les insérer aux endroits critiques de leur
réseau lorsqu'une investigation doit être menée.
aux
switches
(commutateurs).
Le
switch est un équipement de niveau
2-Liaison dans le modèle
OSI : il sait interpréter les adresses MAC des trames qu'il
relaie.
Son principal intérêt repose sur le fait qu'il ne retransmet une trame que
sur le brin du sous-réseau qui est supposé aboutir à l'adresse MAC
destinataire.
De nombreuses collisions sont ainsi évitées, ce qui fluidifie le trafic
et permet de garder de bonnes performances même lorsque de nombreux
équipements sont reliés à un ou plusieurs
switches.
Pour en constater l'effet, intervenons sur l'outil qui émule le
hub
9991 afin de le transformer en
switch.
HubSwitch> switch 9991 ↵
emulating a switch with port 9991
Cette modification affecte le comportement du
hub existant sans le
détruire.
Vous pouvez vérifier avec la commande
HubSwitch> list ↵
que les trois machines virtuelles sont toujours reliées au
switch,
il n'est donc pas nécessaire de les arrêter et les relancer.
Si, comme dans
l'expérimentation précédente, vous utilisez à
nouveau
tcpdump sur l'interface
eth0 de
B pendant que
ping provoque des échanges entre
A et
C, vous devriez
constater que rien ne parvient plus à
B.
En effet, la commande
HubSwitch> list ↵
montre que le
switch a connaissance des adresses MAC des machines
qu'il relie ; il se sert de cette information pour choisir sur quel
port (prise) retransmettre une trame.
Seulement, à aucun moment nous n'avons explicitement fourni ces adresses
au
switch ; il les a découvertes par ses propres moyens.
Pour mettre en évidence ce phénomène, forçons tout d'abord le
switch
à oublier ces adresses.
HubSwitch> flush ↵
avant de relancer l'expérimentation avec
tcpdump sur
B et
ping entre
A et
C.
Cette fois-ci, une seule trame atteint
B : il s'agit du tout
premier message
ICMP-echo-request de
A vers
C :
- lorsque le switch obtient cette première trame, il ne sait pas par
quel port (prise) peut être jointe l'adresse MAC destination
(celle de C),
- il se comporte alors par défaut comme un hub en retransmettant
cette trame sur tous les ports,
- toutefois, l'adresse MAC source de cette trame (celle de A) est
une information intéressante pour le switch,
- il la mémorise donc dans une table qui l'associe au port depuis lequel
elle lui est parvenue,
- lorsque la machine C répond à A, le switch voit une trame
dont l'adresse MAC destination correspond à une entrée dans sa table
associative,
- il utilise donc uniquement le port (prise) associé pour retransmettre
cette deuxième trame,
- au passage, il découvre une nouvelle adresse MAC (celle de C) dans
la source de cette trame,
- il la mémorise donc dans une table qui l'associe au port depuis lequel
elle lui est parvenue,
- les adresses MAC de A et C sont désormais connues du switch,
- uniquement les deux ports (prises) concernés retransmettront les
trames qu'elles échangent.
Dans
cette section, nous avons mis en évidence l'importance
de l'adresse MAC de diffusion pour le fonctionnement du protocole ARP.
Après avoir forcé nos trois machine à oublier le contenu de leur table ARP
[A, B, C]~# ip neigh flush dev eth0 ↵
reprenons encore l'expérience avec
tcpdump et
ping.
À nouveau, nous ne voyons qu'une seule trame être capturée sur la machine
B ; nous constatons qu'il s'agit de la diffusion de la requête
ARP-who-has.
En effet, par essence, une trame diffusée est supposée atteindre toutes les
interfaces du sous-réseau (du
“domaine de diffusion”) ; tout comme
le
hub, le
switch la retransmet sur tous ses ports.