22

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

我也会对使用某些 Windows-API 函数或回调的纯 Windows 解决方案感到满意。

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

4

5 回答 5

19

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

一些 tcpip 堆栈回复 icmp 广播。因此,您可以尝试对您的网络广播地址进行 PING。

例如,您有 ip 192.168.1.1 和子网 255.255.255.0

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

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

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

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

于 2011-11-13T09:35:38.340 回答
10

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

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

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

于 2011-05-31T09:15:19.570 回答
9

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

于 2017-12-03T16:26:08.167 回答
6

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

于 2016-03-29T11:32:55.380 回答
2

您还可以从直接连接的网络设备获取信息,例如使用 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标识、端口标识、固件版本等信息。

于 2016-11-13T19:51:08.303 回答