- •Пояснительная записка к лабораторной работе
- •Постановка задачи
- •Структура решения
- •Теория Типы адресов: физический (mac-адрес), сетевой (ip-адрес) и символьный (dns-имя)
- •Бесклассовая адресация (cidr)
- •Сетевые протоколы
- •Служба dns
- •Межсетевой экран
- •Обзор и анализ методов решения
- •Работа с параметрами стека tcp/ip
- •Настройка параметров tcp/ip
- •Просмотр параметров tcp/ip
- •Построение структуры кафедральной, факультетской и университетской сетей
- •Сбор первичной информации о сети
- •Анализ информации о сети
- •Построение структуры сети
- •Работа с межсетевым экраном
- •Обзор межсетевых экранов
- •Описание реализации применяемых методов
- •Описание tcp/ip параметров настройки компьютера
- •Построение структуры кафедральной, факультетской и университетской сетей
- •Сбор информации о сети с помощью специально написанного приложения
- •Руководство программиста
- •Руководство пользователя
- •Построение карты сети
- •Работа с межсетевым экраном
- •Установка
- •Настройка
- •Создание правил
Руководство программиста
Интерфейсная часть
Использующиеся пространства имен:
System - содержит фундаментальные и базовые классы.
System.Windows.Forms - содержит классы для создания приложений Windows, которые позволяют наиболее эффективно использовать расширенные возможности пользовательского интерфейса.
System.Net - содержит классы, обеспечивающие простой интерфейс программирования для различных сетевых протоколов.
System.Threading - содержит классы и интерфейсы, которые дают возможность программировать в многопоточном режиме.
Компоненты пользовательского интерфейса
Объект |
Комментарий |
Тип |
nud1, nud2, nud3, nud4 |
Регуляторы для ввода начального IP-адреса диапазона |
NumericUpDown – регулятор, отображающий числовые значения |
nud5, nud6, nud7, nud8 |
Регуляторы для ввода последнего IP-адреса диапазона |
|
btn_scan |
Кнопка начала сканирования |
Button - кнопка |
btn_exit |
Кнопка выхода из приложения |
|
btn_analyze |
Кнопка анализа подсети |
|
txt_network |
Текстовое поле для адреса сети |
TextBox – текстовое поле |
txt_mask |
Текстовое поле для маски сети |
|
txt_broadcast |
Текстовое поле для широковещательного адреса |
|
txt_gateway |
Текстовое поле для шлюза |
|
scanning_progress |
Индикатор выполнения сканирования |
ProgressBar - индикатора выполнения |
scanning_table |
Таблица с результатами сканирования сети |
DataGridView - таблица |
Функциональная схема
Взаимодействие компонентов программы
При нажатии кнопки btn_scan вызывается её метод обработчик btn_scan_Click, который берет информацию с компонент ввода диапазона адресов nud1-nud8 и передает их в функцию Scan. В функции Scan начальный и конечный адреса диапазона передаются в методы SendPings и SendDns. Первый метод – асинхронно пингует все адреса из диапазона, второй – для каждого адреса из диапазона запрашивает в новом потоке Dns имя. При этом в методе SendPings перед вызовом асинхронных функций привязывается callback метод PingCompletedCallback, в котором извлекается информация об адресе, для которого пришел ответ и его статусе, после чего информация записывается в таблицу scanning_table и увеличивается значение прогресса scanning_progress. В методе SendDns для каждого адреса из диапазона создается новый поток, которому в качестве параметра указывается функция GetDns. GetDns в свою очередь пытается получить Dns имя соответствующего адреса, после чего записывает результат в таблицу scanning_table, в случае ошибки в таблицу записывается значение «Хост неизвестен», и увеличивается значение прогресса scanning_progress.
При нажатии кнопки btn_analyze вызывается её обработчик btn_scan_Click, которые берет информацию о выделенных адресах из таблицы scanning_table: начальный и конечный адрес подсети. Затем, передает их в функцию GetMask, которая вычисляет и возвращает маску подсети. Далее передает начальный адрес и найденную в функции GetNetworkAddress и GetBroadcast, первая вычисляет адрес подсети, вторая – широковещательный адрес. Далее передает найденный адрес подсети в функцию GetGateway, которая вычисляет шлюз подсети. Затем все результаты записываются в соответствующие компоненты: в txt_mask – маска подсети, txt_network – адрес подсети, txt_broadcast – широковещательный адрес, txt_gateway – шлюз подсети.
При нажатии кнопки btn_exit приложение закрывается.
