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