代码之家  ›  专栏  ›  技术社区  ›  Nick

以编程方式发现网络

  •  1
  • Nick  · 技术社区  · 16 年前

    是否有用于网络发现的特定协议?
    我想把它编码成一个现有的Java项目。目前我正在使用端口扫描仪来处理这个案子,但我想把它换成能给我更多信息的东西。如果可能的话,我想扫描以发现机器并提取IP地址、主机名、MAC地址、NIC品牌/型号、操作系统以及我能得到的任何其他信息。

    4 回复  |  直到 12 年前
        1
  •  4
  •   loginx    16 年前

    没有一个协议可以为你做这些。我必须做到这一点,基本上,最好的方法是结合使用启发式方法来定位、分析和交叉引用网络节点和拓扑结构。以下是我使用的数据源:

    • 示踪物 允许您识别网络中的边缘设备和路由器
    • 端口扫描器 允许您识别每个节点上运行的服务
    • SNMP 允许您检测设备类型及其所有网络接口、其他IP地址、连接到交换机上每个端口的设备的IP、路由表、进程表、网络配置等…这是最好的数据源,但需要节点运行一个SNMP服务器(默认情况下安装在Windows和大多数Linux发行版上)并具有凭据。
    • WMI 对于Windows主机,将提供与SNMP大致相同的信息

    Here 这是我在使用拓扑映射器时发现的意外资源。希望能有所帮助。祝你好运!

        2
  •  1
  •   MBO    16 年前

    检查 nmap 为了它能做的。它是网络扫描器,可以用ARP、TCP-SYN和许多其他嗅探技术进行扫描。它还包含不同机器指纹的大型数据库,因此可以猜测给定系统运行的操作系统/版本。

        3
  •  0
  •   TLiebe    16 年前

    退房 SNMP 协议。它有一种在网络上自动发现设备的方法。请记住,此协议存在一些安全问题(尤其是较旧版本的协议)。

        4
  •  0
  •   TeeTee    12 年前

    wbem(类似于Windows上的wmi)可用于扫描Unix计算机和其他设备。当然,只有安装了WBEM仪器…

    如果在那里启用了wbem,它甚至可以用于esx(i)服务器。

    否则,您也可以使用ssh以编程方式登录到UNIX计算机,并发出系统命令以提取所需的信息。

    有一个很好的用于WBEM的Java库 SBLIM 有很多用于Telnet和SSH的Java库