Як перемикач вивчає таблицю комутаторів?


22

Скажіть, що таблиця комутаторів порожня. Якщо комп'ютер A посилає кадр, призначений на комп'ютер B, комутатор передасть запит, хто має mac-адресу B. Що робити, якщо C раптом посилає кадр на A? Який механізм, щоб комутатор помилково не вважав, що комп'ютер C - це комп'ютер B? Це те, що він запам'ятовує mac-адресу призначення, бажаного комп'ютером A, і коли C намагається дістатися до A, він також містить свою власну мак-адресу, і комутатор бачить, що це не та сама адреса, як потрібний комп'ютер A?

В основному я запитую, коли комутатор заливає невідому mac-адресу для запиту, надісланого хостом A, як він знає, що адресат відповідає хосту A або якщо якийсь інший хост просто переходить на A?


Чи допомогла вам якась відповідь? Якщо так, то слід прийняти відповідь, щоб питання не з’являлося вічно, шукаючи відповідь. Крім того, ви можете надати власну відповідь і прийняти її.
Рон Моупін

Відповіді:


34

Перемикачі рівня 2 (мости) мають таблицю MAC-адрес, що містить MAC-адресу та номер порту. Перемикачі дотримуються цього простого алгоритму для переадресації пакетів:

  1. Коли кадр приймається, перемикач порівнює SOURCE MAC-адресу з таблицею MAC-адрес. Якщо ДЖЕРЕЛО невідомо, комутатор додає його до таблиці разом з номером порту, на який отримано пакет. Таким чином, комутатор дізнається MAC-адресу та порт кожного передавального пристрою.

  2. Потім перемикач порівнює MAC-адресу DESTINATION з таблицею. Якщо є запис, то комутатор висуває кадр на асоційований порт. Якщо немає запису, комутатор надсилає пакет з усіх своїх портів, за винятком порту, на який отримано кадр (Flooding).

Зауважте, що комутатор не вивчає MAC призначення, поки не отримає кадр від цього пристрою.


Дякую @Ron, що ти пояснив це краще. Тепер я знаю, що затоплення є. Про це можна також знайти на сайті en.wikipedia.org/wiki/Unicast_flood
Damon

Це не відповіло на запитання, яке я задав.
Celeritas

5
@Celeritas Ваше припущення у вашому питанні неправильне. Комутатор не "запитує", хто має mac-адресу. Якщо він не знає MAC призначення, він заливає кадр усіма портами. Він дізнається вихідні MAC лише тоді, коли отримує кадр. Отже, у вашому запитанні комутатор може вказати різницю між B і C, оскільки вони мають різні MAC адреси джерела.
Рон Трунк

4
@Celeritas - комутатор не знає і не піклується, чому будь-який хост щось надсилає Host A. Чому це має значення, якщо хост відповідає на Host A, або інший хост надсилає щось інше Host A? Перемикач піклується лише про те, що MAC призначення призначений для хоста A (а що таке вихідний MAC, якщо його немає в таблиці адрес MAC). Тільки хост A переймається, якщо отриманий кадр є відповіддю від хоста, якому спочатку надсилається кадр.
Рон Моупін

Що сказав Рон, ця концепція є окремою від ARP.
Глава Йорданії

4

Ваше запитання передбачає, що комутатор бере участь у спілкуванні / розмові між двома хостами (чи це розмова між A і B або між A і C?). Комутатор не бере участь у спілкуванні / розмові між двома хостами. Він просто знає (або дізнається) з якою MAC-адресою пов'язаний, з яким портом і пересилає (або перемикає) трафік, призначений для певного MAC-адреси на асоційований порт (як тільки він дізнається, який порт пов'язаний з MAC-адресою), незалежно від того джерелом є B, або C або будь-який інший хост, підключений до будь-якого іншого порту комутатора.

Перемикачі працюють на рівні 2. Управління сеансом - відповідальність вищих шарів.


-2

Її не називають таблицею комутаторів; його таблиця MAC. Тепер врахуйте, що таблиця MAC порожня. Коли A намагається надіслати пакет до B; пакет містить MAC-адреси A і B. Перемикач оновлює MAC-адресу A в таблиці MAC. Оскільки він не знає порт, до якого підключений B, тому він передає пакет ARP на всіх своїх портах і чекає, коли всі хости відповідуть.

Тепер у той же час, якщо C намагається надіслати пакет до A, він витягує MAC-адресу C з цього пакету і зберігає його в таблиці MAC. Оскільки MAC-адреса вже присутня в таблиці MAC, тож вона знає, до якого порту А підключено. Пам'ятайте Пакети даних містять MAC-адресу як джерела, так і пункту призначення. Отже, MAC-адреса B&C відрізняється. Тож перемикач не плутається. Тепер переключіть пакет вперед від C до A (враховуючи, що обидва присутні в одній VLAN).

Щоб надіслати пакет від A до B, він чекає, поки B відповість на ARP-пакет, надісланий комутатором. Коли він отримує відповідь від B, він оновлює MAC-адресу B у своїй таблиці MAC. Потім нарешті пакет передається до B.

Отже, перемикач не плутається, оскільки пакети даних (tcp / udp) містять як MAC-адресу джерела, так і призначення. І ваш комутатор не буде пересилати пакет на інтерфейс, MAC-адреса кінцевого хоста, як відомо, не переходить. Він повинен зачекати, поки кінець відповість на передачу ARP, що надсилається комутатором.


1
Це не зовсім точно. Перемикач, якщо це не перемикач рівня 3, не ARP. ARP призначений для вирішення між шаром-2 та шаром-3, а комутатор не знає шару-3. Комутатор дійсно передає кадр з невідомим MAC призначення на кожен порт комутатора. Хост проігнорує будь-який кадр з MAC призначення, не власним.
Рон Моупін

1
І невелике уточнення до роз'яснення Рона ... здебільшого лише корекція термінології. Коли комутатор надсилає пакет до кожного порту (крім вхідного порту), оскільки він не знає, де знаходиться саме ця MAC-адреса, її зазвичай називають "затопленням".
Джефф МакАдамс

@Рон дякую за виправлення. Забув написати, що це для перемикача рівня 3. І мені теж хотілося визнати, що я забув термін затоплення, тому написав відповідь для перемикачів рівня 3. І Джефф дякує за те, що ти розповів.
Деймон

@ Джеф МакАдамс, ти прав, це повінь, дякую. Це було до моєї першої чашки кави після того, як я рано встав, і я мав на увазі трансляцію в мовному сенсі, а не в мережевому сенсі.
Рон Моупін

@Damon, це те, чого я не знав, це те, що кожен кадр містить MAC-адресу джерела та призначення.
Celeritas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.