Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ_vlasik.doc
Скачиваний:
22
Добавлен:
19.02.2016
Размер:
1.72 Mб
Скачать

Висновки

В дипломній роботі отримані такі результати:

  1. Проведено аналіз конвергентних мереж, вирішено завдання розробки програмного забезпечення канального рівня кінцевого та центрального вузлів для корпоративної мережі телекомунікаційної компанії.

  2. Визначено основні завдання, компоненти, принципи побудови, структуру мережі та її складових. Наведено характеристику мережі з точки зору еталонної моделі взаємодії відкритих систем.

  3. Розглянуто рівні моделі OSI, докладно – функції та протоколи канального рівня.

  4. Побудовано та описано функціональні схеми роботи кінцевого та центрального вузлів мережі, за допомогою яких пояснюються режими роботи та стани цих вузлів.

  5. Досліджено принципи розробки програмного забезпечення. Перевагою даної роботи є те, що програмне забезпечення створювалося для роботи під керуванням операційної системи Windows, що дозволяє використовувати його в реальних умовах.

  6. Розроблені алгоритми дають можливість виконувати основні функції канального рівня для передачі та прийому необхідних обсягів інформації, слідкування за правильністю переданих даних, повторну передачу при необхідності.

На основі розроблених алгоритмів написана програма роботи канального рівня.

Сукупність проведених досліджень, розробок в дипломній роботі складає вирішення завдання з поліпшення показників якості на канальному рівні в інформаційних мережах.

Перелік посилань

Стеклов В.К., Беркман Л.Н. Проектування телекомунікаційних мереж: Підручник для студентів вищ. навч. закладів за напрямком

„ Телекомунікації” /за ред. В.К.Стеклова.-К.: Техніка, 2002.-792 с.

Буров Є. Комп`ютерні мережі. – Львів, 1999. – 468 с.

Калита Д. М. Комп`ютерні мережі. Апаратні засоби та протоколи передачі даних. – К.: Видовничо-поліграфічний центр „Київський Університет”, 2003. – 327 с.

Сергеев Н.П, Вашкевич Н.П. Основы вычислительной техники. – Москва.:

”Высшая школа”, 1988. – 311 с.

