Отправка 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.

Другие вопросы по тегам