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?
la source
Réponses:
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:
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.
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.
la source
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.
la source
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.
la source