2010-10-25 44 views
0

我的应用程序是在CentOS 5.5 运行,我需要使用libpcap的API来发送原始数据包:如何确定的目标MAC地址

pcap_inject() or pcap_sendpacket() 

特定IP地址 我怎么能确定的MAC地址属于一个特定的目标?

回答

1

它看起来像你想要的是ioctl and SIOCGARP。这应该让你查询你的ARP缓存。 我假设有问题的主机在您的本地网络上,或者您将获得的是您的路由器。

您也可以从/ proc/net/arp中读取,这看起来更简单。你需要先获得一个arp请求,但是你会这样做,无论你的工具是做它还是某些第三方提出请求。

+0

如何为不在ARP缓存表中的主机发出ARP请求?据我了解,我可以ping主机,但也许有一个正式的API用于ARP请求? – Dima 2010-10-25 14:45:04

+0

发送数据报可能是最简单的方式,当然比一些ioctl类型的交互更容易。 – 2010-10-25 16:05:52

+1

请参阅'男子arping' – 2010-10-27 19:54:44

0

通常,MAC地址对于远程目标无关紧要。它们不可路由;我办公室的路由器不知道互联网上网卡的MAC地址。这就是IP地址的用途。你只是说本地人吗?

+0

我需要发送一个原始的以太网数据包,为了做到这一点,我需要填充包含源MAC和目标MAC的以太网报头。 我正在寻找一种方式,我怎样才能以编程方式要求从ARP缓存中获得MAC,以及如果我的MAC没有执行ARP请求并将结果返回给我。 – Dima 2010-10-25 10:01:32