使用目标MAC的ARP数据包

时间:2013-01-26 12:05:50

标签: c ip arp

我向某些IP地址发送ARP请求但是你知道主机并不总是有相同的IP地址。我想首先发送ARP请求并保存回复的主机的mac地址然后发送arp包MAC地址,而不是IP.I设法向所有主机发送ARP数据包并保存回复的主机的MAC地址,但我不知道如何使用目标MAC地址而不是目标IP地址发送ARP数据包.DO你有什么建议吗?告诉我你是否想要一些代码

4 个答案:

答案 0 :(得分:0)

我认为你在混淆什么。 ARP适用于OSI第3层,MAC地址与OSI第2层上的以太网相关。要在OSI第3层上发送类似IP的包,您必须知道以太网的正确MAC地址。因此,您向所有电台进行广播(ARP请求),您将获得具有正确MAC地址的答案(每个用户)。你可以发送带有该MAC地址的IP包。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

如果您正在尝试跟踪经常更改IP地址并且您具有管理访问权限的计算机,则可以查看mDNS(适用于Linux或FreeBSD)或LLMNR for Windows。这两个协议都允许您通过询问其主机名来查询本地链接网络上的计算机。通过链接本地版本的DNS解析IP地址,从IP地址解析MAC地址,然后进行通信。

答案 3 :(得分:0)

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

AFAIK,有一个名为“arping”的工具可以做到这一点,但它有两个版本来 arping(iputils lib的一部分) 2. Thomas Habets的arping(这允许您将APR消息直接发送到目标.MAK地址)

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

因此,为了使其正常工作,必须删除并删除NetworkManager,因为它需要iputils arping。

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