如何在没有 IP 的情况下在同一子网络上获取 MAC 地址

网络工程 以太网 linux 联网
2022-02-05 03:02:40

目前我正在做一个研究项目,假设我们有两台计算机直接通过 LAN 电缆连接,同一子网中没有任何交换机或路由器。两个节点目前都没有 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 的套接字从第 2 层 MAC 发送/接收帧。现在我们可以从源 NIC 接口中提取 MAC 地址,但是对于目标 MAC 地址,我们需要一些没有IP 第 3 层模块通信的方法。

环境:语言 C,CentOS 7,内核 v3.10。

先感谢您。

1个回答

当您的目的地的 MAC 地址未知时,需要以某种方式发现它。ARP 是 IPv4 的方法,但您可以直接在以太网第 2 层上运行协议。

使用不与任何其他协议冲突的 EtherType 值 - 严肃的应用程序应在 IEEE 注册。然后,您可以在一端广播或更好地多播,以使其为同一网络中的其他节点所知。例如,您可以定期发布服务器服务,每个客户端都会监听一段时间以发现服务器。或者,客户端可以广播/多播请求以发现服务器,并且每个服务器都会做出答复。

在 NE 上对此协议进行编程是题外话。你可以试试Stack Overflow