我知道这可能是一个不可能的问题,因为我们正在处理两个不同的网络层,但是是否可以使用PHP套接字向ARP请求发送回复?
如果是这样的话......如你将套接字连接到什么端口和IP地址?同样,我理解arp不使用端口号...至少不是我能说的。
我想用PHP做这件事,但对于那些会质疑我的意图的人来说,最终我正在为一些硬件编写一个程序。似乎NIC没有回复ARP请求,所以我想手动生成响应。
基本上,唯一能让我接近的函数是套接字函数。 UDP和TCP。
哦,我忘了....如果套接字无法使用Arp,那么当我为我的主机名广播“A”记录时,我可以在某种dns中将我的MAC地址提供给路由器回答,所以路由器可以响应对硬件IP地址的arp请求。
答案 0 :(得分:0)
ARP在链路层运行,套接字在IP上运行。如果主机不响应ARP请求,则永远无法正确接收TCP或UDP数据包。您需要在操作系统或网络堆栈中实施ARP。在PHP中这样做是不可能也不可取的。
答案 1 :(得分:0)
正如Sjoerd所说:没有办法通过'正常'渠道,因为ARP甚至不是IP。但是如果你可以从PHP调用libpcap
,你可以用它来嗅探ARP请求并注入回复。
阅读您的修改:DNS也无法帮助管理IP地址,而不是MAC地址。