栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查询ARP缓存以获取MAC ID

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查询ARP缓存以获取MAC ID

Java没有提供直接的方法来查询网络中主机的MAC地址,因为Java的套接字库已将其抽象出来。

从某种意义上说,这很有意义,因为主机的MAC地址实际上很少说。没有诸如主机的“ the” MAC地址之类的东西。

  • 许多主机将具有多个NIC,所有NIC都具有单独的MAC地址,通过它们它们可以连接到网络。目前,我使用的计算机具有有线以太网适配器,WiFi适配器和Firewire适配器,并且它们都有自己的MAC地址。这意味着主机没有确定的MAC地址。
  • 如果主机位于其他子网中,则ARP实际上会为您提供数据包经过的最后一个路由器的MAC地址,而不是您正在扫描的主机的MAC地址。

将这两个问题放在一起,这意味着一台主机可能具有许多不同的MAC地址(如果它具有多个NIC),而一台MAC地址可能代表了许多不同的主机(如果流量通过路由器)。

假设您了解所有这些信息,并且仍然需要获取主机的MAC地址,那么在Java中做到这一点的唯一方法是“本地化”:

  • 本机运行程序的客户端:
    • 您可以启动ARP命令行工具并解析其输出。
    • 您可以使用某种JNI调用。不过,我对JNI不太熟悉,因此我无法为您提供帮助。
    • 编写一个单独的小型本机应用程序,您可以通过Telnet或某些此类协议从Java访问该应用程序,该应用程序将为您运行ARP命令。
  • 本机到您要扫描的主机:
    • 您可以使用SNMP,如对该线程的其他一些答案所建议。我遵照这些答案为您工作。SNMP是一个很棒的协议,但是请注意,SNMP的OID既可以依赖于平台,也可以依赖于供应商。适用于Windows的OID并不总是适用于Linux,反之亦然。
    • 如果您知道主机运行Windows,则可以使用WMI。该Win32_NetworkAdapter类拥有你想要的信息,但要注意,这将返回 所有 的主机网卡,即使是那些视窗组成。另外,它还需要您要扫描的主机的管理员凭据。Google会告诉您如何从Java连接到WMI。
    • 如果知道主机运行OS X,则可以通过SSH进入计算机并解析
      system_profile
      命令的输出。
    • 对于Linux,
      system_profile
      可能存在类似于OS X的工具。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446539.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号