【问题标题】:Network topology information网络拓扑信息
【发布时间】:2011-05-08 04:38:20
【问题描述】:

我有一个带有几个交换机、终端设备但只有一个路由器的小型企业网络。我想像图表一样显示网络拓扑(路由器在顶部)。

我只能访问网络层地址,所以我设法为网络上的每个设备获取它的 ip 地址和 ip 网络,即设备每个接口的 192.168.2.9 和 192.168.2.0(掩码 255.255.255.0)已。

我的猜测是我可以分析数据并建立网络的逻辑连接。所以,我想问的是我是否在正确的路径上了解网络拓扑(至少对于它的逻辑连接)。

这一切都是以编程方式完成的(c 和 Objective-c),并且是针对学校项目的。

另外:有人知道任何可以绘制(给定此信息)拓扑的库吗?

【问题讨论】:

  • 不知道网络拓扑和东西,但也许Graphviz 可以提供您需要的绘图能力(另请参阅Wikipedia article)。
  • 我不知道它是如何实现的,但我知道 许多 监控工具(包括 OpenNMS)可以做到这一点(尽管在 Java 中用于 OpenNMS)。同样,我知道 HP 的 SAV 工具(与 HP 的 Server Automation 工具一起提供)可以与 Network Automation 结合使用。我想你已经 nmap 'd 你的环境了?
  • 另外,这看起来像是基于您之前的问题:stackoverflow.com/questions/3509876/network-topology
  • @warren 是的,是的。有什么问题我会提出另一个问题吗?
  • 没问题,只是想让人们知道您之前就该主题提出过问题,这是后续问题:)

标签: objective-c c networking network-programming topology


【解决方案1】:

因此,您已经拥有每台设备的 IP 地址,这是一个有用的开始。从那里,“手动算法”可能是:

for each ip in devices
  traceroute ip
    for each hop in traceroute
      add hop to graph (if it's not there already)

您正在做的是将您与设备之间的每个网络跃点添加到图结构中。如果已找到节点(跃点),则添加新边。如果没有,则添加边和顶点。最终结果将是网络上每个节点的图表以及到达它们所采用的路径 - 您的拓扑。

所以你所要做的就是自己实现 traceroute,构建图形结构来存储你的 traceroute 运行的结果,然后制作一些东西来很好地绘制它!每一个都可能产生许多自己的问题。

当您标记此 Objective-C 时,我将做出一个飞跃并假设您在 Mac 上执行此操作。如果是这样的话,Cocoa 的绘图 API 可以很好地满足您的图形需求。

【讨论】:

  • 是的,我在 Linux 和 Mac 上都做过,所以我可以使用 Cocoa 的绘图。问题是我没有使用可可,也没有太多时间学习。所以我必须使用任何学习速度最快且文档最多的库
  • 我不知道你项目的全部范围,但如果你能摆脱@CodeninjaTim 的建议,那么这对你来说会容易得多(困难的部分不是绘图线条和矩形,它正在弄清楚如何布置可可无法帮助您的情节)。 Cocoa 绘图非常简单,Apple 的教程也非常好,但我发现 cocoadevcentral.com/d/intro_to_quartz 如果您确实走这条路,作为第一次介绍非常有用。
【解决方案2】:

对于绘图,最简单的方法可能是以点输出文件,然后使用 graphviz 绘制它。

【讨论】:

  • 感谢@Codeninja,最终的答案是两样都做,运行@Tim 提出的伪算法,并在编写带有网络规范的点文件的过程中。
猜你喜欢
  • 2014-10-14
  • 2011-03-31
  • 2012-07-13
  • 1970-01-01
  • 2012-05-31
  • 2012-03-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多