2010-08-18 5 views
2

Я пытаюсь создать приложение, которое будет отображать топологию сети, используя c или, возможно, C++. Я знаю сокеты. Я знаю этот широкий вопрос с небольшими подробностями. Просто я ничего не нашел для начала. Я понятия не имею, что делать.Сетевая топология

+0

Для начала вы можете найти полезную информацию, предоставленную 'arp',' route' и 'ipconfig'. – PeterK

ответ

5

Это, как и любая проблема, с которой вы сталкиваетесь в жизни, требует четкого определения проблемы. И вам нужно разбить его на части.

Во-первых, вам нужно «обнаружить» топологию или у вас уже есть в текстовом файле? Является ли ваше требование просто графикой топологии (в этом случае программа, называемая «graphviz», вероятно, уже выполнит требуемую работу)? Если вам нужно обнаружить топологию, какая это сеть? LAN? WAN? TCP/IP? Что-то другое?

Тогда вы должны спросить себя, почему вы хотите использовать C или C++ - из вашего вопроса вытекает, что у вас мало опыта работы с сетями - поэтому неясно, почему вы хотите пойти на труд язык низкого уровня для выполнения выбранной вами задачи. Возможно, в ближайшем будущем язык высокого уровня будет подходящим.

Имейте в виду, что многие сталкиваются с тем же вызовом, что и у вас, - графикой сетевой топологии; поэтому есть много приложений, которые делают именно это. Возможно, вы могли бы уточнить причины, по которым вы сами хотели бы выполнить эту задачу?

+0

Позвольте мне сузить поиск, отвечая на ваши вопросы. 1) Мне нужно открыть топологию, это моя большая подзадача 2) Мне нужно нарисовать ее, но я думаю, я могу использовать библиотеку графов, возможно, использовать ту, которую вы сказали 3) это сеть ЛВС. В частности, сети малого и среднего бизнеса. 4) Я использовал c сокеты раньше, но просто для ip-приложений не это. Язык - это требование. Я бы предпочел более высокий уровень языка. – gvalero87

+0

Что касается открытия: считаете ли вы приложение вроде [netdisco] (http://netdisco.org/)? –

+0

Нет, я ищу в нем – gvalero87

1

Я собираюсь сделать некоторые предположения:
1. У вас есть сетевое подключение к оборудованию. 2. У вас есть или можно получить SNMP-read привилегии.

Большинство сетевых устройств могут связываться с SNMP. Из информации SNMP вы можете определить массу информации об устройстве. Среди информации, которую вы можете получить, является «CDP» и «LLDP» информация. «CDP» является проприетарным протоколом Cisco для информации о соседях и «LLDP», который является и открытым стандартом, который, как правило, также поддерживает устройства Cisco.

Если устройства не имеют CDP или LLDP, и вы не можете включить его, вы можете вместо этого использовать FDB (База данных пересылки). Это означает, что вы сопоставляете MAC-адрес интерфейсного устройства, которое вы получаете с SNMP, в таблице MAC-адресов других интерфейсов устройств. Это немного сложнее, поскольку MAC-адрес может отображаться на нескольких интерфейсах. Я не знаю, как именно он представлен.

Итак, для логической части выяснения того, как все связано, я так и делаю, что это путь. Графические части, с которыми вам будет помогать кто-то другой.