Тема 2

Структура и еталонен модел на мрежите. Характеристика на нивата.

Стандартизация, протоколи, капсулация, слоеве

Мрежата се състои логистично от абонати (крайни точки) и комуникационна подмрежа (преносна среда). Комуникационната подмрежа, от своя страна, се състои от маршрутизатори (пакетна комутация) или бързи комутатори (fast switching units), свързани с канали за предаване на данни. Още при ARPAnet се установяват различни особености - логистични и не само - при тази комуникация на данните. Тогава се въвежда понятието протокол - набор от правила и процедури за обмен на данни през мрежата, и формати на самите данни. Основната цел на един протокол е да стандартизира комуникацията между двете общуващи страни, указвайки в кой момент какво трябва да се случи. Разбира се, за целта протоколът трябва да е реализиран (вграден, инсталиран) и от двете страни на връзката. Обикновено протоколите задават изисквания, но не определят стриктно всички параметри на комуникацията - указва се кога и какво да стане, а как се оставя на разработчиците на оборудването и софтуеъра, осъществяващи протокола. Така протоколът не се обвързва с конкретни платформи. Самата реализация на протокола става чрез вграждане в хардуера и/или включване във firmware-а - за протоколите от най-ниските нива - и чрез софтуерен протоколен стек - за останалите.

За разбирането на понятието "протокол", често се прави аналогия с готварска книга. Дефинираме следната биекция :) :

  • Протокол – рецепта за готвене;
  • Данни – продукти;
  • Процедурни правила – "кое към кое се добавя, какво се прави, на какъв огън се вари";
  • Error resolution - какво ще стане, ако загори.

Взимаме продуктите (данните) и с тях действаме по правилата (готвим), които взимаме от протокола (книгата). Ако се получи грешка (не става за ядене), се справяме с нея по съответния начин.
Протоколът не е точно алгоритъм – в него има алгоритми, но има и неща, които не се описват строго алгоритмично. Затова за описание на протокола се използват специални записи (нотации). Такава е например е ASN.1 (Abstract Syntax Notation One) – стандартизирана нотация за описание на протоколи. Тя дава само синтактическо описание, а семантиката трябва да се опише "с обикновени приказки". Точното описание с такава абстрактна нотация е много обемисто.

Пример за протокол: "Three-way handshake"-частта от установяването на TCP сесия. Спазвайки протокола, двете страни успешно осъществяват надеждна (с потвърждаване) връзка.

Нуждата от разслояване

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

simple-stack.PNG

Протоколите от всеки съответен слой логически взаимодействат помежду си, а реално осъществяват комуникация (контактуват) само с протоколите от съседните им нива. Разбирането какво и защо се прави, как ще се контролира обменът на данни - в това се изразява взаимодействието между протоколите на две съответни нива. На протоколно ниво всеки слой взаимодейства с най-близкия слой. Това се нарича междуслоен интерфейс, по него си контактуват съседните нива на протоколите. За различните протоколи междуслойните интерфейси са различни. Логистично1 се налагат различни протоколи за различни функции.

simple-layers.PNG

В този пример имаме протокол от първи, втори и трети слой (ниво). Протоколите от втори слой взаимодействат помежду си, а общуват с протоколите от двата съседни слоя (1ви и 3ти слой.). Протоколът от първи слой общува с физическата среда, а протоколът от трети слой - директно с приложенията. Обменът на данни между приложенията сеизвършва надолу по йерархията на протоколите - от приложението, надолу през трите нива до физическата среда, и оттам, нагоре през нивата, до другото приложение.

Важна характеристика на един протокол е протоколната единица данни (или протоколен блок от данни) – формат на данните, който трябва да се разпознава от съответния протокол на всички компютри в мрежата, на които протоколът присъства. ПБД е служебният формат на данни, който двете части на протокола си обменят, и се подбира внимателно, така, че да изпълнява в максимална степен целите на протокола. Блокът от данни се движи вертикално надолу по протоколната йерархия в едната станция, след това хоризонтално - през преносната среда, и след това - обратно, вертикално нагоре, докато достигне до същия протокол в другата станция.
ПБД, грубо казано, се състои от две части: полезна информация (data, payload, съдържание), и служебна информация.
Терминът ПБД описва само блоковете данни, с които борави съответният протокол. Така всеки протокол има собствен формат на ПБД. Имайки предвид слоестата структура на протоколния стек, ПБД на един протокол се явява съдържание (полезна информация) за ПБД на протокол от по-ниско ниво, чийто ПБД пък е съдържание на ПБД на протокол от следващо по-ниско ниво, и така чак до физическата мрежа. Това е принципът на капсулацията. Протоколът от дадено ниво не прави разлика между данните и служебната информация, които образуват ПБД от по-горно ниво - за него всичко това са данни, които ще се капсулират.

