有没有办法找出直接连接到特定以太网接口的设备的 IP 地址?即给定一台主机、一个有线以太网连接和另一台连接到该有线连接的主机,IP 之下的哪个层或协议可用于找出这一点。
我也会对使用某些 Windows-API 函数或回调的纯 Windows 解决方案感到满意。
(我知道这样做的真正方法可能是通过 DHCP,但这是关于发现旧设备。)
嗯……有很多方法。我回答了另一个网络发现问题,并写了一点入门。
一些 tcpip 堆栈回复 icmp 广播。因此,您可以尝试对您的网络广播地址进行 PING。
例如,您有 ip 192.168.1.1 和子网 255.255.255.0
注意:在第 3 步中,您将获得 MAC-to-IP 缓存条目的列表,因此您的子网中还有您在最后几分钟交换数据的主机,即使它们没有回复 icmp_get。
注意(2):现在我在linux上。我不确定,但可能是 Windows 没有通过广播回复 icm_get。
它是唯一连接到您的电脑的设备吗?是路由器还是其他简单的电脑?
要使用 DHCP,您必须在主服务器上运行 DHCP 服务器,在辅助服务器上运行客户端;然后主服务器可以查询服务器以找出它分发的地址。大概是矫枉过正。
我无法直接帮助您使用 Windows。在 Unix 上,“arp”命令将告诉您已知哪些 IP 地址连接到本地以太网网段。Windows 将具有相同的信息(因为它是 IP/以太网接口的核心部分),但我不知道您是如何获得的。
当然,网络堆栈只有在之前已经看到来自它的流量时才会知道其他主机。您可能必须首先在接口上发送广播数据包以引发某种响应,从而填充本地 ARP 表。
Windows 7 中包含 arp 命令。arp -a 应该显示连接到系统的静态和动态类型接口。
您最好的方法是安装 Wireshark,重新启动设备等待 TCP/UDP 流,广播将宣布两个以太网端口的 IP 地址这在连接的设备未启用 DHCP 客户端时特别有用,然后您可以从那里开始.
您还可以从直接连接的网络设备获取信息,例如使用 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标识、端口标识、固件版本等信息。