PHP发送原始数据包

时间:2012-08-31 03:22:48

标签: php arp

我想知道如何使用原始数据通过网络发送数据包。我需要能够获得LAN上设备的物理地址,所以我计划广播或组播ARP数据包。

以下是正确构造的ARP数据包,请求设备的IP。

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(我认为?)所以我该如何发送出去?

1 个答案:

答案 0 :(得分:2)

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

CAN构造的shell工具也可以这样做,从PHP中,您可以使用exec()或相关函数运行它们。

确切的工具和用法取决于您在操作系统中未提及的操作系统。