Как изглежда това в нашия случай?


Отвори (в текущия прозорец)

Приложението създава съобщение (message), което се появява на 5ти слой – формира се като протоколен блок от данни и няма синтактична форма. От този слой то се подава на 4ти слой, където протоколът, който работи на това ниво, образува протоколен блок от данни. Блокът съдържа хедъра (служебно заглавие, чело) на 4тото ниво и съобщението от 5ти слой.
Тази конструкция се предава на трето ниво. Там, ако е нужно, тя се разбива (дизасемблира се) на няколко по-малки части. Към тях се прибавят заглавни части и се получават един или повече пакети - ПБД на протокола от третото ниво. На второ ниво се появява още един хедър, както и опашка (trailer). Накрая всичко това се изпраща през комуникационната подмрежа. По обратния път в другата станция се възстановява съобщението.

OSI Reference Model

Слоестата протоколна йерархия е въведена още в ARPAnet. Тъй като се оказва успешна и необходима, такава слоеста структура се появява и в други мрежи. Така се стига до момента, когато видовете мрежи, протоколни стекове (а следователно, и ПБД) стават твърде много и несъвместими. Затова започват начинания за стандартизация на мрежовите технологии. През 1977 г. в Комитета по информатика към Международната организация за стандартизация ISO се създава подкомитет2, който да се занимава със стандартизация на компютърните мрежи. Той изработва множество стандарти, повечето от които вече са отмрели. Но през 1978 г. той създава еталонен модел, наречен Open Systems Interconnection Reference model. Неговото създаване, и най-вече масовото му навлизане, въвежда някакъв порядък в мрежовия хаос и е повратна точка в развитието на компютърните мрежи, и в частност Интернет.

OSI моделът е абстрактен 7-слоен мрежов модел, с който са съобразени (почти) всички действащи сега мрежови технологии (протоколи, оборудване, приложения). Той описва слоевете с техните функции, терминология, и определя взаимоотношенията между тях. Всеки слой общува директно само с по-долния и по-горния слой, при наличието на такива, и се имплементира по един или няколко начина (един или няколко протокола). Разслояването позволява дадено ниво да изпълнява задачите си, без да е обвързано с реализациите на по-горното и по-долното ниво. По този начин, един (или няколко поредни) слой може да се осъществява от най-разнообразни хардуерни и/или софтуерни елементи, стига те да предоставят съответната функционалност по OSI модела. Което значи, че много производители (OEM - Original Equipment Manufacturers) могат да се включат в създаването на мрежовите продукти, ако се съобразяват с OSI; производството се разширява, конкуренцията се засилва, цените падат, мрежите стават все по-достъпни и по-разпространени.

osi-model.jpg

OSI определя 7 нива (layers) според тяхната функционалност:
Гордост, Алчност, Чревоугодство, Похот, Гняв, Завист, Мързел.
А? Аз май се изгубих. Търся Семинарията, чух че е наблизо?

7. Приложно ниво (Application layer)
6. Представително ниво (Presentation layer)
5. Сесийно ниво (Session layer)
4. Транспортно ниво (Transport layer)
3. Мрежово ниво (Network layer)
2. Канално ниво (Data-link Layer)
1. Физическо ниво (Physical layer)

Тази слоеста структура очаква предимно мрежа с комутация на пакети.
Тъй като седемте слоя осигуряват връзка от приложение до приложение, всичките те са реализирани само в устройствата, които изпълняват такива приложения (абонатите, още наричани крайни устройства). В останалите мрежови устройства (междинни - например маршрутизатори и суичове) обикновено се реализират нивата 1, 2 и 3. Тези нива осъществяват взаимодействието между отделни мрежови устройства, докато чрез нива 4 - 7 си взаимодействат услуги и процеси, работещи на тези устройства. Седмото ниво предоставя интерфейс към приложението, което участва в комуникацията. При общуване между крайни устройства, данните тръгват от приложението, минават през нива 7 до 1 в преносната среда, след което минават през различен брой междинни устройства, във всяко от които те се "разглобяват" до второ (суичове) или трето (рутъри) ниво с цел да се препратят в правилната посока и се "сглобяват" наново за изпращане. Накрая те достигат до получателя, където през 1 - 7 ниво достигат до приложението, за което са предназначени.

osi.gif

Нива на OSI модела

Физическо (Physical)

