Отправка IGMP с PHP
Могу ли я отправить пакеты IGMP с помощью скрипта PHP? IGMP даже на транспортном уровне?
Я смотрел на некоторые пакеты JOIN, которые предназначены для 224.0.0.251.
Я заметил, что IP-заголовку не был назначен порт, но были указаны MAC-адреса, что заставило меня поверить, что IGMP находится не на транспортном уровне, а скорее на сетевом уровне. (надеюсь, я правильно сказал)
Может кто-нибудь уточнить это для меня? Я просто пытаюсь отправить пакет JOIN.
Я читал через rfc3376, чтобы попытаться найти ответ, но он просто показывает, как его создать. При попытке сделать это, я просто получаю поврежденный пакет.
2 ответа
Традиционно вы бы использовали опцию сокета IP_ADD_MEMBERSHIP
(и соответствующий IP_DROP_MEMBERSHIP
) присоединиться к многоадресной группе. Это приведет к тому, что операционная система сгенерирует пакет соединения IGMP.
Эти параметры устанавливаются с помощью IPPROTO_IP
"уровень" до setsockopt()
В соответствии с этой проблемой на сайте bugs.php.net эти параметры по умолчанию недоступны. Однако на этой странице есть патч, который должен добавить их в вашу установку php.
Вероятно, не с существующими средствами PHP. Существующие расширения позволяют вам получить доступ к уровню TCP/UDP, но не ниже. Вы, вероятно, могли бы использовать какой-либо инструмент командной строки, например, nemesis-igmp из проекта Nemesis.