Я пытаюсь отправлять и получать многоадресную программу C # на моем компьютере. Как проверить, не блокирует ли мой маршрутизатор многоадресную передачу? т.е. получают ли члены группы пакеты от 224.0.0.1.
2 ответа
IPv4 маршрутизаторы должны не пересылать многоадресных на 224.0.0.1. Это адрес многоадресной рассылки "все хосты". Этот адрес не является маршрутизируемым многоадресным адресом. См. RFC 3171, "Рекомендации IANA для назначения адресов многоадресной рассылки IPv4". Это не разрешено вне текущей сети канального уровня (уровень 2). В противном случае, когда вы отправляете эхо-запрос на него, вы буквально пропингуете каждый последний хост, поддерживающий IPv4, во всем Интернете и мгновенно обмениваетесь DDOS со всеми ответами на эхо-запрос. :-)
При разработке приложения я думаю, что вы, вероятно, захотите использовать адреса IP Multicast с административной областью действия (239/8). См. RFC 2365. предостережение лектора: я, конечно, не эксперт по многоадресной маршрутизации IPv4.
Если вы используете термины непрофессионала вместо точного сетевого жаргона, а сетевое устройство, которое вы называете "маршрутизатором", на самом деле является просто мостом / коммутатором Ethernet, а не маршрутизатором IPv4, то оно действительно перенаправит его между портами, потому что это то, что Ethernet мосты / коммутаторы обязаны делать. Потому что на уровне Ethernet в MAC-адресе назначения будет установлен многоадресный бит.
Если вы вообще имеете дело с 802.11 (Wi-Fi), обратите внимание, что 802.11 - это протокол канального уровня, в основном беспроводной Ethernet. Устройство, которое соединяет беспроводной Ethernet с проводным Ethernet, технически называется "Точка доступа" или AP. Точка доступа может быть простым мостом канального уровня между проводным и беспроводным Ethernet. Таким образом, некоторые устройства, которые в терминах непрофессионала люди называют "беспроводным маршрутизатором", могут, в зависимости от того, как он настроен, на самом деле просто быть мостовой точкой доступа, а не маршрутизатором вообще.
Но если у вас есть "беспроводной маршрутизатор", настроенный для работы в качестве шлюза IPv4 NAT, то можно считать его маршрутизатором, поскольку шлюз NAT в значительной степени выполняет все действия простого маршрутизатора IPv4, а также использует несколько более Уловки уровня, позволяющие сделать трафик от хостов частной подсети на стороне локальной сети так, как будто он на самом деле идет от одного публично маршрутизируемого IP-адреса шлюза на стороне WAN. Но даже если это NAT-шлюз, он не должен пересылать пакеты для 224.0.0.1 из LAN-в-WAN или WAN-в-LAN.
Проблемы с оборудованием:
Проверьте марку, модель и документацию, чтобы убедиться, что оборудование поддерживает многоадресную рассылку. Предполагая, что это не проблема с оборудованием, проверьте конфигурацию точки доступа / коммутатора / шлюза / "пропускающего трафик blinky box" ...
Диагноз:
Как пользователь C # вам может потребоваться перевести мои команды / ответы для Mac / Unix в Windows land ...
Когда я запускаю: > ifconfig
из моего дома, я получаю:
...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
...
это имеет смысл, потому что я использую zeroconf, mDNS, услуги Bonjour и т. д. дома через беспроводное соединение. Когда я выполняю то же самое в коворкинг-пространстве, где не работает ни один из компонентов zeroconf, я также заметил, что команда ifconfig
исключает флаг многоадресной рассылки.
...
en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
....
Для администраторов шлюза
Войдите в точку доступа и попробуйте включить многоадресную рассылку. Для справки, если вы используете ориентированный на потребителя "роутер", вам, возможно, придется покопаться в вкладках "Дополнительно" (пример PDF из Time Warner. Обязательно поищите "mulitcast")