Български English [beta]
Здравей, гостенино. (вход, регистрация)
Екип Партньори Ресурси Статистики За контакт
Добави в любимиПредложи статияКонкурсиЗа рекламодатели
Начало
Форум
Към Кратки
Всички статии
 Литература
 Музика
 Филми и анимация
 На малкия екран
 Публицистика
 Популярни
 Кулинария
 Игри
 Спорт
 Творчество
 Други
Ключови думи
Поредици
Бюлетин

Търсене

Сивостен :: Мрежите: Канално ниво (статия) - Компютри, Комуникации, Мрежи
Мрежите: Канално ниво

Поредици: Мрежи

Автор: Иван Ж. Атанасов, понеделник, 11 май 2009.

Публикувано в Статии :: Популярни; Предложи Гледна точка

Намали размера на шрифтаУвеличи размера на шрифта

В предишния материал си изяснихме какво и как става по-долу, в транспортната среда. Ако си спомняте обаче от схематичното представяне на слоевете след него има още много вода да изтече преди потребителя реално да може да приема и предава данни. Така че, вървейки нагоре по йерархията, стигаме до каналното ниво.

Какво е то и има ли то почва у нас? Накратко може да се каже, че това ниво има три основни функции - да осигури подходящ интерфейс на по-горното мрежово такова, да открива грешки по време на предаването и да управлява информационния обмен.

Звучи просто и действително не е бог знае каква философия, както заедно ще установим. Да видим какво представляват данните тук. Малко по-надолу в йерархичния модел, те все още бяха промени в напрежението, светлина или модулиран радиосигнал. Тук вече добиват малко по-дигитален вид и информацията представлява последователност от кадри (frames), или както е навлязло в практиката - фреймове. Какво представляват те казахме по-подробно в материала за структурата и модела на мрежите, така че няма да се спираме отново на тях.

Самото название "канално ниво" навярно вече ви е дало представа, че то се състои от канали. И ако оставим изникващата в съзнанието картина на отходни води и плъхове, можем да допълним, че иде реч за следните три вида - симплексни, полудуплексни и дуплексни. Последните позволяват едновременно предаване и в двете посоки, първите пък само в едната посока. А средния вариант е... среден - позволява предаване и в двете посоки, но в даден момент това е възможно само в едната.

Какво се случва по тези канали? Най-общо казано - те служат за предоставяне на надеждно прехвърляне на данни между мрежовите нива на източника и получателя. Самото предаване естествено се извършва във физическата среда, но както обяснихме - в слоевата структура това остава "невидимо" за мрежовото ниво. Основните начини за извършването на тази услуга са непотвърдено неуставено обслужване, потвърдено неустановено обслужване и потвърдено установено обслужване.

При първото източникът изпраща независими кадри към получателя без получателя да ги потвърждава. Няма установяване на връзка между двете машини. Ако един кадър се загуби поради шум в линията, каналното ниво не прави опит за възстановяване. Така че това обслужване е подходящо при канали с много малка честота на грешките, което позволява функциите по възстановяване на загубената информация да се поемат от по-горни нива в йерархията. Например реализацията на повечето LAN мрежи е такава. Също така използването му е удачно и когато навременното получаване на кадрите е по-важно от тяхната достоверност.

При потвърденото и неустановено обслужване отново не се установява връзка между източника и получателя, но получаването на всеки кадър се потвърждава самостоятелно от получателя. Това дава възможност за повторно изпращане на непотвърдените кадри. Принципно това е функция на транспортното ниво, но там потвърждението се отнася до последователности от пакети. При каналното ниво има смисъл само ако има ненадеждна комуникационна среда, каквато например е безжичната, тъй като повторно ще се предават не цялата последователност от пакети, а отделни кадри.

При потвърденото и установено обслужване има три фази. В първата се установява връзка, отделят се ресурси и се стига до втората фаза, когато се изпращат кадрите. Третата пък служи за освобождаване на ангажираните ресурси. Тук се гарантира не само успешното предаване на кадъра, но и последователността на предаване. Досещате се, че този вариант е удачен, тогава, когато последната е от значение.

Какви проблеми могат да възникнат. Нека си представим следната ситуация - източникът изпраща кадри по-бързо, отколкото те могат да бъдат приети от получателя. Как може да бъде решен? Чрез механизми за управление на потока данни, които осигуряват обратна информация на източника касаеща скоростта на получаване. Обикновено механизмите по управление на обмена обаче се изпълняват в транспортния слой при това над по-големи от отделен кадър информационни единици.

