# Broadcast-домен - что это и кто в нём живёт _Сеть: L2 / L3 · LinuxLab Knowledge Base_ **TL;DR:** Группа устройств, где L2-фрейм с dst MAC `FF:FF:FF:FF:FF:FF` (broadcast) доходит до всех. Switch расширяет broadcast-домен, router его останавливает. ## Что это **Broadcast-домен** - это область слышимости: если кто-то крикнет на весь L2 (отправит фрейм на специальный MAC `FF:FF:FF:FF:FF:FF` = broadcast), кто его услышит? Все устройства в одном broadcast-домене **обязаны** услышать broadcast- фрейм. Это нужно для протоколов которые ещё не знают своих собеседников по имени: - [arp](/kb/arp.md) - «у кого этот 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](/kb/ethernet-frame.md)) или физические роутеры. Типичный размер - **/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. ## Посмотреть кто в домене ```bash # arp-сканер: bcast'ит ARP на всю подсеть, кто ответил - тот в домене sudo arp-scan -l # или: ip neigh # текущий ARP-кеш = известные соседи ``` ## Команды ```bash ip neigh ``` Соседи которых мы видели - все они в нашем broadcast-домене ```bash sudo arp-scan -l ``` Активный скан broadcast-домена через ARP-запросы ```bash tcpdump -i eth0 'ether broadcast' ``` Снифать только broadcast-фреймы - увидеть DHCP, ARP, mDNS ## См. также - [MAC address](/kb/mac-address.md) - [ARP - Address Resolution Protocol](/kb/arp.md) - [VLAN и trunk - 802.1Q](/kb/vlan-and-trunk.md) - [Linux bridge - программный свитч](/kb/linux-bridge.md) - [DHCP - Dynamic Host Configuration Protocol](/kb/dhcp-protocol.md)