W jaki sposób przełącznik uczy się tabeli przełączników?

22

Powiedzmy, że tabela przełączników jest pusta. Jeśli komputer A wyśle ​​ramkę przeznaczoną do komputera B, przełącznik wyemituje pytanie, kto ma adres MAC B. Co się stanie, jeśli C nagle wyśle ​​ramkę do A? Jaki jest mechanizm, aby przełącznik nie myślał, że komputer C jest komputerem B? Czy to dlatego, że pamięta adres MAC miejsca docelowego pożądanego przez komputer A, a gdy C próbuje dostać się do A, zawiera również swój własny adres mac, a przełącznik widzi, że nie jest to to samo miejsce docelowe, co komputer A chciał?

Zasadniczo pytam, kiedy przełącznik zalewa nieznany adres MAC dla żądania wysłanego przez hosta A, skąd ma wiedzieć, że miejsce docelowe odpowiada hostowi A lub czy jakiś inny host po prostu transmituje do A?

Celeritas
źródło
Czy jakaś odpowiedź ci pomogła? Jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie w poszukiwaniu odpowiedzi. Możesz też podać własną odpowiedź i zaakceptować ją.
Ron Maupin

Odpowiedzi:

34

Przełączniki warstwy 2 (mosty) mają tablicę adresów MAC, która zawiera adres MAC i numer portu. Przełączniki postępują zgodnie z tym prostym algorytmem do przekazywania pakietów:

  1. Po odebraniu ramki przełącznik porównuje adres MAC SOURCE z tablicą adresów MAC. Jeśli ŹRÓDŁO jest nieznane, przełącznik dodaje go do tabeli wraz z numerem portu, na który pakiet został odebrany. W ten sposób przełącznik uczy się adresu MAC i portu każdego urządzenia nadawczego.

  2. Następnie przełącznik porównuje adres MAC CELU z tabelą. Jeśli jest jakiś wpis, przełącznik przesyła ramkę poza powiązany port. Jeśli nie ma wpisu, przełącznik wysyła pakiet ze wszystkich swoich portów, z wyjątkiem portu, w którym odebrano ramkę (Flooding).

Pamiętaj, że przełącznik nie uczy się docelowego adresu MAC, dopóki nie odbierze ramki z tego urządzenia.

Ron Trunk
źródło
Dziękuję @Ron za lepsze wyjaśnienie. Teraz wiem, że powódź. Można go również znaleźć na stronie en.wikipedia.org/wiki/Unicast_flood
Damon
To nie odpowiedziało na pytanie, które zadałem.
Celeritas
5
@Celeritas Twoje założenie w pytaniu jest błędne. Przełącznik nie „pyta”, kto ma adres mac. Jeśli nie zna docelowego adresu MAC, wysyła ramkę do wszystkich portów. Uczy się źródłowych adresów MAC tylko po otrzymaniu ramki. Tak więc w twoim pytaniu przełącznik może odróżnić B i C, ponieważ mają różne źródłowe adresy MAC.
Ron Trunk
4
@Celeritas - przełącznik nie wie ani nie obchodzi, dlaczego jakiś host wysyła coś do hosta A. Dlaczego miałoby to mieć znaczenie, jeśli host odpowiada na hosta A lub inny host wysyła coś innego do hosta A? Przełącznik dba tylko o to, że docelowy MAC jest dla Hosta A (i jaki jest źródłowy MAC, jeśli nie ma go w tabeli adresów MAC). Tylko host A dba o to, czy odebrana ramka jest odpowiedzią od hosta, do którego pierwotnie wysłano ramkę.
Ron Maupin
Jak powiedział Ron, koncepcja ta jest niezależna od ARP.
Jordan Head
4