Спортак М., Паппас Ф. Комп`ютерні мережі та мережні технології. – К.: ООО “ТИД “ДС”, 2002. – 736 с.

Стеклов В. К., Беркман Л. Н. Телекомунікаційні мережі. – К.: Техніка, 2001.- 392 с.

Нейман В. І., Романова О.М. Загальні напрямки розвитку корпоративних мереж і систем // ВКCС. Connect! – 2001, №4. – с. 15-28.

Культін Н. Б. Основи програмування в Delphi 7. – СПб.: БХВ-Петербург, 2003. – 608 с.

Лагутенко О.И. Современные модемы. – Москва: Око – Трендз, 2002.-380 с.

Додаток а програма канального рівня

unit KNetProtocol;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls,

syncobjs, {Debug, AdPort,} Math;

type

str40 = string[40];

TKNetProtocol = class

private

FMainTimer: TTimer;

NBlokPd, KBlokPd, NBlokPm, SB_L3:integer;

RS_COM2:integer;

FETXPd,FETXPm:boolean;

FNAK, FACK, FTA:boolean;

SBBlokPd:integer;

SBBlokPm:integer;

Contr_SumPd:integer;

Contr_SumPm:integer;

RG21_1, RG21_2, RG12_1, RG12_2:Array[0..19] of integer;

RG32_1, RG32_2, RG23_1, RG23_2:Array[0..511] of integer;

FHandle: HWnD;

// внутренние переменные и флаги

FVxDIsLoaded : Boolean;

FErrorCode : integer;

hCVxD : THandle;

RetInfo : Array[0..9]Of DWord;

PutInfo : Array[0..9]Of DWord;

cbBytesReturned: DWord;

pReceive1:pointer;

pReceive3:pointer;

pTransmit1:pointer;

pTransmit3:pointer;

pStr40:pointer;

procedure VxDProc(var Msg: TMessage);

function LoadVxD: integer;

function FreeVxD: integer;

procedure FormBlok(var j:integer);

procedure Com_Mod;

procedure HookIRQ;

procedure TransmitInf;

procedure OnMainTimer(Sender: TObject);

public

FPm_VxD:boolean;

NT:string;

function Ur1_Init:integer;

procedure Ur1_Done;

function Pd_Inf_L1(var BufSize:integer; pTransmit3:pointer):integer;

published

end;

const

wm_VxD = wm_User;

MES_PROTOCOL_NAK = wm_VxD+1;

MES_PROTOCOL_ACK = wm_VxD+2;

MES_PROTOCOL_STX = wm_VxD+3;

CVXD_APIFUNC_1 = 1; {Завантаження параметрів в VxD}

CVXD_APIFUNC_2 = 2; {Передача команди для модему}

CVXD_APIFUNC_3 = 3; {Передача інформації в VxD}

CVXD_APIFUNC_4 = 4;

STX = 2; {"Початок тексту"}

ETB = $17; {"Кінець блоку"}

ETX = $03; {"Кінець тексту"}

EOT = $04; {"Кінець передачі"}

ENQ = $05; {"КТМ"}

DLE = $10; {"АР1"}

NAK = $15; {"Ні"}

ACK = $06; {"Так"}

SBBI = 16; {Кількість інформаційних байтів в блоці}

AddrCOM2 = $2F8;{Базова адреса порта}

NIRQ = $10;

command1:Str40 = 'ATDP';

command2:Str40 = 'ATH0';

implementation

procedure TKNetProtocol.FormBlok(var j:integer);

var i:byte;

begin

SBBlokPm:=0;

if NBlokPd=(KBlokPd-1) then

FETXPd:=True

else

FETXPd:=False;

i:=0;

if pTransmit1=@RG21_1 then

begin

RG21_1[i]:=STX;

Inc(i);

RG21_1[i]:=NBlokPd;

Inc(i);

Contr_SumPd:=STX XOR NBlokPd;

Repeat

RG21_1[i]:=RG32_1[j];

Contr_SumPd:=Contr_SumPd XOR RG21_1[i];

Inc(i);

Inc(j);

Inc(SBBlokPd);

Until SBBlokPd < SBBI;

if FETXPd then RG21_1[i]:=ETX

else RG21_1[i]:=ETB;

Inc(i);

RG21_1[i]:=Contr_SumPd;

pTransmit1:=@RG21_2;

end

else

begin

RG21_2[i]:=STX;

Contr_SumPd:=Contr_SumPd XOR RG21_1[i];

Inc(i);

RG21_2[i]:=NBlokPd;

Inc(i);

Contr_SumPd:=STX XOR NBlokPd;

Repeat

RG21_2[i]:=RG32_1[j];

Inc(i);

Inc(j);

Inc(SBBlokPd);

Until SBBlokPd < SBBI;

if FETXPd then RG21_2[i]:=ETX

else RG21_2[i]:=ETB;

Inc(i);

RG21_2[i]:=Contr_SumPd;

pTransmit1:=@RG21_1;

end;

end;

function TKNetProtocol.Pd_Inf_L1(var BufSize:integer; pTransmit3:pointer):integer;

var j:integer;

Label Pd_Inf1,Pd_Inf2;

begin

Result:=0;

j:=0;

NBlokPd:=0;

FTA:=False;

KBlokPd:=BufSize div 16;

FNAK:=False;

FETXPd:=False;

FACK:=True;

Pd_Inf1:

if FACK then

begin

FACK:=False;

FMainTimer.Enabled:=False;{Зупинити відлік Т1}

if NOT FETXPd then

begin

Pd_Inf2:

FormBlok(j);

Inc(NBlokPd);

TransmitInf;

FMainTimer.Enabled:=True;{Запуск відліку Т1}

end

else

begin

FETXPd:=False;

Result:=1;

Exit;

end;

end

else

begin

if FNAK then

begin

Dec(NBlokPd);

FNAK:=False;

FMainTimer.Enabled:=False;{Зупинити відлік Т1}

goto Pd_Inf2;

end

else

begin

if FTA then

begin

FTA:=False;

Result:=0;

Exit;

end

else goto Pd_Inf1;

end;

end;

end;