【发布时间】:2011-03-31 09:46:15
【问题描述】:
我正在尝试使用 c 或 c++ 构建一个显示网络拓扑的应用程序。我有套接字的知识。我知道这是一个没有多少细节的广泛问题。只是我还没有找到任何可以开始的地方。我不知道该怎么办。
【问题讨论】:
-
对于初学者,您可能会发现
arp、route和ipconfig提供的信息很有用。
标签: c sockets networking topology
我正在尝试使用 c 或 c++ 构建一个显示网络拓扑的应用程序。我有套接字的知识。我知道这是一个没有多少细节的广泛问题。只是我还没有找到任何可以开始的地方。我不知道该怎么办。
【问题讨论】:
arp、route 和ipconfig 提供的信息很有用。
标签: c sockets networking topology
我将做一些假设:
1. 您与设备有网络连接。
2. 您拥有或可以获得SNMP-read权限。
大多数网络设备都可以与 SNMP 通信。 从 SNMP 信息中,您可以确定有关设备的大量信息。 您可以获得的信息包括“CDP”和“LLDP”信息。 “CDP”是 Cisco 用于邻居信息的专有协议,“LLDP”是 Cisco 设备通常也支持的开放标准。
如果设备没有运行 CDP 或 LLDP 并且您无法将其打开,则可以改用 FDB(转发数据库)。 这意味着您将通过 SNMP 获得的接口设备的 MAC 地址与其他设备接口的 MAC 地址表相匹配。 这有点复杂,因为 MAC 地址可以显示在多个接口上。我不知道它的确切表示方式。
因此,对于弄清楚事物如何连接的逻辑部分,我认为这是要走的路。 其他人必须帮助您处理的图形部分。
【讨论】:
这就像您在生活中遇到的任何问题一样,需要对问题进行明确定义。您需要将其分解为多个部分。
首先,您是否需要“发现”拓扑,或者您是否已经在某个文本文件中提供了它?您的要求仅仅是绘制拓扑图(在这种情况下,一个名为“graphviz”的程序可能已经完成了您需要的工作)?如果一定要发现拓扑,那是什么样的网络呢?局域网?广域网? TCP/IP?还有什么?
然后你必须问自己为什么要使用 C 或 C++ - 从你的问题中可以看出你对网络没有太多经验 - 因此不清楚你为什么要麻烦使用用于执行您选择的任务的低级语言。在短期内,也许一种高级语言是合适的。
请注意,许多人都面临着与您相同的挑战 - 绘制网络拓扑图;因此有许多应用程序可以做到这一点。或许您可以详细说明您想自己尝试这项任务的原因?
【讨论】: