Дипломная (вкр): Розробка програмного забезпечення канального рівня інформаційної корпоративної мережі

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

При неправильному номері блоку (активний прапорець FDLE) треба передати канальному рівню ЦВ „передати кадр спочатку” (DLE) і перейти на початок прийому кадру.

При правильному форматі блоку і номера блоку, а також правильній контрольній сумі блоку (активний прапорець FACK) треба передати канальному рівню ЦВ „підтвердження правильності прийому блоку” (АСК) і перевірити, чи активний прапорець FETX („кінець тексту”). Якщо блок не останній, приступаємо до прийому наступного блоку.

Якщо був прийнятий останній блок кадру для сеансового рівня, за час Т21 повинна надійти команда ЕОТ. В цьому випадку встановлюються прапорці: FA2 в неактивний стан, FRG25 в активний стан, передається ЕОТ і підпрограма канального рівня закінчує роботу.

корпоративний мережа канальний вузол

Рисунок 4.1- Алгоритм канального рівня кінцевого вузла

Продовження рисунку 4.1- Алгоритм канального рівня кінцевого вузла

Процедура формування блоку для передачі FormBlock

Блок складається з наступних складових: „Початок блоку”, „Номер блоку”, „Інформація”, „Кінець блоку”, „Перевірочна інформація” (рисунок 4.32)

Для створення перевірочної інформації використовується метод формування суми по модулю 2.

Початок блоку

№ блоку

Інформація

Кінець блоку

Перевірочна інформація

Рисунок 4.2 - Блок другого рівня

Алгоритм процедури формування блоку для передачі наведений на рисунку 4.3.

На початку підпрограми формування блоку для передачі треба встановити лічильник байт блоку (і) в 0. Якщо блок останній, то встановлюємо прапорець кінця кадру FETX в активний стан. Далі записуємо в регістр RGBlock ознаку початку блоку STX, збільшуємо значення покажчика (і), записуємо STX в чарунку Contr_Sum, де буде формуватись контрольна сума блоку (по модулю 2), записуємо в RGBlock номер блоку NBlockPd, здійснюємо складання по модулю 2 Contr_Sum та NBlockPd, збільшуємо на одиницю значення покажчика (і) та NBlockPd і приступаємо до запису 16-ти байт інформації з регістра RG52 в регістр RGBlock. При цьому кожний інформаційний байт враховується в Contr_Sum. Коли всі інформаційні байти записані в регістр для передачі блоку, треба записати ознаку кінця блоку. Якщо блок останній в кадрі, то в регістр RGBlock записується ETX, а якщо ні, то записується ETB. Ці байти не враховуються при формуванні контрольної суми блоку. Останньою в RGBlock записується контрольна сума блоку Contr_Sum.

Оскільки в інформаційній мережі, що розробляється, використовується вирішуючий зворотній зв’язок, то при надходженні на прийом пошкодженого блоку ми отримаємо негативну квитанцію на нього (NAK) і цей блок треба буде повторно передати, необхідно обмежити кількість повторних передач для запобігання за циклювання програми. Для цього в лічильник повторних передач блоку SSPdBlock в кінці формування блоку записуємо 3 (допустима кількість повторних передач блоку).

Рисунок 4.3 - Формування блоку для передачі

Процедура передачі блоку рівню 1 PdBlock

Алгоритм процедури передачі блоку наведений на рисунку 4.4.

Оскільки після передачі блоку ми можемо отримати у відповідь квитанції - позитивну (ACK), негативну (NAK), або вимогу розпочати передачу всього кадру спочатку (DLE), то перед передачею блоку треба встановити в неактивний стан прапорці FACK, FNAK, FDLE. Крім того, для запобігання зависання програми при ненадходженні квитанції на переданий блок, починаємо відлік тайм-ауту Т23 (час очікування відповіді на блок). Покажчик регістру RGBlock (і) встановлюємо на перший байт блоку.

Процедура прийому блоку від рівня 1

Ця процедура призначена для прийняття інформації від фізичного рівня.

Алгоритм процедури представлений на рис. 4.5. Він полягає в наступному. Спочатку треба зробити початкові установки: покажчик на регістр прийому RGBlock (i) встановити в 0; прапорці FACK, FNAK, FDLE встановити в неактивний стан. Для запобігання зависання програми необхідно розпочати відлік тайм-ауту Т24 (час прийому повного блоку).

Тепер перевіряється, чи надійшла інформація з каналу на фізичний рівень, якщо знаку немає і тайм-аут Т24 не закінчився - повертаємося на очікування байта від рівня 1. Якщо байт надійшов, то це має бути номер блоку, який зараз приймається (NBlock). При невідповідності прийнятого і очікуваного номера блоку може бути два варіанти. У першому випадку номер блоку, що приймається, менший від очікуваного, тобто цей блок вже був прийнятий. В такому разі треба встановити прапорець FACK (ознака того, що потрібнов передати позитивну квитанцію на цей блок) в активний стан, дочекатись кінця прийому всього блоку і вийти з підпрограми. У другому випадку номер блоку, що приймається, більший від очікуваного, тобто була втрата блоку. Виправити таку помилку можна тільки розпочавши прийом всього кадру спочатку. Для цього встановлюється в активний стан прапорець FDLE, дочекатись кінця прийому всього блоку і вийти з підпрограми.

При відповідності прийнятого і очікуваного номера блоку виконуємо операцію „складання по модулю 2” чарунки Contr_Sum і NBlock, і переходимо до прийома інформаційних байт блоку. При прийомі кожного байту інформації його треба переписати в регістр RGBlock, врахувати його в контрольній сумі блоку Contr_Sum (виконати операцію „складання по модулю 2”), і збільшити покажчик регістра RGBlock (і).

Коли 16 інформаційних байт блоку прийняті, чекаємо ознаку кінця блоку. Це може бути ETB (кінець блоку) або ETX (кінець тексту, тобто кінець кадру). В останньому випадку прапорець FETX необхідно встановити в активний стан.В кінці блоку повинна надійти контрольна сума блоку, яка порівнюється з тією контрольною сумою, яка підрахована в чарунці Contr_Sum. Якщо контрольна сума неправильна, це означає, що в блоці була помилка і треба встановити в активний стан прапорець FNAK. У випадку правильності контрольної суми встановлюємо в активний стан прапорець FACK, якщо до цього часу не була зафіксована помилка.

Рисунок 4.4 - Алгоритм процедури передачі блоку

Під час роботи підпрограми весь час перевіряється тайм-аут Т24. Якщо блок не прийнятий за час Т24 підпрограма закінчує роботу.

Рисунок 4.5 - Алгоритм процедура прийому блоку

ВИСНОВКИ

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

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

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

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

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

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

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

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

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

ПЕРЕЛІК ПОСИЛАНЬ

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

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

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

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

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

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

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

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

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

ДОДАТКИ

Додаток 1

ПРОГРАМА КАНАЛЬНОГО РІВНЯKNetProtocol;

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

syncobjs, {Debug, AdPort,} Math;

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;

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';TKNetProtocol.FormBlok(var j:integer);i:byte;

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;TKNetProtocol.Pd_Inf_L1(var BufSize:integer; pTransmit3:pointer):integer;j:integer;Pd_Inf1,Pd_Inf2;

Result:=0;

j:=0;

NBlokPd:=0;

FTA:=False;

KBlokPd:=BufSize div 16;

FNAK:=False;

FETXPd:=False;

FACK:=True;_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;goto Pd_Inf1;

end;;

Додаток 2

ПЕРЕЛІК КОМАНД ЯКІ ВИКОРИСТОВУЮТЬСЯ В АЛГОРИТМАХ

Команди канального рівня- початок тексту;- кінець блоку;- кінець тексту;- кінець передачі;- запит на захват каналу;- перепитування всього кадру;- перепитування блоку;- підтвердження правильного прийому блоку.

Додаток 3

ДОДАТОК В ПЕРЕЛІК ПРАПОРЦІВ

FAR - прапорець аварійного роз’єднання- прапорець нормального роз’єднання- прапорець наявності інформації з рівня 7 рівню 5- прапорець наявності інформації з рівня 5 рівню 7- прапорець наявності інформації з рівня 5 рівню 2- прапорець наявності інформації з рівня 2 рівню 5- прапорець активності 1 рівня (фізичного) - прапорець активності 2 рівня (канального)- прапорець активності 5 рівня (сеансового)- Прапорець активності 7 рівня (прикладного) - прапорець помилки на 2 рівні, яка належить виправленню на 5 рівні- прапорець помилки на 5 рівні, яка належить виправленню на 7 рівні

Додаток 4

ПЕРЕЛІК ТАЙМ-АУТІВ

Тайм-аути необхідні для того, щоб програми не зациклювалися.

Т1 - час встановлення з`єднання з ЦВ.

Т2 - час, за який відбувається роз`єднання.

Т21 - час очікування відповіді на команду ENQ.

Т22 - час очікування команди ENQ.

Т23 - час очікування відповіді на блок при передачі.

Т24 - час прийому блоку.

Т - 1 - час, за який необхідно провести опитування всіх кінцевих вузлів. Значення тайм-ауту залежить від кількості КВ, часу опитування одного КВ

Т - 2 - час встановлення з`єднання з кінцевим або центральним вузлом.

Т - 3 - час, за який відбувається роз`єднання.

Додаток 5


Граф станів центрального вузла


Граф станів кінцевого вузла


Формування блоку для передачі

Алгоритм процедури передачі блоку

Источник: https://www.bibliofond.ru/detail.aspx?id=864916