7.3.1 Switch Fundamentals — как работает свитч
Главная идея
Свитч принимает решения о пересылке фреймов только на основе MAC адресов — он не знает ничего про IP, TCP и другие протоколы верхних уровней.
MAC Address Table (MAC Table)
Свитч хранит таблицу: какой MAC адрес находится на каком порту.

7.3.2 Два процесса: Learning и Forwarding
1. Learning (Обучение) — изучает SOURCE MAC

Когда приходит фрейм — свитч смотрит на source MAC и запоминает:
Фрейм пришёл на порт 1, source MAC = 00-0A
→ Записать в таблицу: порт 1 = 00-0A
По умолчанию запись хранится 5 минут, потом удаляется.
2. Forwarding (Пересылка) — ищет DESTINATION MAC

Свитч смотрит на destination MAC и принимает решение:
Destination MAC есть в таблице?
↓ ДА ↓ НЕТ
Отправить только Flood — отправить
на нужный порт на все порты кроме
входящего
(Unknown Unicast)
Пример из картинок
PC-A (00-0A) отправляет фрейм на PC-D (00-0D):
Шаг 1 — Learning:
Фрейм пришёл на порт 1
Source MAC = 00-0A
→ Таблица: порт 1 = 00-0A ✅
Шаг 2 — Forwarding:
Destination MAC = 00-0D
00-0D есть в таблице? → НЕТ (таблица пустая)
→ Flood: отправить на порты 2, 3, 4
PC-B и PC-C получат фрейм но проигнорируют его (не их MAC), PC-D примет.
Broadcast и Multicast
Если destination MAC = FF:FF:FF:FF:FF:FF (broadcast) — свитч всегда флудит на все порты кроме входящего, независимо от таблицы.
7.3.3 — Filtering Frames
Как коммутатор фильтрует фреймы
Коммутатор заполняет MAC Address Table, изучая Source MAC каждого входящего фрейма. Когда Destination MAC уже известен — коммутатор отправляет фрейм только на нужный порт.
Пошаговый пример: PC-D → PC-A → PC-D
Шаг 1 — PC-D отправляет фрейм PC-A:

Фрейм приходит на порт 4: Src MAC = 00-0D, Dst MAC = 00-0A
Коммутатор записывает в таблицу:
MAC Address Table:
Port 1 → 00-0A (уже знал)
Port 4 → 00-0D (только что узнал)
Шаг 2 — Коммутатор отправляет фрейм PC-A:

Dst MAC = 00-0A есть в таблице → Port 1. Фрейм идёт только на порт 1, B и C не получают ничего.
Шаг 3 — PC-A отвечает PC-D:

Фрейм: Src MAC = 00-0A, Dst MAC = 00-0D
Коммутатор видит 00-0A на порту 1 → запись уже есть, таймер сбрасывается (5-минутный refresh). Dst MAC = 00-0D → Port 4 → фрейм идёт только на порт 4.
Ключевые принципы работы таблицы:
Обучение (Learning) — коммутатор запоминает Source MAC + номер порта при каждом входящем фрейме.
Фильтрация (Filtering) — если Dst MAC найден в таблице, фрейм идёт только на один порт.
Flooding — если Dst MAC не найден, фрейм рассылается на все порты кроме входящего.
Таймер — каждая запись хранится ~5 минут без активности, затем удаляется.
💡 Именно благодаря фильтрации коммутатор эффективнее хаба: фреймы не “заливают” всю сеть, а идут точно по назначению.