2016-09-29 13 views
0

У меня есть локальная сеть: network configuration.C# - Как обнаружить все хосты, подключенные к коммутатору уровня 2?

Я пишу программу на C#. Это программное обеспечение работает на всех хостах. Программное обеспечение должно знать, какие хосты подключены к его собственному коммутатору уровня 2. Очень важно, чтобы это было сделано, не нарушая работу сервера, поскольку это программное обеспечение предназначено для LanParty, а аппаратное и программное обеспечение на сервере изменяется, а также в той же локальной сети.

Не важно знать местоположение всех хостов, но вам просто нужно знать, какие хосты подключены к тому же коммутатору.

В примере «Host A» знает, что «Host C» и «Host E» подключены к одному и тому же коммутатору, а все остальные хосты - нет.

ответ

1

Если коммутаторы говорят по протоколу SNMP, вы можете просто запросить у них таблицы MAC-адресов и выяснить, какие узлы подключены где.

Если это не так, вам придется прибегнуть к хитрости, как это:

  • Предположим, все узлы подключены к одному коммутатору
  • Установить связь между всеми хостами
  • Назначение ролей 3 произвольных хостов: отправителя, приемник, раковина
  • выбрать MAC-адрес в настоящее время не используется в го электронной сети
  • приемник настраивает свою сетевую карту на новый MAC-адрес и отправляет один пакет в раковине (все переключатели этот пакет проходит через теперь знаем, что адрес)
  • все другие хосты установить их сетевые карты в беспорядочном режиме
  • отправитель посылает пакет приемника (если отправитель подключен к коммутатору, не узнать новый адрес получателя , что коммутатор будет заливать из пакета на все порты. Если один или несколько из этих портов подключены к другим коммутаторам, которые не изучали адрес либо, эти коммутаторы также заливать)

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

Давайте предположим, что раковина, приемник и всех слушателей, которые не видели пакет подключены к одному коммутатору, отправителя и всех слушателей, которые видели это подключены к другому. Повторите попытку с новым MAC-адресом и новым назначением трех ролей до тех пор, пока у вас не будет достаточной информации для определения топологии сети (или пока вы не откажетесь от первого предположения о единственном коммутаторе).