【问题标题】:How to know the MAC address of the remote communication end?如何知道远程通讯端的MAC地址?
【发布时间】:2012-06-22 18:44:22
【问题描述】:

首先,我需要在内核空间知道这一点,所以请考虑到这一点。

不,我不能使用其他设备的 IP 地址和 ARP 它(这里解释原因太长了)但我根本不能使用 ARP,ARP 不适用于我正在处理的项目。

是否有一个函数/实用程序可以用来知道连接到我已经拥有的给定 net_device 的连接中另一端的 MAC 地址,而不管 IP 是什么?

提前致谢,如果我的问题不清楚或没有意义,请发表评论,我会确保编辑问题以解释/填补空白

【问题讨论】:

  • 您有权访问传入的数据包吗? nefhook 敌人示例。
  • 我确实可以访问传入的数据包。目前我正在保存传入帧的 MAC 地址,以便以后使用它们进行发送。但是还有其他方法可以做到这一点吗?
  • 不,你要么预先配置它,要么照你做的那样做。您也可以查看 arp 表,但对我来说,从内核代码中实现起来似乎更困难。
  • 如果您不使用 ARP,您如何进行通信?你预填充了 ARP 缓存?
  • 不。好吧,我不能使用 ARP,因为我正在手动更改我正在与之通信的 IP 地址(出于另一个目的,这超出了问题的范围)所以如果我 ARP 查询 IP,ARP 将找不到它们或会发现错误的东西。

标签: networking network-programming linux-kernel kernel-module


【解决方案1】:

“我需要和邻居说话”这类问题的标准协议是LLDP。目前,这通常通过 Linux 系统上的 OpenLLDP(用户空间)实现。但是,似乎有一些 kernel-space patches 可能会帮助您:

假设您可以在另一端启用 LLDP,您应该能够使用它来发现该设备。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 2013-06-20
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多