网络拓扑信息

时间:2010-11-10 23:12:26

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

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

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

我的猜测是我可以分析数据并建立网络的逻辑连接。所以,我想问的是,我是否正确地知道网络拓扑(至少是它的逻辑连接)。

这一切都是以编程方式完成的(c和objective-c),适用于学校项目。

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

2 个答案:

答案 0 :(得分: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可以很好地满足您的图形需求。

答案 1 :(得分:1)

对于绘图,最简单的方法可能是以点为单位输出文件,然后使用graphviz对其进行绘图。