2010-11-10 114 views
1

我有一个小型企业网络,有几个交换机,终端设备但只有一个路由器。我想显示网络拓扑结构,如图所示(路由器位于顶部)。网络拓扑信息

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

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

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

PLUS:有人知道任何图书馆,会绘制(给出此信息)的拓扑?

+2

不知道网络拓扑和东西,但[Graphviz](http://www.graphviz.org/)可以提供您需要的绘图功能(另见[Wikipedia article]](http:// en .wikipedia.org /维基/ Graphviz的))。 – pmg 2010-11-10 23:19:35

+0

我不知道它是如何实现的,但我知道很多监视工具(包括OpenNMS)都这样做(尽管在OpenNMS中是Java)。同样,我知道惠普的SAV工具(与惠普的服务器自动化工具一起提供)可以与网络自动化协同工作。我认为你已经对你的环境有了'nmap'了? – warren 2010-11-10 23:25:27

+0

也,这看起来像一个建立在您以前的问题:http://stackoverflow.com/questions/3509876/network-topology – warren 2010-11-10 23:26:22

回答

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可以很好地满足您的图形需求。

+0

是的,我在Linux和Mac都做过,所以我可以使用Cocoa的绘图。事情是我没有使用可可,也没有太多时间学习。所以我不得不使用任何库是最快的学习和最多的文档 – gvalero87 2010-11-12 00:47:32

+0

我不知道你的项目的全部范围,但如果你可以用@ CodeninjaTim的建议在下面脱身,那会更容易,更容易对你来说(困难的一点是没有画出线条和矩形,它正在弄清楚如何布置可可不会帮助你的情节)。可可绘图非常简单,苹果的教程非常好,但是如果你走这条路线,我发现这个http://cocoadevcentral.com/d/intro_to_quartz/作为第一个介绍非常有帮助。 – 2010-11-12 14:01:43

1

对于绘制最简单的方法可能是以点形式输出文件,然后用graphviz将其图形化。

+0

谢谢@Codeninja,最终的答案是做两件事,运行伪@Tim提出的算法,并且在网络规范中编写一个点文件。 – gvalero87 2010-11-15 21:10:29