2010-03-22 6 views
1

Puis-je envoyer des paquets IGMP avec un script PHP? IGMP est-il même sur le calque de transport?Envoyer IGMP avec PHP

Je regardais certains paquets JOIN qui sont destinés à 224.0.0.251. J'ai remarqué que l'en-tête IP n'avait pas de port assigné mais avait des adresses MAC spécifiées, ce qui m'a amené à croire que IGMP ne se trouvait pas sur la couche Transport mais plutôt sur la couche réseau. (J'espère avoir dit ça)

Quelqu'un peut-il clarifier cela pour moi? J'essaie juste d'envoyer un paquet JOIN.

Je lisais rfc3376 pour essayer de trouver la réponse, mais cela montre comment en construire une. En essayant de le faire, je reçois juste un paquet mal formé.

Répondre

0

Probablement pas avec les moyens PHP existants. Les extensions existantes vous permettent d'accéder à la couche TCP/UDP mais pas ci-dessous. Vous pourriez probablement utiliser un outil de ligne de commande comme nemesis-igmp de Nemesis project pour le faire.

1

Traditionnellement, vous utiliseriez l'option de socket IP_ADD_MEMBERSHIP (et la IP_DROP_MEMBERSHIP correspondante) pour rejoindre un groupe de multidiffusion. Cela déclencherait le système d'exploitation à générer un paquet de jointure IGMP.

Ces options sont définies à l'aide du IPPROTO_IP « niveau » à setsockopt()

Selon this question sur le site bugs.php.net ces options ne sont pas disponibles par défaut. Cependant, il y a un patch listé sur cette page qui devrait les ajouter à votre installation php.