Wie lernt ein Switch eine Switch-Tabelle?


22

Angenommen, die Schaltertabelle ist leer. Wenn Computer A einen Frame an Computer B sendet, werden Sie vom Switch gefragt, wer die MAC-Adresse B hat. Was passiert, wenn C plötzlich einen Frame an A sendet? Was ist der Mechanismus, damit der Switch nicht fälschlicherweise denkt, Computer C sei Computer B? Ist es so, dass es sich die MAC-Adresse des von Computer A gewünschten Ziels merkt, und wenn C versucht, nach A zu gelangen, enthält es auch seine eigene MAC-Adresse, und der Switch erkennt, dass es nicht dasselbe Ziel ist wie der von Computer A gewünschte?

Grundsätzlich frage ich, wann ein Switch eine unbekannte MAC-Adresse für eine von Host A gesendete Anfrage überschwemmt. Woher weiß er, dass das Ziel auf Host A antwortet oder ob gerade ein anderer Host an A sendet?


Hat dir eine Antwort geholfen? In diesem Fall sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort eingeben und diese annehmen.
Ron Maupin

Antworten:


34

Layer 2-Switches (Bridges) verfügen über eine MAC-Adresstabelle, die eine MAC-Adresse und eine Portnummer enthält. Switches folgen diesem einfachen Algorithmus zum Weiterleiten von Paketen:

  1. Wenn ein Frame empfangen wird, vergleicht der Switch die SOURCE MAC-Adresse mit der MAC-Adresstabelle. Wenn die SOURCE unbekannt ist, fügt der Switch sie zusammen mit der Portnummer, auf der das Paket empfangen wurde, der Tabelle hinzu. Auf diese Weise lernt der Switch die MAC-Adresse und den Port jedes sendenden Geräts.

  2. Der Switch vergleicht dann die DESTINATION MAC-Adresse mit der Tabelle. Wenn ein Eintrag vorhanden ist, leitet der Switch den Frame über den zugeordneten Port weiter. Wenn kein Eintrag vorhanden ist, sendet der Switch das Paket an alle Ports mit Ausnahme des Ports, an dem der Frame empfangen wurde (Flooding).

Beachten Sie, dass der Switch den Ziel-MAC erst lernt, wenn er einen Frame von diesem Gerät empfängt.


Vielen Dank an @Ron für die bessere Erklärung. Jetzt weiß ich, dass es Überschwemmungen gibt. Die finden Sie auch unter en.wikipedia.org/wiki/Unicast_flood
Damon

Dies beantwortete nicht die Frage, die ich gestellt hatte.
Celeritas

5
@Celeritas Deine Annahme in deiner Frage ist falsch. Der Switch "fragt" nicht, wer eine Mac-Adresse hat. Wenn der Ziel-MAC nicht bekannt ist, werden alle Ports überflutet. Es lernt nur Quell-MACs, wenn es einen Frame empfängt. In Ihrer Frage kann der Switch also den Unterschied zwischen B und C erkennen, da sie unterschiedliche Quell-MAC-Adressen haben.
Ron Trunk

4
@Celeritas - Der Switch weiß und kümmert sich nicht darum, warum ein Host etwas an Host A sendet. Warum ist es wichtig, wenn ein Host auf Host A antwortet oder ein anderer Host etwas anderes an Host A sendet? Der Switch kümmert sich nur darum, dass der Ziel-MAC für Host A ist (und was der Quell-MAC ist, wenn er nicht in der MAC-Adresstabelle enthalten ist). Nur Host A kümmert sich darum, ob der empfangene Frame eine Antwort des Hosts ist, an den ursprünglich ein Frame gesendet wurde.
Ron Maupin

Was Ron sagte, ist dieses Konzept von ARP getrennt.
Jordan Head

4

