3

我想知道如何通过网络发送带有原始数据的数据包。我需要能够获取 LAN 上设备的物理地址,因此我计划广播或多播 ARP 数据包。

下面是一个正确构造的请求设备 IP 的 ARP 数据包。

0000  00 1e e5 fb a5 21 00 1a  70 dd e1 f2 08 06 00 01   .....!.. p.......
0010  08 00 06 04 00 01 00 1a  70 dd e1 f2 c0 a8 01 01   ........ p.......
0020  00 00 00 00 00 00 c0 a8  01 90                     ........ ..      

这是十六进制的原始数据。

如果我要以 ASCII 格式获取数据,是否像打开套接字并使用正确的端口号发送信息一样简单?实际上,由于这是 2 级而不是 3 级,这意味着没有 TCP 和 UDP(我认为?)那么我将如何发送呢?

4

1 回答 1

3

ARP 运行在链路层,TCP 套接字和 UDP 运行在 IP 上。PHP 可以打开一个原始的 IPv4 套接字。使用socket_create(). 文档页面上有示例。

也有可以构建的 shell 工具执行此操作,并且在 PHP 中,您可以使用exec()或相关函数运行它们。

确切的工具和用法将取决于您在问题中没有提到的操作系统。

于 2012-08-31T04:22:10.700 回答