LAN многоадресная рассылка включена или нет?
Я пытаюсь написать код на OSX в c (можно также использовать target-c, если проще), чтобы определить, включена ли многоадресная рассылка на текущем компьютере (маршрутизаторе, к которому подключен компьютер). Для этого я пытаюсь следующие шаги:
- Откройте порт и отправьте данные через многоадресную рассылку.
- Прослушайте ответы на все активные адаптеры.
- Отфильтруйте "петлевой" адаптер.
- Если нет ответов, многоадресная рассылка, вероятно, отключена.
Будучи новичком в сетевом программировании, я не понимаю, каким образом я получал бы ответ от любых активных адаптеров, отправляя случайные данные, если на компьютерах, которые слушали, не было установлено программное обеспечение. Существует ли определенный зарезервированный IP-адрес, который всегда будет вызывать ответ, или есть лучший способ сделать это?
2 ответа
Чтобы определить, имеет ли машина активные IP-адреса многоадресной рассылки (что, я думаю, вы подразумеваете под "многоадресная рассылка включена"), посмотрите на таблицу маршрутизации и посмотрите, найдете ли вы один или несколько адресов IP v4 в диапазоне от 224.0.0.0 до 239.255..255.255.
Многоадресная передача осуществляется по DHCP, который не является вашим локальным компьютером. DHCP выделяет адреса, которые соответствуют нескольким клиентам, которые подключены к этому DHCP-серверу. Когда вы создаете многоадресное сообщение, вы отправляете его на этот DHCP-сервер, который затем принимает пакет, находит клиентов, сопоставленных с этим многоадресным адресом, а затем отправляет его в специальном пакете, который автоматически дублируется маршрутизаторами (так что если у вас есть 2 люди, входящие в группу, подключены к 1 маршрутизатору, и этот маршрутизатор подключен к другому маршрутизатору (называемому маршрутизатором 2), маршрутизатор 2 не отправит два пакета, он отправит один, а затем маршрутизатор 1 отправит две копии своим клиентам. Цель этого - ускорить время доставки и не отправлять дублирующиеся данные). Что касается клиентов, клиенты не "настроены" на разрешение многоадресной рассылки, а маршрутизатор их настраивает, а остальное прозрачно для клиента. Чтобы выяснить, подключен ли клиент к группе многоадресной рассылки, нужно проверить, создал ли сервер DHCP группу многоадресной рассылки, а затем найти имена компьютеров по IP-адресам, сопоставленным с группой многоадресной рассылки.
Прослушивая все активные адаптеры, вы не получите ничего, кроме пакетов, которые не будут сообщать вам, является ли она частью многоадресной сети, поскольку они будут выглядеть как любой другой пакет (поскольку маршрутизатор будет измените адрес многоадресной рассылки на ваш IP-адрес, прежде чем вы даже увидите пакет). Это красота многоадресной рассылки.