我可以用PHP脚本发送IGMP数据包吗? IGMP甚至在传输层上吗?
我正在查看一些发往224.0.0.251的JOIN数据包。
我注意到IP标头没有分配端口,但确实指定了MAC地址,这让我相信IGMP不在传输层上,而是在网络层上。 (希望我说对了)
有人可以为我澄清一下吗?我只是想发送一个JOIN包。
我正在通过rfc3376阅读以尝试找到答案,但它只是展示了如何构建答案。在尝试这样做时,我只是得到一个格式错误的数据包。
答案 0 :(得分:1)
传统上,您将使用套接字选项IP_ADD_MEMBERSHIP
(和相应的IP_DROP_MEMBERSHIP
)加入多播组。这将触发操作系统生成IGMP加入数据包。
使用IPPROTO_IP
“级别”设置这些选项至setsockopt()
根据bugs.php.net网站上的this问题,默认情况下这些选项不可用。但是,该页面上列出了一个补丁,应该将它们添加到您的php安装中。
答案 1 :(得分:0)
可能没有现有的PHP手段。现有扩展允许您访问TCP / UDP层,但不能访问下面。您可能可以使用一些命令行工具,例如来自Nemesis project的nemesis-igmp来执行此操作。