Что это
Broadcast-домен - это область слышимости: если кто-то крикнет на весь
L2 (отправит фрейм на специальный MAC FF:FF:FF:FF:FF:FF = broadcast), кто
его услышит?
Все устройства в одном broadcast-домене обязаны услышать broadcast- фрейм. Это нужно для протоколов которые ещё не знают своих собеседников по имени:
- arp - «у кого этот IP?» (broadcast спрашивает)
- [[ipv4-addressing|DHCP]] - «есть ли тут DHCP-сервер?» (клиент кричит)
- mDNS - «кто в сети называется airprint.local?»
Кто расширяет, кто останавливает
| Устройство | Что делает с broadcast |
|---|---|
| Hub | Тупо повторяет на все порты - расширяет broadcast-домен |
| Switch | Заливает broadcast во все порты кроме входящего - расширяет |
| Router | Останавливает broadcast (он работает на L3) |
| Firewall | Обычно тоже стопит, но может пропустить selectively |
Из этого простая эвристика: между двумя устройствами через свитч → один broadcast-домен. Через роутер → разные broadcast-домены.
Зачем ограничивать
Broadcast - это накладные расходы: каждый broadcast-фрейм обрабатывают все хосты в домене (даже если им неинтересно). При большом количестве устройств broadcast-трафик начинает забивать сеть - это называется broadcast storm.
Поэтому в проде сеть режут на маленькие broadcast-домены через VLAN (виртуальные L2-сети, см. ethernet-frame) или физические роутеры. Типичный размер - /24 (до 254 хостов) или /22 (до 1022) для офисных сетей.
Broadcast-адрес vs broadcast MAC
Не путать L2 broadcast (FF:FF:FF:FF:FF:FF в Ethernet-заголовке) и
L3 broadcast (192.168.1.255 для подсети 192.168.1.0/24 - последний
адрес диапазона). Часто они идут вместе (DHCP DISCOVER использует оба),
но это разные слои.
IPv6 broadcast'а нет вообще - заменён на multicast.
Посмотреть кто в домене
# arp-сканер: bcast'ит ARP на всю подсеть, кто ответил - тот в домене
sudo arp-scan -l
# или:
ip neigh # текущий ARP-кеш = известные соседи