Comment un commutateur apprend-il une table de commutation?


22

Disons que la table de commutation est vide. Si l'ordinateur A envoie une trame destinée à l'ordinateur B, le commutateur diffusera en demandant qui a l'adresse mac de B. Et si C envoie soudainement une trame à A? Quel est le mécanisme pour que le commutateur ne pense pas à tort que l'ordinateur C est l'ordinateur B? Est-ce qu'il se souvient de l'adresse mac de la destination souhaitée par l'ordinateur A, et lorsque C essaie de se rendre à A, il contient également sa propre adresse mac et le commutateur voit que ce n'est pas la même destination que l'ordinateur A voulait?

Fondamentalement, je demande, lorsqu'un commutateur envahit une adresse mac inconnue pour une demande envoyée par l'hôte A, comment sait-il que la destination répond à l'hôte A ou si un autre hôte se trouve être en train de transmettre à A?


Une réponse vous a-t-elle aidé? Si c'est le cas, vous devez accepter la réponse afin que la question ne continue pas d'apparaître indéfiniment, à la recherche d'une réponse. Alternativement, vous pouvez fournir votre propre réponse et l'accepter.
Ron Maupin

Réponses:


34

Les commutateurs de couche 2 (ponts) ont une table d'adresses MAC qui contient une adresse MAC et un numéro de port. Les commutateurs suivent cet algorithme simple pour le transfert de paquets:

  1. Lorsqu'une trame est reçue, le commutateur compare l'adresse MAC SOURCE à la table d'adresses MAC. Si la SOURCE est inconnue, le commutateur l'ajoute à la table avec le numéro de port sur lequel le paquet a été reçu. De cette façon, le commutateur apprend l'adresse MAC et le port de chaque périphérique de transmission.

  2. Le commutateur compare ensuite l'adresse MAC DESTINATION à la table. S'il y a une entrée, le commutateur transfère la trame vers le port associé. S'il n'y a pas d'entrée, le commutateur envoie le paquet sur tous ses ports, à l'exception du port sur lequel la trame a été reçue (Flooding).

Notez que le commutateur n'apprend pas le MAC de destination jusqu'à ce qu'il reçoive une trame de ce périphérique.


Merci @Ron de mieux l'expliquer. Maintenant, je sais que les inondations sont. Le peut également être trouvé à en.wikipedia.org/wiki/Unicast_flood
Damon

Cela n'a pas répondu à la question que j'avais posée.
Celeritas

5
@Celeritas Votre hypothèse dans votre question est fausse. Le commutateur ne "demande" pas qui a une adresse mac. S'il ne connaît pas le MAC de destination, il inonde la trame de tous les ports. Il n'apprend les MAC source que lorsqu'il reçoit une trame. Donc, dans votre question, le commutateur peut faire la différence entre B et C car ils ont des adresses MAC source différentes.
Ron Trunk

4
@Celeritas - Le commutateur ne sait ni ne se soucie de la raison pour laquelle un hôte envoie quelque chose à l'hôte A. Pourquoi est-ce important si un hôte répond à l'hôte A ou si un autre hôte envoie autre chose à l'hôte A? Le commutateur se soucie seulement que le MAC de destination est pour l'hôte A (et quel est le MAC source s'il n'est pas dans la table d'adresses MAC). Seul l'hôte A se soucie si la trame reçue est une réponse de l'hôte à laquelle est initialement envoyée une trame.
Ron Maupin

Ce que Ron a dit, ce concept est distinct de l'ARP.
Jordan Head

4

Votre question suppose que le commutateur est impliqué dans, ou est au courant, de la communication / conversation entre deux hôtes (s'agit-il d'une conversation entre A et B ou entre A et C?). Le commutateur n'est pas impliqué dans la communication / conversation entre deux hôtes. Il sait simplement (ou apprend) quelle adresse MAC est associée à quel port et transfère (ou commute) le trafic destiné à une adresse MAC particulière vers le port associé (une fois qu'il a appris quel port est associé à l'adresse MAC), indépendamment du fait que la source est B, ou C ou tout autre hôte connecté à tout autre port de commutateur.

Les commutateurs fonctionnent à la couche 2. La gestion de session est la responsabilité des couches supérieures.


-2

Ce n'est pas appelé table de commutation; sa table MAC. Considérez maintenant que la table MAC est vide. Quand A essaie d'envoyer un paquet à B; le paquet contient l'adresse MAC de A et B. Le commutateur met à jour l'adresse MAC de A dans la table MAC. Maintenant qu'il ne connaît pas le port auquel B est connecté, il diffuse le paquet ARP sur tous ses ports et attend que tous les hôtes répondent.

Maintenant, en même temps, si C essaie d'envoyer un paquet à A, il extrait l'adresse MAC de C de ce paquet et la stocke dans la table MAC. Maintenant que l'adresse MAC de est déjà présente dans la table MAC, elle sait donc à quel port A est connecté. N'oubliez pas que les paquets de données contiennent l'adresse MAC de la source et de la destination. Par conséquent, l'adresse MAC de B & C est différente. Donc, le commutateur ne se confond pas. Maintenant, basculez le paquet de C vers A (étant donné que les deux sont présents dans le même VLAN).

Pour envoyer le paquet de A à B, il attend que B réponde au paquet ARP envoyé par le commutateur. Lorsqu'il reçoit une réponse de B, il met à jour l'adresse MAC de B dans sa table MAC. Enfin, le paquet est transmis à B.

Par conséquent, le commutateur ne devient pas confus car les paquets de données (tcp / udp) contiennent à la fois l'adresse MAC source et de destination. Et votre commutateur ne transfèrera pas un paquet sur une interface dont l'adresse MAC de l'hôte final n'est pas connue pour commuter. Il doit attendre que l'hôte final réponde à la diffusion ARP envoyée par le commutateur.


1
Ce n'est pas tout à fait exact. Un commutateur, à moins qu'il ne s'agisse d'un commutateur de couche 3, n'est pas ARP. L'ARP consiste à résoudre entre la couche 2 et la couche 3, et le commutateur ne connaît pas la couche 3. Le commutateur diffuse en effet une trame avec un MAC de destination inconnu à chaque port de commutateur. Un hôte ignorera toute trame dont le MAC de destination n'est pas le sien.
Ron Maupin

1
Et une légère clarification à la clarification de Ron ... surtout juste une correction terminologique. Lorsqu'un commutateur envoie un paquet à chaque port (à l'exception du port d'entrée) parce qu'il ne sait pas où se trouve cette adresse MAC en particulier, son généralement appelé «inondation».
Jeff McAdams

@ Ron merci pour votre correction. A oublié d'écrire que c'est pour le commutateur de couche 3. Et je voulais aussi admettre que j'avais oublié le terme inondation, j'ai donc écrit la réponse pour les commutateurs de couche 3. Et Jeff merci de l'avoir dit.
Damon

@Jeff McAdams, vous avez raison, c'est le déluge, merci. C'était avant ma première tasse de café après que je me sois levé tôt, et je voulais parler de diffusion dans le sens de la langue, pas dans le sens du réseau.
Ron Maupin

@Damon, c'est ce que je ne savais pas, c'est que chaque trame contient l'adresse MAC source et de destination.
Celeritas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.