Например
SW1
/ | \
server1 SW2 SW3
| | \
server2 server3 server4
Если server3 отправляет данные на server4, SW3
знает оба MAC, поэтому он просто пересылает данные.
Но что, если server1 отправит данные на server4? Как SW1
узнает, какой порт использовать для пересылки данных?
По MAC-адресу. Коммутаторы выполняют переадресацию всех ARP-запросов и строят базу данных, по какому MAC-адресу доступен тот или иной порт. Поскольку коммутаторы прозрачны, это означает прямое или косвенное использование других коммутаторов. Если только вы не включаете более высокие протоколы. SW3 даже не знает о существовании SW1 или SW2.
SW3 знает MAC-адреса всех серверов и какие из своих портов использовать для них. Вот так просто. Если вы внимательно прочитаете спецификации любого коммутатора, всегда есть представление, насколько большой может быть эта база данных - в основном находится в диапазоне более 1000 записей для чего-то не очень дешевого.
.