Дипломная работа: Автоматизация учета и обработки данных по использованию трафика ЛВС для АО "БИТК"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
использует функциональность классов «NetFlowHeader»,
«NetFlowRecord» для полного разбора пакета NetFlow5 (т.к.
пакет NetFlow5 состоит из заголовка пакета и множества
записей «record»).
Результатом данного этапа является объект класса
«NetFlowPacket» содержащий данные пакета в удобном для
использования виде.
Если разбор успешно выполнен, то переходим к пункту 6.
7. Запись
сведений в базу
данных
Выполняется вызов метода «Write» объекта класса
«NetFlowWriter».
Переходим к пункту 4.
Используемые процессе работы коллектора) объекты приведены в
таблице 2.10.
Таблица 2.10
Используемые (в процессе работы коллектора) объекты
Название
Класс C++
Описание
Сокет
System::Net::Sockets::Socket
(встроенный класс)
Используется для приема пакетов
NetFlow5
Заголовок
пакета
NetFlowHeader
(реализованный класс)
Используется для разбора заголовка
пакетов NetFlow5. Использует
BitConverter.
Запись из
пакета
NetFlowRecord
(реализованный класс)
Используется для разбора одной
записи из пакета NetFlow5. Использует
BitConverter.
Пакет
NetFlowPacket
(реализованный класс)
Используется для разбора получаемой
сокетом последовательности байтов и
приведения этой последовательности в
вид, удобный для использования в коде
приложения. Использует
функциональность NetFlowHeader,
NetFlowPacket.
Бит-
конвертор
System::BitConverter
(реализованный класс)
Используется для конвертирования
байтов пакета в удобные для
использования типы данных.
Компонент
записи
данных в
базу
данных
NetFlowWriter
(реализованный класс)
Записывает пакет (экземпляр класса
NetFlowPacket) в базу данных.
Фоновый
поток
System::ComponentModel::
BackgroundWorker
(встроенный класс)
Используется для реализации фоновых
вычислений.
Диаграмма классов представлена на рисунке 2.20.
Рисунок 2.20 Диаграмма классов
Класс «NetFlowHeader» Реализует алгоритм разбора заголовка пакета
NetFlow5.
Реализует алгоритм разбора заголовка записи из пакета NetFlow5 (таблица
2.11).
Таблица 2.11
Описание класса NetFlowHeader
Область
видимости
Объявление
Описание
public
static const int size = 24;
Размер заголовка пакета NetFlow в байтах
public
short version;
Версия протокола NetFlow нашем случае
всегда равно 5)
public
short count;
Количество записей в пакете (1-30)
public
unsigned int sys_uptime;
Current time in milliseconds since the export
device booted
public
unsigned int unix_secs;
Current count of seconds since 0000 UTC 1970
public
unsigned int unix_nsecs;
Residual nanoseconds since 0000 UTC 1970
public
unsigned int
flow_sequence;
Sequence counter of total flows seen
public
char engine_type;
Type of flow-switching engine
public
char engine_id;
Slot number of the flow-switching engine
public
short sampling_interval;
First two bits hold the sampling mode; remaining
14 bits hold value of sampling interval
Таблица 2.12
Методы класса NetFlowHeader
Область
видимости
Объявление
Описание
public
NetFlowHeader(array<unsigned
char, 1>^ BitNetFlowPacket)
Конструктор класса. В теле
конструктора выполняется разбор
последовательности байт заголовка
пакета NetFlow
protected
array<unsigned char, 1>^
GetBytes (array<unsigned char,
1>^ source, int index, int count)
{
Выполняет извлечение
определенного количества байт из
массива байтов пакета NetFlow5 и
производит корректировку
последовательности исходя из
свойства System::BitConverter::
IsLittleEndian (порядок байтов, в
котором данные хранятся в
архитектуре данного компьютера)
Класс «NetFlowRecord»
Таблица 2.13
Описание класса NetFlowRecord
Область
видимости
Объявление
Описание
public
static const int size =
24;
Размер заголовка пакета NetFlow в байтах
public
unsigned int srcaddr;
Адрес источника данных
public
unsigned int dstaddr;
Адрес приемника данных
public
unsigned int nexthop;
Адрес следующего сетевого устройства
(маршрутизатора), через которых будут
пересылаться пакеты данных
public
unsigned short input;
Входной интерфейс
public
unsigned short output;
Выходной интерфейс
public
unsigned int dPkts;
Количество пакетов в потоке
public
unsigned int dOctets;
Количество байт в потоке
public
unsigned int first;
Время начала потока в системе SysUptime
public
unsigned int last;
Время SysUptime, когда последний пакет
потока был получен
public
unsigned short srcport;
Номер порта источника данных (4-го уровня
сетевой модели)
public
unsigned short dstport;
Номер порта приемника данных (4-го
уровня сетевой модели)
public
unsigned char pad1;
Неиспользуемые байты
public
unsigned char
tcp_flags;
TCP флаги
public
unsigned char prot;
Протокол 4-го уровня (например, 6=TCP,
17=UDP и т.п.)
public
unsigned char tos;
Тип сервиса IP протокола
public
unsigned short src_as;
Номер автономной системы источника
данных
public
unsigned short dst_as;
Номер автономной системы приемника
данных
public
unsigned char
src_mask;
Маска адреса источника данных
public
unsigned char
dst_mask;
Маска адреса приемника данных
public
unsigned short pad2;
Неиспользуемые байты
Таблица 2.14
Методы класса NetFlowRecord
Область
видимост
и
Объявление
Описание
public
NetFlowRecord(array<
unsigned char, 1>^
BitNetFlowRecord);
Конструктор класса. В теле конструктора
выполняется разбор последовательности
байт записи пакета NetFlow
protected
array<unsigned char,
1>^
GetBytes
(array<unsigned char,
1>^ source, int index,
int count);
Выполняет извлечение определенного
количества байт из массива байтов пакета
NetFlow5 и производит корректировку
последовательности исходя из свойства
System::BitConverter:: IsLittleEndian (порядок
байтов, в котором данные хранятся в
архитектуре данного компьютера)
Класс «NetFlowPacket»
Реализует алгоритм разбора пакета NetFlow5.
Таблица 2.15
Описание класса NetFlowPacket
Область
видимости
Объявление
Описание
public
int Size;
Размер пакета в байтах
public
NetFlowHeader ^Header;
Заголовок пакета
public
array<NetFlowRecord^, 1>
^Body;
Массив записей пакета
Таблица 2.16
Методы класса NetFlowPacket
Область
видимости
Объявление
Описание
public
NetFlowPacket
(array<unsigned char,
1>^ BitNetFlowPacket)
Конструктор класса. Реализует разбор
байтовой последовательности и создает
экземпляр класса NetFlowPacket.
protected
array<unsigned char,
1>^
GetBytes
(array<unsigned char,
1>^ source, int index,
int count)
{
Выполняет извлечение определенного
количества байт из массива байтов пакета
NetFlow5 и производит корректировку
последовательности исходя из свойства
System::BitConverter:: IsLittleEndian (порядок
байтов, в котором данные хранятся в
архитектуре данного компьютера)
Класс «NetFlowCommon»
Реализует ряд общих методов, используемых при работе с данными
пакетов NetFlow5.
Таблица 2.17
Описание класса NetFlowCommon
Область
видимости
Объявление
Описание
public
static System::String^ GetIpAddress
(unsigned int Address);
Преобразует IP адрес из
числовой формы в формат
mmm.nnn.ppp.qqq
public
static System::TimeSpan^
GetTimeSpan (unsigned int
SysUptime)
Преобразует значение
временного интервала из
SysUptime в System::TimeSpan.
public
static System::DateTime^
GetDateTime (unsigned int
UnixSecs)
Преобразует значение
временного интервала из
UnixSecs в System::DateTime.
Класс «NetFlowWriter»
Реализует механизм записи пакета NetFlow5 в базу данных.
Таблица 2.18
Описание класса NetFlowCommon
Область
видимости
Объявление
Описание
protected
SqlConnection^ Connection;
Соединение с базой данных
Таблица 2.19
Источник: https://baza.diplomsite.ru/previewfile/2370