PHP发送原始数据包

PHP发送原始数据包

问题描述:

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

下面是一个正确构造的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(我认为?),那么我怎么会发出这个呢?

+0

'pack()'+ sockets? – zerkms

+0

请定义什么是“原始数据包” –

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

还有一些shell工具可以实现这一点,并且从PHP内部,你可以使用exec()或相关函数来运行它们。

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

+0

可以显示一个清晰的例子:)? – Osa