1

我正在尝试使用 esp8266 来查找在同一子网上注册的 IP 地址及其用于家庭自动化项目的 MAC 地址。ping 响应是否包含设备的 MAC 地址,或者是否可以通过本地网络请求它。

4

3 回答 3

3

在 *nix 系统上,您可以运行arping <some-ip>以获取同一网络上机器的 MAC 地址(当然,只有那些可以在不通过网络路由的情况下获取数据包的机器)。

正如rodolk 建议的那样,您也可以运行pcap并查看以太网帧。以太网帧包含源 MAC、目标 MAC 和以太网类型。像这样的东西:

uint8_t  ether_dhost[ETHER_ADDR_LEN];    /* destination MAC address */
uint8_t  ether_shost[ETHER_ADDR_LEN];    /* source MAC address */
uint16_t ether_type;                     /* packet type ID */

您可以嗅探数据包并解析以太网标头,或者您可以运行arping,我认为这应该符合您的目的。

于 2016-11-05T05:32:31.153 回答
0

Ping 不会显示 MAC 地址。它只是告诉您服务器是否在线。您可以在 Windows 上使用“nbtstat -a ip”命令来执行此操作。

于 2016-11-04T19:50:41.767 回答
0

如果您尝试获取给定 IP 地址(第 3 层)的 MAC 地址(第 2 层),则可以使用 RARP。否则,如果您使用 ping,在第 3 层您将无法访问 ping 响应的 MAC 地址。但是,您可以使用pcap嗅探网络,使用适当的 pcap 过滤器读取 ping 回复,并从到达的以太网帧中获取 MAC 地址。您还可以使用数据包套接字来获取第 2 层帧。pcap 应该很有用。

于 2016-11-05T01:21:29.987 回答