МРЕЖНИ СЛОЈЕВИ И ПРОТОКОЛИ Рачунарске мреже су веома сложене. И у најједноставнијим мрежама учествује широк дијапазон хардвера и софтвера, а ствари се само још усложњавају код великих мрежа каква је интернет. Као што је обично случај у рачунарству, сложеност система решава се разлагањем на делове и поделом задужења између њих. Слично оперативним системима који врше апстракцију хардвера и програмерима дају интерфејс за једноставније писање апликативних програма, и рачунарске мреже користе слојевитост (енгл. layering) и јасно дефинисане протоколе (енгл. protocol) комуникације. Комуникација између виших слојева остварује се тако што се достава порука препушта нижим слојевима и на вишим слојевима није потребно познавати детаље ниже комуникације. Ни нижи слојеви не морају (и не треба) да знају за детаље виших слојева. Пошиљаоци и примаоци на појединачним слојевима морају међусобно да се разумеју, што се постиже коришћењем прецизираних протокола – начина и језика комуникације. Занимљивост И класична комуникација је слојевита. Онај ко шаље писмо не мора да брине о детаљима доставе, већ је довољно да писмо адресира и преда га пошти. Могуће је да ће то писмо заједно са осталим писмима која путују у исту земљу бити упаковано у пакет на коме ће писати нешто попут „доставити возом у поштанску испоставу број 12345”. Тако пошта чини један слој комуникације који пружа услугу слоју изнад себе, док се за даље извршење свог задатка обраћа слоју испод себе (у овом случају железници). Радници који раде на неком слоју не морају да знају детаље осталих слојева (на пример, радника поште не занима ни садржај писма ни то у који вагон воза ће пакет бити утоварен, док радника железнице не занима адреса крајњег примаоца). Протоколи (својеврсни језици комуникације) дефинишу комуникацију на засебним слојевима. Радник поште не мора да разуме језик на коме је писмо написано, али прималац мора. Поштански протокол дефинише формат адресе и један од протокола (обичаја добре комуникације) дефинише на којој страни коверте ће бити написана адреса примаоца, а на којој адреса пошиљаоца. Ако се овај протокол (договор) не би следио, могло би да се деси да писмо дође до онога ко га је и послао. Као најзначајнија мрежа данашњице, интернет је организован према моделу TCP/IP (енгл. Transmission Control Protocol/Internet Protocol) и на њему се разликују наредна четири основна слоја (овде набројаних од највишег ка најнижем): 1. апликативни слој, 2. транспортни слој, 3. мрежни слој (који се назива и интернет слој), 4. везни слој (који се назива и слој мрежног интерфејса). На најнижем, везном слоју решава се питање како да се изврши поуздан пренос података између два конкретна уређаја. Одређују се физички детаљи комуникације (електрични и радио сигнали који се користе, конверзија дигиталног у аналогне сигнале и слично). Поузданост комуникације се постиже коришћењем додавања „заштитних” битова порукама које се шаљу, а које примаоцу омогућавају да са великом вероватноћом провери да ли је сваки бит основне поруке стигао у исправном облику и редоследу, па чак и да аутоматски неке грешке исправи (користе се тзв. кодови за детекцију и кодови за корекцију грешака). На наредном, мрежном слоју се са комуникације два фиксирана уређаја прелази на уређивање питања комуникације унутар шире рачунарске мреже. Предуслов за то је адресирање тј. додељивање система адреса који омогућује да се наведе ком тачно рачунару су поруке које се шаљу намењене. Јако важно питање које се на овом слоју решава је и питање рутирања тј. одређивање путање тј. низа успутних рутера преко којих поруке пролазе док не стигну до одредишта (рутери су ти који су заправо основа алгоритма рутирања јер они на основу адресе одредишта одређују ком од својих суседних рутера треба да проследе поруку). Основни протокол на овом слоју је протокол IP. Један од основних задатака транспортног слоја је да веће поруке (које му стигну са вишег, апликативног слоја) подели на ситније пакете и те пакете проследи тако да појединачни пакети могу истовремено да путују кроз мрежу. На транспортном слоју се уводе портови, који помажу да се одреди софтвер на коме одређене поруке које стигну до уређаја треба да буду покренуте (наиме, IP адресе које се уводе на мрежном слоју одређују само уређаје, а портови су додатни елементи адреса који онда омогућавају да се тачно одреди софтвер који треба да прихвати послату поруку). Основни протоколи на овом слоју су протокол TCP и UDP. Протокол TCP обезбеђује механизме сигурне комуникације, који раде тако што прималац потврђује пријем свих пакета, на основу чега пошаљилац зна да ли је неки пакет „залутао” и треба да буде поново послат. Води се рачуна и брзини слања пакета и контроли загушења (да се не би десило да се слањем превеликог броја пакета у мрежу која је прилично загушена она још додатно загуши). Протокол UDP је намењен мање сигурној, али много бржој комуникацији (користи се углавном за апликације у реалном времену, попут преноса аудио и видео сигнала и слично, јер нпр. за говорни сигнал је најважније да се довољно брзо преноси, па и по цену да неки делићи секунде говора буду изгубљени или пренети са малом грешком). На врху се налази апликативни слој и апликативни протоколи, који су специфични за појединачне апликације тј. сервисе интернета – свака апликација тј. сервис одређује формате порука које се шаљу током рада те апликације. На пример: • протоколи HTTP (енгл. HyperText Transfer Protocol) и HTTPS (енгл. HyperText Transfer Protocol Secure) - за преузимање докумената са веба, • протоколи POP3 (енгл. Post Office Protocol) и IMAP (енгл. Internet Message Access Protocol) - за преузимање електронске поште, • протокол SMTP (енгл. Simple Mail Transfer Protocol) - за слање електронске поште, • протокол FTP (енгл. File Transfer Protocol) - за пренос фајлова. Протоколи прецизно дефинишу формат порука које се размењују (њихов облик и садржај). Поруке дефинисане на апликативном нивоу се онда размењују коришћењем услуга нижих слојева (транспортни слој дели те поруке на пакете, који се онда адресирају и шаљу коришћењем услуга мрежног и везног слоја). У ТCP/IP протоколу корисничка порука се дели на делове стандардне дужине који се затим пакују на следећи начин ради транспорта кроз мрежу: • На корисничке податке, на TCP нивоу (транспортни слој) се додају адресе портова пошиљаоца и примаоца и тако се формира упакована порука која се зове сегмент. Портови су јединствена ознака виртуелне везе која је формирана између апликација на пријемној и предајној страни. Следе примери неких портова: 20 и 21 – транспорт фајлова (FTP Data и FTP Control), 25 – долазећа пошта (SMTP), 53 – систем доменских имена (DNS), 80 – веб странице (HTTP), 110 – одлазећа пошта (POP3). • Даље, на IP нивоу (интернет слој), сегменту се додају IP адреса пошиљаоца и примаоца, и тако запакована порука на овом нивоу се зове пакет. • На нивоу приступа мрежи, пакету се додају MAC адресе пошиљаоца и примаоца и додаје се ознака за крај поруке. Тако запакована порука се зове Ethernet оквир и спремна је за физичко слање путем преносног медијума (кабла, или бежично). На следећој слици имамо пример комуникације и формирања сегмента, пакета и мрежног оквира у TCP/IP мрежи за случај преноса у веб апликацији која се налази на веб серверу и којој корисник/клијент шаље информације. СЛИКА1 ПРОТОКОЛ HTTP Веб је од самог свог зачетка заснован на моделу клијент-сервер. Клијент (то је најчешће веб-прегледач било на рачунару, било на неком мобилном уређају) се обраћа веб-серверу са захтевом за одређеним ресурсима: веб-странама, сликама, звучним и видео-записима, документима, датотекама и слично. Сервер одговара на захтев клијента и, ако је све у реду, шаље клијенту тражени ресурс. Протокол на основу којег се врши комуникација између клијента и сервера назива се протокол за пренос хипертекста HTTP (енгл. HyperText Transfer Protocol). СЛИКА2 Размена информација између клијената и сервера на вебу врши се помоћу протокола HTTP (енгл. HyperText Transfer Protocol) или HTTPS (енгл. HyperText Transfer Protocol Secure), који пружа додатну сигурност јер податке шаље преко мреже у криптованом (шифрованом) облику. Ово су протоколи апликативног слоја и за даљу комуникацију они користе услуге нижих мрежних слојева. Пошто у данашње време о комуникацији на нижим мрежним слојевима брине оперативни систем, веб-програмер не мора да води рачуна о томе како се HTTP захтеви и HTTP одговори заиста размењују између клијента и сервера. Са друге стране, познавање одређених детаља протокола HTTP неопходно је за разумевање функционисања веба и за прављење веб-апликација, па ћемо се у наставку позабавити објашњењем основних појмова протокла HTTP. Када се у прегледач веба унесе веб-адреса, односно URL, или се просто кликне на неку везу, прегледач најпре рашчлањује адресу на њене саставне делове. На пример, ако је URL адреса http://www.moja-prodavnica.com/site/products?page=3, њени делови су: • http – ознака протокола који се користи за комуникацију • www.moja-prodavnica.com – назив веб-сервера • /site/products – путања до веб-стране на серверу • page=3 – додатни параметри На основу овога, веб прегледач зна да помоћу протокола HTTP треба да успостави комуникацију са веб сервером www.moja-prodavnica.com. Први корак је прибављање IP адресе тог веб сервера слањем упита серверу имена домена (DNS). Након тога, веб серверу се шаље такозвани HTTP захтев с путањом до стране која се захтева (у овом примеру то је /site/products) и евентуално са неким додатним параметрима, ако су наведени. У нашем примеру, додатни параметар је page=3, коју ће веб сервер очигледно да протумачи као захтев да пошаље трећу страну списка производа. Сервер проверава да ли постоји тражена веб-страна тј. да ли постоји скрипт који може да је генерише и, ако постоји, шаље је клијенту у склопу HTTP одговора. Клијент (тј. веб-прегледач) затим анализира HTML опис стране коју је добио, приказује је и, ако се у опису спомиње слика, аудио-запис или видео-снимак, шаљу се нови HTTP захтеви за тим ресурсима. Зато на споријим везама можете приметити да се прво учитава и приказује текст веб-стране, а тек касније стижу слике. Ако веб-сервер не може да пружи захтевану страну, HTTP одговор садржи информацију о томе. Наиме, сваки HTTP одговор садржи статус, који клијента информише о исходу његовог захтева.