2010-08-18 128 views
2

我试图构建一个应用程序,它将显示网络拓扑结构,使用c或C++。我有套接字的知识。我知道这是一个广泛的问题,没有多少细节。这只是我没有找到任何开始。我不知道该怎么做。网络拓扑结构

+0

对于初学者,您可能会发现'arp','route'和'ipconfig'提供的信息很有用。 – PeterK 2010-08-18 07:42:23

回答

5

这和你在生活中遇到的任何问题一样,需要对问题有一个清晰的定义。你需要把它分解成几部分。首先,你是否需要“发现”拓扑,或者你是否已经将它提供在某个文本文件中?您的要求仅仅是绘制拓扑图(在这种情况下,名为“graphviz”的程序可能已经完成了您所需要的工作)?如果你必须发现拓扑结构,它是什么样的网络? LAN? WAN? TCP/IP?还有别的吗?

然后,你必须问自己,为什么你要使用C或C++ - 它会从你的问题中看出你对网络没有太多的经验 - 因此它不明显,为什么你想要去使用麻烦一个低级语言来承担你所选择的任务。近期内也许适用高级语言。

请注意,许多人面临同样的挑战 - 绘制网络拓扑图;因此有很多应用程序可以做到这一点。也许你可以详细说明你想自己尝试这个任务的理由?

+0

让我使用回答您的问题缩小搜索范围。我需要发现拓扑结构,这是我的更大的子问题 2)我需要绘制它,但我想我可以使用图库,也许使用你说的那个 3)它是一个LAN网络。特别是中小型企业的网络。 4)我以前使用c套接字,但只是做ip应用程序而不是这个。语言是必需的。我更喜欢更高级的语言。 – gvalero87 2010-08-18 16:26:55

+0

关于发现:你有没有考虑像[netdisco](http://netdisco.org/)这样的应用程序? – 2010-08-19 07:40:06

+0

不,我正在研究它 – gvalero87 2010-08-19 23:03:13

1

我打算做一些假设:
1.您具有到设备的网络连接。 2.您有或可以接收SNMP读取权限。

大多数网络设备都可以与SNMP进行通信。 从SNMP信息中,您可以确定有关设备的信息负载。 其中可以得到的信息是“CDP”“LLDP”信息。 “CDP”是思科专有的邻居信息协议,“LLDP”是思科设备通常也支持的开放标准。

如果设备没有运行CDP或LLDP并且无法开启,则可以改用FDB(转发数据库)。 这意味着您将使用SNMP获得的接口设备的MAC地址与其他设备接口的MAC地址表匹配。 由于MAC地址可以显示在多个接口上,这有点复杂。我不知道它代表的确切方式。

因此,要弄清楚事情是如何连接的逻辑部分,我就要走这条路了。 其他人将必须帮助您的图形部分。