查找直连设备的IP地址

问题描述 投票:0回答:5

有没有办法找出直接连接到特定以太网接口的设备的IP地址? IE。给定一台主机、一个有线以太网连接和连接到该有线连接的第二台主机,可以使用 IP 下面的哪一层或协议来找出这一点。

我也喜欢使用一些 Windows API 函数或回调的仅限 Windows 的解决方案。

(我知道真正的方法可能是通过 DHCP,但这是关于发现旧设备。)

windows ip-address device-discovery
5个回答
21
投票

嗯……方法有很多。 我回答了另一个网络发现问题,并写了一些入门

一些 tcpip 堆栈回复 icmp 广播。 所以你可以尝试 PING 到你的网络广播地址。

例如,您的 IP 为 192.168.1.1,子网为 255.255.255.0

  1. ping 192.168.1.255
  2. 5秒后停止ping
  3. 观看设备回复:arp -a

注意:在步骤 3 中,您将获得 MAC 到 IP 缓存条目的列表,因此子网中还有您在最后几分钟与之交换数据的主机,即使它们没有回复 icmp_get。

注(2):现在我在linux上。我不确定,但可能是 Windows 没有通过广播回复 icmp_get。

它是您电脑上连接的唯一一台设备吗? 是路由器还是其他简单的电脑?


12
投票

要使用 DHCP,您必须在主主机上运行 DHCP 服务器并在辅助主机上运行客户端;然后主服务器可以查询服务器以找出它分发的地址。可能有点矫枉过正了。

我无法直接帮助您使用 Windows。在 Unix 上,“arp”命令将告诉您已知哪些 IP 地址连接到本地以太网段。 Windows 将具有相同的信息(因为它是 IP/以太网接口的核心部分),但我不知道您如何获取它。

当然,网络堆栈只有在之前看到过来自其他主机的流量时才会知道该主机。您可能必须首先在接口上发送广播数据包以引发某种响应,从而填充本地 ARP 表。


12
投票

Windows 7 中有 arp 命令。 arp -a 应该显示连接到系统的静态和动态类型接口。


6
投票

最好的方法是安装 Wireshark,重新启动设备等待 TCP/UDP 流,广播将宣布两个以太网端口的 IP 地址 当连接的设备未启用 DHCP 客户端时,这特别有用,那么您可以从那里开始。


1
投票

您还可以从直接连接的网络设备获取信息,例如使用LDWin(发布在github上的便携式免费Windows程序)的网络交换机:

http://www.sysadmit.com/2016/11/windows-como-saber-la-ip-del-switch-al-que-estoy-conectado.html

LDWin 支持以下链路发现方法:CDP(思科发现协议)和 LLDP(链路层发现协议)。

可以获取型号、管理IP、VLAN标识符、端口标识符、固件版本等

© www.soinside.com 2019 - 2024. All rights reserved.