Физическото ниво представлява мрежа от наети (арендувани) линии. Важно: Това е било някога! Сега физическата среда се състои предимно от Twisted pair (усукана двойка) или Fiber-optic (оптични) кабели., които оформят локални, средни и междуградски backbone трасета.


Интерфейсът към физическия слой е модемен интерфейс – RS232 – от каналното към физическото ниво. Модемът, жицата и другият модем реализират в себе си физическото ниво. Към други физически среди – примерно в оптиката – имаме светлинни сигнали във физическата среда и различни краища от тези на Ethernet. RS232 е изкаран на ком портовете, защото е най-прост и вече не се използва. При Ethernet интерфейсът е вграден в един адаптер Net Interface Card – в този мрежов адаптер вътре се реализира втори и част от връзката към физическата среда – 1 и 2 са в мрежовия адаптер. От него отиваме към междинен интерфейс към Data Link нивото. Интерфейсът някой път може да е явен и добре известен – RS232 или да е скрит, както при Ethernet. Интерфейсът към физическото ниво трябва да е такъв, че към него да се подава поредица от битове без структура. Той се грижи да я прекара през физическата среда и да я прекара до другия край отново като поредица от битове. Основната характеристика на физическото ниво е скоростта и надежността – колко бита в секунда и с каква вероянтост бит 1 ще остане бит 1 или ще изчезне – т.е. вероятност за получаване на грешки. Физическите среди са базирани на проводници на електрически сигнали, но може да бъде и на вълни, между насочени антени, или пък специални оптически влакна, по които сигналът е светлинен. Физическите среди може да са различни между някои от рутерите. Тук не се различава протоколен блок от данни. Трябва само да се разбере на физическо ниво кога започват и кога свършват данните. Не винаги отсъствието на сигнал означава, че не се предава нищо. Зависи от начина на предаване на информацията.

Канално (Data-link)

В каналното ниво протоколният блок от данни се нарича кадър – Frame. Предават се кадри, които са с хедър данни и опашка. Задачата на каналното ниво е да подаде надолу една последователност от битове на физическо ниво, която в отсрещното канално ниво да има структура ,по което то може да определи двете съответни канални нива. (HDR DATA TRL) В опашката – контролна сума CRC код, което да позволи на приемащата страна да формира свой CRC код и да го сравни, за да определи верността на кадъра. Задачата на хедъра е да осъществи взаимодействието между двете канални станции, които се намират в двата края на канала. В канала обикновено реализацията е хардуерна. Обособява се в канална станция / канален адаптер, който изпълнява каналния протокол. Каналът, като функция за преминаване на кадри – битове влизат във физическото ниво и от там се преобразуват в сигнали. Не са произволни последователности, а трябва да са строги кадри по нормите на съответния протокол. Каналите са симплексни, полудуплексни и пълнодуплексни. 1 – кадрите текат само в една посока. 2 – може да се обръща посоката. 3 – или 2 симплекскни противоположни сигнала или средата позволява практически 2 симплексни сигнала – един канал около една носеща честота и друг канал по друга носеща честота. Тези сигнали не се пресичат в честотно отношение и не си пречат, когато текат едновременно в една жица. За каналите важно деление е колко крайни станции има. Класическият канал е point-to-point – двуточков – полу или пълен дуплекс. Имаме канали multi point – многоточкови – имаме повече от две канални станции, свързани към канала, които могат да си обменят кадри помежду си – пример – Ethernet каналът/адаптерът. Dial up и ADSL модемите работят с двуточкови канали. Възприето е за каналите, ако данните не достигнат правилно или изобщо, то те да се повтарят. Отсрещтната канална станция трябва да прати потвърждение, особено при двуточковите, за правилност на получените кадри. Нямаме Error Correcting кодове. Само се проверява дали кози кадър отговаря на контролния код. Верните се потвърждават, неверните се повтарят. Стои в буфера на каналния адаптер, докато не се потвърди. После се чисти и идва друг кадър. Тези буфери са различни от тези на рутерите, защото рутерите работят на ниво мрежов слой. Кадрите на кадрово ниво се гледа само верността на предаване до съседния канален адаптор.

Мрежово (Network)

На по-горното – мрежово ниво, протоколният блок от данни се нарича пакет. Задачата на мрежовото ниво е да маршрутизира пакетите, които влизат от абоната. Влизат в комуникационната подмрежа, тя ги комутира между рутерите. Пакетът от мрежовото ниво се подава на Data Link с хедър, който съдържа адреса на получателя – каналното ниво оставя целия пакет в кадър. Задачата на кадъра е да го прехвърли от неговия канален адаптер до първия канален адаптер на следващия рутер, който го декадрира. Голият пакет се обработва от мрежовото ниво на рутера. След това той на ново се кадрира. => многократно кадриране и декадриране за всеки един канал, в който ще влезе по пътя си. Накрая пакетът ще попадне в мрежовото ниво на абоната.

