Сложно ли кодировать в Perl сетевой анализатор, если вы сканируете всю сеть вместо одного коммутатора?
Позвольте мне задать этот вопрос опытным программистам на Perl, которые знают кое-что о сетевом программировании. Вот что у нас есть. У нас есть программа для разработки сетевых анализаторов на Perl, цель которой состоит в том, чтобы мы сканировали только трафик, проходящий через коммутатор, к которому подключен хост. Будет ли трудно, если мы просканируем всю сеть вместо одного коммутатора?? Я и моя команда задаемся вопросом, займет ли это много времени при его кодировании, или, может быть, это займет всего одну строку кода, что-то вроде этого. Я надеюсь, что мой вопрос ясен. Заранее спасибо.
1 ответ
Проблема не в Perl, а в том, как вы получаете данные на компьютер, на котором работает ваш анализатор. Обычно вы будете получать данные только для локального компьютера при использовании коммутатора (за исключением запросов ARP), поэтому вам необходимо получить доступ к специально настроенному порту коммутатора (зеркальному порту). Чтобы получить доступ ко всем данным в сети, вам необходимо либо подключиться ко всем зеркальным портам всех коммутаторов в сети, либо иметь специальные устройства для сбора всего трафика (отвод сети), либо создать какую-то сенсорную сеть для сбора данных из различные места.
Кроме того, я бы не использовал Perl для высокоскоростного сетевого анализа (который обычно необходим, если вы хотите анализировать данные из всей сети). Даже с C непросто сделать быстрый захват, и Perl вводит слишком много накладных расходов. Но вы можете использовать Perl для анализа сокращенного набора данных, например, после большого количества фильтрации исходных данных.