Twoje pytanie zakłada, że ​​zmiana jest zaangażowana w komunikację / rozmowę między dwoma hostami lub jest jej świadoma (czy jest to rozmowa między A i B czy między A i C?). Przełącznik nie bierze udziału w komunikacji / rozmowie między dwoma hostami. Po prostu wie (lub uczy się), który adres MAC jest skojarzony z którym portem, i przekazuje (lub przełącza) ruch przeznaczony dla określonego adresu MAC do powiązanego portu (po dowiedzeniu się, który port jest powiązany z adresem MAC), niezależnie od tego, czy źródłem jest B lub C lub dowolny inny host podłączony do dowolnego innego portu przełącznika.

Przełączniki działają w warstwie 2. Za zarządzanie sesjami odpowiadają wyższe warstwy.

joeqwerty
źródło
-2

Nie nazywa się to tablicą przełączników; jego tablica MAC. Teraz rozważ, że tabela MAC jest pusta. Gdy A próbuje wysłać pakiet do B; pakiet zawiera adres MAC A i B. Przełącznik aktualizuje adres MAC A w tabeli MAC. Teraz, ponieważ nie zna portu, do którego podłączony jest B, więc rozgłasza pakiet ARP na wszystkich swoich portach i czeka na odpowiedź wszystkich hostów.

W tym samym czasie, jeśli C próbuje wysłać pakiet do A, wyodrębnia adres MAC C z tego pakietu i przechowuje go w tabeli MAC. Teraz, ponieważ adres MAC jest już obecny w tabeli MAC, więc wie, do którego portu A jest podłączony. Pamiętaj Pakiety danych zawierają adres MAC źródła i celu. Dlatego adres MAC B & C jest inny. Tak więc przełącznik się nie myli. Teraz przełącz do przodu pakiet z C na A (biorąc pod uwagę, że oba są obecne w tej samej sieci VLAN).

Aby wysłać pakiet z A do B, czeka, aż B odpowie na pakiet ARP wysłany przełącznikiem. Gdy odbiera odpowiedź od B, aktualizuje adres MAC B w swojej tabeli MAC. Następnie pakiet jest przesyłany dalej do B.

Dlatego przełącznik nie jest mylony, ponieważ pakiety danych (tcp / udp) zawierają zarówno źródłowy, jak i docelowy adres MAC. Twój przełącznik nie przekaże dalej pakietu na interfejsie, którego adres MAC hosta końcowego nie jest przełączany. Musi czekać, aż host końcowy odpowie na transmisję ARP wysłaną przełącznikiem.

Damon
źródło
1
To nie jest do końca dokładne. Przełącznik, chyba że jest przełącznikiem warstwy 3, nie obsługuje ARP. ARP ma rozstrzygać między warstwą 2 a warstwą 3, a przełącznik nie zna warstwy 3. Przełącznik rzeczywiście emituje ramkę z nieznanym docelowym adresem MAC do każdego portu przełącznika. Host zignoruje każdą ramkę z docelowym adresem MAC innym niż własny.
Ron Maupin
1
I lekkie wyjaśnienie wyjaśnień Rona ... głównie korekta terminologii. Kiedy przełącznik wysyła pakiet do każdego portu (z wyjątkiem portu wejściowego), ponieważ nie wie, gdzie znajduje się ten konkretny adres MAC, jest to zwykle nazywane „zalewaniem”.
Jeff McAdams
@ Ponownie dziękuję za poprawkę. Zapomniałem napisać, że dotyczy to przełącznika warstwy 3. Chciałem też przyznać, że zapomniałem terminu powódź, więc napisałem odpowiedź na przełączniki warstwy 3. I Jeff dziękuję za informację.
Damon
@Jeff McAdams, masz rację, to powódź, dziękuję. To było przed moją pierwszą filiżanką kawy po tym, jak wcześnie wstałem, i miałem na myśli transmisję w sensie językowym, a nie sieciowym.
Ron Maupin
@Damon, nie wiedziałem, że każda ramka zawiera źródłowy i docelowy adres MAC.
Celeritas