linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
Intro
Lessons
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
home/linux/how/mac-learning

how/network

Как свитч учится - MAC learning

Свитч на старте не знает ничего. За первые секунды трафика он сам строит «карту» - кто на каком порту - и перестаёт флудить кадры.

Когда ты включаешь новый свитч в розетку - он умеет коммутировать, но не знает кто к каким портам подключён. Как он за пару секунд начинает работать «как надо» - без флудинга, с точечной доставкой?

Магия в CAM-таблице (Content-Addressable Memory) - это таблица MAC адрес ↔ номер порта, которую свитч сам учит наблюдая за проходящим трафиком. Каждый входящий кадр содержит source MAC - свитч просто смотрит и записывает: «о, этот MAC живёт на этом порту».

Нажми ▶ - посмотрим как пустой свитч за 3 кадра учится и переходит из режима «флужу всё» в «точечную доставку».

step 1/5·00 · свитч включён, ничего не знает
L2 switchp1p2p3p4host Aaa:aa:aa:11host Bbb:bb:bb:22host Ccc:cc:cc:33host Ddd:dd:dd:44CAM TABLE (MAC ↔ PORT)MAC ADDRESSPORTAGE(empty - switch ничего не знает)свитч включён, cam-таблица пуста - он не знает кто на каком порту

§ шаги

  1. Свитч только что загрузился. CAM-таблица пуста. Он умеет принимать и отправлять кадры, но не знает какие MAC'и на каких портах живут.

    Любой кадр, который сейчас прилетит, заставит его флудить копию во все порты - потому что dst MAC ему неизвестен.

итого

Что важно запомнить:

  • Свитч учится только из source MAC входящих кадров. Он никогда не учится из destination MAC - потому что dst может быть фейковым или broadcast'ом
  • Если destination MAC неизвестен - свитч флудит кадр во все порты кроме входящего (это называется unknown unicast flood). Не путать с broadcast'ом (ff:ff:ff:ff:ff:ff) - broadcast флудится всегда, не зависит от CAM
  • Записи стареют (aging) - обычно через 300 секунд без трафика запись удаляется. При следующем кадре свитч снова поучится. Это важно: иначе при перемещении устройства между портами оно стало бы «недостижимым»
  • MAC flooding atak - атака на свитч, когда злоумышленник заваливает CAM-таблицу до переполнения. Свитч начинает себя вести как hub - флудит весь трафик на все порты. Защита - port security (ограничение количества MAC'ов на порт)
  • Чем CAM-таблица отличается от ARP-таблицы: CAM живёт в свитче и хранит MAC ↔ port. ARP живёт в хосте и хранит IP ↔ MAC. Разные слои, разные задачи

Связано с arp (как хост узнаёт MAC соседа) и broadcast-domain (где свитч обязан флудить).

§ копнуть в базу знаний

  • mac-addressMAC-адрес - что это и зачем
  • arpARP - как хост находит MAC
  • broadcast-domainbroadcast-домен - где работает свитч
  • ethernet-frameEthernet-фрейм - поля src/dst MAC
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки