网络发现以编程方式

时间:2010-01-20 14:06:25

标签: java network-programming

是否有用于网络发现的特定协议? 我希望将其编码为现有的Java项目。目前我正在使用端口扫描仪来处理这个案例,但是我想把它换成可以给我更多信息的东西。如果可能的话,我想扫描以发现机器并拉出Ip地址,主机名,MAC地址,网卡制作/型号,操作系统以及我能得到的任何其他内容。

4 个答案:

答案 0 :(得分:4)

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

  • Traceroute 可让您识别网络中的边缘设备和路由器
  • 端口扫描程序可让您识别每个节点上正在运行的服务
  • SNMP 允许您检测设备的类型,以及其所有网络接口,其他IP地址,连接到交换机上每个端口的设备的IP,路由表,进程表,网络配置等...这是最好的数据来源,但要求节点运行snmp服务器(默认安装在Windows和大多数Linux发行版上)并拥有凭据。
  • Windows主机的
  • WMI 将提供与SNMP
  • 大致相同的信息

Here是我在拓扑映射器上工作时挖出的一个学术资源。希望它会有所帮助。祝你好运!

答案 1 :(得分:1)

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

答案 2 :(得分:0)

查看SNMP协议。它有一种自动发现网络设备的方法。请记住,这有一些安全问题(尤其是旧版本的协议)。

答案 3 :(得分:0)

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

WBEM甚至适用于ESX(i)服务器(如果在那里启用)。

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

WBEM有一个很好的Java库叫做SBLIM 有许多用于telnet和SSH的Java库