Ihre Frage setzt voraus, dass der Switch an der Kommunikation / Konversation zwischen zwei Hosts beteiligt ist oder sich dessen bewusst ist (Ist dies eine Konversation zwischen A und B oder zwischen A und C?). Der Switch ist nicht an der Kommunikation / Konversation zwischen zwei Hosts beteiligt. Es weiß einfach (oder lernt), welche MAC-Adresse welchem ​​Port zugeordnet ist, und leitet (oder vermittelt) Verkehr, der für eine bestimmte MAC-Adresse bestimmt ist, an den zugeordneten Port weiter (sobald es gelernt hat, welcher Port der MAC-Adresse zugeordnet ist), unabhängig davon, ob Die Quelle ist B oder C oder ein anderer Host, der an einen anderen Switch-Port angeschlossen ist.

Switches arbeiten auf Schicht 2. Die Sitzungsverwaltung liegt in der Verantwortung höherer Schichten.


-2

Es heißt nicht Switch-Tabelle; seine MAC-Tabelle. Stellen Sie sich nun vor, dass die MAC-Tabelle leer ist. Wenn A versucht, ein Paket an B zu senden; Das Paket enthält die MAC-Adresse von A und B. Der Switch aktualisiert die MAC-Adresse von A in der MAC-Tabelle. Da er den Port, an dem B angeschlossen ist, nicht kennt, sendet er ARP- Pakete an allen seinen Ports und wartet auf die Antwort aller Hosts.

Wenn C nun gleichzeitig versucht, ein Paket an A zu senden, extrahiert es die MAC-Adresse von C aus diesem Paket und speichert sie in der MAC-Tabelle. Da nun die MAC-Adresse von in der MAC-Tabelle bereits vorhanden ist, weiß sie, an welchen Port A angeschlossen ist. Datenpakete enthalten die MAC-Adresse der Quelle und des Ziels. Daher sind die MAC-Adressen von B & C unterschiedlich. So wird der Schalter nicht verwirrt. Schalten Sie nun das Paket von C nach A weiter (sofern beide im selben VLAN vorhanden sind).

Um das Paket von A nach B zu senden, wartet es, bis B auf das vom Switch gesendete ARP-Paket antwortet. Wenn es eine Antwort von B erhält, aktualisiert es die MAC-Adresse von B in seiner MAC-Tabelle. Dann wird das Paket schließlich an B weitergeleitet.

Daher wird der Switch nicht verwirrt, da die Datenpakete (tcp / udp) sowohl die Quell- als auch die Ziel-MAC-Adresse enthalten. Ihr Switch leitet kein Paket an eine Schnittstelle weiter, deren Endhost-MAC-Adresse nicht als Switch bekannt ist. Es muss warten, bis der Endhost auf den per Switch gesendeten ARP-Broadcast antwortet.


1
Dies ist nicht ganz richtig. Ein Switch, sofern es sich nicht um einen Layer-3-Switch handelt, führt kein ARP durch. ARP wird zwischen Layer 2 und Layer 3 aufgelöst, und der Switch kennt Layer 3 nicht. Der Switch sendet tatsächlich einen Frame mit einem unbekannten Ziel-MAC an jeden Switch-Port. Ein Host ignoriert alle Frames mit einem Ziel-MAC, der kein eigener ist.
Ron Maupin

1
Und eine leichte Klarstellung zu Rons Klarstellung ... meist nur eine Terminologiekorrektur. Wenn ein Switch ein Paket an jeden Port sendet (mit Ausnahme des Eingangsports), weil er nicht weiß, wo sich diese bestimmte MAC-Adresse befindet, wird dies im Allgemeinen als "Flooding" bezeichnet.
Jeff McAdams

@ Ron, danke für deine Korrektur. Ein vergessen zu schreiben, dass dies für Layer 3 Switch ist. Und ich wollte auch zugeben, dass ich den Begriff Flooding vergessen habe, also habe ich die Antwort für Layer-3-Switches geschrieben. Und Jeff, danke, dass du es erzählt hast.
Damon

@ Jeff McAdams, Sie sind richtig, es ist Flut, danke. Es war vor meiner ersten Tasse Kaffee, nachdem ich früh aufgestanden war, und ich meinte Sendung im sprachlichen Sinne, nicht im Netzwerksinn.
Ron Maupin

@Damon, das ist, was ich nicht wusste, dass jeder Frame die Quell- und Ziel-MAC-Adresse enthält.
Celeritas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.