Скажем, таблица переключателей пуста. Если компьютер A отправляет кадр, предназначенный для компьютера B, коммутатор будет транслировать вопрос о том, кто имеет mac-адрес B. Что если C внезапно отправит кадр в A? Каков механизм, чтобы коммутатор по ошибке не думал, что компьютер C - это компьютер B? Неужели он запоминает MAC-адрес пункта назначения, требуемого компьютером A, и когда C пытается добраться до A, он также содержит свой собственный MAC-адрес, и коммутатор обнаруживает, что он не совпадает с пунктом назначения, который требуется компьютеру A?
По сути, я спрашиваю, когда коммутатор запрашивает неизвестный mac-адрес для запроса, отправленного узлом A, как он узнает, что пункт назначения отвечает на узел A или если какой-то другой узел просто передает данные на A?
источник
Ответы:
Коммутаторы уровня 2 (мосты) имеют таблицу MAC-адресов, которая содержит MAC-адрес и номер порта. Коммутаторы следуют этому простому алгоритму для пересылки пакетов:
Когда кадр получен, коммутатор сравнивает MAC-адрес SOURCE с таблицей MAC-адресов. Если SOURCE неизвестен, коммутатор добавляет его в таблицу вместе с номером порта, на котором был получен пакет. Таким образом, коммутатор узнает MAC-адрес и порт каждого передающего устройства.
Затем коммутатор сравнивает MAC-адрес DESTINATION с таблицей. Если запись есть, коммутатор перенаправляет фрейм на соответствующий порт. Если запись отсутствует, коммутатор отправляет пакет на все свои порты, кроме порта, на который был получен кадр (Flooding).
Обратите внимание, что коммутатор не изучает MAC-адрес назначения, пока не получит кадр от этого устройства.
источник
Ваш вопрос предполагает, что коммутатор участвует или знает о связи / разговоре между двумя хостами (это разговор между A и B или между A и C?). Коммутатор не участвует в связи / разговоре между двумя хостами. Он просто знает (или узнает), какой MAC-адрес связан с каким портом и перенаправляет (или переключает) трафик, предназначенный для определенного MAC-адреса, на связанный порт (после того, как он узнал, какой порт связан с MAC-адресом), независимо от того, источником является B или C или любой другой хост, подключенный к любому другому порту коммутатора.
Переключатели работают на уровне 2. За управление сессиями отвечают вышестоящие уровни.
источник
Это не называется таблицей переключателей; его таблица MAC. Теперь посмотрим, что таблица MAC пуста. Когда A пытается отправить пакет B; пакет содержит MAC-адреса A и B. Коммутатор обновляет MAC-адрес A в таблице MAC. Теперь, поскольку он не знает порт, к которому подключен B, он транслирует пакет ARP на все свои порты и ожидает ответа от всех хостов.
Теперь, в то же время, если C пытается отправить пакет A, он извлекает MAC-адрес C из этого пакета и сохраняет его в таблице MAC. Теперь, поскольку MAC-адрес уже присутствует в таблице MAC, он знает, к какому порту A подключен. Помните, что пакеты данных содержат MAC-адрес источника и получателя. Следовательно, MAC-адрес B & C различен. Так что переключатель не запутался. Теперь переключите пакет с C на A (учитывая, что оба присутствуют в одной VLAN).
Чтобы отправить пакет от A до B, он ожидает, пока B не ответит на пакет ARP, отправленный коммутатором. Когда он получает ответ от B, он обновляет MAC-адрес B в своей таблице MAC. Затем, наконец, пакет пересылается в B.
Следовательно, коммутатор не запутывается, поскольку пакеты данных (tcp / udp) содержат как MAC-адрес источника, так и адрес назначения. И ваш коммутатор не будет пересылать пакет на интерфейс, чей MAC-адрес конечного хоста неизвестен для переключения. Он должен ждать, пока конечный хост не ответит на широковещательную рассылку ARP, отправленную коммутатором.
источник