Пакети, кадри - дори аз се обърках. Нека си изясним механизма малко по-отначало. Какво се случва - каналното ниво взима пакетите, които му се подават от мрежовото ниво и ги затваря в кадри. Всеки кадър се състои от заглавна част, поле за данни, което съдържа пакета, и опашка. Физическото ниво от своя страна пък възприема информацията от каналното ниво като поток от битове, без да се интересува от нейната структура.

После получателят идентифицира в потока от битове кадрите и въз основа на служебната информация ги контролира за грешки. За целта опашката на кадъра съдържа контролна сума, която се изчислява върху останалата част от данните преди той да бъде предаден. Когато пристигне в получателя, контролната сума се преизчислява и ако тя е различна от предадената, получателят отхвърля кадъра и евентуално изпраща съобщение за грешка към източника. Ако пък контролните суми съвпаднат, се премахва служебната информация и данните се предават на мрежовото ниво под формата на пакети.

Звучи просто. Но далеч не е лесно да се раздели потока от битове на кадри. Как може да стане това. Ако някога сте слушали от онези касетки, дето вървяха навремето с учебниците по английски, навярно сте забелязали паузата между отделните упражнения. Е, времевият интервал за жалост не е най-сигурният начин в случая на мрежите, защото се променя по времето между предаването и получаването и не е невъзможно кадрите не само да пристигнат на различен интервал, но дори могат да са разбъркани.

Така че се използват други методи. Например могат да се броят отделните символи. В заглавието на кадъра се указва броя на символите в целия кадър и когато получателя прочете броя им, той знае колко предстоят до края. Основният проблем е, че броят на символите може да бъде сгрешен по време на предаването, при което получателят би загубил синхронизация и няма да може да определи началото на следващия кадър. Ако се сетите за контролните суми - дори чрез тях, получателят не може да узнае началото му, въпреки че "разбира", че текущият кадър е сгрешен.

По-сигурен метод е в началото и края на кадъра да се вмъкнат служебни символи за начало и край, които маркират границите му. Наричаме този подход техника за вмъкване на символи. Възможно е, обаче, служебните символи да се срещат като битови последователности в оригиналните данни. Ако някога сте се сблъсквали с програмен код знаете, че в него има специални символи например за маркиране на кавички в низ, които указват че това не е края на низа, а именно кавички. Аналогично и в този случай се въвежда служебен символ, наречен DLE (от data link escape), който се вмъква преди всяко срещане на някой от тези за начало, край или самият него.

Нека имаме поток от данни А Б В Г и служебни символи Б за начало, Д за край и Г за указване, че следващия символ не е служебен. Тогава потока би изглеждал така: "Б А Г Б В Г Г Д". При получателя, в каналното ниво се премахват водещото Б и крайното Д, както и всички първи Г-та и на мрежовото ниво се праща потока данни "А Б В Г". Тук остава само да уточним, че при по-новите протоколи се използва един и същ символ за маркиране на началото и края на кадъра.

Недостатъкът на последния метод е, че той се обвързва с 8-битови символи. С развитието на мрежите обаче става възможно кадрите да съдържат произволно цяло число битове. В този случай се използва третия метод, при който началото и края на всеки кадър се маркира с битовата последователност от вида "01111110", която наричаме флагов байт. За да се предотврати погрешното определяне на границата, ако тази последователност от битове се срещне в данните на кадъра, след всеки 5 единици в източникът добавя по една нула. Самата техника се нарича вмъкване на битове.

За постигане на допълнителна сигурност при много протоколи броенето на символи се комбинира с някой от другите два метода. Споменавайки думата "протокол" се сещам че всъщност се доближихме до края на материала, в който освен да дадем едно обещание, друго не се сещам. А именно, че следващия път ще си изясним какви са тези протоколи и как са реализирани. Също така ще си поговорим за предимствата и недостатъците им и кога е удачно да се приложи един и кога друг.






Допадна ли ви този материал? (4) (1) 4195 прочит(а)

 Добави коментар 
Ако сте регистрирани във форума можете да коментирате и тук

Име:
Текст:
Код:        

 Покажи/скрий коментарите (2) 



AdSense
Нови Кратки @ Сивостен


Реклама


Подобни статии

Случаен избор


Сивостен, v.5.3.0b
© Сивостен, 2003-2011, Всички права запазени
Препечатването на материали е нежелателно. Ако имате интерес към някои от материалите,
собственост на сп. "Сивостен" и неговите автори, моля, свържете се с редакционната колегия.