
В одной из программ, которые я пишу, мне нужно найти несколько хостов в сети. Я не знаю, сколько их там будет, и вполне возможно, что сеть будет больше, чем класс C.
Кто-то предложил мне рассмотреть трансляцию MAC-уровня, но при поиске в Google информации не так уж много. Может ли кто-нибудь объяснить, как это работает, или где я могу найти больше информации об этом?
решение1
В сетевых технологиях существуют следующие уровни модели OSI:
- Физический
- Канал передачи данных (уровень MAC)
- Сеть (IP-уровень)
- Транспорт (уровень TCP)
- и т. д.
Канальный уровень и сетевой уровень разбиваются на сегменты маршрутизатором. Это означает, что вы можете транслировать всем хостам в вашей VLAN (обычно в одной подсети) либо на уровне 2, либо на уровне 3. Например, если у вас есть 4 компьютера, подключенных к одному коммутатору в одной VLAN и в диапазоне IP 192.168.1.0/24, вы можете отправить пакет, который будет транслироваться на все 4 компьютера, используя один из следующих методов:
- Уровень 2: Отправка кадра на MAC-адрес ff:ff:ff:ff:ff:ff
- Уровень 3: отправка IP-пакета на IP-адрес 192.168.1.255
Если вы планируете использовать TCP или UDP, я бы выбрал широковещательную передачу на уровне 3. Если вы планируете подключаться к машинам, у которых нет IP-адресов, выберите уровень 2.
Чтобы было ясно, вы не сможете использовать широковещательные пакеты для поиска хостов в разных подсетях. Для этого вам понадобится центральный сервер или что-то вроде multicast, которое должно поддерживаться и быть включено на всех ваших маршрутизаторах.