1

我可以用 PHP 脚本发送 IGMP 数据包吗?IGMP 甚至在传输层上吗?

我正在查看一些发往 224.0.0.251 的 JOIN 数据包。

我注意到 IP 标头没有分配端口,但确实指定了 MAC 地址,这让我相信 IGMP 不在传输层上,而是在网络层上。(希望我说的没错)

有人可以为我澄清一下吗?我只是想发送一个 JOIN 数据包。

我正在阅读 rfc3376 试图找到答案,但它只是展示了如何构建一个。在尝试这样做时,我只收到一个格式错误的数据包。

4

2 回答 2

1

传统上,您将使用 socket 选项IP_ADD_MEMBERSHIP(和相应的IP_DROP_MEMBERSHIP)来加入多播组。这将触发操作系统生成 IGMP 加入数据包。

这些选项使用IPPROTO_IP“级别”设置为setsockopt()

根据bugs.php.net 站点上的这个问题,这些选项默认情况下不可用。但是,该页面上列出了一个补丁,应该将它们添加到您的 php 安装中。

于 2010-04-27T06:44:21.060 回答
0

可能不是用现有的 PHP 手段。现有的扩展允许您访问 TCP/UDP 层,但不能访问下面。您可能可以使用一些命令行工具,例如来自Nemesis 项目的 nemesis-igmp来执行此操作。

于 2010-03-22T22:42:01.050 回答