Введение
Трафик это основной и единственный ресурс сети Интернет с точки зрения транспорта. Как известно, любая информация в сети Интернет передается в виде отдельных пакетов - блоков данных сравнительно небольшого размера, каждый из которых имеет адрес отправителя и получателя и путешествует по сети самостоятельно. Так вот, трафик это суммарный объем пакетов, прошедших через точку наблюдения. Если бы Интернет был транспортной компанией, то трафик это суммарный вес грузов, перевезенных пакетами-грузовиками вне зависимости от конкретного содержания грузов. Когда выполняется работа с трафиком, абстрагируется содержимого пакетов, поскольку в этом контексте интересно не что именно передано, а сколько и откуда. Если говорить об учете трафика при работе компаний с Интернетом, то возникает понятие трафика входящего и исходящего. Контроль и учет трафика появился вместе с развитием коммерческого сегмента сети интернет. Как только появился платный ресурс, для любого пользователя, подключенного к провайдеру услуг интернет стало интересно учитывать потребление платного ресурса, чтобы контролировать провайдера и понимать на что расходуются деньги за связь. Точно также практически любой провайдер подключен к другому провайдеру для которого он выступает как клиент - т.е. платит за входящий трафик. Поэтому провайдеру необходимо не только учитывать трафик ушедший к клиентам, но и вести подсчет трафика, пришедшего в сеть провайдера снаружи - от других провайдеров. С резким увеличением количества пользователей в сети и появлением трафика разных приложений вопрос о необходимости введения автоматизированной системы контроля трафика локально - вычислительной сети стал чрезвычайно актуальным.
Таким образом, учет трафика необходим для того, чтобы, во-первых, тарифицировать использование Интернет ресурсов, а во-вторых, максимально сократить расходы и оптимизировать использование рабочего времени в организации клиенте. Есть еще один немаловажный аспект, связанный с использованием систем учета трафика - это ограждение пользователей клиента от ненужной или вредной информации из сети Интернет. Автоматизированная система контроля трафика локально-вычислительной сети включает в себя измерение трафика, текущий контроль трафика, измерение структуры трафика.
Данный проект представляет собой автоматизированную
систему, помогающую отслеживать передачу данных на компьютере клиента и
предавать данные на компьютер сервера. Программный
продукт разработан на языке Object
Pascal в среде
программирования Borland
Delphi 7, состоит
из 2 приложений:
Клиент
и Сервер. Пояснительная записка представлена на 78
страницах, состоит из введения, аналитической части, проектной части, техники
безопасности, заключения.
.
Аналитическая часть
1.1 Трафик
Трафик это основной и единственный ресурс сети Интернет с точки зрения протоколов транспортного уровня. Как известно, любая информация в сети Интернет передается в виде отдельных пакетов - блоков данных сравнительно небольшого размера, каждый из которых имеет адрес отправителя и получателя и путешествует по сети самостоятельно. Так вот, трафик это суммарный объем пакетов, прошедших через точку наблюдения. Если бы Интернет был транспортной компанией, то трафик это суммарный вес грузов, перевезенных пакетами-грузовиками вне зависимости от конкретного содержания грузов.
Когда выполняется работа с трафиком, системный администратор абстрагируемся от содержимого пакетов, поскольку в этом контексте становится интересным не что именно передано, а сколько и откуда. С другой стороны, для конечного пользователя сети Интернет интерес представляет не только сколько и откуда данных было получено, т.е. количество, но и качество, а именно - что содержалось в этих полученных данных. В общем случае задача учета трафика для операторов и для конечных потребителей отличается именно тем, что последним необходимо контролировать не только количество, но и качество трафика, т.е. в определенных пределах его содержимое.
Если говорить об учете трафика при работе
компаний с Интернетом, то возникает понятие трафика входящего и исходящего.
Входящий трафик это все пакеты, которые пересекли границу сети между вашей
организацией и любой другой сетью в направлении «к вам». Это объем
импортированных вами из Интернета данных. Исходящий - соответственно, объем
экспортированных вами данных[23]. Наиболее важно понятие входящего трафика,
потому что это тот трафик за который, как правило, приходится платить. Бывают,
конечно, и исключения, когда платить приходится и за исходящий трафик, но это
случается редко. Большинство поставщиков услуг связи берут с клиентов деньги
именно за входящий к ним трафик, т.е. за объем данных, которые получил, а не
отправил клиент. Это происходит потому, что именно за входящий к нему трафик
платит вышестоящему провайдеру ваш провайдер, а при огромных размерах сети
Интернет вероятность того, что нужные вам ресурсы находятся непосредственно в
сети вашего оператора, стремится к нулю.
.2 Внутренний учет трафика в организации
Внутри компании, подключенной к сети Интернет, имеется серьезнейшая мотивация для использования систем учета трафика. Интернет уже стал неотъемлемой частью бизнес процессов, тесно переплетаясь с информационными системами бизнеса. То, насколько компания контролирует информацию своего бизнеса, теперь зависит от того, насколько она контролирует Интернет подключение.
Каждый год Интернет удивляет нас скоростью своего роста. Растет не только количество пользователей, но и скорость подключений. Широкополосные подключения, уже повсеместно заменили собой низкоскоростные подключения на корпоративном рынке. Благодаря этому Интернет становится мощным инструментом, который, однако, требует существенно большего контроля. Миллионы новых пользователей появляются в сети, постоянно снижая средний уровень квалификации его пользователей. Бурное развитие технологии направлено в основном на получение большей скорости, в то время как разработка и внедрение механизмов, которые должны обеспечивать учет трафика, контроль и безопасность серьезно отстает от технологии, ответственной за скорость.
Уже очевидно, что средний уровень обычного пользователя совершенно недостаточен для обеспечения хотя бы собственной безопасности при высоких современных скоростях.
Вероятно, нельзя, да и несправедливо требовать
от обычного пользователя Интернет высокой квалификации и способности
самостоятельно решать все проблемы и избегать соблазнов, которые возникают при
работе с сетью Интернет. Для того, что пользователь мог успешно решать свои
задачи как сотрудник компании, имеющей интернет-подключение, сама компания
должна принять ряд мер, направленных на учет и контроль Интернет трафика и тем
самым избежать ряда возможных проблем, таких как нецелевое использование
рабочего времени и перерасход трафика[24].
.3 Нецелевое использование средств
Прямые затраты на Интернет зависят от объема потребленной информации. Создать потребление может как передача данных о новом продукте вашим поставщиком, так и увлечение сотрудников играми в сети. Таким образом, информация может быть как целевой, так и нецелевой. К сожалению, провайдеру все равно, какую информацию вы получили - платить придется за все виды трафика.
Во время потребления средств для Интернет прогулок (или прогулов) сотрудники также потребляют и рабочее время. Шутники от компьютерного мира нередко называют Интернет Всемирной Помойкой, и в чем-то они недалеки от истины. Помимо ресурсов, полезность которых очевидна и неоспорима, в Сети размещено фантастическое количество материалов сомнительного свойства, начиная "бородатыми" анекдотами и заканчивая порнографией, сайтами экстремистского толка и др. Причем "мусора" в процентном отношении к полезным данным значительно больше. Абстрагируясь от морально-этической стороны рассматриваемых материалов, следует отметить, что так или иначе они отвлекают внимание ваших сотрудников, а на их просмотре теряется значительное количество рабочего времени.
В материалах сайта #"871586.files/image001.gif">
Рисунок 1. Приветственное окно программы
Далее открывается основная форма приложения, которая имеет 3 вкладки:
– Мониторинг трафика представленный на рисунке 2.
– Соединение представленный на рисунке 3.
– О программе представленный на рисунке 4.
Рисунок 2. Мониторинг трафика
Рисунок 3. Соединение
Рисунок 4. О программе
Приложение «Автоматизированная система контроля
трафика ЛВС Server
version» предназначено для
приёма и сбора информации о клиентах, контроля и учёта входящего и исходящего
трафика локальной вычислительной сети. При двойном щелчке по ярлыку программы
открывается приветственное окно представленное на рисунке 5.
Рис 5. Приветственное окно программы
Далее открывается основная форма приложения, которая имеет 3 вкладки:
– Мониторинг, представлена на рисунке 6.
– График, представлена на рисунке 7.
– О программе, представлена на рисунке 8.
Рисунок 6. Мониторинг сети
Рисунок 7. Графическое представление трафиков
Рис 8. О программе
2.7 Описание программных модулей
.7.1 Описание модуля Unit1
Модуль Unit1 служит для отображения приветственного окна (Листинг 1).
Листинг 1.
Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, jpeg, ExtCtrls;= class(TForm): TImage;FormCreate(Sender: TObject);
{ Private declarations }
{ Public declarations };: Tlogo;
{$R *.dfm}Tlogo.FormCreate(Sender:
TObject);:=poScreenCenter;:=fsStayOnTop;:=bsNone;:=[];;.
2.7.2 Описание модуля TrafficUnit
Модуль TrafficUnit предназначен для учёта
входящего и исходящего трафиков ( Листинг 2).
Листинг 2.
TrafficUnit;SysUtils, Windows, IPHelper, IPHLPAPI;= Class;= procedure(Sender :TTraffic) of object;= procedure(Sender :TTraffic) of object;= Class: string;: string;: Dword;: Dword;: Dword;: DWord;: Dword;: Cardinal;: DWord;: string;: Dword;: Dword;: Dword;: DWord;: Dword;: Dword;: Dword;: TDateTime;: boolean;: TFreezeEvent;: TFreezeEvent;: boolean;: boolean;: DWord;GetIPFromIFIndex(InterfaceIndex: Cardinal): string;Found : boolean read FFound write FFound;Connected : boolean read FConnected;Running : boolean read FRunning;InterfaceIndex : DWord read FInterfaceIndex;IP : string read FIP;Mac : string read FMac;Description : string read FDescription;StartedAt : TDateTime read FStartedAt;SecondsActive : Cardinal read FSecondsActive;Speed : DWord read FSpeed;ActiveCountIn : Dword read FActiveCountIn; { count of samples where something was received }PrevCountIn : DWord read FPrevCountIn; { previous byte count in }InPerSec : Dword read FInPerSec; { byte count in of last sample period }AverageInPerSec : Dword read FAverageInPerSec; { Average in }InTotal : Dword read FInTotal; { total byte count in }PeakInPerSec : Dword read FPeakInPerSec; { peak byte count in }
ActiveCountOut : Dword read FActiveCountOut; { count of samples where something was sent }PrevCountOut : DWord read FPrevCountOut; { previous byte count out }OutPerSec : Dword read FOutPerSec; { byte count out of last sample period }AverageOutPerSec : Dword read FAverageOutPerSec; { Average Out }OutTotal : Dword read FOutTotal; { total byte count out }PeakOutPerSec : Dword read FPeakOutPerSec; { peak byte count out }
NewCycle(const InOctets, OutOctets, TrafficSpeed : Dword);Reset;Freeze;UnFreeze;MarkDisconnected;GetStatus : string;FriendlyRunningTime:string;Create(const AMibIfRow : TMibIfRow; OnNewInstance : TNewInstanceEvent);OnFreeze :TFreezeEvent read FOnFreeze write FOnFreeze;OnUnFreeze :TFreezeEvent read FOnUnFreeze write FOnUnFreeze;;BytesToFriendlyString(Value : DWord) : string;BitsToFriendlyString(Value : DWord) : string;BytesToFriendlyString(Value : DWord) : string;=1024;=OneKB*1024;=OneMB*1024;Value<OneKBResult:=FormatFloat('#,##0.00 B',Value)Value<OneMBResult:=FormatFloat('#,##0.00 KB', Value/OneKB)Value<OneGBResult:=FormatFloat('#,##0.00 MB', Value/OneMB);BitsToFriendlyString(Value : DWord) : string;=1000;=OneKB*1000;=OneMB*1000;Value<OneKBResult:=FormatFloat('#,##0.00 bps',Value)Value<OneMBResult:=FormatFloat('#,##0.00 Kbps', Value/OneKB)Value<OneGBResult:=FormatFloat('#,##0.00 Mbps', Value/OneMB);TTraffic.Create(const AMibIfRow: TMibIfRow; OnNewInstance : TNewInstanceEvent);: string;Create;:=true;:=true;.FInterfaceIndex:=AMibIfRow.dwIndex;.FIP:=GetIPFromIFIndex(self.InterfaceIndex);.FMac:=MacAddr2Str(TMacAddress(AMibIfRow.bPhysAddr), AMibIfRow.dwPhysAddrLen);(Descr, Pred(AMibIfRow.dwDescrLen));(AMibIfRow.bDescr, Descr[1], pred(AMibIfRow.dwDescrLen));.FDescription:=Trim(Descr);.FPrevCountIn:=AMibIfRow.dwInOctets;.FPrevCountOut:=AMibIfRow.dwOutOctets;.FStartedAt:=Now;.FSpeed:=AMibIfRow.dwSpeed;:=0;:=0;:=0;:=0;:=0;:=0;:=0;:=0;Assigned(OnNewInstance)OnNewInstance(self);;TTraffic.NewCycle(const InOctets, OutOctets, TrafficSpeed: Dword);(self.FSecondsActive);not RunningExit;:=TrafficSpeed;.FInPerSec:=InOctets-self.PrevCountIn;(self.FInTotal, self.InPerSec);InPerSec>0Inc(FActiveCountIn);InPerSec>PeakInPerSecFPeakInPerSec:=InPerSec;ActiveCountIn<>0self.FAverageInPerSec:=InTotal div ActiveCountIn.FAverageInPerSec:=0;;:=InOctets;.FOutPerSec:=OutOctets-self.PrevCountOut;(self.FOutTotal,self.OutPerSec);OutPerSec>0Inc(FActiveCountOut);OutPerSec>PeakOutPerSecFPeakOutPerSec:=OutPerSec;ActiveCountIn<>0self.FAverageOutPerSec:=OutTotal div ActiveCountOut.FAverageOutPerSec:=0;;:=OutOctets;;TTraffic.GetIPFromIFIndex(InterfaceIndex: Cardinal): string;: integer;: TMIBIPAddrArray;:='Not found!';_IPAddrTableMIB(IpArr);Length(IPArr)>0i:=low(IPArr) to High(IPArr) doIPArr[i].dwIndex=InterfaceIndex:=IPAddr2Str(IParr[i].dwAddr);;;;TTraffic.Reset;.FPrevCountIn:=InPerSec;.FPrevCountOut:=OutPerSec;.FStartedAt:=Now;:=0;:=0;:=0;:=0;:=0;:=0;:=0;:=0;:=0;;TTraffic.Freeze;:=false;Assigned(FOnFreeze)OnFreeze(Self);;TTraffic.UnFreeze;:=true;Assigned(FOnUnFreeze)OnUnFreeze(Self);;TTraffic.MarkDisconnected;.FConnected:=false;.FRunning:=false;;TTraffic.GetStatus: string;self.ConnectedResult:='Connected'Result:='Not connected';self.RunningResult:=Result+', Running'Result:=Result+', Not running';;TTraffic.FriendlyRunningTime: string;,M,S: string;,ZM,ZS: integer;:=SecondsActive div 3600;:=Integer(SecondsActive) div (60-ZH*60);:=Integer(SecondsActive)-(ZH*3600+ZM*60);:=Format('%.2d',[ZH]);:=Format('%.2d',[ZM]);:=Format('%.2d',[ZS]);:=H+':'+M+':'+S;
end;.
.7.3 Описание модуля MainFormUnit
Модуль MainFormUnit является главной формой
клиентского приложения на которой производится контроль и учёт трафика (Листинг
3).
Листинг 3.
MainFormUnit;, Graphics, ExtCtrls, Controls, StdCtrls, Buttons, Tabs,, Classes, SysUtils, Forms, Dialogs, Messages, Variants, ToolWin,, IPHelper, IPHLPAPI, ShellAPI, sSkinProvider, sSkinManager,, Menus, TrayIcon, ScktComp;= class(TForm): TPanel; - компонент панель: TPanel; - компонент панель: TPageControl; - компонент для создания вкладок
tsTraffic: TTabSheet; - вкладка
ExitButton: TButton; - кнопка выхода
TrafficTabs: TTabSet; - компонент отображения данных
GroupBox: TGroupBox; - компонент для создания группы элементов
ledAdapterDescription: TLabeledEdit; - компонент отображения данных
UnFreezeButton: TBitBtn; - кнопка
FreezeButton: TBitBtn; - кнопка: TBitBtn; - кнопка: TLabeledEdit; - компонент отображения данных
gbIN: TGroupBox; - компонент для создания группы элементов
ledOctInSec: TLabeledEdit; - компонент отображения данных
ledPeakINSec: TLabeledEdit; - компонент отображения данных
ledTotalIN: TLabeledEdit; - компонент отображения данных
gbOUT: TGroupBox; - компонент для создания группы элементов
ledOctOUTSec: TLabeledEdit; - компонент отображения данных
ledAvgOUTSec: TLabeledEdit; - компонент отображения данных
ledPeakOUTSec: TLabeledEdit; - компонент отображения данных
ledTotalOUT: TLabeledEdit; - компонент отображения данных
Timer: TTimer; - компонент таймер
gbTime: TGroupBox; - компонент для создания группы элементов
ledStartedAt: TLabeledEdit; - компонент отображения данных
ledActiveFor: TLabeledEdit; - компонент отображения данных
RemoveInactiveButton: TBitBtn; - кнопка
StatusText: TStaticText; - компонент отображения данных
cbOnTop: TCheckBox; - компонент включения/отключения виде флажка
ledSpeed: TLabeledEdit; - компонент отображения данных
sSkinManager1: TsSkinManager; - компонент установки скинов
sSkinProvider1: TsSkinProvider; - компонент установки скинов
TabSheet1: TTabSheet; - вкладка
Panel1: TPanel; - компонент панель
Image1: TImage; - компонент для отображения изображения
Image2: TImage; - компонент для отображения изображения
Label1: TLabel; - метка
Label2: TLabel; - метка
Panel2: TPanel; - компонент панель
TrayIcon1: TTrayIcon; - компонент сворачивания в трей
PopupMenu1: TPopupMenu; - компонент меню
N1: TMenuItem; - вкладка меню
N2: TMenuItem; - вкладка меню
ClientSocket1: TClientSocket; - компонент обмена данными
TabSheet2: TTabSheet; - вкладка
Edit4: TEdit; - компонент отображения данных
Edit3: TEdit; - компонент отображения данных
Label3: TLabel; - метка
Label4: TLabel; - метка
Timer1: TTimer; - компонент таймер
ReConnect: TTimer; - компонент таймер
Label5: TLabel; - метка
Label6: TLabel; - метка
ListBox1: TListBox; - компонент отображения данных
ListBox2: TListBox; - компонент отображения данных
Label7: TLabel; - метка
Send: TTimer; - компонент таймер
Label8: TLabel; - метка
Image3: TImage; - компонент для отображения изображения
Label9: TLabel; - метка
procedure TrayIcon1Click(Sender: TObject); - процедура сворачивания в трей
procedure TimerTimer(Sender: TObject); - процедура передачи данных в заданное время
procedure ClearCountersButtonClick(Sender: TObject); - процедура отчистки данныхcbOnTopClick(Sender: TObject); - процедура определяющая стиль формыFormDestroy(Sender: TObject); - процедура обнуления счётчиковTrafficTabsChange(Sender: TObject; NewTab: Integer;AllowChange: Boolean); - прцедура добавления вкладки IP - адресаExitButtonClick(Sender: TObject); - процедура выхода из программыFormCreate(Sender: TObject); - процедура обработки событийFreezeButtonClick(Sender: TObject); - процедура «заморозки» данныхUnFreezeButtonClick(Sender: TObject); - процедура «разморозки» данныхRemoveInactiveButtonClick(Sender: TObject); - процедура удаления данныхledAdapterDescriptionChange(Sender: TObject); -процедура получения адаптераN2Click(Sender: TObject); - процедура выхода из программыClientSocket1Connect(Sender: TObject;: TCustomWinSocket); - процедура подключения к серверу