如果我们知道计算机的IP地址,并且假设该计算机位于我们的局域网之外,是否可以找到该计算机的MAC地址?我知道我们可以在命令提示符下使用getmac或arp轻松获取局域网中计算机的物理地址,但是这些命令不适用于其他远程主机。

评论

恐怕并非没有将其包装在某些更高层的协议中。可能有些软件可以做到这一点,但是我不知道是否鼓励这样做。我可以要求特定的用例吗?

@Hexaholic,最近我对通过命令行进行网络监视感兴趣,因此在阅读了有关是否可以找到MAC地址的IP的文章之后,我想知道是否可以采用其他方法。这是问题的链接:networkengineering.stackexchange.com/questions/1491/…

如果您可以访问为远程LAN提供服务的DHCP服务器,则可以检查DHCP租约并将IP地址与MAC地址进行匹配。

#1 楼

获取MAC地址需要具有广播流量的能力。

ARP是一种广播协议,因此仅在LAN上可用。

一旦路由了流量,您将无法获得MAC地址,因为一旦将其从数据包中剥离它跨越路由器/ L3设备的边界。

交换机具有MAC表。
路由器通常具有路由表。

您只能得到来自局域网的MAC地址。

评论


具有多路访问LAN接口的路由器也具有MAC表-它是确定是否具有MAC表的接口,而不是设备的角色(路由器仍必须在L2转发,因此它们仍需要知道站位于何处)。同样,MAC通常不会被L3设备剥离-它们会被进行媒体转换的设备(例如从以太网到SONET等)剥离。路由器可以更改MAC地址,但是如果L1介质需要一个MAC地址,则报头当然仍然会存在(并包含有效值)。

–尼克·巴斯汀(Nick Bastin)
16年1月4日在5:19



#2 楼

不可以。MAC地址仅在LAN上有意义。不同的LAN类型具有不同种类的MAC地址。知道其他LAN上主机的MAC地址毫无意义。

评论


另外,许多IP可以共享相同的MAC,因此对于一对一映射没有用。

– ppp
16年1月4日在4:39

#3 楼

使用DHCP服务器或已知的绑定可以找到它,我之前在Windows服务器中就已经做到了,虽然不常见,但是有可能。 ARP是基于本地的,只是IP和MAC地址之间的绑定,将它们捆绑在一起,以促进流量流过第3层网络边界的边界.....这就是路由器的所在。MAC地址仅对于获取帧/数据包发送到路由器,然后根据MAC / IP组合再次转发。

ANgry IP扫描程序会告诉您,您可以在本地执行arp -a ...路由器使用当在第三层边界不知道MAC地址时,可以使用此地址映射MAC地址,以帮助进行数据包的路由转发。这些信息然后存储在设备的arp缓存中。每个LAN存在MAC地址,路由器在第3层连接LAN边界,因此将两者捆绑在一起。