Транспортно (Transport)

На транспортното ниво му се дава произволно дълго съобщение, трябва да каже на другото транспортно ниво да си отвори буфер, за да го разглоби, след това тр. ниво нарязва съобщението на пакети и го подава на мрежовото ниво. (4 Съобщение, 3 пакет, 2 кадър, 1 битове). Транспортното ниво трябва да е подготвено за всякакво съобщение – от 1 байт до няколко гигабайта. Няма значение дали е текст, картинка, видео файл.. – това е съобщение. Свързването с другото тр. ниво става с предаване на служебни пакети надолу по иерархията. Буферът за получаване най-често получава съобщнието от горния слой като адрес на буфера, т.е. къде стои в паметта. Физическото отделяне на буфер не е задължително във всеки слой. Но получателят трябва да си отвори физически буфер и там да комплектува съобщението. Накрая трябва да каже на подателя – “аз го окомплектовах” със служебен пакет. Функцията на транспортното ниво е връзка с другия край за предаване на съобщения, като то се грижи за дизасемблиране, сглобяване и потвържаване на полученото съобщение. (най-опасно е пренасянето на кадри, защото там е най-вероятно да се получи грешка. Другите преходи са в рамките на един компютър.)

Прехвърляния - Connectionless (без установяване на съединение) и Connection-oriented (с установяване на съединение). 1 – не се уточнява какви точно и колко съобщения ще си обменят. 2 – двата края, преди да започне прехода, се уговарят за транспортно съединение с определени параметри – максимален размер на текущото съобщение, някакви други параметри, свързани с брой съобщения. Следи се и се потвърждава всяко съобщение на другия край. Когато единият край изчерпи нуждата от обмен, дава заявка към другия да disconnect-не, т.е. да се направи разсъединяване. Имаме случай на насилствено прекратяване – Cancel на съединението. Disconnect е процедурно правилно прекратяване на съединението. Cancel e аварийно прекратяване на съединението. В рамките на едно транспортно съединение всеки край държи по един буфер за получаване на текущото съобщение.

Сесийно (Session)

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

Представително (Presentation)

Над сесийното ниво е представителното ниво – то се занимава с представяне на данните, защото в мрежата са свързани компютри с различни представяния.

Например числата – в някои архитектури са в наредба Big Endian, а в други – Little Endian (Endianness) – масив от данни, по 4 байта всяко число, и съобщението е предаването на този масив отсреща. Т.е. взимат се 1000 байта подред – масив от 250 елемента и директно се праща отсреща. Машините с различно представяне ще ги подредят по различен начин.

По отношение на плаващата запетая няма решение. Повечето архитектури поддържат различно тези числа и понякога може да настъпи загуба на значимост. 64 битов ISO стандарт на формата на плаващата запетая.

Големият проблем е по отношение на кодовите таблици – различни компютри на различни места по света. ASCII таблиците се различават по първа страница. Нашите са 1251 кодова таблица, които ако отидат дори и в Македония, няма да излезнат. За тази цел има просто решение – в мрежата да се движи само UNICODE, който е стандартизиран за целия свят.

Представителното ниво трябва да знае семантиката поне на ниво "тип на данните". То се занимава с уеднаквяването на данните и с други работи.

Друга негова функция, смъквайки данните към физическото ниво, е те да не се виждат – кодиране/шифриране на данните. SSL – предаване по шифър, който само те си знаят. SSL влиза в представителното ниво.

Приложно (Application)

Приложното ниво трябва да създаде стандартизиран, ясен, известен, поддържан интерфейс към приложението. Най-често този приложен интерфейс е вкаран вътре в приложението. IE – Internet Explorer – хипертекстов browser, който работи с HTTP. Друг вид приложение е Outlook express – SMTP (Simple Mail Transfer Protocol) POP3. Самият приложен протокол разпознава семантиката на това, което прави. HTTPS – HTTP протокол, който включва в себе си SSL нивото. В рутерите всичките тия нива са firmware – рутерът на сиско е направен със специализиран процесор и вътре нивото е вкарано като firmware. В реалната мрежова архитектура, която ние ще гледаме – интернет – съответствието на тези неща – FTP, SHTP, HTTP, HTTPS,

TCP UDP
IP
ARP
ETHERNET

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License