目前我正在做一个研究项目,假设我们有两台计算机通过局域网电缆直接连接,没有任何交换机或路由器在同一子网中。两个节点目前都没有IP地址,我是否可以获取目标节点的MAC,反之亦然?我对这个问题进行了研究,但大多找到了与IP相关的解决方案。比如arping,getmac,nmap等等,但都是基于IP的。是否有任何代码使用网络套接字,如PF_PACKET套接字或其他东西,可以给出我们如何处理这个问题的想法。我发现了一些关于ARP的东西,但我想知道它不会是我们寻找的单击这里 https://www.lynxbee.com/understanding-arp-basics-and-sending-arp-request-and-receiving-arp-reply-using-c-code-in-linux/的解决方案。
我们的应用程序使用基于PF_PACKET的套接字从第二层MAC发送/接收帧.现在,我们可以从源NIC接口中提取MAC地址,但是对于目标MAC地址,我们需要一些没有IP层-3模块通信的方法。
环境: C语言,CentOS 7,内核v3.10。
提前谢谢你。
发布于 2019-01-07 12:12:02
当您的目的地的MAC地址未知时,需要以某种方式发现它。ARP是用于IPv4的方法,但是您可以直接在以太网第2层上运行协议。
使用不与任何其他协议冲突的EtherType值--严重的应用程序应该在IEEE注册。然后,您可以广播或更好的多播一端,以使它知道的另一个节点(S)在同一网络。例如,您可以定期为服务器服务做广告,每个客户端都会监听一段时间来发现服务器(S)。或者,客户端可以对请求进行广泛/多播,以发现一个服务器,并且每个服务器都会应答。
在NE上编程这个协议是不相关的。你可以试试堆栈溢出。
https://networkengineering.stackexchange.com/questions/55915
复制相似问题