使用目标MAC的ARP数据包

使用目标MAC的ARP数据包,c,ip,arp,C,Ip,Arp,我向一些Ip地址发送ARP请求,但正如您所知,主机并不总是具有相同的Ip地址。我希望首先发送ARP请求并保存主机的mac地址,然后通过mac地址发送ARP包,不是通过IP。我设法向所有主机发送ARP数据包,并保存回复主机的MAC地址,但我不知道如何使用目标MAC地址而不是目标IP地址发送ARP数据包。你有什么建议吗?如果你想输入一些代码,请告诉我。我想你弄错了什么。ARP在OSI第3层工作,MAC地址与OSI第2层上的以太网相关。要在OSI第3层(如IP)上发送包,您必须知道以太网的正确MAC地

我向一些Ip地址发送ARP请求,但正如您所知,主机并不总是具有相同的Ip地址。我希望首先发送ARP请求并保存主机的mac地址,然后通过mac地址发送ARP包,不是通过IP。我设法向所有主机发送ARP数据包,并保存回复主机的MAC地址,但我不知道如何使用目标MAC地址而不是目标IP地址发送ARP数据包。你有什么建议吗?如果你想输入一些代码,请告诉我。我想你弄错了什么。ARP在OSI第3层工作,MAC地址与OSI第2层上的以太网相关。要在OSI第3层(如IP)上发送包,您必须知道以太网的正确MAC地址。因此,您向所有电台发出广播(ARP请求),您将得到一个带有正确MAC地址的应答(每个usicast)。您可以使用该MAC地址发送IP包。

通过ARP直接通信很困难,因为没有简单的API来发送ARP消息。在Linux上,您必须使用原始套接字(请参见
MAN7RAW
)并自己实现ARP协议。

ARP主要用于将IP地址转换为MAC地址,而不是反过来。尽管存在反向ARP规范(将MAC地址转换为IP地址),但默认情况下,Linux、FreeBSD或Windows机器都不支持反向ARP


如果您试图跟踪一台经常更改IP地址的机器,并且您有管理权限访问它,那么您可以查看MDN(适用于Linux或FreeBSD)或LLMNR for Windows。这两种协议都允许您通过询问本地链路网络上的计算机的主机名来查询它们。通过链接本地版本的DNS解析IP地址,从IP地址解析MAC地址,然后进行通信。

正如我正确理解您的问题,您需要一个简单的解决方案,通过该解决方案,您希望向特定主机发送ARP消息,而不是ARP请求广播

顺便说一句,有一个叫做“arping”的工具可以做到这一点,但它有两个版本 1.arping(iputils库的一部分) 2.Thomas Habets的arping(这允许您将APR消息直接发送到dest.MAK地址)

默认情况下,大多数Linux都有arping工具(不是Thomas Habets的arping),但您可以从internet获得Thomas Habets的arping并使用它。唯一的问题是,在一个系统上同时使用两种arping实现可能会带来冲突

因此,为了使其正常工作,必须删除前一个,NetworkManager也将被删除,因为它需要iputils ARP


我希望这能对你有所帮助。

ARP的全部意义在于,它能根据你所知道的IP找到你不知道的MAC地址。我知道,但我需要使用ARP包持续监控主机,有时主机不知道;i don’我没有相同的IP,所以我想问是否有办法使用MAC地址发送数据包i suggest
arpwatch
,它解决了这个问题,虽然是被动的,但不是主动的。ARP只有在您知道IP时才起作用,当查询的IP地址不是客户端自己的时,客户端将忽略ARP请求。(您正在寻找的是RARP的一个变体,但RARP需要一个RARP服务器,所以它也不能工作。)可能的复制我想要一个类似于反向的东西Arp@EmilGrigore对不起,我错过了你的评论,你需要什么?也许命令
arp-a
会对您有所帮助。@flex:RARP在非反向arp中,InARP是反向arp,尽管它几乎只在ATM上使用。