77
Računarske mreže – Nezvanične bilješke sa predavanja 1 1. Uvod Računarske mreže su kombinacija hardvera i softvera koja omogućava korisnicima razmjenu potataka i dijeljenje resursa. Hardver računarskih mreža sastoji se od kolekcije računara i pratećih komunikacionih urađaja koji mogu biti povezani na različite načine, zavisno od konkretne mreže. Resursi koji se mogu dijeliti mogu biti kako hardverski, tako i softverski. Primjeri hardverskih resursa koji se često dijele mogu biti: – Štampači – Diskovi velikog kapaciteta – Procesorska snaga Klasični softverski resursi koji se dijele u računarskim mrežama su: – Aplikacije – Baze podataka U računarskim mrežama, veze između računara se mogu vršiti na dva načina: – Žičano – Bežično Žičano povezivanje računara vrši se različitim vrstama kablova, o čemu će biti riječi kasnije. Bežično povezivanje se može vršiti na dva načina: – Korištenjem radio talasa – Korištenjem infracrvenih talasa Pored razmjene podataka i dijeljenja resursa, računarske mreže mogu se koristiti i za poboljšanje pouzdanosti rada, tako što će više računara u mreži zajednički izvršavati neki vitalni algoritam. U slučaju otkaza nekog od računara, posao koji je njemu bio povjeren automatski se može raspodjeliti na ostale računare u mreži. Računarske mreže su također dobar način za povećanje procesorske moći računarskih sistema. Naime, cijena jednog super moćnog računara često može biti veća nego ukupna cijena više desetina pa čak i stotina slabih računara, koji kada se međusobno povežu, mogu kao cjelina imati veću procesorsku moć nego jedan super računar. U hardver računarskih mreža tipično spada sljedeće: – Sami računari – Kablovi za povezivanje – Mrežne kartice – Modemi – Koncentratori (habovi) – Preklopnici (switchevi) – Usmjerivači (routeri) – Mrežni mostovi (bridgevi) – Mrežni prolazi (gatewayi) U softver računarskih mreža spadaju svi programi koji služe za implementaciju komunikacionih protokola. Komunikacioni protokoli, o kojima će se detaljnije govoriti kasnije, definiraju formalni

Racunarske Mreze Zeljko Juric

Embed Size (px)

DESCRIPTION

Racunarske Mreze Zeljko Juric

Citation preview

Page 1: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

1

1. Uvod

Računarske mreže su kombinacija hardvera i softvera koja omogućava korisnicima razmjenu potataka i dijeljenje resursa.

Hardver računarskih mreža sastoji se od kolekcije računara i pratećih komunikacionih urađaja

koji mogu biti povezani na različite načine, zavisno od konkretne mreže. Resursi koji se mogu dijeliti mogu biti kako hardverski, tako i softverski. Primjeri hardverskih

resursa koji se često dijele mogu biti: – Štampači – Diskovi velikog kapaciteta – Procesorska snaga Klasični softverski resursi koji se dijele u računarskim mrežama su: – Aplikacije – Baze podataka U računarskim mrežama, veze između računara se mogu vršiti na dva načina: – Žičano – Bežično Žičano povezivanje računara vrši se različitim vrstama kablova, o čemu će biti riječi kasnije.

Bežično povezivanje se može vršiti na dva načina: – Korištenjem radio talasa – Korištenjem infracrvenih talasa Pored razmjene podataka i dijeljenja resursa, računarske mreže mogu se koristiti i za poboljšanje

pouzdanosti rada, tako što će više računara u mreži zajednički izvršavati neki vitalni algoritam. U slučaju otkaza nekog od računara, posao koji je njemu bio povjeren automatski se može raspodjeliti na ostale računare u mreži.

Računarske mreže su također dobar način za povećanje procesorske moći računarskih sistema.

Naime, cijena jednog super moćnog računara često može biti veća nego ukupna cijena više desetina pa čak i stotina slabih računara, koji kada se međusobno povežu, mogu kao cjelina imati veću procesorsku moć nego jedan super računar.

U hardver računarskih mreža tipično spada sljedeće: – Sami računari – Kablovi za povezivanje – Mrežne kartice – Modemi – Koncentratori (habovi) – Preklopnici (switchevi) – Usmjerivači (routeri) – Mrežni mostovi (bridgevi) – Mrežni prolazi (gatewayi) U softver računarskih mreža spadaju svi programi koji služe za implementaciju komunikacionih

protokola. Komunikacioni protokoli, o kojima će se detaljnije govoriti kasnije, definiraju formalni

Page 2: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

2

jezik i skup pravila za komunikaciju između različitih računara i komunikacionih uređaja povezanih u mrežu. Na primjer, protokoli specificiraju način na koji će pojedine aplikacije koristiti mrežni hardver i u kojem trenutku.

Sve računarske mreže možemo grubo podijeliti u dvije kategorije: – Peer-to-peer mreže – Klijent-server mreže Osnovne karakteristike peer-to-peer mreža su sljedeće:

– Svi računari u mreži su potpuno ravnopravni – Svaki računar obavlja funkciju i klijenta i servera – Nema centralizirane administracije, tako da se informacije o svakoj izmjeni u mreži (poput

dodavanja novih računara korisnika) moraju podesiti na svim računarima koji učestvuju u mreži

– Ne moraju se koristiti specijalizirani mrežni operativni sistemi Osnovne karakteristike klijent-server mreža su sljedeće:

– Jedan od računara se posebno ovlaštava da bude poslužitelj u mreži (server), dok su ostali računari klijenti

– Nikakva komunikacija u mreži nije moguća bez znanja servera – Sva administracija se vrši isključivo na serveru – Operativni sistem mora biti specijaliziran da podrži klijent-server organizaciju (tzv. mrežni

operativni sistemi)

2. Žičani komunikacioni mediji Za žičano povezicanje računara, tipično se koriste tri vrste kablova: – Upredene parice – Koaksijalni kablovi – Optički kablovi Razne vrste kablova se, između ostalog, razlikuju i po komunikacionom mediju, odnosno

materijalu koji se koristi kao provodnik za prenošenje informacija. Kod upredenih parica i koaksijalnih kablova, kao medij se koristi bakar, dok se kod optičkih kablova koriste specijalno obrađena staklena vlakna (optička vlakna).

Upredene parice sastoje se od međusobno izoliranih bakrenih žica koje su međusobno uvijene

jedna oko druge: Upredanje se vrši radi smanjenja smetnji izazvanih međusobnim induktivitetom između pojedinih

provodnika. Koriste se za relativno male udaljenosti (do nekoliko desetina metara) i umjerene brzine prenosa podataka. Mogu podnijeti brzine prenosa do najviše 100 Mbita/s.

Upredene parice su jako osjetljive na elektromagnetno zračenje iz okoline. Utjecaj zračenja može

se smanjiti stavljanjem metalnog omotača odnosno oklopa (shield) oko parica. S obzirom na rečeno, možemo razlikovati dvije vrste upredenih parica:

– Neoklopljene upredene parice, poznate kao UTP (Unshielded Twisted Pairs) – Oklopljene upredene parice, poznate kao STP (Shielded Twisted Pairs)

Page 3: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

3

Kod koaksijalnih kablova, u središtu imamo bakarnu žicu, oko koje se nalazi metalna košuljica, koja preuzima ulogu drugog provodnika. Sve zajedno se nalazi u plastičnom omotaču.

Slično upredenim paricama, koaksijalni kablovi mogu podnijeti brzine do 100 Mbita/s pri

rastojanjima od nekoliko desetina metara, ali se oni mogu koristiti i na udaljenostima od nekoliko stotina metara, po cijenu smanjene brzine prenosa podataka. Na takvim udaljenostima tipično se postiže brzina od oko 10 Mbita/s.

Optički kablovi se sastoje od optičkih vlakana (fiber optic), koja su dizajnirana da provode

svjetlosne, a ne električne signale. Optička vlakna sastoje se od specijalno obrađenih čestica stakla, pri čemu se pojedine čestice ponašaju poput malih prizmi kje zahvaljujući prelamanju svjetlosti mogu ispravno voditi svjetlost od izvora ka odredištu duž zakrivljene putanje.

Pri prolasku svjetlosnog signala kroz optički kabl, nužno dolazi do slabljenja i rasipanja svjetlosti,

zbog čega se nakon određene udaljenosti signal više ne može prepoznati. Stoga se u optičke kablove na određenim rastojanjima moraju postavljati specijalni pojačavači, tzv. regeneratori, koji kompenziraju slabljenje do kojeg neminovno dolazi pri prolasku svjetlosti kroz kabel.

S obzirom da su u računarskim sistemima praktično svi signali električne prirode, dok optički

kablovi provode svjetlosne signale, za upotrebu optičkih kablova potrebni su pretvarači električnih signala u svjetlosne, odnosno svjetlosnih signala u električne. Kao pretvarači električnih signala u svjetlosne (svjetlosni izvori), koriste se laserske diode, koje pri proticanju struje praktično trenutno počinju emitirati svjetlost vrlo čistog sastava. Kao pretvarači svjetlosnih signala u električne (prijemnici svjetlosti), obično se koriste razni spojevi sa fotodiodama, koje predstavljaju elemente koji propuštaju električnu struju tek kada se osvjetle.

Optički kablovi su potpuno neosjetljivi na bilo kakva zračenja, tako da se mogu uspješno koristiti

za brz prenos podataka na velike udaljenosti (više desetina kilometara). Pri tome se postižu brzine i do 10 Gbit/s. Jedini nedostatak im je relativno visoka cijena.

Kao osnovni parametri komunikacionih medija obično se navode sljedeći: – Propusni opseg (bandwidth) – Odnos signal/šum (signal-to-noise ratio) – Slabljenje signala po jedinici dužine Propusni opseg (bandwidth) se obično obilježava sa B, i on određuje maksimalnu moguću brzinu

prenosa podataka kroz medij. Tipično se izražava u bitima u sekundi (bit/s). Za broj bita u sekundi često se koristi i oznaka bps (Bits Per Second).

žica

regeneratori

kabel kabel kabel

Page 4: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

4

Odnos signal/šum (signal-to-noise ratio) obično se obilježava sa S/N i predstavlja odnos između prosječne snage S signala koji se prenosi S i prosječne snage N šumova (noise) odnosno smetnji koje ometaju prenos. Postoji direktna veza između propusnog opsega i odnosa signal/šum. Preciznije, C. Shannon je dokazao da je propusni opseg proporcionalan logaritmu odnosa signal/šum, odnosno da vrijedi

B ∼ log (S/N)

Slabljenje signala A (attenuation) definira se kao odnos snage signala P2 na izlazu iz medija u odnosu na snagu signala P1 na ulazu u medij, odnosno kao P2 /

P1. Međutim, uskoro ćemo vidjeti da je mnogo praktičnije koristiti logaritam ovog odnosa nego sam odnos. U tehnici se svi logaritamski odnosi obično izražavaju pomoću specijalne mjerne jedinice nazvane bel (skraćeno B), s tom što se u praksi mnogo češće koristi 10 puta manja jedinica nazvana decibel (skraćeno dB), tako da je 1 B = 10 dB. U skladu sa ovim, slabljenje A izraženo u decibelima možemo izraziti formulom

A [dB] = 10 log (P2

/ P1) Problem sa ovako uvedenim slabljenjem je što ono nije ovisno samo o svojstvima medija, već i

od dužine kabla, odnosno slabljenje raste sa dužinom kabla. Da bismo vidjeli šta možemo učiniti po tom pitanju, posmatrajmo spoj dva kabla, tako da signal iz prvog kabla ulazi u drugi:

Ukoliko ne bismo uzimali logaritam odnosa snaga, tada bi slabljenje prvog kabla iznosilo

A1 = P2 / P1, slabljenje drugog kabla bi bilo A2 = P3

/ P2, dok bi slabljenje čitavog spoja iznosilo A = P3

/ P1. Odavde slijedi A = A1 A2, odnosno ukupno slabljenje bi bilo jednako produktu pojedinačnih slabljenja. Međutim, kako logaritmiranje pretvara produkt u zbir, za logaritamski definirano slabljenje vrijedi

A [dB] = A1

[dB] + A2 [dB] Dakle, logaritamski definirano slabljenje se prosto sabira duž pojedinih dijelova kabla. Stoga je

moguće definirati podužno slabljenje α, odnosno slabljenje po jedinici dužine. Tako definirano slabljenje zavisi samo od karakteristika medija, a ne i od njegove dužine, i izražava se u decibelima po metru (dB/m). Tako, ako imamo kabl dužine l, ukupno slabljenje (logaritamsko) duž kabla možemo dobiti kao A = α ⋅ l. Da nismo definirali slabljenje kao logaritam odnosa, ne bismo mogli definirati podužno slabljenje, jer se slabljenje definirano kao prosti odnos snaga ne ponaša aditivno nego multiplikativno pri povećavanju dužine kabla.

3. Bežični komunikacioni mediji

Pri bežičnoj komunikaciji, kao komunikacioni medij koriste se razne vrste elektromagnetnih

talasa, u prvom redu radio talasi i infracrveni zraci.

Elektromagnetni talasi predstavljaju oscilacije (titraje) intenziteta elektromagnetnog polja koji se prostiru kroz prostor brzinom svjetlosti (zapravo, sama svjetlost je jedna vrsta elektromagnetnog talasa). Svi elektromagnetni talsasi su karakterizirani frekvencijom f i talasnom dužinom λ. Frekvencija f predstavlja broj titraja u sekundi, dok talasna dužina predstavlja minimalnu udaljenost između dvije tačke u prostoru koje titraju na isti način. Ove dvije veličine su povezane relacijom

λ = c / f

gdje je c brzina svjetlosti. Stoga, sa porastom frekvencije, talasna dužina opada.

P1 P2 P3

Page 5: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

5

Prema frekvenciji odnosno talasnoj dužini, elektromagnetni talasi se dijele u sljedeće kategorije:

– Radio talasi (najmanja frekvencija, najveća talasna dužina) – Infracrvena (IR) svjetlost odnosno infracrveni zraci – Vidljiva svjetlost – Ultraljubičasta (UV) svjetlost odnosno ultraljubičasti zraci – X-zraci odnosno rentgenski zraci – γ-zraci (najveća frekvencija, najmanja talasna dužina)

Radio talase dalje dijelimo u sljedeće kategorije: – Dugi talasi (najmanja frekvencija, najveća talasna dužina) – Srednji talasi – Kratki talasi – Ultrakratki talasi – Mikrotalasi (najveća frekvencija, najmanja talasna dužina) f raste, λ opada f opada, λ raste

Radio talasi Svjetlost X

zraci γ

zraci Dugi Srednji Kratki Ultrakratki Mikro Infracrvena Vidljiva Ultraljubičasta λ ≈ 100 km λ ≈ 1 m f ≈ 1 kHz f ≈ 1 GHz

Radio talasi su dobili ime po tome što su se isprva koristili (a i danas se koriste) za radio prenos.

Pri tome je interesantno da različiti tipovi radio talasa imaju različite osobine prostiranja kroz atmosferu, zbog čega imaju različite domete. Recimo, ultrakratki talasi se rasporostiru isključivo pravolinijski, bez obzira na zakrivljenost Zemlje. Stoga je domet komunikacije ovom vrstom talasa ograničen na optičku vidljivost, što zbog zakrivljenosti Zemlje iznosi najviše oko 30 km, čak i u potpunoj ravnici.

Srednji talasi se mogu povijati kroz atmosferu, prateći zakrivljenost Zemlje, te se mogu koristiti

za prenos na veće udaljenosti. Nažalost, to povijanje ovisi od atmosferskih uvjeta, te je prenos na srednjim talasima jako ovisan od atmosferskih uvjeta.

Kratki talasi se, slično ultraktratkim, prostiru pravolinijski, ali se odbijaju od Zemljinu površinu i

jonosferu. Stoga se oni mogu koristiti za prenos na velike daljine, čak i pomoću predajnika posve male snage. Ipak, pri njihovom prostiranju dolazi do osjetnog rasipanja talasa, tako da je kvalitet prenosa pomoću kratkih talasa slab.

Površina Zemlje

ultrakratki talasi

Površina Zemlje

Jonosfera

kratki talasi

Page 6: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

6

Prilikom komunikacije elektromagnetnim talasima, signal koji se prenosi uvijek je takvog oblika da njegova frekvencija tokom vremena varira u nekom uskom dijapazonu širine ∆f oko neke frekvencije fc (∆f << fc), nazvane noseća frekvencija. Kada se govori o prenosu na nekoj frekvenciji, misli se da je ta frekvencija zapravo noseća frekvencija. Noseće frekvencije za mnoge vrste radio emisije su zakupljene (licencirane), tj. utvrđene dogovorom. Tako su mnogi frekventni opsezi rezervirani za tačno utvrđene namjene (radio emisija, televizijski prenos, mobilna telefonija, vojne i policijske komunikacije, komunikacije u vozilima gradskog saobraćaja, itd.). Za potrebe radio emisije koriste se frekvencije koje upadaju u opseg ultrakratkih i srednjih talasa. Kratki talasi se koriste pretežno za radio amaterske komunikacije, i ponekad za radio emisiju na velike udaljenosti. Dugi talasi se više ne koriste u praksi, s obzirom da zahtijevaju prevelike antene. Naime, pokazuje se da minimalna dužina antene za emisiju i prijem elektromagnetnih talasa talasne dužine λ iznosi λ/4. Tako bi, za emisiju i prijem radio talasa sa talasnom dužinom 10 km (odnosno frekvencijom oko 30 kHz) bila potrebna antena dužine 2.5 km, što je veoma nepraktično (i praktično neizvodljivo ukoliko antena ide u visinu).

Većina drugih radio komunikacija (televizija, vojska i policija, gradski prevoz, itd.) koristi

ultrakratke talase. Mobilna telefonija koristi frekvencije koje ulaze u opseg ultraktratkih talasa i miktotalasa. Za potrebe računarskih komunikacija koriste se isključivo frekvencije u mikrotalasnom opsegu. Ostali frekventni opsezi su pretrpani drugim signalima.

Da bi postigli da signal koji prenosimo zauzme željeni frekventni opseg, signal se prethodno mora

modulirati, čime dolazi do promjene njegovog frekventnog opsega, sa ciljem da se signal dovede u željeni frekventni opseg. Pod modulacijom se općenito podrazumijeva proces izmjene karakteristika nekog signala sa ciljem da se njegove karakteristike prilagode konkretnom prenosnom mediju. Tipično se koriste dvije vrste modulacije:

– Amplitudna modulacija (AM) – Frekventna modulacija (FM) U oba slučaja, informacija koju predstavlja signal “utiskuje” se u sinusni talas noseće frekvencije

koji se naziva noseći talas (carrier). Kod amplitudne modulacije, informacija se utiskuje tako da signal koji se modulira mijenja amplitudu nosioca u skladu sa promjenom signala, dok kod frekventne modulacije signal koji se modulira mijenja frekvenciju nosioca u skladu sa promjenom signala.

Signal

Nosilac

Amplitudno modulirani

signal

Frekventno modulirani

signal

Page 7: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

7

Ukoliko je s(t) signal koji se modulira i ukoliko frekvencija nosioca iznosi fc, tada se jednačine AM i FM signala mogu predstaviti u sljedećem obliku:

sAM(t) = (K + s(t)) cos 2π fc t sFM(t) = K cos 2π( fc + δ s(t)) t Ovdje su K i δ fiksni parametri koji utječu na osobine modulacije. Naravno, na mjestu prijema,

potrebno je iz moduliranih signala sAM(t) odnosno sFM(t) rekonstruisati izvorni signal s(t). Postupak kojim se ovo vrši naziva se demodulacija ili detekcija.

Kod amplitudne modulacije, ukoliko je izvorni signal zauzimao frekventni opseg od 0 do neke

granične frekvencije fg, nakon modulacije sa nosiocem frekvencije fc modulirani signal zauzimaće tačno frekventni opseg od fc

– fg do fc + fg. Stoga, ukoliko je fc >> fg, signal će nakon modulacije tačno

zauzimati uski pojas frekvencija oko centralne frekvencije fc (uz ∆f = fc). Za frekventnu modulaciju ne postoji tako jednostavna veza između frekventnog opsega signala prije i poslije modulacije, ali se za dovoljno veliku frekvenciju nosećeg signala fc signal nakon modulacije također pretežno nalazi u uskom frekventnom opsegu oko fc.

Amplitudna modulacija je mnogo osjetljivija na smetnje od frekventne modulacije, s obzirom da

smetnje koje se saberu sa signalom primijetno mijenjaju njegovu amplitudu, dok neznatno utječu na frekvenciju. Kako je kod frekventne modulacije informacija sadržana u frekvenciji moduliranog signala, dok je amplituda nebitna, smetnje posve neznatno utječu na informaciju pohranjenu u moduliranom signalu. Stoga je frekventna modulacija znanto bolja. Nažalost, frekventna modulacija se može koristiti samo ukoliko je frekvencija nosioca znatno veća od prosječne frekvencije signala. Stoga se ona može koristiti samo pri velikim frekvencijama nosioca. Konkretno, frekventna modulacija je praktična samo u ultrakratkom i mikrotalasnom opsegu, te se u ovom opsegu ona isključivo i koristi. Amplitudna modulacija može se koristiti pri svim frekventnim opsezima. Međutim, kako je ona inferiorna u odnosu na frekventnu modulaciju, ona se koristi samo pri prenosu na srednjetalasnom i kratkotalasnom području, gdje se frekventna modulacija ne može koristiti. Iz toga slijedi da klasična amplitudna modulacija nije interesantna za računarske komunikacije.

Za potrebe računarske komunikacije tipično se koriste radio talasi u nelicenciranom području sa

nosećom frekvencijom 2.4 GHz. Dva najpoznatija komunikaciona sistema koja koriste ovaj opseg su Bluetooth, kojim se postiže brzina do 1 Mbit/s sa dometom od nekoliko desetina metara i WLAN (Wireless Locak Area Network), kojim se postiže tipična brzina prenosa od 11 – 54 Mbit/s, sa dometom od nekoliko stotina metara.

Za računarske komunikacije se koriste i radio talasi koji su rezervirani za potrebe mobilne

telefonije. Razumljivo je da je za tu svrhu prethodno postignut dogovor sa odgovarajućim organima mobilne telefonije. Dva najpoznatija komunikaciona sistema koji koriste frekventni opseg rezerviran za mobilnu telefoniju su GPRS I EDGE, kojima se postiže brzina prenosa od 384 Kbit/s.

Konačno, za potrebe računarskih komunikacija koriste se i radio talasi rezervisani za potrebe

satelitskih komunikacija, pri čemu se komunikacija vrši preko geostacionarnih satelita, odnosno satelita koji se kreću zajedno sa Zemljom na takav način da se oni nalaze uvijek na istoj poziciji u odnosu na Zemlju (tako da izgleda kao da su fiksno vezani za Zemlju). Pri ovakvim komunikacijama može se postići brzina do oko 1 Mbit/s.

Infracrveni talasi se mogu koristiti samo za komunikaciju između računara i drugih uređaja na

posve maloj udaljenosti, gdje postoji direktna vidljivost između učesnika u komunikaciji, pri brzinama prenosa od nekoliko Mbit/s. Tipično se koristi za komunikaciju između računara i perifernih uređaja poput bežičnog miša, itd.

Page 8: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

8

Signali koji se prenose bežično često nisu šifrirani, tako da svako ko ima prijemnik podešen na prijem odgovarajućeg frekventnog opsega može primiti signal. U mnogim slučajevima ovo nije povoljno, tako da se u mnogim primjenama signali prethodno kodiraju (šifriraju), tako da dekodiranje (dešifriranje) signala može izvršiti samo prijemnik kojem je informacija koja se prenosi namijenjena. Bez ovoga, mobilna telefonija ne bi bila moguća, a ista strategija se često primjenjuje i u računarskim komunikacijama.

4. Klasifikacija ra čunarskih mreža

Prema oblasti koju neka računarska mreža pokriva, sve mreže možemo grubo podijeliti u

nekoliko kategorija: – PAN (Personal Area Network) – LAN (Locak Area Network) – MAN (Metropolitan Area Network) – WAN (Wide Area Network) PAN mreže povezuju mali broj računara u bliskom okruženju korisnika. Tipično su zasnovane na

peer-to-peer organizaciji, i često se izvode bežično. Koriste samo trivijalnu komunikacionu opremu. Drastičan primjer (u smislu minimalizma) PAN mreže su dva računara, međusobno povezana specijalnim kablom za povezivanje (tzv. unakrsnim ili cross-over kablom).

LAN mreže povezuju relativno mali broj računara na ograničenom geografskom području, recimo

unutar jedne zgrade ili blokova zgrada. Ove mreže karakterizira velika brzina prenosa podataka, i upotreba komunikacione opreme koja ne koristi modulacione tehnike. Ove mreže su po organizaciji najčešće mreže klijent-server tipa.

MAN mreže predstavljaju skupinu više LAN mreža ili individualnih računara na gradskom

području koji su međusobno povezani preko javne telefonske strukture unutar grada (tipično preko telefonske mreže). Ove mreže predstavljaju prelaz između LAN i WAN mreža.

WAN mreže povezuju više LAN ili MAN mreža u jednu cjelinu, obično na velikom geografskom

području, mada su principijelno moguće mreže koje su po svojoj arhitekturi WAN mreže, iako su locirane na sasvim malom području. Ono po čemu su WAN mreže karakteristične je upotreba komunikacione opreme koja koristi modulacione tehnike, poput modema o kojima će biti riječi kasnije. Brzina prenosa podataka u WAN mrežama je znatno manja nego u drugim tipovima mreža.

LAN mreže se dalje mogu klasificirati prema topologiji, odnosno po načinu na koji su računari

međusobno povezani. Najčešće se susreću sljedeće topologije: – Zvjezda (star) – Sabirnica ili magistrala (bus) – Prsten (ring) – Mreža (mesh) Topologija “zvijezda” je najčešće korištena topologija. Kod ove topologije, svi računari u mreži

su povezani na jedan središnji uređaj (čvorište). Kao čvorište može se koristiti uređaj poznat pod nazivom koncentrator ili hab, ili uređaj poznat kao preklopnik ili switch.

hab

Page 9: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

9

Osnovne karakteristike ove topologije su sljedeće:

– Upravljanje je jednostavno i centralizirano, s obzirom da sve informacije prolaze kroz čvorište

– Proširivanje mreže, tj. dodavanje novih računara u mrežu je izuzetno jednostavno – Kvar pojedinačnih računara ili kablova koji spajaju računare ne ugrožava rad mreže – Mreža je ugrožena samo u slučaju kvara na čvorištu

Broj računara koji se mogu priključiti na neko čvorište (hab ili switch) je uvijek ograničen. U

slučaju da je potrebno priključiti više računara, moguće je koristiti topologiju “višestruke zvijezde”, koja se zasniva na činjenici da se i čvorišta mogu međusobno povezivati. Na primjer, sljedeća slika pokazuje kako je moguće uvezati 20 računara koristeći čvorišta koja prihvataju samo 5 računara. Slika pokazuje da nam je potrebno 5 takvih čvorišta, od kojih je jedno “super čvorište”, koje povezuje ostala čvorišta:

Za ovakvu modifikaciju topologije “zvjezda” važi sve isto kao i za standardnu “zvijezda” topologiju, osim što mreža postaje ugrožena i u slučaju kvara nekog od kablova koji spaja čvorišta između sebe.

Pri korištenju više čvorišta, treba biti pažljiv pri dizajniranju odgovarajuće strukture mreže.

Sljedeća slika pokazuje alternativni način povezivanja 20 računara u mrežu pomoću čvorišta sa 5 priključaka, koja predstavlja tipičan primjer kako ne treba raditi:

U ovoj izvedbi se, kao i u prethodnoj, koristi 6 čvorišta. Međutim, u ovakvoj izvedbi, najveća udaljenost između dva računara (mjereno po broju spojnih kablova) iznosi 7, za razliku od 4 u prethodnoj izvedbi. Pored toga, primijetimo da se u ovoj izvedbi formira “usko grlo” u vidu spojnice koja spaja sva čvorišta duž jedne linije. Ovo usko grlo prihvata na sebe veliki protok informacija, i može biti uzrok čestih zagušenja u komunikaciji.

Kod topologije “sabirnica” ili “magistrala”, svi računari su preko odgovarajućih priključnih

adaptera priključeni na jedan komunikacioni medij velike propusne moći, nazvan sabirnica ili magistrala (bus):

Page 10: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

10

Na krajeve sabirnice se priključuju terminalni uređaji, koji sprečavaju refleksiju signala od

krajeve otvorenog kabla. Naime, poznato je da na krajevima otvorenog kabla može doći do refleksije, odnosno formiranja odbijenog signala koji se kreće u suprotnom smjeru duž kabla u odnosu na korisni signal, i predstavlja smetnju korisnom signalu. Do refleksije dolazi ukoliko je dužina kabla l veća od λ / 4, gdje je λ talasna dužina signala. Kako je λ = c / f, do refleksije dolazi ukoliko je l > c / 4 f, odnosno f > c / 4 l. Na primjer, pri brzini prenosa od 100 Mbit/s, što grubo odgovara prosječnoj frekvenciji f = 100 MHz, do refleksije dolazi već pri dužini kabla od l > 75 cm. Ili, pri dužini kabla l = 100 m, do refleksije dolazi pri frekvencijama f > 750 kHz, odnosno pri brzinama prenosa od 750 kbit/s i više. Cilj terminalnih uređaja je da uklone ili barem značajno ublaže utjecaj ovih refleksija.

Osnovne karakteristike topologije “sabirnica” su sljedeće:

– Nema centralizacije, s obzirom da ne postoje čvorišta – Sabirnica mora prolaziti relativno blizu računara koji se priključuje – Kvar računara ili priključnih kablova ne ugrožava rad mreže – Kvar na sabirnici razdvaja mrežu na dva funkcionalna, ali međusobno nepovezana dijela

Moguće je kombinirati topologije “zvijezda” i “sabirnica”, odnosno moguće je na sabirnicu

priključiti čvorište nad koje će se priključiti više računara prema topologiji “zvijezda”. Topologija “prsten” sastoji se od računara međusobno povezanih u kružnu strukturu, pri čemu je

svaki računar neposredno povezan sa dva druga računara: Ovakve mreže mogu biti izuzetno efikasne. Međutim, one su veoma ranjive, jer kvar jednog

računara ili spojnog kabla ugrožava čitavu mrežu, s obzirom da su protokoli rada u ovakvim mrežama zasnovani na postojanju kružnog toka informacija, odnosno na protoku informacija isključivo u jednom smjeru (recimo u smjeru strelice na prethodnoj slici.

Kod topologije “mreža” ideja je da se smanji ranjivost prstena uvođenjem višestrukih veza.

Nažalost, za tu svrhu računari moraju biti opremljeni hardverom i softverom koji omogućava neposrednu komunikaciju jednog računara s nekoliko susjeda.

priključni adapter sabirnica

terminalni uređaj

Page 11: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

11

Najpoznatije tehnologije na kojima se zasnivaju LAN mreže su: – Ethernet – Token Ring (IBM) Ethernet tehnologija podržava topologiju “magistrala”, “zvijezda”, kao i kombinaciju topologija

“magistrala” i “zvijezda”. Kao mrežni medij se koriste upredene parice, te koaksijalni ili optički kablovi. Standardne brzine prenosa su 10 Mbit/s i 100 Mbit/s, a u izvedbi poznatoj kao Gigabit Ethernet moguće je postići i 1 – 10 Gbit/s. Ova tehnologija je standardizirana standardnom IEEE 802.3.

Za pristup mediju kod Ethernet tehnologije koristi se metodologija poznata pod nazivom CSMA /

CD (Carrier Sense Multiple Access / Collision Detection). Prema ovoj metodologiji, računari koji žele emitirati poruku prvo “osluškuju” komunikacioni medij da vide da li je slobodan. Ukoliko nema nikakvog signala, započinju emitiranje. Ukoliko ima signala, čekaju slučajan iznos vremena prije nego što probaju ponovo dobiti pristup (iznos čekanja je slučajan da bi se izbjegli sinhronizirani pokušaji pristupa od više različitih računara). Nakon slanja poruke, vrši se izvjesna strategija provjere sadržaja poruke da se provjeri da li je nenadano došlo do ometanja od strane drugog računara, odnosno kolizije (do ovoga može doći ako, recimo, dva računara neovisno zaključe da je medij slobodan i istovremeno započnu emitiranje). Ukoliko je došlo do kolizije, poruka se šalje ponovo nakon vremenske pauze slučajnog trajanja.

Token Ring tehnologija zasnovana je na topologiji prstena. Kao komunikacioni medij koriste se

upredene parice, a postiže se brzina prenosa od 4 – 16 Mbit/s, odnosno 100 Mbit/s u izvedbi Fast Token Ring. Ova tehnologija je standardizirana standardom IEEE 802.5. Za pristup mediju koristi se protokol poznat kao prosljeđivanje tokena (žetona). Token je kratka sistemska informacija koja kruži kroz prsten, pri čemu protokol predviđa da samo onaj računar kod kojeg se trenutno nalazi token ima pravo emitiranja informacija.

5. Mrežni komunikacioni uređaji

Mrežne komunikacione uređaje možemo podijeliti u tri osnovne skupine: – Mrežni adapteri (mrežne kartice) – Modemi – Komponente za proširenje računarske mreže Mrežni adapter odnosno mrežna kartica, poznat i pod skraćenom oznakom NIC (Network

Interface Card) je osnovna komponenta neophodna za povezivanje računara u lokalnu mrežu. Namjena mu je da vrši konverziju podataka u pohranjenih računaru u signale koji se prenose kroz komunikacioni medij i obrnuto. Obično se izvodi kao kartica koja se priključuje u neku od predviđenih utičnica (slotova) direktno na matičnu ploču računara, ili u utičnicu za proširenja na prenosnim računarima (laptopima). Na mrežnom adapteru se nalazi priključak za priključenje mrežnog kabla ili antene za bežičnu komunikaciju. U posljednje vrijeme, mrežni adapteri za bežičnu komunikaciju imaju ugrađene antene, tako da se na njih ne priključuje ništa.

Mrežni adapter ovisi od konkretne tehnologije na kojoj se zasniva mreža. Recimo, kod Ethernet

tehnologije, koja je predviđena za topologije “sabirnica” i “zvijezda” u kojima se na svaki računar priključuje samo jedan kabl, dovoljno je da mrežni adapter ima samo jedan priključak. S druge strane, kod Token Ring tehnologije, koja je predviđena za topologiju tipa “prsten”, svaki računar treba biti povezan pomoću dva kabla sa svojim susjedima, tako da odgovarajući mrežni adapteri trebaju imati barem dva priključka.

Važno je naglasiti da svaki mrežni adapter ima svoju jedinstvenu oznaku koji se naziva fizička

adresa adaptera. Dva različita mrežna adaptera uvijek će imati različite fizičke adrese, tako da ova

Page 12: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

12

adresa jedinstveno određuje mrežni adapter. Kod Ethernet tehnologije, fizička adresa izražena je u vidu 48-bitne šifre koja se naziva MAC (Media Access Control) adresa.

Modemi su komunikacioni uređaji koji su neophodni ukoliko se udaljeni fragmenti računarske

mreže moraju povezati pomoću telefonske mreže kao posrednika. Naime, signali koji se emitiraju iz računara su digitalne prirode koje karakteriziraju nagle promjene sa jedne vrijednosti koja predstavlja nivo logičke nule na drugu vrijednost koja predstavlja vrijednost logičke nule. Ispravno prenošenje ovakvih signala zahtijeva velik propusni opseg. Međutim, telefonske mreže tipično imaju posve mali propusni opseg, s obzirom da su namijenjene prvenstveno za prenos govornog signala, za koji nije potreban velik propusni opseg. Kao posljedica toga, ukoliko bi se digitalni signali prenosili direktno kroz telefonsku mrežu, dolazilo bi do njihovog izobličenja. Sljedeća slika prikazuje primjer izobličenja koja nastaju pri prolasku digitalnog signala kroz tri komunikaciona kanala različitih propusnih opsega B1, B2 i B3, pri čemu je B1

> B2 > B3:

Vidimo da u slučaju malog propusnog opsega signal može biti toliko izobličen da se na mjestu

prijema uopće ne može razlučiti šta je bila logička nula, a šta logička jedinica. Stoga je rješenje ovog problema nađeno u pretvaranju digitalnih signala u oblik pogodan za prenos kroz telefonsku mrežu. Za prenos su najpogodniji signali sinusnog oblika, jer su sinusni signali veoma uskog frekventnog opsega (idealno, sinusni signali bi trebali imati samo jednu frekvenciju). Modemi su upravo uređaji koji obavljaju ovu pretvorbu, uključujući i obrnutu pretvorbu na mjestu prijema, kao što prikazuje sljedeća slika.

Opisana pretvorba se također obavlja pomoću modulacionih tehnika, o kojima smo već govorili.

Recimo, moguće je koristiti amplitudnu ili frekventnu modulaciju, koje se u slučaju digitalnih signala posebno jednostavno izvode. Recimo, logičkoj nuli može odgovarati sinusoida jedne amplitude odnosno frekvencije, dok logičkoj jedinici može odgovarati sinusoida druge amplitude odnosno frekvencije. Također se koristi i fazna modulacija, kod koje logičkoj nuli i jedinici odgovaraju sinusoide različitih faza odnosno vremenskih pomaka u odnosu na početak. Ova tri tipa modulacije (amplitudna, frekventna i fazna) primijenjena na digitalne signale obično se skraćeno nazivaju ASK (Amplitude Shift Keying), FSK (Frequency Shift Keying) i PSK (Phase Shift Keying), a ilustrirani su sljedećom slikom.

1 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 Signal

Kanal B1

Kanal B2

Kanal B3

RAČUNAR ILI MREŽA

RAČUNAR ILI MREŽA

MODEM MODEM TELEFONSKA MREŽA

Analogni signal

Digitalni signal

Page 13: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

13

Jasno je da je na mjestu prijema neophodno vršiti obrnutu pretvorbu, odnosno demodulaciju. Ime

modem je zapravo skraćenica od Modulator/Demodulator. Problem sa opisanim vrstama modulacije je što se pomoću njih može postići samo posve mala

brzina prenosa podataka. Naime, kako je propusni opseg telefonske mreže manji od 4 kHz (standardno oko 3.4 kHz), to i frekvencije sinusoida koje se koriste u ASK, FSK ili PSK postupku moraju biti u ovom opsegu, što ograničava minimalno trajanje jednog bita na oko 1 ms, što daje moguću brzinu prenosa do oko 1 kbit/s. Ove tehnike koristili su prvi modemi koji su radili pri brzinama od 300 bit/s, 600 bit/s i 1200 bit/s.

Veća brzina prenosa može se postići tako što se može uzeti da amplitudu, frekvenciju ili fazu ne

određuje samo jedan bit, već grupa više bita, tako da se može recumo uzeti da grupa od 3 bita određuje jednu od 23 = 8 mogućih amplituda, frekvencija ili faza sinusnog signala. Na primjer, često se koristi vrsta fazne modulacije poznata pod nazivom QPSK (Quaternary Phase Shift Keying), kod koje grupa od 2 bita određuje jednu od 4 faze sinusnog signala. Ovakvim tehnikama se modu postići brzine prenosa do oko 10 kbit/s, a izvodile su se u modemima koji su radili sa brzinama prenosa od 2400 bit/s, 4800 bit/s i 9600 bit/s.

Problem sa ovakvim višebitnim modulacijama je što sa porastom broja kombinacija raste

osjetljivost na smetnje i otežava se rekonstrukcija originalne informacije na mjestu prijema. Zbog toga se koriste kombinovane modulacije, poput ASK/FSK u kojoj recimo jedan bit u grupi od dva bita određuje amplitudu, a drugi frekvenciju. Na sljedećoj slici prikazana je kombinovana amplitudno-frekventno-fazna modulacija, u kojoj u grupi od 3 bita jedan bit određuje frekvenciju, drugi bit frekvenciju, a treći bit fazu sinusnog signala, tako da se sa istim frekvencijama signala koji se prenosi ostvaruje trostruko veća brzina prenosa nego pri korištenju samo ASK, FSK ili PSK tehnike.

Jasno je da je i ovdje moguće koristiti više od jednog bita za određivanje amplitude, frekvencije

ili faze. Ovakvim kombiniranim modulacionim tehnikama moguće je postići brzine do oko 100 kbit/s. Standardno se koriste u modemima koji rade pri brzinama od 33 kbit/s i 56 kbit/s.

1 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1

1 0 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1

Signal

ASK

FSK

PSK

Page 14: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

14

Već je rečeno da se kroz telefonsku mrežu mogu uspješno prenositi signali sa frekvencijama do 4 kHz. Kako su signali sa tim frekvencijama zapravo tonski signali, to se prilikom upotrebe modema kroz telefonsku mrežu prenose upravo tonski signali, pri čemu različitim kombinacijama bita koji se prenose odgovaraju različiti intenziteti i visine tonova. Drugim riječima, pri modemskoj komunikaciji, signali koji se prenose su tonski kodirani.

U komponente za proširenje računarske mreže spadaju sljedeći uređaji: – Repetitor ili obnavljač (repeater) – Koncentrator ili hab (hub) – Mrežni preklopnik ili prospojnik (switch) – Mrežni most ili premosnik (bridge) – Mrežni usmjerivač ili ruter (router) – Mrežni prolaz ili poveznik (gateway)

Repetitor (obnavljač) je uređaj koji se koristi prilikom komunikacije na veće udaljenosti nego što

komunikacioni medij dopušta. Naime, poznato je da prilikom prenosa kroz komunikacioni medij dolazi do izobličenja i slabljenja signala, usljed čega se na izvjesnoj udaljenosti signal više ne može prepoznati. Repetitor je uređaj koji na ulazu prima oslabljeni i izobličeni signal ali takav da se još uvijek može prepoznati, a na izlazu daje obnovljeni signal. Repetitor zapravo prepoznaje primljeni signal, i na osnovu njega generira potpuno novi signal, istovjetan signalu kakav je trebao biti primljen da nije došlo do izobličenja i slabljenja. Tako se, pri komunikaciji na veće udaljenosti, na određenim razmacima duž komunikacionog medija ubacuju repetitori. Bitno je da se repetitori moraju postaviti na mjestima gdje je signal još uvijek dovoljno jak i neizobličen da je njegovo prepoznavanje moguće, inače od repetitora nemamo nikakve koristi.

Drugim riječima, repetitor obnavlja i pojačava oslabljene i izobličene komunikacione signale pri slanju ka drugim udaljenim segmentima mreže.

Koncentrator ili hab je centralni uređaj u mrežnim topologijama tipa “zvijezda”. U suštini, on je

jedna vrsta repetitora, ali sa više priključaka. Signal koji uđe na ma koji od priključaka obnavlja se i prosljeđuje na sve druge priključke.

Posredsvom haba, poruka koja je poslana sa jednog računara prosljeđuje na sve druge računare

vezane za hab, bez obzira kome je ta poruka stvarno namijenjena. Tako će tek prilikom prijema računar odbaciti one poruke za koje se utvrdi da mu nisu namijenjene. To može dovesti do nepotrebnih zagušenja u mreži, jer komunikacionim kanalima često putuju poruke koje nisu potrebne.

REPETITOR

Izvorni signal

Komunikacioni medij

Oslabljeni i izobličeni signal Obnovljeni signal

REPETITOR

HAB

Page 15: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

15

Pored toga, kod haba su svi priključci uvijek međusobno spojeni, tako da u jednom trenutku vremena samo jedan računar može emitirati poruke.

Mrežni preklopnik odnosno prospojnik (switch) namijenjen je upravo sa ciljem rješavanja

opisanog problema zagušenja do kojeg dolazi pri upotrebi habova. Principijelno, njegova uloga je ista kao i uloga haba. Međutim, za razliku od haba, switch nije pasivni uređaj koji samo prosljeđuje dalje signale koje je primio. Switch je u stanju da analizira zaglavlje poruke koju je primio, i da na osnovu informacija u zaglavlju isporuči poruku samo prema onom računaru kojem je poruka zaista namijenjena. Naime, svaka poruka uvijek ima dopunske informacije pohranjene u zaglavlju, u kojima se, između ostalog, nalazi i fizička adresa (recimo MAC adresa u slučaju Ethernet tehnologije) jedinke koja šalje poruku i jedinke koja prima poruku:

Switch dakle iščitava zaglavlje poruke koja mu dospije na ulaz, i na osnovu informacije o fizičkoj

adresi odredišta usmjerava poruku na odgovarajući izlaz. Za tu svrhu, switch mora održavati informacije o tome koje su fizičke adrese uređaja priključenih na njegove priključke. Ove informacije imaju formu tabele, u kojoj svaki red sadrži redni broj priključka i fizičku adresu uređaja priključenog na taj priključak. Na početku rada, prostor u tabeli predviđen za čuvanje fizičkih adresa je prazan. Kad god switch primi neku poruku, on čita fizičku adresu izvorišta poruke i ažurira informaciju da ta adresa odgovara priključku na koji je poruka došla. Na taj način se tabela postepeno upotpunjuje. Ukoliko switch trenutno nema informaciju o tome na koji priključak treba proslijediti poruku, on poruku prenosi na sve priključke, poput haba. Međutim, to se dešava samo na početku rada, dok se opisana tablica ne popuni neophodnim informacijama.

Zahvaljujući opisanoj “inteligenciji”, switch pri komunikaciji uspostavlja vezu samo sa odredištem kojem je poruka namijenjena. Time se postižu dvije stvari. Prvo, računari i komunikacioni vodovi ne opterećuju se porukama koje im nisu namijenjeni. Drugo, sve preostale veze ostaju slobodne, tako da je moguć višestruki protok informacija. Na taj način, switch može u svakom trenutku vremena uspostaviti više istovremenih veza između različitih parova učesnika u komunikaciji, slično telefonskoj centrali. Mrežni preklopnik je dobio svoje ime upravo zahvaljujući ovoj osobini.

Mrežni most ili premosnik (bridge) je bliski srodnik mrežnih preklopnika (switcheva), koji se koristi za povezivanje različitih segmenata mreže. Ovo se vrši zbog više različitih razloga:

– Ukoliko želimo povezati više mreža koje koriste različite fizičke medije za komunikaciju – Ukoliko želimo segmentirati mrežu, odnosno podijeliti mrežu u više odvojenih

samofunkcionalnih ali ipak povezanih cjelina – Ukoliko želimo povećati dimenzije mreže kao i broj čvorova mreže iznad granica koju

dopušta konkretna izvedba mreže

Fizička adresa pošaljioca

Fizička adresa primaoca

... ... ...

ZAGLAVLJE PORUKE SADRŽAJ PORUKE

PORUKA

SWITCH

Page 16: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

16

Mrežni most, slično kao i switch, zna fizičke adrese svih računara koji se nalaze u segmentima mreža koji su priključeni na njegove krajeve. Kada mrežni most primi poruku na neki od priključaka, on je ignorira ukoliko se odredište nalazi unutar istog segmenta mreže koji je priključen na taj priključak. U suprotnom, poruka se prosljeđuje na onaj priključak na kojem se nalazi segment mreže unutar kojeg se nalazi računar kojem je poruka namijenjena.

Segmentacija mreže se vrši sa ciljem smanjenja obima saobraćaja kroz mrežu, i lokaliziranja

problema koji mogu nastati zbog kvara u jednom dijelu mreže. Stoga je upotreba mrežnih mostova preporučljiva u mrežama velikih dimenzija sa velikim brojem čvorova.

Potrebno je napomenuti da raspoloživa literatura nije posve konzistentna po pitanju šta tačno

mrežni most predstavlja. Po nekim autorima, mrežni mostovi uvijek imaju tačno dva priključka, odnosno oni premoštavaju tačno dva segmenta mreže. Uz takvu terminologiju, ono što se ovdje naziva mrežnim mostom, a što može imati više od dva priključka, naziva se također mrežnim preklopnikom (switchem), odnosno za swictheve se pretpostavlja da znaju obavljati sve što je ovdje opisano kao funkcija mrežnog mosta.

Mrežni usmjerivač ili ruter je uređaj koji povezuje dva ili više segmenata mreže koji su

administrativno potpuno odvojeni jedan od drugog. Na primjer, to može biti skupina potpuno odvojenih LAN mreža, ali koje zahvaljujući ruteru ipak funkcioniraju kao jedna cjelina. Ruter obično povezuje segmente mreže koji su povezani preko neke WAN mreže kao posrednika, ili generalno preko bilo kojeg prenosnog medija koji spada u domen WAN tehnologija. Tako su ruteri neophodni ukoliko je potrebno lokalnu mrežu povezati sa Internetom ili nekom drugom globalnom mrežom.

MOST

RUTER

MODEM

MODEM

RUTER

Tel

efo

nsk

a ve

za

WA

N

WAN RUTER HAB

Page 17: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

17

Za razliku od mrežnih preklopnika, koji su upućeni samo u adrese uređaja koji su neposredno priključeni na njih, ruteri održavaju tabelu informacija o udaljenim učesnicima o komunikaciji, koja se sastoji od adresa susjednih mreža odnosno rutera i lokalnih mrežnih čvorova. Pri tome se ovaj put ne radi o fizičkim adresama (poput MAC adresa), nego logičkim odnosno mrežnim adresama (recimo, IP adresama, o kojima će biti govora kasnije). Ruteri manipuliraju na nivou paketa, koji predstavljaju kratke fragmente poruke koji vrlo često ne putuju istim putem od izvora do krajnjeg odredišta. Ruter na osnovu informacija o adresi paketa kao i dostupnosti i opterećenjima mogućih putanja do odredišta određuje najbolju putanju za slanje paketa do odredišta. Odatle i potiče ime usmjerivač (ruter). O samom postupku usmjeravanja i algoritmima usmjeravanja biće više riječi kasnije.

Ruteri su po svojoj strukturi dosta složeni uređaji, koji u svom sastavu moraju imati većinu

komponenata koje su po svojoj prirodi tipični za računarske sisteme. Zbog toga su ruteri najšešće zapravo računari specijalne namjene, koji su programirani tako da obavljaju funkciju rutera. U principu, klasični računari se također uz odgovarajući softver i adaptere za priključke mogu iskoristiti da obavljaju funkciju rutera.

Mrežni prolaz ili poveznik (gatewey) predstavlja uređaj koji spaja dvije heterogene mreže (tj.

mreže različite strukture i organizacije). On se mora koristiti kadgod se povezuju dva segmenta mreže koji se razlikuju po barem jednoj od sljedećih karakteristika:

– Komunikacioni protokoli koji se koriste – Arhitekture računarskih sistema koji formiraju mrežu – Strukture podataka koje se koriste pri prenosu podataka – Formati podataka koji se prenose – Jezici koji se koriste za komunikaciju

Uloga mrežnog prolaza je prepakiranje i prevođenje podataka koji prelaze iz jedne u drugu mrežu.

Pri tome najčešće dolazi do promjene formata podataka koji se prenose. Mrežni prolazi su, slično kao i ruteri, najčešće ili specijalizirani računari, ili računari opće namjene

opremljeni odgovarajućim softverom i priključnim adapterima. Mrežni prolazi se najčešće prave tako da obavljaju i funkciju rutera, tako da se za mrežne prolaze obično uzima da ujedno obavljaju i sve funkcije rutera. Često se mrežnim prolazom (gateway-em) naziva svaki uređaj koji omogućava “izlaz” sa jedne mreže na drugu, bez obzira da li se radi o uređaju koji zaista obavlja zadatke specifične za mrežni prolaz, ili se radi o običnom ruteru.

GATEWAY

GATEWAY

MREŽA 1 MREŽA 2

Page 18: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

18

6. Opća struktura komunikacionih protokola

Kao što je već rečeno, komunikacioni protokoli predstavljaju formalne jezike i skupove pravila za komunikaciju između različitih elemenata računarske mreže. Protokoli definiraju sve detalje komunikacije, od najnižih detalja poput toga kakav se komunikacioni medij koristi, kakvi signali putuju kroz mrežu, itd. pa sve do najviših detalja poput kakve komande treba zadati korisnik da ostvari neku mrežnu uslugu. Sa ciljem lakše organizacije komunikacionih protokola, predviđeno je da se komunikacioni protokoli organiziraju slojevito, pri čemu je svaki sloj zadužen za neku grupu relativno srodnih zadataka. Slojevi komuniciraju međusobno tako što neki sloj ima pravo tražiti usluge od sloja koji se nalazi neposredno ispod njega, a pruža usluge sloju koji se nalazi neposredno iznad njega. Pri tome, najviši sloj protokola komunicira sa krajnjim korisnicima u komunikaciji, dok najniži sloj protokola komunicira direktno sa komunikacionim medijem.

Postoje razne podjele komunikacionih protokola na slojeve, a najviše je proučavana podjela

poznata kao ISO/OSI referentni model organizacije protokola. Po ovom modelu, protokoli se organiziraju u sljedećih sedam slojeva, redom od najnižeg ka najvišem:

1. Fizički sloj (Physical layer) 2. Sloj veze podataka (Data link layer) 3. Mrežni sloj (Network layer) 4. Transportni sloj (Transport layer) 5. Sesijski sloj (Session layer) 6. Prezentacioni sloj (Presentation layer) 7. Aplikacioni sloj (Application layer) Pri tome ISO (International Standard Organization) predstavlja naziv najpoznatije svjetske

organizacije za uspostavljanje standarda, dok OSI (Open System Interconection) predstavlja tzv. otvoreni sistem povezivanja. Ovdje “otvoreni” znači da se ne postavljaju nikakva ograničenja na vrstu računara i komunikacione opreme koji se po ovom standardu mogu međusobno povezivati u mrežu, kao i operativnih sistema koji se koriste na tim računarima i ostaloj inteligentnoj opremi, sve dok se ti računari, oprema i operativni sistemi pridržavaju specifikacija opisanih u standardu.

Bitno je naglasiti da kada protokol koji pripada nekom nivou (sloju) traži uslugu od protokola

nižeg nivoa, njega uopće ne zanimaju detalji kako će protokol nižeg nivoa obaviti taj zadatak (bitno je samo da on obavi šta je od njega traženo). Isto tako, kada protokol nekog nivoa nudi uslugu protokolu

APLIKACIONI SLOJ

PREZENTACIONI SLOJ

SESIJSKI SLOJ

TRANSPORTNI SLOJ

MREŽNI SLOJ

SLOJ VEZE PODATAKA

FIZIČKI SLOJ

KO RIS NIK

KOMUNIKACIONI MEDIJ

Page 19: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

19

višeg nivoa, njega uopće ne zanima šta će protokol višeg nivoa uraditi sa ponuđenim. Stoga je na bilo kojem nivou moguće upotrijebiti bilo koji od postojećih protokola koji obavljaju sve one funkcije koje bi trebao obavljati protokol tog nivoa na način kako je propisano odgovarajućim standardima za taj nivo. Ovo je još jedan od faktora koji demonstriraju “otvorenost” ISO/OSI modela.

Pored ISO/OSI modela, postoje i drugi slojeviti modeli protokola. Recimo, u današnjim mrežama,

“de facto” standard postao je petoslojni model poznat kao TCP/IP referentni model. Kod ovog referentnog modela, funkcije šestog i sedmog sloja kao i neke funkcije petog sloja prema ISO/OSI modelu objedinjene su u jedan sloj, koji se prosto naziva aplikacioni sloj, dok su preostale funkcije petog sloja prepuštene četvrtom (transportnom) sloju. Pored ove razlike, u TCP/IP modelu postoji znatno manja sloboda po pitanju izbora protokola koji će se koristiti u pojedinim slojevima. Tako se kod TCP/IP modela na trećem nivou koristi isključivo IP (Internet Protocol) protokol, dok se na četvrtom nivou koristi uglavnom TCP (Transport Control Protocol) protokol ili, eventualno, UDP (User Datagram Protocol) protokol. Drugim riječima, TCP/IP referentni model građen je prema nekim konkretnim protokolima trećeg i četvrtog nivoa, a ne prema općim preporukama šta bi ti protokoli trebali da rade. Stoga je ISO/OSI model univerzalniji. S druge strane, TCP/IP model je efikasniji i jednostavniji za implementaciju, jer je prilagođen specifičnim mrežnim arhitekturama, tako da se ne mora puno pažnje posvećivati univerzalnosti. Za potrebe akademskih razmatranja, zbog veće univerzalnosti se obično detaljno proučava ISO/OSI model, bez obzira što je većina današnjih mreža zasnovana na TCP/IP modelu. Sasvim je jasno da time razmatranja koja će biti provedena ne gube na općenitosti.

Protokoli fizičkog sloja su čisto hardverske prirode, tako da se implementiraju samo hardverski.

Protokoli drugog i trećeg sloja su u velikoj mjeri hardverski ovisni, tj. ovise od konkretnih komponenti koje sačinjavaju mrežu. Ovi protokoli se mogu implementirati bilo hardverski, bilo softverski, bilo kombinacijom hardvera i softvera (što je najčešći slučaj). Protokoli petog, šestog i sedmog nivoa su posve hadverski neovisni, tj. ne ovise od konkretnih komponenti računarske mreže. Ovi protokoli su orjentirani ka aplikacijama i izvode se isključivo softverski. Što se tiče protokola četvrtog nivoa, oni predstavljaju međuvezu između mrežno orjentiranih protokola nižeg nivoa i aplikativno orjentiranih protokola višeg nivoa, i pretežno se izvode softverski. U nastavku će biti ukratko opisani zadaci svakog od 7 slojeva protokola prema ISO/OSI modelu. Pojedini slojevi protokola će kasnije biti detaljnije razmotreni.

Fizički sloj protokola (Physical layer) definira sve fizičke i hardverske specifikacije za pojedine

komponente računarske mreže. To uključuje sljedeće specifikacije:

– Vrsta prenosnog signala (strujni, optički, bežični); – Vrsta i karakteristike kablova pri žičanoj komunikaciji; – Korišteni frekventni opseg pri bežičnoj komunikaciji; – Linijski kodovi, odnosno tačni oblici prenosnog signala kojim se prenose pojedini biti

(jedinice odnosno nule) ili skupine bita; – Da li će se koristiti modulacione tehnike ili ne; – Koje će se modulacione tehnike koristiti (ukoliko se koriste modulacione tehnike); – Naponski nivoi pri upotrebi strujnog signala (npr. prema RS 232 specifikaciji, logička nula

se predstavlja sa +12 V, a logička jedinica sa –12 V); – Ulazne i izlazne otpornosti priključnih uređaja; – Rasporedi pojedinih priključaka (pinova) na utikačima i utičnicama, i kakvo je značenje

signala na pojedinim priključcima; U vezi sa rasporedom priključaka na utikačima i utičnicama, na ovom mjestu dobro je istaći

specifičnosti kablova za direktno međusobno povezivanje dva računara, koji su poznati i kao unakrsni ili cross-over kablovi. Njihova specifičnost je u tome što su priključci koji služe za emitiranje informacija na jednom kraju kabla povezani sa priključcima koji služe za prijem informacija na drugom kraju i obrnuto (odnosno, imamo unakrsno povezivanje). Na taj način je omogućeno da se informacije koje emitira jedan računar neposredno primaju na drugom računaru. Po ovome se

Page 20: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

20

cross-over kablovi razlikuju od većine drugih kablova, kod kojih su priključci sa jedne strane kabla povezani sa odgovarajućim priključcima sa druge strane, a ne unakrsno.

Sve komponente računarske mreže koje imaju direktan pristup komunikacionom mediju, poput

mrežnih adaptera, repetitora i habova, moraju biti izvedeni u skladu sa specifikacijama nekog od utvrđenih protokola prvog nivoa. Ethernet mrežna tehnologija specificira nekoliko različitih standarda (protokola) za fizički sloj protokola. Isto vrijedi i za druge LAN i PAN mrežne tehnologije kao što su Token Ring i Bluetooth.

Glavne funkcije i usluge koje se vrše u fizičkom sloju su sljedeće:

– Uspostavljanje i prekid fizičke veze sa komunikacionim medijem; – Pretvaranje “sirove” skupine bita koji dolaze od sloja veze podataka u stvarne signale (npr.

električne) koji putuju kroz komunikacioni medij; – Izvedba modulacije (na mjestu slanja) odnosno demodulacije (na mjestu prijema); – Učešće u procesima u kojima se isti komunikacioni resursi dijele između više korisnika (ovo

prvenstveno uključuje kontrolu toka signala).

S obzirom da su protokoli prvog nivoa zapravo hardverske i druge tehničke specifikacije, oni su od prvenstvenog značaja za inžinjere hardvera i proizvođače mrežne opreme. Stoga protokole prvog nivoa nećemo detaljnije razmatrati.

Sloj veze podataka (Data Link Layer) brine se o sigurnom prenosu bita između susjednih čvorišta

u mreži, tj. između dva računara koji su između sebe neposredno povezani komunikacionim medijem, eventualno uz pomoć elementarnih uređaja za razgranavanje kao što su habovi ili switchevi, bez dodatnih posrednika kao što su drugi računari ili ruteri. Za razliku od protokola fizičkog sloja, protokoli sloja veze podataka (i svih viših slojeva) barataju samo sa logičkom reprezentacijom bita u vidu nula odnosno jedinica, ne ulazeći u to kako su ti biti fizički predstavljeni pri prenosu kroz komunikacioni medij.

Protokoli drugog nivoa (tj. protokoli sloja veze podataka) organiziraju podatke koji mu dolaze od

strane protokola mrežnog sloja u skupine bita koje se nazivaju ramovi ili okviri (frames). Svaki okvir pored čistih podataka sadrži i zaglavlje, u kojem se nalaze dopunske informacije vezane za to kako treba postupati sa podacima. Struktura zaglavlja zavisi od konkretnog protokola, ali u njemu se gotovo uvijek, između ostalog, nalaze i fizičke adrese (recimo MAC adrese) izvorišnog i odredišnog uređaja (uskoro ćemo vidjeti zbog čega su ove informacije potrebne). Pored toga, okviri tipično na svom kraju sadrže i dodatne (redudantne) informacije koje pomažu da se utvrdi da li je okvir prenesen korektno ili ne. Taj dodatak čini tzv. rep (tail) okvira. O strategijama za detekciju grešaka u prenosu biće detaljno govora kasnije.

Protokoli sloja veze imaju mnogobrojne funkcije. Postoji mnogo protokola koji pripadaju ovom

sloju, koji se drastično razlikuju po skupu funkcija koje podržavaju. Tako, na primjer, postoje posve rudimentalni protokoli sloja veze podataka, koji podržavaju samo najosnovnije funkcije, dok s druge strane postoje i vrlo sofisticirani protokoli sloja veze koji podržavaju mnoštvo različitih funkcija.

Kako su protokoli drugog nivoa odgovorni za prenos okvira kroz komunikacioni medij, jasno je

da je pri takvom prenosu potrebno vjerovatnoću greške pri prenosu učiniti što je god moguće manjom. Stoga većina protokola drugog nivoa implementira neke strategije detekcije grešaka u prenosu (koristeći informacije pohranjene u repu okvira), kao i postupke šta činiti u slučaju da se detektira greška u prenosu. Drugim riječima, ovim protokolima se specificira kako sa što je god moguće većom vjerovatnoćom utvrditi da li je okvir prenesen bez greške ili ne, zatim kako obavjestiti pošiljaoca o tome, kao i šta učiniti ukoliko se sigurno zna da je došlo do greške u prenosu. O algoritmima kako se može vršiti otkrivanje i eventualno korigiranje grešaka u prenosu govorićemo detaljno kasnije.

ZAGLAVLJE PODACI REP

Page 21: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

21

Okviri koje protokoli drugog nivoa šalju kroz komunikacioni kanal mogu da uopće ne sadrže nikakve korisničke podatke. Na primjer, postoje specijalni statusni okviri, kojim se prenose informacije da li je neka operacija ispravno obavljena ili ne (npr. da li je okvir uspješno primljen ili ne), kao i komandni okviri, kojima se prenose zahtjevi za izvođenje neke operacije (npr. zahtjev za ponovnim slanjem okvira koji nije uspješno prenesen). Naravno, negdje u zaglavlju okvira mora stajati informacija da li je u pitanju okvir sa podacima, ili se radi o statusnom ili komandnom okviru. U posljednja dva slučaja protokoli drugog nivoa moraju uspostaviti dogovor kako se kodiraju različite statusne informacije odnosno zahtjevi za izvođenjem pojedinih operacija.

Bitno je naglasiti da se protokoli sloja veze podataka brinu samo kako pouzdano isporučiti okvir

do susjednog čvorišta, pri čemu ih uopće ne zanima koje je krajnje čvorište gdje podaci treba da stignu. Informacija o tome koje je to susjedno čvorište nalazi se u zaglavlju poruke, tipično u vidu njegove fizičke (MAC) adrese. Inteligentna čvorišta koja imaju više priključaka, kao što su mrežni preklopnici (switchevi) i mrežni mostovi, moraju poznavati protokole drugog nivoa. Preciznije, oni moraju biti u stanju pročitati dio zaglavlja okvira u kojem se nalaze podaci o fizičkoj adresi susjednog čvorišta ka kojem se okvir treba usmjeriti. Također, oni moraju iščitavati dio zaglavlja okvira u kojem se nalaze podaci o fizičkoj adresi čvorišta sa kojeg okvir pristiže, da bi mogli ažurirati tabelu koja govori o tome koje su fizičke adrese uređaja priključenih na priključke. O ovome smo govorili kada smo opisivali ulogu switcheva. Ovdje se uviđa jasna razlika između switcheva i recimo habova koji poznaju samo protokole prvog nivoa.

Pored upravljanja tokom veze, poput kontrole grešaka u prenosu i postupanja u slučaju detekcije

greške, protokoli drugog nivoa definiraju i pravila pristupa mrežnom mediju (na primjer, strategiju CSMA/CD, o kojoj smo već govorili). Stoga se sloj veze podataka ponekad dijeli na dva podsloja:

– Podsloj pristupa mediju, odnosno MAC podsloj (Media Access Control); – Podsloj upravljanja vezom, odnosno LLC podsloj (Logical Link Control). Ethernet tehnologija definira svoj vlastiti protokol drugog nivoa, poznat prosto pod imenom

Ethernet Protocol, a pored njega drugi poznati protokoli drugog nivoa su: – HDLC (High-level Data Link Control); – ADCCP (Advanced Data Communication Control Protocol); – PPP (Point-to-Point Protocol); – SLIP (Serial Line Internet Protocol). SLIP je najprostiji protokol drugog nivoa. Ovo je prvi protokol drugog nivoa koji je bio razvijen

za potrebe komunikacija putem Interneta u kojima se veza uspostavljala po pozivu (dial-up veza). Međutim, SLIP protokol je krajnje rudimentalan, i podržava samo najelementarnije funkcije koje su neophodne za protokole drugog nivoa. Recimo, ovaj protokol ne omogućava nikakvu detekciju ispravnosti okvira koji se prenose. Stoga je ovaj protokol praktično u potpunosti izbačen u koristi PPP protokola, koji se tipično koristi za istu svrhu. HDLC i ADCCP predstavljaju primjere sofisticiranih protokola drugog nivoa, koji podržavaju mnogobrojne funkcije.

Za razliku od protokola sloja veze podataka, protokoli mrežnog sloja (protokoli trećeg nivoa)

definiraju pravila prenosa između dva čvorišta mreže koji respektivno predstavljaju izvor podataka i krajnje odredište podataka, a ne samo između dva susjedna čvorišta. Blok bita koji protokol trećeg nivoa dobija na dalju obradu od strane protokola četvrtog nivoa, zajedno sa odgovarajućim zaglavljem koje na početak ovog bloka dodaju protokoli trećeg nivoa (za svoje interne potrebe), u terminologiji protokola trećeg nivoa obično se naziva paket ili datagram.

Jedan od zadataka protokola trećeg nivoa je utvrđivanje putanje kuda paket treba putovati kroz

mrežu da bi stigao do željenog krajnjeg odredišta. U slučaju da postoji više mogućih putanja duž kojih je moguće dostići odredište, protokoli trećeg nivoa obično implementiraju neku strategiju izbora optimalne putanje, koristeći neke kriterije optimalnosti (poput kriterija minimalnog procijenjenog

Page 22: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

22

trajanja transporta, itd.). Pri tome je važno naglasiti da razni paketi, koji mogu predstavljati razne fragmente jedne te iste poruke, mogu putovati posve različitim putevima od izvora do krajnjeg odredišta (sama fragmentacija poruka na pakete obavlja se pomoću protokola četvrtog nivoa). Stoga mrežni usmjerivači (ruteri), pored protokola prvog i drugog nivoa, obavezno moraju poznavati i protokole trećeg nivoa, s obzirom da su upravo oni zaduženi za određivanje putanja paketa kroz mrežu do željenog odredišta. O algoritmima usmjeravanja (rutiranja) govorićemo detaljnije kasnije.

S obzirom da su protokoli trećeg nivoa često dosta komplicirani, njihova čisto hardverska izvedba

bila bi dosta nepraktična i neisplativa, iako je principijelno moguća. Stoga se u ruterima protokoli trećeg nivoa tipično implementiraju barem dijelom ako ne i u potpunosti softverski. Posljedica je da ruteri tipično u sebi moraju sadržavati procesor, odnosno oni u osnovi predstavljaju računare specijalne namjene. U suštini, uz pomoć odgovarajućeg softvera i nešto pratećeg priključnog hardvera, moguće je bilo koji računar opće namjene učiniti ruterom. Softverska komponenta rutera omogućava i dodatnu pogodnost da je lako moguće praviti izmjene u detaljima implementiranih protokola (recimo sa ciljem promjene algoritama rutiranja), što bi bilo praktično nemoguće kada bi svi protokoli koje podržava neki ruter bili u potpunosti implementirani hardverski.

Protokoli trećeg nivoa za identifikaciju izvornog i odredišnog čvorišta u mreži ne koriste njihove

fizičke adrese (poput MAC adresa), nego uvode drugi sistem adresiranja prema kojem se čvorištima dodjeljuju mrežne odnosno logičke adrese. Na ovaj način je ostvarena mnogo veća fleksibilnost, jer su fizičke adrese kodirane u hardveru i nepromjenljive, dok se logičke adrese čvorišta mogu po volji dodjeljivati i mijenjati. Pored toga, iz fizičkih adresa je nemoguće razaznati da li dva računara pripadaju istoj lokalnoj mreži ili ne, dok se dodjela logičkih adresa može izvesti tako da je iz logičkih adresa odmah moguće zaključiti koji se računari nalaze unutar iste lokalne mreže.

Kako protokoli trećeg nivoa zahtijevaju usluge od protokola drugog nivoa, koji poznaju samo

fizičke adrese, jedan od zadataka protokola trećeg nivoa je i prevođenje logičkih adresa mrežnih čvorišta u njihove fizičke adrese, što je neophodno prije nego što se poruka na trećem nivou protokola uputi na dalju obradu protokolu drugog nivoa. Logičke adrese posjeduju sve komponente računarske mreže koje podržavaju protokole trećeg nivoa (to su računari kao krajnji učesnici u komunikaciji i ruteri kao usmjerivači toka komunikacije). Uređaji poput switcheva, koji ne poznaju protokole trećeg nivoa, ne posjeduju logičke adrese.

Sistem logičkog adresiranja zavisi od konkretnog protokola mrežnog sloja. Vjerovatno

najpoznatiji protokol mrežnog sloja je IP (Internet Protocol), koji za adresiranje čvorišta u mreži koristi 32-bitni broj nazvan IP adresa. Radi bolje preglednosti, IP adresa se obično predstavlja kao četiri 8-bitna broja zapisana dekadno, i međusobno razdvojena tačkom (npr. 192.128.10.3). Određena skupina bita unutar IP adrese identificira samu mrežu (što je neophodno u slučaju kada više manjih mreža čine dijelove jedne veće mreže), dok druga skupina bita unutar IP adrese identificira konkretno čvorište (npr. računar) unutar mreže. IP adrese se dijele u nekoliko klasa u zavisnosti od toga koliko je bita određeno za specifikaciju same mreže, a koliko bita za identifikaciju čvorišta unutar mreže. Nekoliko bita unutar IP adrese također specificiraju kojoj klasi pripada data IP adresa. O IP adresama i općenito o IP protokolu biće više govora kasnije. Inače, protokol IP je, kao što mu ime govori, razvijen prvenstveno za potrebe Internet mreže, ali se toliko popularizirao danas da se masovno koristi i u drugim tipovima mreža (pogotovo lokalnim mrežama) koje nemaju nikakav doticaj sa Internetom. Ovaj protokol nije u potpunosti u skladu sa ISO/OSI specifikacijama. Inače, najpoznatiji protokol trećeg nivoa koji je usklađen sa ISO/OSI modelom je protokol poznat pod nazivom X25.

Već je rečeno da se protokoli mrežnog sloja brinu da podaci uspješno stignu do krajnjeg

odredišta. Međutim, njihov zadatak nije da odrede koje je to krajnje odredište, nego im ta informacija stiže servirana od strane protokola višeg nivoa. U tom procesu, veliku ulogu igraju protokoli četvrtog nivoa, odnosno protokoli transportnog sloja. Upravo ovi protokoli razvrstavaju poruke pristigle od protokola višeg nivoa prema krajnjim odredištima i upućuju ih na slanje preko protokola trećeg nivoa. Slikovito rečeno, dok protokole trećeg nivoa možemo uporediti sa poštarima (koji samo raznose poštu do zadanog krajnjeg odredišta, pri čemu oni naravno znaju kako da pronađu to odredište), protokole

Page 23: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

23

četvrtog nivoa možemo uporediti sa poštom kao institucijom (koja razvrstava pristigle pošiljke i upućuje ih poštarima na raznošenje). Najpoznatiji protokoli četvrtog nivoa su:

– TCP (Transmission Control Protocol); – UDP (User Datagram Protocol); – SCTP (Stream Control Transfer Protocol). Još jedan od zadataka protokola četvrtog nivoa je fragmentacija poruka na pakete i sklapanje

pristiglih paketa. Naime, protokoli četvrtog nivoa pri slanju poruka poruke pristigle sa višeg nivoa protokola dijele na pakete manje dužine, koji se isporučuju protokolima trećeg nivoa. Kako ovi paketi mogu putovati različitim putevima kroz mrežu, nema garancije da će svi paketi stići na odredište u redoslijedu pristizanja. Stoga su protokoli četvrtog nivoa dužni da na mjestu prijema sklope pristigle pakete u ispravan redoslijed. Jasno je da je za tu svrhu potrebno vršiti neku numeraciju paketa (informacija o tome nalazi se u zaglavlju koje dodaju protokoli transportnog sloja). Također, ukoliko se desi da neki od paketa bude izgubljen ili da dođe do greške u prenosu, protokoli četvrtog nivoa dužni su izvršiti odbacivanje neispravnih paketa i zatražiti njihovu ponovnu isporuku. U svakom slučaju, ono što protokoli višeg nivoa predaju protokolima četvrtog sloja, trebalo bi na odredište stići tačno onako kako je predato, sa maksimalno mogućom pouzdanošću koju je moguće postići. Mrežni prolazi (gateway-i) pored obaveznih funkcija protokola prvog, drugog i trećeg sloja, nerijetko implementiraju i funkcije protokola četvrtog nivoa (što je neophodno u slučaju da mreže koje mrežni prolaz povezuje koriste različite transportne protokole).

Još je bitno naglasiti da su protokoli četvrtog nivoa (i nivoa višeg od četvrtog) u suštini orjentirani

ka komunikaciji između aplikacionih procesa koji se izvode na izvornom i odredišnom računaru, a ne između računara kao fizičkih uređaja. Razlika je jasna s obzirom da se na istom računaru može izvršavati više aplikacionih procesa. Stoga protokoli četvrtog nivoa moraju posjedovati neki način identifikacije aplikacionih procesa koji učestvuju u komunikaciji, tj. identifikaciju izvornog i odredišnog aplikacionog procesa. Ove informacije se također nalaze u zaglavlju koju dodaju protokoli transportnog sloja. Recimo, u terminologiji TCP i UDP protokola, identifikator aplikativnog procesa je običan broj (sa značenjem utvrđenim dogovorom), koji se naziva broj porta. Neki brojevi portova rezervirani su za aplikacije tačno određene namjene (npr. za prijem i slanje elektronske pošte), dok su ostali brojevi portova slobodni za potrebe komunikacije između proizvoljnih aplikacija (koje se, naravno, prije komunikacije moraju dogovoriti o broju porta tako da mogu jedna drugu prepoznati). Tako protokoli četvrtog nivoa uspostavljaju virtuelnu konekciju između izvornog i odredišnog aplikativnog procesa.

Uloga protokola sesijskog sloja (protokola petog nivoa) je prilično maglovita, i u velikom broju

slučajeva sesijski sloj ostaje potpuno neimplementiran. U načelu, protokoli petog nivoa bi trebali da reguliraju pravila za uspostavljanje i prekid veze između izvornih i odredišnih aplikacija, ali je ta funkcionalnost obično indirektno implementirana u drugim slojevima (tipično u transportnom sloju). Pored toga protokoli sesijskog sloja trebali bi obezbijediti sinhronizaciju između podataka koji dolaze iz različitih izvora. Stoga protokoli petog nivoa mogu biti značajni u situacijama koje se odvijaju u realnom vremenu, poput video konferencija kroz mrežu koje se odvijaju u realnom vremenu, gdje je potrebno obezbijediti sinhroniziran prenos slike, tona, titlova, itd. koji dolaze iz različitih izvora.

Svi protokoli koji pripadaju slojevima nižim od šestog, podatke koji se prenose posmatraju kao

puku hrpu brojeva, bez ikakve interpretacije šta oni predstavljaju. Protokolima prezentacionog sloja (tj. protokolima šestog nivoa) izuzetno je važna interpretacija podataka, tj. šta ta hrpa brojeva predstavlja, recimo da li ona predstavlja tekst, slikovne ili zvučne podatke, instrukcije nekog programa, itd. Generalno, protokoli šestog nivoa moraju posjedovati dovoljno informacija da mogu te podatke ispravno prezentirati onome ko te podatke zahtijeva. Recimo, ukoliko se radi o tekstualnim podacima, mora se znati da li su oni kodirani ASCII, UNICODE, EBCDIC ili nekim drugim kodom. Ukoliko se radi o slikovnim podacima, mora se znati format slikovnog zapisa, itd. Sve te informacije moraju biti pohranjene u onome što protokoli šestog nivoa prosljeđuju nižim slojevima. Sada, ukoliko neki protokol šestog nivoa na mjestu prijema ustanovi da poruka predstavlja tekstualnu poruku

Page 24: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

24

kodiranu EBCDIC kodom, a odredišni računar ne razumije taj kod nego ASCII kod, protokol šestog nivoa dužan je da izvrši konverziju svih znakova primljene poruke iz EBCDIC koda u ASCII kod. Slično se dešava pri prenosu drugih vrsta podataka.

Protokoli šestog nivoa mogu također odlučiti da se radi povećanja brzine prenosa podaci na neki

način kompresuju prije nego što se pošalju protokolima petog nivoa (pri tome se koriste algoritmi kompresije slični kao u programima arhiverima). Naravno, na mjestu prijema, protokol šestog nivoa mora primljene podatke ponovo dekompresovati prije nego što ih proslijedi sedmom sloju. Konačno, protokoli šestog nivoa mogu vršiti šifriranje podataka prilikom njihovog prosljeđivanja protokolima petog nivoa sa ciljem obezbjeđivanja tajnosti prenosa. Jasno je da tada na mjestu prijema protokoli šestog nivoa moraju obavljati odgovarajuće dešifriranje podataka primljenih od protokola petog nivoa prije njihovog prosljeđivanja protokolima sedmog nivoa.

Protokoli aplikacionog sloja (protokoli sedmog nivoa) definiraju šta konkretno neka aplikacija

poput web browsera (recimo Internet Explorer-a), klijenta za elektronsku poštu (recimo Outlook-a) ili ma kakva korisničke aplikacije pisane u nekom programskom jeziku, treba da uradi kada želi obaviti neku uslugu putem računarske mreže, poput slanja ili prijema neke datoteke, čitanja ili slanja elektronske pošte, itd. Na mjestu prijema, protokoli sedmog nivoa odlučuju šta će konačno uraditi sa prispjelim informacijama prije nego što one konačno dospiju do krajnjeg korisnika. U najpoznatije protokole sedmog nivoa spadaju sljedeći protokoli (mada mnogi od njih implementiraju i usluge šestog nivoa):

– HTTP (Hyper Text Transfer Protocol): jednostavan protokol prilagođen razmjeni

hipertekstualnih dokumenata; – FTP (File Transfe protocol): protokol posebno namjenjen za prijenos datoteka proizvoljne

sadržine, uključujući i programske datoteke; – SMTP (Simple Mail Transfer Protocol): vrlo jednostavan protokol za slanje elektronske

pošte; – POP (Post Office Protocol): jednostavan protokol za prijem elektronske pošte; – IMAP (Internet Mail Acess Protocol): nešto napredniji protokol za prijem elektronske pošte; – TELNET : trivijalan protokol namjenjen za rad sa udaljenim računarima.

Može izgledati neobično zbog čega je potrebno razlikovati recimo FTP i HTTP protokol.

Suštinska razlika je što FTP protokol mora smatrati svaku vrijednost bajta od 0 do 255 jednako mogućom, doj se HTTP protokol može osloniti na to da će biti prenošeni samo oni bajtovi koji mogu biti ASCII šifre nekih znakova (s obzirom da su svi hipertekstualni dokumenti interno kodirani korištenjem isključivo standardnih znakova koji se koriste i u ma kojem drugom čisto tekstualnom dokumentu).

FTP protokol, kao i većina drugih aplikacionih protokola, polazi od pretpostavke da se podaci

koje treba pribaviti nalaze na jednom računaru. Radi ubrzanja prenosa velikih datoteka, razvijeni su i napredni protokoli kao što su RapidShare i BitTorrent, koji se oslanjaju na činjenicu da je moguće da se identične kopije iste datoteke nalaze na više različitih računara. Ti protokoli uspostavljaju vezu sa čitavom skupinom računara koji sadrže kopije identične datoteke, i pribavljaju komade željene datoteke sa raznih računara i sklapaju ih u ispravnu cjelinu. Na taj način se tipično može postići znatno veća brzina dobavljanja datoteka nego putem klasičnog FTP protokola.

Kao što se već iz dosadašnjeg izlaganja moglo zaključiti, svaki od protokola koji pripadaju nekom

sloju na poruku koja je došla od strane protokola višeg nivoa dodaje odgovarajuće zaglavlje koje sadrži informacije neophodne za funkcioniranje tog protokola. Dakle, blokovi podataka koji pristižu na svaki od nivoa protokola već sadrže zaglavlja koja su dodana od strane protokola višeg nivoa, ali ta zaglavlja se za protokol posmatranog nivoa tretiraju čisto kao dio poruke, odnosno niti jedan protokol ne ulazi u sadržaj zaglavlja koje su dodali protokoli viših nivoa, već samo u zaglavlja koja su dodata od strane protokola istog nivoa. Izuzetak su jedino protokoli prvog nivoa, koji na blok podataka koji pristigne od protokola drugog nivoa ne dodaje ništa, već ga prenose onakav kakav jeste kroz

Page 25: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

25

komunikacioni medij (naravno, vršeći prilagodbu prenosnom mediju). Pored toga, većina protokola drugog nivoa pored zaglavlja tipično dodaju “rep“ na kraj poruke, koji najčešće služi za detekciju greške u prenosu, kao što smo već spominjali. Blok podataka koji protokol n-tog nivoa dobija od protokola višeg nivoa naziva se SDU (Service Data Unit) za taj nivo protokola, dok se blok podataka koji protokol n-tog nivoa prosljeđuje protokolu nižeg nivoa naziva PDU (Protocol Data Unit) za taj nivo protokola. Dakle, SDU za protokol n-tog nivoa je PDU za protokol n+1-vog nivoa, dok PDU za protokol n-tog nivoa postaje SDU za protokol n–1-og nivoa.

Tipično, PDU za n-ti nivo protokola nastaje tako da se na SDU na istom nivou dodaje

odgovarajuće zaglavlje i eventualno rep (kod protokola drugog nivoa). Jedina iznimka nastaje na četvrtom nivou protokola, gdje se SDU koji pristigne protokolu četvrtog nivoa razbija na manje fragmente. Pri tome se na svaki od fragmenata dodaje odgovarajuće zaglavlje. Tako formirani fragmenti (sa zaglavljem) sada čine PDU protokola četvrtog nivoa koji se prosljeđuju protokolima trećeg nivoa.

Na mjestu prijema, kada protokol nekog nivoa dobije blok podataka (PDU) od protokola nižeg

nivoa, on iščitava iz zaglavlja (i eventualno iz repa) one informacije koje mu trebaju, nakon čega odbacuje zaglavlje (i rep) prije nego što proslijedi poruku protokolu višeg nivoa. Na taj način, nakon odbacivanja zaglavlja i eventualno repa, PDU za protokol n-tog nivoa postaje SDU, koji daljim prosljeđivanjem protokolu n+1-og nivoa postaje PDU za protokol n+1-og nivoa. Iznimka nastaje na četvrtom nivou protokola, gdje se više primljenih PDU od protokola trećeg nivoa nakon iščitavanja i odbacivanja zaglavlja sklapa u jedinstven SDU koji se dalje prosljeđuje kao PDU višem sloju. Sve ovo je slikovito predstavljeno na sljedećoj slici, gdje je radi jednostavnosti zanemarena mogućnost fragmentacije i ponovnog sklapanja blokova do kojih tipično dolazi na četvrtom nivou protokola:

Naravno, protokoli određenog nivoa nakon čitanja zaglavlja primljenog bloka (PDU) imaju pravo

da primljeni PDU uopće ne prosljeđuju protokolu višeg nivoa ukoliko zaključe da se primljeni blok podataka uopće ne tiče protokola višeg nivoa (recimo, ako primljeni PDU ne predstavlja korisne informacije, nego samo izvještaj o lošem prijemu nekog bloka).

Z7 PORUKA Z6 Z5 Z4 Z3 Z2 R Z7 PORUKA Z6 Z5 Z4 Z3 Z2 R

Z7 PORUKA Z6 Z5 Z4 Z3

Z7 PORUKA Z6 Z5 Z4

Z7 PORUKA Z6 Z5

Z7 PORUKA Z6

Z7 PORUKA

PORUKA

Z7 PORUKA Z6 Z5 Z4 Z3

Z7 PORUKA Z6 Z5 Z4

Z7 PORUKA Z6 Z5

Z7 PORUKA Z6

Z7 PORUKA

PORUKA

FIZI ČKI KANAL VEZE

MJESTO SLANJA MJESTO PRIJEMA NIVO

7

6

5

4

3

2 2

1

Page 26: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

26

7. Strategije za detekciju i korekciju grešaka u prenosu

Prilikom prenosa bilo kakvih informacija, te informacije se moraju kodirati kao sekvence bita. Kodiranje se tipično vrši tako da se poruka dijeli u manje elementarne cjeline (npr. znakove, slogove itd.), nakon čega se svaka od tih cjelina jednoznačno zamjenjuje nekom sekvencom bita. Svaku od cjelina kojoj se pridružuje neka određena sekvenca bita zvaćemo elementarna poruka ili simbol, dok ćemo odgovarajuće sekvence bita pridružene simbolima zvati kodne riječi. Na primjer, pri sistemu kodiranja poznatom kao ASCII kod, simbolu “A” odgovara kodna riječ 01000001.

Postoje razne strategije kako se kodiraju simboli, sa ciljem da se postignu neki određeni ciljevi,

recimo maksimalna brzina prenosa (to se postiže minimiziranjem ukupnog broja bita koje se koriste za kodiranje cjelokupne poruke koju želimo prenijeti) ili recimo maksimalna sigurnost prenosa. Tako se, recimo, mninimiziranje ukupnog broja bita koji se koriste za kodiranje cjelokupne poruke koja se prenosi može postiže tako što se simbolima koji su vjerovatniji pridružuju kraće kodne riječi nego manje vjerovatnim simbolima. Na primjer, najčešći simboli koji se pojavljuju u prenosu teksta su slova “A” i “E”, tako da bismo ovim simbolima mogli pridružiti recimo kodne riječi 00 i 01, dok bismo drugim simbolima pridružili neke duže kodne riječi. Primijetimo da bi tada sve druge kodne riječi morale počinjati sa 1. Zaista, kada bismo imali kodnu riječ recimo 01101, tada nakon prijema poruke poput 011011101011101, prijemnik ne bi mogao znati da li je prvi simbol onaj kodiran sa kodnom riječi 01 iza kojeg slijedi ostatak poruke kodiran sa 1011101011101, ili je prvi simbol onaj kodiran sa 01101 iza kojeg slijedi ostatak poruke kodiran sa 1101011101. Strategija po kojima dužina kodne riječi zavisi od vjerovatnoće pojavljivanja odgovarajućeg simbola naziva se statističko kodiranje. Najpoznatiji kod te vrste je tzv. Huffmanov kod, u čije se opisivanje nećemo upuštati.

Strategijama kodiranja poruka bavi se naučna oblast poznata kao teorija kodiranja. Radi se o

prilično kompleksnoj oblasti, čije detaljno proučavanje daleko izlazi izvan okvira ovog kursa. Na ovom mjestu ćemo samo ukazati kako se pogodnim izborom kodnih riječi mogu detektirati i eventualno korigirati greške do kojih može doći prilikom prolaska poruka kroz komunikacioni kanal.

Radi jednostavnosti, pretpostavimo da su sve kodne riječi iste dužine n (mada smo već vidjeli da

postoje strategije kodiranja kod kojih se različitim simbolima pridružuju kodne riječi različitih dužina). Jasno je da sa n bita možemo dobiti ukupno N = 2n kodnih riječi. Međutim, ukoliko svaku od mogućih N kodnih riječi iskoristimo za kodiranje nekog od N simbola (tj. neki simbol x1 kodiramo sa 000...00, simbol x2 sa 000...01, simbol x3 sa 000...10, simbol xN sa 111...11), bilo kakva detekcija greške postaje nemoguća. Naime, kako svaka moguća sekvenca od n bita predstavlja kodnu riječ nekog mogućeg simbola, bilo kakva greška u prenosu će samo pretvoriti kodnu riječ jednog simbola (recimo xi) u kodnu riječ nekog drugog simbola (recimo xj), tako da ako je poslan simbol xi, prijemnik će prosto misliti da je umjesto nje poslan simbol xj, bez ikakve mogućnosti da sazna da nije bilo tako.

Iz izloženog slijedi da je za detekciju grešaka nužno dopustiti da neke sekvence bita ne kodiraju

niti jedan valjani simbol. Drugim riječima, ukoliko imamo N = 2n različitih simbola (radi jednostavnosti razmatranja pretpostavićemo da je N stepen broja 2, iako principijelno isti zaključci vrijede i ukoliko nije), i ukoliko želimo ostvariti mogućnost detekcije grešaka, za njihovo kodiranje moramo utrošiti veći broj bita od n, recimo m. Na taj način dobijamo 2m mogućih kodnih riječi, od kojih ćemo svega N kodnih riječi biramo za kodiranje simbola (jer toliko simbola imamo). Kako je 2m = N ⋅ 2m–n, slijedi da ćemo na taj način imati 2m–n puta više kodnih riječi nego simbola. Kodne riječi koje zaista kodiraju neki simbol zvaćemo legalne kodne riječi, dok ćemo ostale kodne riječi zvati ilegalne kodne riječi. Tako, na svaku legalnu kodnu riječ dolazi 2m–n – 1 ilegalnih kodnih riječi. Jasno je da ukoliko dođe do greške u prenosu, ona će sigurno biti detektirana ukoliko greška dovede do transformacije neke legalne kodne riječi u ilegalnu. Međutim, ukoliko greška dovede do transformacije neke legalne kodne greške u drugu legalnu kodnu riječ, takva greška se ne može detektirati. Drugim riječima, niti jedna strategija ne može obezbijediti stoprocentnu mogućnost detekcije grešaka. Stoga je cilj obezbijediti da se vjerovatnoća da greška ostane nedetektirana svede na prihvatljivo mali iznos. To se postiže odgovarajućim izborom legalnih kodnih riječi iz skupa svih mogućih kodnih riječi, o čemu ćemo govoriti u nastavku.

Page 27: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

27

Kao primjer, pretpostavimo da imamo četiri simbola x1, x2, x3 i x4, koje ćemo kodirati respektivno sa kodnim riječima 000, 011, 101 i 110. Neka je, recimo poslan simbol x2, kojem odgovara kodna riječ 011. Ukoliko prilikom prenosa dođe do greške na prvom bitu, prijemnik će primiti kodnu riječ 111, i odmah zaključiti da nešto nije u redu, jer je ova kodna riječ ilegalna. Slično bi se desilo i ukoliko greška nastupi na drugom ili trećem bitu (odgovarajuće primljene kodne riječi bile bi 001 odnosno 010, od kojih su obje ilegalne). Međutim, ukoliko bi greška nastupila na dva bita, recimo na prvom i trećem, prijemnik bi primio legalnu kodnu riječ 110, i zaključio da je poslan simbol x4 umjesto x2. Interesantno je da će greška na sva tri bita biti detektirana (odgovarajuća ilegalna kodna riječ u tom slučaju biće 100).

Detaljnijom analizom možemo uvidjeti da ova strategija kodiranja za četiri simbola omogućava

detekciju greške za bilo koji od poslanih simbola x1 – x4 ukoliko greška nastupi na samo jednom bitu, ili na sva tri bita, dok greška koja nastane na dva od tri bita neće nikada biti detektirana. Primijetimo da je detektiranje grešaka omogućeno pogodnim izborom kodnih riječi, a ne samo činjenicom da je broj bita upotrijebljen za kodiranje veći od teoretskog minimuma. Recimo, da smo za kodiranje simbola x1 – x4 respektivno upotrijebili kodne riječi 000, 011, 100 i 111, greška na prvom bitu pri slanju simbola x2 ne bi bila detektirana, jer bi takva greška prevela njenu kodnu riječ 011 u drugu legalnu kodnu riječ 111 (tj. kodnu riječ simbola x4).

Pogodnim izborom kodnih riječi moguće je ostvariti ne samo detekciju, nego i automatsku

korekciju izvjesnih tipova grešaka. U prethodnom primjeru to nije bilo moguće. Recimo, ukoliko primimo ilegalnu kodnu riječ 001, čak i ako znamo da je samo jedan bit pogrešan, ne možemo znati da li je poslana legalna kodna riječ 101 uz grešku na prvom bitu, legalna kodna riječ 011 uz grešku na drugom bitu ili legalna kodna riječ 000 uz grešku na trećem bitu. Međutim, uzmimo ponovo da imamo četiri simbola x1, x2, x3 i x4, za čije ćemo kodiranje respektivno upotrijebiti kodne riječi 00000, 01011, 10101 i 11110. Pretpostavimo sada da je na mjestu prijema primljena kodna riječ 01001. Jasno je da je došlo do greške u prenosu, jer je ova kodna riječ ilegalna. Pogledajmo sada kako je ova kodna riječ mogla nastati. Ona je mogla nastati od legalne kodne riječi 01011 greškom na četvrtom bitu. Ona je također mogla nastati i od drugih legalnih kodnih riječi, ali greškom na više od jednog bita (od kodne riječi 00000 greškom na drugom i petom bitu, od kodne riječi 10101 greškom na prvom, drugom, trećem i četvrtom bitu, i od kodne riječi 11110 greškom na prvom, trećem, četvrtom i petom bitu). Ukoliko pretpostavimo da je vjerovatnoća greške na više od jednog bita znatno manja od vjerovatnoće greške na samo jednom bitu, možemo zaključiti da je vrlo vjerovatno poslan simbol x2 kojem odgovara kodna riječ 01011. Drugim riječima, uz pretpostavku da je samo jedan bit pogrešan, u navedenom primjeru grešku možemo ne samo detektirati, nego i korigirati.

Pažljivijom analizom možemo uočiti da se za svaki od četiri simbola x1 –

x4 greška na jednom bitu može korigirati, jer se izmjenom ma kojeg bita u njihovim kodnim riječima dobijaju takve kodne riječi koje se iz samo jedne legalne kodne riječi mogu dobiti izmjenom jednog bita, dok se od svih ostalih kodnih riječi razlikuju za više od jednog bita. Preciznije, prijemnik bi mogao koristiti sljedeću strategiju za otkrivanje koji je simbol najvjerovatnije poslana:

– Poslani simbol je x1 ako je primljeno 00000, 00001, 00010, 00100, 01000 ili 10000; – Poslani simbol je x2 ako je primljeno 00011, 01001, 01010, 01011, 01111 ili 11011; – Poslani simbol je x3 ako je primljeno 00101, 10001, 10100, 10101, 10111 ili 11101; – Poslani simbol je x4 ako je primljeno 01110, 10110, 11010, 11100, 11110 ili 11111 Pretpostavimo sada da je primljena (ilegalna) kodna riječ 00111. Ona nije nikako mogla nastati

izmjenom niti jedne legalne kodne riječi na samo jednom bitu. Drugim riječima, sa sigurnošću znamo da su barem dva bita pogrešna. Dalje, ona je mogla nastati izmjenom kodnih riječi 01011 ili 10101 na dva bita (drugom i trećem za kodnu riječ 01011, odnosno prvom i četvrtom za kodnu riječ 10101), ili izmjenom kodnih riječi 00000 ili 11110 na tri bita. Pretpostavimo li da je vjerovatnoća greške na tri bita znatno manja od greške na dva bita, možemo sa velikom sigurnošću tvrditi da je poslan simbol x2 (kodna riječ 01011) ili simbol x3 (kodna riječ 10101), ali nemamo nikakvog kriterija kojim bi se odlučili između ova dva simbola. Automatska korekcija greške u ovom slučaju nije moguća.

Page 28: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

28

Za kod iz prethodnog primjera možemo lako ustanoviti da je u stanju detektirati sve greške na jednom i dva bita, kao i poneke greške na više od dva bita, dok je u stanju korigirati sve greške na koje nastanu na samo jednom bitu, ali nije u stanju korigirati niti jednu grešku koja nastane na dva ili više bita. Sljedeća tabela prikazuje sve moguće primljene kodne riječi zajedno sa najvjerovatnijim simbolima koji odgovaraju toj kodnoj riječi (oznaka “???” govori da odluku nije moguće donijeti):

Kod Simbol Kod Simbol Kod Simbol Kod Simbol

00000 x1 01000 x1 10000 x1 11000 ??? 00001 x1 01001 x2 10001 x3 11001 ??? 00010 x1 01010 x2 10010 ??? 11010 x4 00011 x2 01011 x2 10011 ??? 11011 x2 00100 x1 01100 ??? 10100 x3 11100 x4 00101 x3 01101 ??? 10101 x3 11101 x3 00110 ??? 01110 x4 10110 x4 11110 x4 00111 ??? 01111 x2 10111 x3 11111 x4

Provedena razmatranja mogu se lako generalizirati. Za tu svrhu definira se pojam Hammingove

udaljenosti. Hammingova udaljenost h(xi, xj) dvije kodne riječi xi i xj definira se kao broj bita na

kojima se kodne riječi xi i xj razlikuju. Ovako definirana udaljenost zadovoljava tipične osobine koje se očekuju od svake razdaljinske (metričke) funkcije, poput nenegativnosti, simetričnosti i tzv. nejednakosti trougla h(xi,

xj) ≤ h(xi,

xk) + h(xk,

xj). Da bismo uvidjeli smisao ove definicije, pretpostavimo sada da imamo kodiranje kod kojeg svake dvije legalne kodne riječi xi i xj zadovoljavaju uvjet h(xi,

xj) ≥ q, gdje je q neka vrijednost. Jasno je da je u tom slučaju potrebno da nastane greška na barem q bita da bi se jedna legalna kodna riječ transformirala u drugu legalnu kodnu riječ, odnosno takav kod sigurno detektira sve greške na manje od q bita. Dalje, ukoliko je greška nastupila na manje od q/2 bita, dobijena kodna riječ će biti bliža (u smislu Hammingove udaljenosti) jednoj od kodnih riječi nego ma kojoj drugoj. Zaista, neka je greška nastupila na r < q/2 bita. Tada je udaljenost između primljene kodne riječi i kodne riječi koja je trebala biti poslana tačno r. Kako su legalne kodne riječi udaljene za barem q, to udaljenost primljene kodne riječi od ma koje druge legalne kodne riječi osim one koja je poslana iznosi barem q – r > q/2. Dakle, pod navedenim pretpostavkama, greška se može ne samo detektirati nego i korigirati.

Na osnovu provedenih razmatranja možemo donijeti sljedeće zaključke:

– Da bi kod bio u stanju detektirati greške koje nastanu na ne više od e bita, ma koje dvije kodne riječi xi i xj moraju zadovoljavati uvjet h(xi, xj) ≥ e + 1;

– Da bi kod bio u stanju korigirati greške koje nastanu na ne više od k bita, ma koje dvije kodne riječi xi i xj moraju zadovoljavati uvjet h(xi, xj) ≥ 2 k + 1;

– Da bi kod bio u stanju detektirati greške koje nastanu na ne više od e bita i korigirati greške koje nastanu na ne više od k < e bita, ma koje dvije kodne riječi xi i xj moraju zadovoljavati uvjet h(xi, xj) ≥ k + e + 1.

Ideja za automatsku korekciju grešaka se očigledno zasniva na pretpostavci da se vjerovatnoća

pojave grešaka na više od jednog bita u relativno kratkom bloku bita osjetno smanjuje sa porastom bita, tako da su greške na više bita relativno slabo vjerovatne. Ova pretpostavka je uglavnom tačna, osim za tzv. usnopljene greške, koje ćemo posebno razmotriti. Međutim, u praksi se automatska korekcija grešaka često uopće ne vrši, jer je nepouzdano osloniti se na pretpostavku da je greška nastupila na relativno malom broju bita, nego je sigurnije zatražiti ponovno slanje neispravnog bloka (retransmisiju). Ipak, postoje situacije u kojima se, zbog rada u realnom vremenu, retransmisije ne smiju vršiti, ili se smiju vršiti samo iznimno, a u kojima se mogu tolerirati sporadične pogrešne interpretacije primljenih simbola. Recimo, takve situacije nastaju kod prenosa govora, tona ili slike u realnom vremenu. U takvim primjenama, automatska korekcija grešaka može biti veoma praktična. Automatska korekcija grešaka je također pogodna u slučaju kada imamo jednosmjerne veze, u kojima prijemnik ne može obavijestiti pošaljioca da je eventualno došlo do greške u prenosu.

Page 29: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

29

Izloženi koncepti mogu se lijepo geometrijski ilustrirati pomoću grafovske strukture nazvane hiperkocka. Hiperkocka je graf u kojem svakom čvoru odgovara po jedna n-bitna kodna riječ, a ivice spajaju one i samo one kodne riječi koje se razlikuju u jednom bitu. Sljedeća slika prikazuje hiperkocku za slučaj n = 3:

Na sljedećoj slici je ista hiperkocka prikazana malo drugačije, što i objašnjava naziv hiperkocka.

Vidimo da se za n = 3 čvorovi i ivice mogu shvatiti kao tjemena i bridovi kocke, pri čemu se biti b1, b2 i b3 neke kodne riječi c1b2b3 mogu interpretirati kao koordinate tjemena te kocke. Analogno se čvorovi i ivice hiperkocke za proizvoljno n mogu interpretirati kao tjemena i bridovi nekog n-dimenzionalnog analogona kocke u n dimenzija, pri čemu biti kodnih riječi predstavljaju koordinate tjemena. U tom smislu je hiperkocka (u smislu grafa) projekcija takve tvorevine u dvodimenzionalnu ravan.

Lako se vidi da je Hammingova udaljenost h(xi,

xj) između dvije kodne riječi jednaka minimalnom broju ivica koje treba preći da se iz čvora koji odgovara kodnoj riječi xi dođe do čvora koji odgovara kodnoj riječi xj. U nastavku ćemo radi jednostavnosti posmatrati slučaj n = 3, jer su hiperkocke za veće vrijednosti n glomazne i nepregledne. Sljedeća slika prikazuje situaciju u kojoj su za kodiranje simbola x1

– x4 upotrijebljene redom kodne riječi 000, 011, 101 i 110 (crni čvorovi na slici). Sa slike je vidljivo da udaljenost između svake dvije legalne kodne riječi iznosi 2. Svaka greška na jednom bitu dovodi do transformacije u ilegalnu kodnu riječ (bijeli čvorovi na slici). Međutim, svi bijeli čvorovi su podjednako udaljeni od po dva crna čvora, pa se ne može znati koja je bila izvorna kodna riječ, odnosno izvorni simbol. Stoga navedeni kod omogućava detekciju grešaka na jednom bitu, ali ne i njihovu korekciju.

000 001

010 011

100 101

110 111

010 110

001 101

011 111

000 100 b1

b2

b3

000 100

010 110

001 101

011 111

x1

x2

x3

x4

Page 30: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

30

Na sljedećoj slici, pretpostavili smo da imamo samo dva simbola x1 i x2, kodirana respektivno sa 000 i 111. U ovom slučaju, minimalno rastojanje kodnih riječi je 3, tako da bi ovaj kod mogao detektirati greške na jednom i dva bita, ali i korigirati greške na jednom bitu. Zaista, sa slike se jasno vidi da su kodne riječi koje mogu nastati pri slanju simbola x1 odnosno x2 uz grešku na jednom bitu posve različite, tako da je moguće znati koji je simbol zaista bio poslan.

Nakon ovog teoretskog uvoda, ostaje problem sinteze kodnih riječi, odnosno problem

konstrukcije takvih kodnih riječi koje će zadovoljiti željene zahtjeve po pitanju mogućnosti detekcije i korekcije grešaka. U skladu sa tim, sve moguće kodove možemo grubo podijeliti u dvije skupine:

– Sistematski kodovi – Nesistematski kodovi Kod sistematskih kodova, moguće je iz svake kodne riječi izdvojiti podskup bita koji sadrži

korisnu informaciju (tzv. informacioni biti), dok ostali biti služe kao dopunski (redudantni) biti čija je jedina uloga obezbijediti dovoljno Hammingovo rastojanje između kodnih riječi. Drugim riječima, u slučaju da je primljena kodna riječ ispravna, simbol je moguće odrediti samo iz informacionih bita, uz potpuno odbacivanje redudantnih bita. Nesistematski kodovi su oni kod kojih ovaj uvjet nije ispunjen. Na primjer, svi kodovi koje smo dosada razmatrali kao primjere bili su sistematski. Recimo, u kodu u kojem se simboli x1, x2, x3 i x4 kodiraju respektivno kodnim riječima 000, 011, 101 i 110, možemo uzeti da su prva dva bita informacioni biti, dok je treći bit redudantni bit. Zaista, već su prva dva bita u ovim kodnim riječima (koji respektivno glase 00, 01, 10 i 11) dovoljna za njihovo razlikovanje, tako da se iz njih može odrediti simbol (zapravo, ako bolje pogledamo, vidjećemo da u ovom kodu bilo koja dva bita možemo proglasiti za informacione, a onaj treći za redudantni bit).

Matematski aparat sistematskih kodova je mnogo bolje razvijen nego za nesistematske kodove, i

u daljem ćemo samo njih i razmatrati. Jasno je da kod sistematskih kodova svaki od redudantih bita mora na neki način zavisiti od informacionih bita. U skladu sa tim, sistematski kodovi se dijele na dvije skupine:

– Linearni kodovi – Nelinearni kodovi Kod linearnih kodova, svaki redudantni bit ili je jednak nekom od informacionih bita, ili je jednak

sumi po modulu 2 (odnosno ekskluzivnoj disjunkciji) nekih od informacionih bita. Kod nelinearnih kodova, redudantni biti mogu biti i neka općenitija funkcija informacionih bita. Recimo, svi dosada razmotreni kodovi bili su linearni. Za slučaj koda iz prethodnog primjera, za ma koju kodnu riječ b1b2b3 vrijedi b3 =

b1 ⊕ b2. Za slučaj koda koji omogućava autokorekciju grešaka u kojem se simboli x1 –

x4 kodiraju respektivno sa 00000, 01011, 10101 i 11110, u svakoj kodnoj riječi b1b2b3b4b5 biti b1 i b2 su informacioni, dok za ostale bite vrijedi b3 =

b1, b4 = b2 i b5

= b1 ⊕ b2. U praksi se najčešće koriste upravo linearni kodovi zbog jednostavnog i detaljno proučenog matematskog aparata, koji se zasniva na tzv. matričnom računu po modulu 2, koji je analogan klasičnom matričnom računu, samo što je klasično sabiranje zamijenjeno sumom po modulu 2 (tj. operacijom “⊕”). Tako se definiraju matrični produkt po modulu 2, inverzna matrica po modulu 2, itd. Navedene operacije imaju značaj za potrebe analize i sinteze linearnih kodova. Jedna od značajnih osobina linearnih kodova je da sabiranje ma koje dvije legalne kodne riječi po modulu 2 bit po bit daje ponovo legalnu kodnu riječ.

000 001

010 011

100 101

110 111

x1

x2

Page 31: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

31

Kako se svaka poruka prije slanja cijepa na blokove, sistematske kodove možemo podijeliti i na sljedeće dvije skupine:

– Blokovski kodovi – Konvolucioni kodovi Kod blokovskih kodova, redudantni biti uvijek zavise samo od informacionih bita unutar tekućeg

bloka, do kod konvolucionih kodova redudantni biti mogu zavisiti i od sadržaja predhodnih blokova. Konvolucioni kodovi imaju jaču sposobnost detekcije grešaka, ali su komplikovaniji i kod njih dolazi do propagacije greške, odnosno greška u jednom bloku odražava se i na blokove koji slijede.

8. Klasični kodovi za detekciju i korekciju grešaka

U nastavku će biti opisani neki najpoznatiji kodovi koji omogućavaju detekciju i eventualnu

korekciju grešaka. Svi opisani kodovi spadaju u grupu linearnih kodova. Linearni kodovi se još nazivaju i kodovi provjere pariteta, jer se generiranje redudantnih bita može svesti na provjeru parnosti broja jedinica u nekim izabranim skupinama informacionih bita.

Najjednostavniji od svih linearnih kodova je LRC (Longitudinal Redudancy Check) kod, ili kod

sa bitom pariteta. Kod ovog načina kodiranja, na n informacionih bita dodaje se samo jedan redudantni bit, koji je jednak sumi po modulu 2 svih informacionih bita, odnosno redudantni bit jednak je jedinici ako i samo ako među informacionim bitima ima neparan broj jedinica. Matematički izraženo, ako su informacioni biti b1b2b3...bn, tada odgovarajuća kodna riječ ima oblik b1b2b3...bnbn+1, gdje je bn+1

= b1 ⊕ b2

⊕ ... ⊕ bn. Na primjer,

Informacioni biti Kodna riječ 10110 101101 10010 100100 Na ovaj način, svaka legalna kodna riječ ima paran broj jedinica, što garantira da je Hammingova

udaljenost između svake dvije kodne riječi barem 2. Stoga ovaj kod sigurno otkriva greške koje nastanu na samo jednom bitu. Na mjestu prijema računamo sumu b1

⊕ b2 ⊕ ... ⊕ bn

⊕ bn+1, i ako rezultat nije nula, sigurno je nastupila greška. Zapravo, ovaj kod sigurno otkriva sve greške koje nastanu na neparnom broju bita, ali je potpuno nemoćan da otkrije ikakvu grešku koja je nastala na dva bita, ili općenitije, na parnom broju bita. Stoga je ovaj kod prili čno ograničen. Bez obzira na to, on se zbog svoje jednostavnosti intenzivno koristi u praksi, pogotovo za zaštitu kratkih simbola u kojima je vjerovatnoća greške na više bita zanemarljivo mala. Također, ovaj kod se koristi kad god je potrebno ostvariti neki vid zaštite od grešaka u prenosu, a kada primjena naprednijih tehnika kodiranja nije isplativa.

Sljedeći popularan kod je VRC (Vertical Redudancy Check) kod, ili kod sa paritetnom riječi. Kod

ovog načina, n informacionih bita se dijele u skupine od po k bita (pri tome se podrazumijeva da je n djeljivo sa k). Zatim se sve skupine (njih n/k) posmatraju kao da su poredane jedna ispod druge, nakon čega se na poruku dodaje k redudantnih bita (koji tvore tzv. paritetnu riječ), koje predstavljaju sume po modulu 2 po svakoj od vertikala (odnosno, redudatni biti se biraju tako da ukoliko i njih poredamo ispod svih skupina, u svakoj od vertikala bude paran broj jedinica). Na primjer, neka je n = 12 i k = 3, i neka informacioni biti glase 101101011001. Ove bite dijelimo u n/k = 4 skupine od po 3 bita, koje pišemo jedne ispod druge (to su skupine 101, 101, 011 i 001). Tada računamo redudantne bite tako da svaka od vertikala ima paran broj jedinica):

101 101 011 001 010 redudantni biti ( paritetna riječ)

Page 32: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

32

Dakle, redudantni biti su 010, tako da odgovarajuća kodna riječ glasi 101101011001010. Matematički izraženo, ako su informacioni biti b1b2b3...bn, tada odgovarajuća kodna riječ ima oblik b1b2b3...bnbn+1bn+2...bn+k, pri čemu se redudantni biti računaju po formuli

bn+i = bi ⊕ bk+i ⊕ b2k+i ⊕ ... ⊕ bn–k+i, i

= 1..k Na mjestu prijema ponovo razbijamo poruku na skupine po k bita (uključujući i redudantne bite) i

redamo ih jednu ispod druge, a prijem je korektan samo ako u svakoj od vertikala imamo paran broj jedinica. Matematički izraženo, treba izračunati sve sume oblika bi ⊕ bk+i ⊕ b2k+i ⊕ ... ⊕ bn+i za sve i = 1..k, pri čemu je prijem korektan samo ako su sve ove sume jednake nuli.

Po sposobnosti detekcije grešaka ovaj kod je jači od LRC koda. Zaista, ovaj kod poput LRC koda

sigurno otkriva sve greške na neparnom broju bita, ali otkriva i mnoge greške koje nastaju na parnom broju bita, mada ne sve (naravno, otkrivanje svih mogućih grešaka nije ni moguće). Recimo, lako je vidjeti da LRC kod nije u stanju otkriti greške koje nastaju na dva bita u slučaju da je razmak između pogrešnih bita cjelobrojni umnožak od k, dok će ostale greške na dva bita biti otkrivene.

VRC/LRC kodiranje je kombinacija prethodne dvije tehnike. I ovdje se skupina od n

informacionih bita dijeli na n/k grupa od po k bita, ali se pri tome dodaje n/k + k + 1 redudantnih bita. Prvih n/k redudantnih bita dobijaju se primjenom LRC tehnike na svaku od n/k grupa, narednih k bita se dobija primjenom VRC tehnike, dok je posljednji redudantni bit jednak sumi po modulu 2 onih n/k redudantnih bita dobijenih LRC tehnikom ili sumi po modulu 2 onih k redudantnih bita dobijenih VRC tehnikom (u oba slučaja dobija se isti rezultat – to je suma po modulu 2 svih informacionih bita). Ovaj posljednji bit može se također posmatrati da je dobijen VRC tehnikom, pri čemu (k + 1)-vu vertikalu čine onih n/k bita dobijeni primjenom LRC tehnike na svaku od grupa, ili da je dobijen LRC tehnikom nad onih k bita dobijenih VRC tehnikom.

Stvar je konvencije gdje će se razmjestiti tih n/k + k + 1 redudantnih bita. Naravno da se oni prosto

mogu dopisati iza informacionih bita, ali je za potrebe tehničke realizacije i praktičnih aspekata mnogo pogodnije da se onih n/k redudatnih bita umetnu po jedan iza svake od grupa na koju se odnose, dok se ostalih k + 1 redudantnih bita dopisuju na kraj. Tako, ukoliko su informacioni biti b1b2b3...bn, odgovarajuća kodna riječ ima oblik

b1b2...bkc1bk+1bk+2...b2kc2...bn–k+1bn–k+2...bncn/k cn/k+1cn/k+2...cn/k+k cn/k+k+1

pri čemu se kontrolni biti računaju kao ci = b(i–1)k+1

⊕ b(i–1)k+2 ⊕ ... ⊕ bik ,

i = 1..n/k

cn/k+i = bi ⊕ bk+i ⊕ b2k+i ⊕ ... ⊕ bn–k+i, i = 1..k

cn/k+k+1 = b1 ⊕ b2 ⊕ ... ⊕ bn

Uzmimo kao primjer da informacioni biti glase 110111000101 i da je k = 3. Dijelimo ovu

sekvencu za blokove 110, 111, 000 i 101, nakon čega računamo kontrolne bite kako slijedi: 110 0 111 1 000 0 101 0 100 1

LRC provjere

VRC provjera dvojna provjera

Page 33: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

33

Sada odgovarajuću kodnu riječ formiramo sastavljajući grupe ponovo u jednu cjelinu, pri čemu u grupu uračunavamo i redudantni bit dobijen LRC provjerama (odnosno, grupe sačinjavaju biti 1100, 1111, 0000, 1010 i 1001). Tako, na kraju, odgovarajuća kodna riječ glasi 1100111100001010 1 0 0 1 (redudantni biti su radi jasnoće podcrtani). Na mjestu prijema, primljenu kodnu riječ razbijamo na skupine po k + 1 bita koje redamo jednu ispod druge, pri čemu je kodna riječ ispravna samo ako svaki red i svaka kolona tako formirane matrice bita ima paran broj jedinica.

VRC/LRC strategija je prilično dobra sa aspekta detekcije grešaka. Pored toga što se otkrivaju sve

greške na neparnom broju bita (što je osobina koju je posjedovao čak i prosti LRC kod), VRC/LRC kod sigurno otkriva i priličan broj drugih grešaka, što uključuje i sigurno detektiranje svih grešaka koje nastanu na ma koja dva bita. Primjeri grešaka koje ovaj kod ne može otkriti su tzv. greške u kvadraturi. To su greške na četiri bita, od kojih se dva bita nalaze unutar jedne grupe, a druga dva unutar druge grupe, pri čemu se biti i u jednoj i u drugoj grupi nalaze na istim pozicijama relativno u odnosu na početak grupe, tako da ova četiri bita, kada se grupe poredaju jedna ispod druge, obrazuju tjemena pravougaonika. Na primjer, neka je k = 3 i neka je poslana kodna riječ 11001111000010101001 a primljena kodna riječ 10011111000011111001. Poredamo li grupe od k + 1 = 4 bita jednu ispod druge, vidimo da su svi pariteti i po redovima i po kolonama korektni, a primljena kodna riječ je korektna (drugim riječima, greška je transformirala jednu legalnu u drugu legalnu kodnu riječ). Vidimo da pogrešni biti u tako formiranoj matrici formiraju tjemena pravougaonika, tako da je u pitanju upravo greška u kvadraturi (pogrešni biti su prikazani podcrtano):

1001 1111 0000 1111 1001 Kako su greške u kvadraturi veoma specifične, one su i prilično rijetke, tako da se u praksi

VRC/LRC kod pokazuje kao veoma dobar sa aspekta detekcije grešaka. Za razliku od LRC i VRC kodova, VRC/LRC kod u stanju je i korigirati greške koje nastanu na

samo jednom bitu. Zaista, greška na jednom bitu uzrokovaće narušen paritet u jednom redu i jednoj koloni u matrici koju dobijamo kada grupe od k + 1 bita poredamo jednu ispod druge. Na mjestu prijema, ukoliko detektiramo red i kolonu sa narušenim paritetom, mjesto njihovog presjeka tačno identificira pogrešan bit. Recimo, neka je (uz k = 3) primljena kodna riječ 11001101000010101001. Ispod su označeni red i kolona sa narušenim paritetom:

11 0 0 11 0 1 00 0 0 10 1 0 10 0 1 Odavde se jasno vidi da je pogrešan bit u presjeku drugog reda i treće kolone, odnosno

ispravljena kodna riječ glasi 11001111000010101001. VRC/LRC kod je prilično dobar sa aspekta mogućnosti detekcije i korekcije grešaka, ali po cijenu

dodavanja relativno velikog broja redudantnih bita. Recimo, na skupinu od n = 25 informacionih bita pri veličini grupe k = 5 dodaje se n/k + k + 1 = 11 redudantnih bita. Hammingov kod omogućava slične mogućnosti detekcije i korekcije grešaka, ali uz znatno manji broj redudantnih bita. Recimo, pri istom broju od 25 informacionih bita, Hammingov kod zahtijeva svega 5 redudantnih bita.

Hammingov kod zahtijeva da je broj informacionih bita oblika n = 2k – k – 1, pri čemu se na

informacione bite dodaje još k redudantnih bita. Stoga ukupna dužina kodne riječi kod Hammingovog koda uvijek ima oblik m = 2k – 1. Recimo za vrijednosti k od 3 do 8, neophodni broj informacionih bita

Page 34: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

34

iznosi respektivno 4, 11, 26, 57, 120 odnosno 247. Ovo ograničenje na broj informacionih bita nije preveliko za praktične potrebe, s obzirom da je uvijek moguće proširiti broj informacionih bita dodavanjem vodećih nula na početak skupine informacionih bita. Odgovarajućim komunikacionim protokolom je moguće ove vodeće nule učiniti fiktivnima, odnosno izvesti da se one uopće ne prenose kroz fizički medij, nego da se njihovo prisustvo podrazumijeva na mjestu prijema, čime se ne troši kapacitet komunikacionog kanala.

Rečeno je da u svakoj kodnoj riječi Hammingovog koda dužine m = 2k – 1 bita ima ukupno

n = 2k – k – 1 informacionih bita i k redudantnih bita. Tada obično govorimo o kodu tipa (m, n). Neka je kodna riječ oblika b1b2b3...bm. Vrijednosti redudantnih biti naravno ovise o vrijednosti informacionih bita. Oni se određuju tako da bude zadovoljen sistem od k jednačina, pri čemu i-ta jednačina (i = 1..k) zahtijeva da suma po modulu 2 svih bita čiji indeksi zapisani kao k-bitni binarni broj imaju jedinicu na i-toj poziciji. Uzmimo kao primjer slučaj k = 3, odnosno kod tipa (7, 4). Kodne riječi ovog koda imaju oblik b1b2b3b4b5b6b7, a jednačine koje moraju biti zadovoljene glase

b4

⊕ b5 ⊕ b6

⊕ b7 = 0 (1)

b2 ⊕ b3

⊕ b6 ⊕ b7 = 0 (2)

b1 ⊕ b3

⊕ b5 ⊕ b7 = 0 (3)

s obzirom da brojevi 4, 5, 6, i 7 imaju u binarnom zapisu jedinicu na prvoj poziciji (100, 101, 110 i 111), brojevi 2, 3, 6 i 7 imaju u binarnom zapisu jedinicu na drugoj poziciji (010, 011, 110 i 111), dok brojevi 1, 3, 5 i 7 imaju u binarnom zapisu jedinicu na trećoj poziciji (001, 011, 101 i 111).

Izbor koji će se biti smatrati za informacione bite a koji za redudantne (kontrolne) bite nije

jednoznačan. Jedini uvjet je da ovaj sistem bude rješiv po redudantnim bitima, uz pretpostavku da su informacioni biti zadani. Recimo, za slučaj k = 3 moguće je uzeti da prva četiri bita b1b2b3b4 budu informacioni biti, a posljednja 3 bita b5b6b7 budu kontrolni biti (slično grupiranje nije izvodivo za k > 3). Sada treba sistem (1) – (3) riješiti po b5, b6 i b7 uzimajući da su biti b1

– b4 zadani. Ovakvi sistemi se rješavaju korištenjem očiglednih pravila po kojim vrijedi x ⊕ x = 0 i (x ⊕ y = 0) ⇒ (x = y). Tako, sabiranjem jednačina (1) i (2) imamo

b2

⊕ b3 ⊕ b6

⊕ b7 ⊕ b4

⊕ b5 ⊕ b6

⊕ b7 = 0

odnosno

b2 ⊕ b3

⊕ b4 ⊕ b5 = 0

Odavde slijedi b5

= b2 ⊕ b3

⊕ b4 Dobijeni rezultat za b5 uvrstimo u jednačinu (3) pa dobijamo b1

⊕ b3 ⊕ b2

⊕ b3 ⊕ b4

⊕ b7 = 0 odnosno

b1 ⊕ b2

⊕ b4 ⊕ b7 = 0

Odavde slijedi:

b7 = b1

⊕ b2 ⊕ b4

Konačno, uvrstimo li izvedenu vrijednost za b7 u jednačinu (2) dobijamo b2

⊕ b3 ⊕ b6

⊕ b1 ⊕ b2

⊕ b4 = 0

Page 35: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

35

odnosno

b3 ⊕ b6

⊕ b1 ⊕ b4

= 0 Odavde slijedi:

b6 = b1 ⊕ b3

⊕ b4

Ilustrirajmo ovo na konkretnom primjeru. Neka informacioni biti glase 1101. Sada računamo kontrolne bite:

b5

= b2 ⊕ b3

⊕ b4 = 1 ⊕ 0 ⊕ 1 = 0

b6 = b1 ⊕ b3

⊕ b4 = 1 ⊕ 0 ⊕ 1 = 0

b7 = b1

⊕ b2 ⊕ b4

= 1 ⊕ 1 ⊕ 1 = 1 Konačno, kodirana poruka glasi 1101001.

Detekcija greške se vrši tako što se prosto izračunaju sve sume si, i = 1..k po modulu 2 svih bita

čiji indeksi zapisani kao k-bitni binarni broj imaju jedinicu na i-toj poziciji. Pošto je kod konstruisan tako da bi ove sume trebale biti jednake nuli, bilo koja suma različita od nule ukazuje na grešku. Ova strategija garantirano otkriva sve greške na jednom ili dva bita, a otkriva se i priličan broj grešaka na više bita. Međutim, greška na jednom bitu se izuzetno lako može i korigirati. Za tu svrhu, formiramo sekvencu bita S = s1s2...sk koja se naziva sindrom primljene kodne riječi. Sindrom interpretiran kao binarni broj nakon pretvaranja u dekadni broj daje indeks pogrešnog bita (sindrom jednak nuli ukazuje da nema detektirane greške). Uzmimo kao primjer da je u poruci iz prethodnog primjera pogrešno prenesen treći bit, tj. neka je primljena kodna riječ 1111001. Računamo kontrolne sume:

s1

= b4 ⊕ b5

⊕ b6 ⊕ b7 = 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0

s2 = b2

⊕ b3 ⊕ b6

⊕ b7 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1

s3 = b1

⊕ b3 ⊕ b5

⊕ b7 = 1 ⊕ 1 ⊕ 0 ⊕ 1 = 1

Kako je s2 ≠ 0 i s3 ≠

0, sigurno je došlo do greške u prenosu. Ako pretpostavimo da je samo jedan bit pogrešan, možemo formirati sindrom S = s1s2s3 = 011, što pretvoreno u dekadni brojni sistem daje S = 3. Dakle, pogrešan je treći bit. Ovo svojstvo nije teško dokazati uzimajući u obzir jednačine na osnovu koje su formirani redudantni biti.

Opisani sistem detekcije koji je bit pogrešan radi ispravno samo ako je pogrešan jedan bit. Međutim, Hammingov kod je u stanju sa sigurnošću otkriti i dva pogrešna bita, ali nemamo načina da saznamo da li je pogrešan samo jedan ili dva bita. Može se pokazati da je uz pomoć još jednog dodatnog bita pariteta, koji je jednak sumi po modulu 2 svih ostalih bita (i informacionih i kontrolnih) moguće razlikovati situacije kada je greška na jednom bitu i greška na dva bita (pri čemu je grešku na jednom bitu tada moguće korigirati na opisani način). Naravno, i ovdje postoji mogućnost da se neke greške na više od dva bita lažno interpretiraju kao greške na jednom ili dva bita.

Već je rečeno da izbor pozicija informacionih i kontrolnih bita u Hammingovom kodu nije jednoznačan. U praksi se gotovo uvijek uzima takav izbor da dobijeni sistem jednačina za određivanje kontrolnih bita bude što je god moguće jednostavniji za rješavanje. Najbolja mogućnost, koja radi za svaku vrijednost k, je da se uzme da su kontrolni biti oni čiji su indeksi stepeni broja 2, a da su ostali biti informacioni biti. U tom slučaju se prosto dobije da je kontrolni bit bi (i je stepen broja 2) jednak sumi po modulu 2 svih informacionih bita čiji indeksi napisani kao binarni broj imaju jedinicu na istom mjestu kao i broj i. Posmatrajmo recimo slučaj k = 3. Tada uzimamo da su b1, b2 i b4 kontrolni biti, dok su b3, b5, b6 i b7 informacioni biti. Iz jednačina (1) – (3) tada neposredno slijedi:

Page 36: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

36

b4 = b5

⊕ b6 ⊕ b7

b2 = b3

⊕ b6 ⊕ b7

b1 = b3

⊕ b5 ⊕ b7

Kao primjer, neka su informacioni biti 1101. To zapravo znači da je b3

= 1, b5 = 1, b6

= 0 i b7 = 1.

Sada računamo kontrolne bite: b1

= b3 ⊕ b5

⊕ b7 = 1 ⊕ 1 ⊕ 1 = 1

b2 = b3

⊕ b6 ⊕ b7 = 1 ⊕ 0 ⊕ 1 = 0

b4 = b5

⊕ b6 ⊕ b7 = 1 ⊕ 0 ⊕ 1 = 0

Tražena kodna riječ je b1b2b3b4b5b6b7, odnosno 1010101. Postupak detekcije i korekcije grešaka se

odvija na identičan način, odnosno nenulti sindrom ukazuje na grešku, a njegova dekadna vrijednost na poziciju pogrešnog bita. Može nekome djelovati neprirodno da se kontrolni biti ne nalaze na kraju riječi. U principu bi bilo moguće njih prosto “prilijepiti” iza informacionih bita (tj. da kodna riječ u navedenom primjeru bude 1101100), ali tada gubimo mogućnost jednostavne detekcije pozicije pogrešnog bita preko dekadne vrijednosti sindroma.

Hammingov kod je veoma praktičan, ali je njegov osnovni nedostatak što ga je dosta teško generirati za slučaj dugačkih kodnih riječi, bilo softverski bilo hardverski. Naime, pri upotrebi k kontrolnih bita, svaki kontrolni bit zavisi od 2k–1 – 1 informacionih bita, po zakonu koji nije lako generirati ni hardverski ni softverski (pri hardverskoj realizaciji imamo isuviše kompleksne sklopove, a pri softverskoj realizaciji relativno neefikasan algoritam). Recimo, za k = 8, svaki od 8 kontrolnih bita zavisi od 127 informacionih bita. Stoga se u praksi češće koriste tzv. ciklički ili CRC (Cyclic Redudancy Check) kodovi, koje je neuporedivo lakše generirati od Hammingovog koda, bilo softverski bilo hardverski (a pogotovo hardverski).

Ciklički kodovi su specijalna podklasa linearnih kodova, za koje je karakteristično da se cikličkom rotacijom svih bita koji čine neku legalnu kodnu riječ ponovo dobija ispravna kodna riječ. Mada bi se kontrolni biti kod cikličkih kodova također mogli dobiti odgovarajućim sumama po modulu 2 informacionih bita (s obzirom da su oni također linearni kodovi), za generiranje cikličkih kodova koristi se specijalan matematski aparat zasnovan na teoriji konačnih polja, što omogućava jednostavniju hardversku odnosno softversku realizaciju. Preciznije, koristi se teorija polinoma nad konačnim poljem GF(2). U pitanju su polinomi čiji koeficijenti mogu biti samo 0 ili 1, i gdje se operacija sabiranja odnosno oduzimanja mijenja operacijom sabiranja po modulu 2. Za generiranje CRC koda, bira se jedan takav polinom G(x) stepena k (nazvan generatorski polinom) od čije strukture zavisi sposobnost koda. Zatim se skupina informacionih bita također predstavlja u vidu takvog polinoma. Recimo, ukoliko su informacioni biti b1b2...bn, odgovarajući polinom ima oblik

P(x) = b1x

n–1 ⊕ b2xn–2 ⊕ ... ⊕ bn–1x

⊕ bn

Tako dobijeni polinom množi se sa xk gdje je k stepen izabranog generatorskog polinoma, nakon čega se tako dobijeni polinom dijeli sa generatorskim polinomom, uvažavajući pravila računanja u polju GF(2), tj. uz zamjenu sabiranja i oduzimanja sabiranjem po modulu 2. Koeficijenti dobijenog ostatka pri dijeljenju posmatranog kao polinom stepena k – 1 predstavljaju k kontrolnih bita koje treba dodati iza informacionih bita.

Uzmimo kao primjer da je generatorski polinom x3 ⊕ x2 ⊕ 1, a da su informacioni biti 1001101.

Ovu skupinu informacionih bita posmatramo kao polinom x6 ⊕ x3 ⊕ x2 ⊕ 1, što nakon množenja sa x3 daje x9 ⊕ x6 ⊕ x5 ⊕ x3. Sada prelazimo na dijeljenje:

Page 37: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

37

x9 ⊕ x6 ⊕ x5 ⊕ x3 : x3 ⊕ x2 ⊕ 1 = x6 ⊕ x5 ⊕ x4 ⊕ x3 ⊕ x2 x9 ⊕ x8 ⊕ x6 x8 ⊕ x5 x8 ⊕ x7 ⊕ x5 x7 x7 ⊕ x6 ⊕ x4 x6 ⊕ x4 ⊕ x3 x6 ⊕ x5 ⊕ x3 x5 ⊕ x4 x5 ⊕ x4 ⊕ x2 x2

Slijedi da su kontrolni biti 100, jer je x2 = 1 x2 ⊕ 0 x ⊕ 0. Dakle, cjelokupna kodna riječ glasi

1001101100.

Provjera ispravnosti prijema kodne riječi se vrši tako da se primljena kodna riječ ponovo posmatra kao polinom nad poljem GF(2). U slučaju isparavnog prijema, takav polinom mora biti djeljiv bez ostatka generatorskim polinomom. Nenulti ostatak ukazuje na greške u prenosu. Ovo je vrlo lako dokazati. Naime, ako je P(x) polinom koji kodira izvodnu poruku i R(x) ostatak pri dijeljenju P(x) xk sa generatorskim polinomom G(x), polinom koji kodira cjelokupnu kodnu riječ je očigledno glasi P(x) xk ⊕ R(x). Međutim, ukoliko je Q(x) količnik pri dijeljenju P(x) xk sa G(x), tada je jasno da vrijedi P(x) xk = G(x) Q(x) ⊕ R(x). Slijedi da je P(x) xk ⊕ R(x) = G(x) Q(x), odnosno P(x) xk ⊕ R(x) je tačno djeljivo sa G(x). Na primjer, za kodnu riječ iz prethodnog primjera imamo:

x9 ⊕ x6 ⊕ x5 ⊕ x3 ⊕ x2 : x3 ⊕ x2 ⊕ 1 = x6 ⊕ x5 ⊕ x4 ⊕ x3 ⊕ x2

x9 ⊕ x8 ⊕ x6 x8 ⊕ x5 x8 ⊕ x7 ⊕ x5 x7 x7 ⊕ x6 ⊕ x4 x6 ⊕ x4 ⊕ x3 x6 ⊕ x5 ⊕ x3 x5 ⊕ x4 ⊕ x2 x5 ⊕ x4 ⊕ x2 0

Pri dobro odabranim generatorskim polinomima, ostatak se može iskoristiti i za korekciju greške

ukoliko je ona nastupila na malom broju bita. Ostatak pri dijeljenju tada sadrži informaciju o pogrešnim bitima. Međutim, CRC kodovi se uglavnom koriste samo za detekciju grešaka, jer im je sposobnost detekcije zaista velika, a korekcija se oslanja na uvijek diskutabilnu pretpostavku o malom broju pogrešnih bita.

Već je rečeno da je otkrivanje grešaka na velikom broju bita prilično problematično. Srećom,

greške na mnogo bita u prenosu su iznimno rijetke. To se posebno odnosi na posve nasumične greške (tj. greške u kojima su pozicije pogrešnih bita potpuno nasumične). Izuzetak čine tzv. usnopljene greške (burst errors). To su greške koje nastaju kao posljedica relativno dužih smetnji u prenosu, a karakterizira ih svojstvo da se u njima javlja veliki broj uzastopnih pogrešnih bita. Preciznije, usnopljene greške reda r su takve skupine bita u kojima najviše r – 1 uzastopnih bita mogu biti ispravni, a svi ostali su pogrešni. Kako u usnopljenim greškama postoje određene pravilnosti, njih je lakše otkriti nego greške koje nastaju na mnogo slučajno raspoređenih bita. Dobra osobina CRC kodova je što su se oni pokazali iznimno dobri upravo za detekciju usnopljenih grešaka.

Page 38: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

38

Sada je moguće dati neke preporuke za izbor generatorskog polinoma:

– Da bi CRC kod uopće imao sposobnost detekcije grešaka, generatorski polinom mora imati barem dva člana. Ispunjenje ovog uvjeta garantira otkrivanje svih grešaka na jednom bitu.

– Ukoliko je generatorski polinom djeljiv sa x ⊕ 1, to garantira da će biti detektirana svaka greška na neparnom broju bita.

– Ako generator polinom ima stepen k i slobodni član mu nije jednak nuli, to garantira da će biti otkrivene sve usnopljene greške reda manjeg od k.

– Sve greške na parnom broju bita biće otkrivene ukoliko najveća udaljenost između dva pogrešna bita ne prelazi m, gdje je m stepen najvećeg nesvodljivog polinoma sa kojim je generatorski polinom djeljiv.

Pri tome, pod nesvodljivim polinomom podrazumijevamo onaj polinom koji se ne može prikazati

kao proizvod dva polinoma nižeg reda, koristeći pravila algebre GF(2). Ovdje treba biti oprezan, jer polinom koji je nesvodljiv (nerastavljiv) nad poljem realnih brojeva ne mora biti nesvodljiv nad poljem GF(2). Recimo, polinom x4 + x2 + 1 je nesvodljiv nad poljem realnih brojeva, ali analogan polinom x4 ⊕ x2 ⊕ 1 nije nesvodljiv nad poljem GF(2). Zaista, nije teško provjeriti da za ovaj polinom vrijedi rastava x4 ⊕ x2 ⊕ 1 = (x2 ⊕ x ⊕ 1)(x2 ⊕ x ⊕ 1).

Na osnovu opisane veze između strukture generatorskog polinoma i sposobnosti koda, slijedi da

je najbolje odabrati generatorski polinom stepena k koji je produkt faktora x ⊕ 1 i nekog nesvodljivog polinoma stepena k – 1. Sljedeća tabela ilustrira nekoliko CRC kodova koji se najviše koriste u praksi:

Ime koda Generatorski polinom CRC–12 (IBM) x12 ⊕ x3 ⊕ x2 ⊕ x ⊕ 1

CRC–16 (IBM) x16 ⊕ x15 ⊕ x2 ⊕ 1 CRC–16–CCITT x16 ⊕ x12 ⊕ x5 ⊕ 1 CRC–32 x32 ⊕ x26 ⊕ x23 ⊕ x22 ⊕ x16 ⊕ x12 ⊕ x11 ⊕ x10 ⊕ x8 ⊕ x7 ⊕ x5 ⊕ x4 ⊕ x2 ⊕ x ⊕ 1

Na primjer, za kod CRC–16 (IBM) imamo x16 ⊕ x15 ⊕ x2 ⊕ 1 = (x ⊕ 1) (x15 ⊕ x ⊕ 1), dok za kod CRC–16–CCITT imamo x16 ⊕ x12 ⊕ x5 ⊕ 1 = (x ⊕ 1) (x15 ⊕ x14 ⊕ x13 ⊕ x12 ⊕ x4 ⊕ x3 ⊕ x2 ⊕ x ⊕ 1). Ovaj kod se recimo koristi u PPP protokolu (najčešće korištenom protokolu drugog nivoa pri modemskom povezivanju na Internet) i u Bluetooth protokolima, a pri dužini poruke od 1000 bita omogućava detekciju 99.999% svih grešaka, odnosno neotkriveno ostaje svega 0.001% grešaka. CRC–32 kod je još pouzdaniji i koristi se recimo u Ethernet lokalnim mrežama, a često se koristi i za kontrolu integriteta datoteka pohranjenih recimo u ZIP ili nekim sličnim arhivama, ili na medijima eksterne memorije.

Na kraju, recimo još da se CRC kodovi jednostavno hardverski realiziraju uz pomoć modificiranih pomjeračkih (shift) registara kod kojih su izvedene povratne sprege sa izlaza na ulaz preko kola za ekskluzivnu disjunkciju (EXOR kola), pri čemu pozicija povratnih sprega zavisi od toga koji su koeficijenti u generatorskom polinomu jednaki jedinici.

Za generiranje CRC koda, informacioni biti se propuste kroz shift registar (bit po bit), a

kontrolni biti se formiraju u flip-flopovima registra. Za provjeru ispravnosti kodne riječi, kodna riječ se propusti kroz shift registar, a u slučaju ispravnog prenosa, svi flip-flopovi moraju sadržavati nulu nakon što svi biti prođu kroz registar.

D D D Q Q Q

Page 39: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

39

9. Protokoli drugog nivoa

Nakon što smo obradili strategije za detekciju i korekciju grešaka, možemo preći na analizu protokola drugog nivoa. Kao što je već rečeno, protokoli drugog nivoa (odnosno protokoli sloja veze podataka) brinu se o prenosu podataka između dva susjedna čvorišta u mreži. Za razmatranje protokola drugog nivoa, bitno je znati da postoje dva suštinski različita načina prenosa podataka kroz komunikacioni kanal:

– Sinhroni prenos podataka – Asinhroni prenos podataka

Kod sinhronog prenosa podaci se prenose u skupinama nazvanim snopovi (burst). Snop sadrži fiksan broj bajtova (recimo, 512), pri čemu se svi bajti koji čine snop razlažu u seriju bita i šalju jedan za drugim, fiksnom brzinom, bez pauza između pojedinih bajtova. Snopovi se također šalju jedan za drugim, ali se između svaka dva bloka šalje se specijalan niz od 8 bita, tzv. sinhronizacioni bajt ili skraćeno SYNC, koji nije sastavni dio bloka i koji ne sadrži korisnu informaciju, a čija je jedina svrha da osigura sinhronizaciju prenosa blokova između pošaljioca i primaoca. Sinhroni prenos ilustrira sljedeća slika:

Za razliku od sinhronog prenosa, kod asinhronog prenosa se svaki elementarni podatak (tipično

jedan bajt) prenosi neovisno jedan od drugog. Prije nego što započne prenos jednog podatka, kanal veze nalazi se u neaktivnom stanju ili tzv. IDLE stanju (obično stanju logičke jedinice). Prenos podataka započinje promjenom stanja kanala veze (npr. sa logičke jedinice na logičku nulu) u trajanju jednakom trajanju prenosa jednog bita (ova promjena naziva se start bit), nakon čega slijedi prenos stvarnih bita koji čine podatak. Nakon što se čitav podatak prenese, kanal veze se ponovo vraća u IDLE stanje, koje traje do prenosa novog podatka. Vrijeme trajanja IDLE stanja nije određeno, međutim obično se propisuje da IDLE stanje nakon prenosa jednog podatka mora trajati makar koliko iznosi trajanje prenosa jednog bita pomnoženo sa 1, 1.5 ili 2. U tom slučaju kažemo da se koristi asinhroni prenos sa jednim, jednim i po ili dva stop bita. Asinhroni prenos ilustrira sljedeća slika:

Sinhroni prenos je očito mnogo efikasniji, jer se kod asinhronog prenosa praktički vrši

sinhronizacija svakog elementarnog podatka pojedinačno, čime se gubi mnogo vremena. Međutim, asinhroni prenos podataka je mnogo praktičniji (i ponekad jedino moguć) u slučajevima kada se prenose male količine podataka, pri čemu je tačan razmak između pristizanja podataka koji se prenose potpuno nepredvidljiv, na primjer, prilikom prenosa podataka koje korisnik kuca sa tastature (vrijeme između pritisaka na tastere je nepredvidljivo, a sam podatak o pritisnutom tasteru je kratak). Asinhroni prenos se najčešće koristi za prenos podataka između računara i prateće računarske opreme, dok se za prenos podataka između računara koristi pretežno sinhroni prenos.

SYNC SYNC SYNC

snop snop

start bit

start bit

start bit

start bit

podatak

podatak

podatak

podatak

IDLE IDLE IDLE IDLE

Page 40: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

40

Sve protokole drugog nivoa možemo grubo podijeliti u dvije skupine: – Karakter orjentirani protokoli – Bit orjentirani protokoli

Karakter orjentirani protokoli su strariji i danas se mnogo manje koriste, ali oni mogu raditi i pri sinhronom i pri asinhronom prenosu podataka, dok bit orjentirani protokoli mogu raditi samo pri sinhronom prenosu podataka. Kod obje vrste protokola, informacije se pakuju u blokove određene strukture, koji se nazivaju okviri iliramovi (frames). Primjeri karakter orjentiranih protokola su već spominjani SLIP i PPP protokoli, koji se koriste pri modemskom povezivanju računara na Internet kod povezivanja koje se uspostavlja po pozivu (dial-up povezivanje).

Kod karakter orjentiranih protokola, informacije koje se prenose tretiraju se kao niz znakova

(karaktera), bez obzira da li se radi o prenosu tekstualnih informacija ili informacija neke druge prirode. Čitav okvir se također tretira kao niz znakova, pri čemu se za označavanje gdje u okviru počinju, a gdje završavaju informacije, zatim gdje počinje a gdje završava zaglavlje okvira itd. koriste specijalni (tzv. kontrolni) znaci za koje se pretpstavlja da se ne mogu naći u informacionom dijelu okvira. Da bi se to postiglo, ti specijalni znaci imaju ASCII šifre drugačije od ASCII šifri svih znakova koji se normalno pojavljuju kao sastavni dio teksta (preciznije, njihove ASCII šifre su manje od 32, s obzirom da svi “standardni” znakovi imaju ASCII šifre u opsegu od 32 do 127). Tipični kontrolni znaci koji se koriste u protokolima drugog nivoa su sljedeći:

– SYN (Synchronization): Sinhronizacioni znak, označava početak okvira – SOH (Start of Header): Označava početak zaglavlja – STX (Start of Text): Označava početak teksta (informacionog dijela okvira) – ETX (End of Text): Označava kraj teksta – EOT (End of Transmission): Označava kraj okvira

Stoga tipični okvir izgleda ovako:

Dio označen sa “kontrola” sadrži redudantne informacije potrebne za detekciju i eventualnu korekciju grešaka. Kasnije ćemo vidjeti zašto je znak SYN udvojen.

Ovakav format okvira pogodan je za prenos teksta. Međutim, pri prenosu proizvoljnih sadržaja

mogu nastati problemi ukoliko se u informacionom dijelu poruke nađe neki bajt koji bi se mogao interpretirati kao kontrolni znak (što je sasvim moguće, jer se pri prenosu proizvoljnih sadržaja svaki bajt može ravnopravno pojaviti). Da bi se taj problem riješio, uvodi se poseban kontrolni znak DLE (Data Link Escape), koji govori da bajt koji slijedi treba interpretirati kao dio informacije, bez obzira što bi on bio interpretiran kao neki kontrolni znak (zbog toga što se on poklapa sa ASCII šifrom nekog kontrolnog znaka). Naravno, umetanje DLE znakova produžava poruku. Najgora situacija nastaje ako se informacioni dio poruke sastoji isključivo od bajtova koji su jednaki ASCII šiframa nekih kontrolnih znakova. Tada se DLE znak treba umetnuti ispred svakog bajta informacionog dijela poruke, čime se poruka praktično udvostručava po veličini.

Sad možemo objasniti i zašto je SYN znak udvojen. Pri prenosu poruka proizvoljne sadržine, SYN

znak se može pojaviti i unutar informacionog dijela poruke, ali je jasno da mu u tom slučaju mora prethoditi DLE znak. Međutim, prijemnik koji bi se oslonio na to da početak okvira detektira samo čekanjem SYN znaka mogao bi takav SYN znak pogrešno prepoznati kao početak okvira. Stoga se početak okvira označava sa dva uzastopna SYN znaka, pošto se sekvenca od dva uzastopna SYN znaka zaista ne može pojaviti nigdje, osim na početku okvira.

SYN SYN SOH zaglavlje STX informacije ETX kontrola EOT

Page 41: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

41

Već je rečeno da su protokoli drugog nivoa, između ostalog, zaduženi i da na mjestu prijema obavijeste pošaljioca okvira o tome da li je okvir ispravno primljen i ne, što se zaključuje na osnovu redudantnih informacija, u skladu sa nekom od ranije opisanih tehnika. Okviri koje prijemnik poruke šalje nazad pošaljiocu poruke sa ciljem obavještavanja o uspješnom odnosno neuspješnom prijemu poruke imaju drugačiju strukturu od okvira koji nose korisne informacije, i u njima se također koriste neki specijalni kontrolni znaci:

– ACK (Acknowledge): Potvrda ispravnog prijema – NACK (Negative acknowledge): Odbijenica, tj. obavijest o neispravnom prijemu

Tako, okvir koji obavještava prijemnik o ispravnom prijemu nekog okvira može izgledati recimo ovako:

Vidimo da se ovaj okvir razlikuje od informacionih okvira po tome što umjesto znaka SOH koji u informacionim okvirima slijedi odmah iza sinhronizacionih znakova, u ovim okvirima slijedi znak ACK odnosno NACK. Ovi okviri mogu sadržavati u sebi i neke dopunske informacije, recimo informaciju o tome koji se tačno okvir potvrđuje odnosno odbija, o čemu će biti više riječi nešto kasnije.

U slučaju kada se koristi dvosmjerni (duplex) prenos informacija, kod kojeg izvor i prijemnik

informacija mogu mijenjati uloge, sasvim je moguće da isti okvir sadrži kako informaciju o uspješnom odnosno neuspješnom prijemu nekog okvira, tako i korisne informacije koje treba poslati sa mjeta prijema nazad na mjesto slanja okvira koji se potvrđuje (tj. informacije koje putuju u suprotnom smjeru). Takav okvir, na primjer, može nakon znaka ACK (odnosno NACK) i dopunskih informacija, umjesto znaka EOT sadržavati SOH znak, nakon čega se njegova struktura nastavlja kao u slučaju klasičnog informacionog okvira. Ovakva strategija naziva se piggybacking (u bukvalnom prevodu “nošenje krkače”).

Za razliku od karakter orjentiranih protokola, bit orjentirani protokoli ne posmatraju informacije

kao skupinu znakova, nego prosto kao sekvencu bita, bez ikakve posebne strukture. Stoga se u bit orjentiranim protokolima ne koriste nikakvi posebni znaci za formatiranje okvira. Svaki okvir uvijek počinje nekom karakterističnom sekvencom bita koja se naziva fleg (u većini bit orjentiranih protokola ta sekvenca je 0111110). Ista sekvenca također označava i kraj okvira. Ovdje se očigledno ne smije dogoditi da se ta sekvenca bita pojavi igdje unutar okvira, osim na njegovom početku odnosno kraju (u suprotnom bi takva sekvenca mogla biti pogrešno protumačena kao početak odnosno kraj okvira). Postavlja se pitanje kako ovo obezbijediti, ukoliko se unutar informacionog dijela poruke može pojaviti ma kakva sekvenca bita. Problem se rješava tzv. umetanjem bita (bit stuffing). Neka je, recimo, fleg sekvenca bita 0111110 (kao u većini bit orjentiranih protokola). Pošaljilac poruke pri slanju informacionog dijela poruke broji uzastopne bitove jednake jedinici, i nakon svakih 5 uzastopnih jedinica vještački ubacuje jednu nulu u poruku koju emitira, tako da se u emitiranoj poruci nikada neće naći više od 5 uzastopnih jedinica, osim unutar flega (koji sadrži 6 uzastopnih jedinica). Neka, recimo, informacioni dio poruke izgleda ovako:

10111010001111111000111011001111111111100011111000110 Ista poruka, nakon procesa umetanja bita, izgleda ovako (umetnuti biti su podcrtani):

101110100011111011000111011001111101111101000111110000110

Nakon dodavanja flega na početak i kraj okvira, kompletan okvir u navedenom primjeru izgledaće ovako: 01111101011101000111110110001110110011111011111010001111100001100111110

SYN SYN ACK dopunske informacije EOT

Page 42: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

42

Na mjestu prijema, prijemnik nakon svakih pet uzastopno primljenih jedinica, analizira sljedeći bit. Ukoliko je on jednak nuli, prijemnik ga odbacuje, jer zna da je to bit koji je vještački umetnut od strane predajnika. Na taj način, na mjestu prijema se dobija informacija identična informaciji kakva je bila prije slanja. S druge strane, ukoliko je sljedeći bit također jedinica, slijedi da je detektirana sekvenca od šest uzastopnih jedinica, što se može dogoditi samo unutar flega. Međutim, prije nego što zaključi da se zaista radi o flegu, prijemnik analizira i naredni bit. Ukoliko je on nula, prijemnik zaključuje da je detektiran fleg, odnosno kraj okvira. Ukoliko je i taj bit jednak jedinici, prijemnik zaključuje da je u pitanju neka greška u prenosu, s obzirom da se sedam uzastopnih jedinica ne može nikada pojaviti ukoliko je prenos ispravno obavljen.

Kod bit orijentiranih protokola, zaglavlje je obično fiksirane dužine, tako da ne postoji potreba da

se posebno označava gdje završava zaglavlje, a gdje počinje informacioni dio poruke. Pri tome ne postoji suštinska razlika između informacionih okvira i statusnih okvira (poput okvira za potvrdu ispravnog odnosno neispravnog primitka okvira), nego neki biti unutar zaglavlja govore da li se radi o informacionom ili nekom specifičnom okviru. I ovdje je moguće koristiti piggybacking tehniku, tj. sasvim je moguće da isti okvir nosi i neku korisnu informaciju i potvrdu odnosno odbijenicu za neki drugi okvir. Inače, tipične stvari koje se nalaze unutar zaglavlja kod protokola drugog nivoa su adresa pošaljioca i primaoca okvira, vrsta okvira i redni broj okvira. Što se tiče adresa pošaljioca i primaoca, protokoli drugog nivoa manipuliraju isključivo sa fizičkim adresama (npr. MAC adresama), i pod primaocem se uvijek smatra isključivo susjedno čvorište ka kojem okvir putuje, a ne krajnje odredište. Potrebu za numeracijom okvira uvidjećemo u nastavku.

Što se tiče strategije upravljanja tokom okvira, protokole drugog nivoa možemo podijeliti u tri

kategorije:

– Stop-and-wait protokoli, odnosno ABP (Alternative Bit Protocol) protokoli; – SRP (Selective Repeating Protocol) protokoli; – Go-Back-N protokoli;

Bez obzira koja se strategija koristi, pošaljilac će uvijek nakon emitiranja okvira aktivirati neki

vremenski brojač (tajmer). Kada taj brojač odbroji zadani broj otkucaja (tj. ukoliko je isteklo neko unaprijed dogovoreno vrijeme), pošaljilac će okvir poslati ponovo ukoliko u međuvremenu nije primio niti potvrdu niti odbijenicu za poslani okvir. Naravno, okvir će se poslati ponovo i prije isteka zadanog vremena ukoliko se eksplicitno primi odbijenica za poslani okvir. Tajmer je neophodan zbog mogućnosti da okvir uopće ne stigne do prijemnika (ni korektno, ni nekorektno), recimo zbog jačih smetnji ili privremenog prekida veze. Jasno je da u tom slučaju prijemnik ne može poslati niti potvrdu prijema niti odbijenicu, jer ništa nije ni primio (niti zna da je nešto uopće trebao da primi). Također se može dogoditi da potvrda ili odbijenica primitka okvira budu upropaštene na svom putovanju nazad ka pošaljiocu, tako da pošaljilac ne primi potvrdu ili odbijenicu, iako ih je prijemnik poslao. U takvom slučaju, pošaljilac neće znati da je okvir primljen, pa će ga ponovo poslati nakon isteka dogovorenog vremena. Očigledno je posve moguće da pošaljilac ponovo pošalje okvir koji je prijemnik primio ispravno. Da bi prijemnik znao da je primio duplikat okvira koji je već ranije ispravno primio, okviri obavezno moraju biti numerirani. Na taj način, prijemnik će biti u mogućnosti da prepozna i odbaci nepotrebne duplikate koje je eventualno primio.

Kod nekih jednostavnijih protokola se u slučaju nekorektnog prijema okvira uopće ne šalje odbijenica, nego prijemnik prosto šalje ponovo one i samo one okvire za koji nije primio potvrdu ispravnog prijema nakon isteka predviđenog vremena. Međutim, odbijenice mogu učiniti prenos efikasnijim, jer se okvir može ponovo poslati čim pristigne odbijenica bez čekanja na istek dogovorenog vremena.

Kod protokola koji spadaju u grupu stop-and-wait odnosno ABP protokola, sljedeći okvir (bilo

novi ili ponovo isti) se ne šalje dok ne stigne odgovor odnosno potvrda ili odbijenica prethodno poslanog okvira, ili dok ne istekne predviđeno vrijeme u kojem bi odgovor trebao da stigne. Ovo je prikazano na sljedećoj slici, u kojoj I predstavlja informacione okvire, dok A i N predstavljaju potvrde, odnosno odbijenice:

Page 43: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

43

Pošaljilac:

Prijemnik: Protokoli opisanog tipa mogu se koristiti kada je očekivano vrijeme propagacije kratko, tako da se

odgovor može dobiti u relativno kratkom vremenu. Pri tome, pod vremenom propagacije smatramo vrijeme koje protekne između slanja okvira i njegovog primitka. Ovo vrijeme nema nikakve veze sa samom brzinom prenosa podataka, nego dominantno ovisi od dužine kanala veze i brzini putovanja signala kroz kanal veze. Recimo, pri slanju podataka radio vezom na Mjesec, vrijeme propagacije iznosi oko 8 minuta, jer toliko treba elektromagnetnim valovima da stignu od Zemlje do Mjeseca, neovisno od toga što sama brzina prenosa podataka može biti veoma velika (vrijeme propagacije je zapravo očekivano vrijeme kašnjenja prijema poruke u odnosu na slanje poruke). Uglavnom, protokoli stop-and-wait tipa su isplativi samo ukoliko je vrijeme propagacije kratko u odnosu na prosječno trajanje prenosa okvira, odnosno ukoliko odgovor treba stići u vremenu koje je kratko u odnosu na vrijeme trajanja okvira. Ovdje treba naglasiti i da su svi karakter orjentirani protokoli isključivo protokoli stop-and-wait tipa.

S druge strane, pri prenosu podataka na velike daljine (recimo, putem satelita), česte su situacije u

kojima je vrijeme propagacije znatno, odnosno očekivano vrijeme za prijem odgovora je veliko u poređenju sa trajanjem samog okvira. U takvim slučajevima, stop-and-wait protokoli mogu biti izrazito neefikasni, jer se više vremena troši na čekanje nego na koristan prenos informacija, kao što prikazuje sljedeća slika:

Pošaljilac:

Prijemnik:

U ovakvim slučajevima, mnogo je isplatnije da pošaljilac započne slati nove okvire i prije nego što

su prethodni okviri potvrđeni. Međutim, postavlja se pitanje kako da pošaljilac prilikom prijema potvrde odnosno odbijenice može znati na koji se okvir ona odnosi ukoliko je u međuvremenu poslano više okvira. Očigledno, u ovom slučaju i potvrde odnosno odbijenice moraju sadržavati informaciju o rednom broju okvira koji se potvrđuje odnosno odbija. Na taj način će pošaljilac moći utvrditi na koji se okvir odnosi potvrda odnosno odbijenica.

Što se tiče prijemnika, on mora protokolu višeg nivoa isporučiti okvire u ispravnom redoslijedu.

To se može učiniti na više načina. Prema jednoj varijanti, prijemnik mora memorirati primljene okvire i slagati ih u ispravan redoslijed, sve dok ne dobije jednu kompletiranu sekvencu okvira u ispravnom redoslijedu koju može predati protokolu višeg sloja. Međutim, u tom slučaju, predajniku se mora postaviti ograničenje koliko najviše okvira smije poslati nakon nekog okvira, prije nego što stigne potvrda ili odbijenica tog okvira. To ograničenje se naziva veličina prozora (tipična vrijednost je 8), a sama strategija naziva se strategija klizećeg prozora (sliding window). Kada ne bismo imali to ograničenje, teoretski bi se moglo desiti da prijemniku treba neograničeno mnogo memorije. Zaista, dovoljno je zamisliti scenarij u kojem prvi okvir nikako ne uspijeva da se prenese ispravno, a svi ostali okviri prolaze bez problema. Protokoli ovog tipa nazivaju se SRP (Selective Repeating Protocol) protokoli zbog toga što prijemnik izabira koje pakete pošiljalac ponovo treba poslati. Interesantno je napomenuti i da ukoliko je veličina prozora jednaka N, nije potrebno okvire numerirati brojevima većim od N, nego je dovoljno koristiti brojanje po modulu N, odnosno nakon okvira numeriranog sa N–1 sljedeći okvir može biti numeriran ponovo brojem 0, itd. Na taj način se smanjuje broj neophodnih bita u zaglavlju okvira koji vode evidenciju o njegovom rednom broju.

I

A I

A I

N I

N I

smetnja, paket izgubljen

retransmisija istek

vremena I

A I

A novi okvir

ponovo retransmisija

OK nije OK OK

I

A I

A I

A I

čekanje... novi okvir

Page 44: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

44

Nedostatak SRP protokola je potreba za memoriranjem okvira u prijemniku, što u nekim slučajevima nije praktično. Alternativa koja izbjegava potrebu za memoriranjem su protokoli Go-Back-N tipa. Kod ovih protokola prijemnik očekuje da primi okvire samo u ispravnom redoslijedu. U slučaju da prijemnik primi okvir za koji utvrdi da nije ispravan, on će zahtijevati retransmisiju ne samo pogrešno prenesenog okvira, nego i svih okvira koje je pošaljilac poslao nakon spornog okvira. Prijemnik će nakon toga ignorirati sve okvire koji mu pristižu, sve dok ne primi ispravnu verziju spornog okvira (nakon ćega će, u skladu sa opisanom strategijom, primiti i sve okvire koji trebaju slijediti iza njega). Protokoli Go-Back-N tipa su očigledno manje efikasni od SRP protokola, ali se gubitak u efikasnosti može tolerirati ukoliko vjerovatnoća pogrešnog prenosa okvira nije velika.

Kao što je već rečeno, strategije SRP i Go-Back-N koriste se samo u bit orjentiranim protokolima.

Primjeri dobrih bit orjentiranih protokola su Ethernet protokol i HDLC. Neki dobri protokoli drugog nivoa, kao što je HDLC, mogu raditi u svim opisanim modusima rada, što je postignuto uvođenjem različitih vrsta odbijenica. Tako, na primjer, može postojati selektivna odbijenica samo jednog paketa, kao i odbijenica za cijelu grupu paketa poslanih nakon spornog paketa, a prijemnik šalje onu odbijenicu koja mu odgovara u skladu sa izabranim modusom rada. Konkretno, u HDLC protokolu, ove dvije vrste odbijenica nazivaju se respektivno SREJ (Selective Reject) i REJ (Reject).

10. Algoritmi za nalaženje najkraćeg puta između dva čvora

Za razumijevanje rada protokola trećeg nivoa, koji uključuju i donošenje odluke o optimalnoj putanji kroz mrežu između dva čvorišta, potrebno je ukratko razmotriti postojeće algoritme za određivanje najkraće putanje između dva proizvoljno zadana čvora u nekoj mreži povezanih čvorova (grafu). Pretpostavićemo da nam je data neka mreža povezanih čvorova, pri čemu je svakoj spojnici dva čvora (grani) pridružena neka vrijednost (težina) koja predstavlja neku mjeru udaljenosti ta dva čvora duž posmatrane spojnice. Takva mreža naziva se povezani težinski graf, kao recimo u primjeru na sljedećoj slici:

Neka je sada potrebno naći dužine najkraćih puteva od svih čvorova mreže do nekog zadanog

referentnog čvora, kao i same puteve (interesantno je da problem nalaženja najkraćeg puta između dva fiksna čvora u općem slučaju nije ništa lakši od problema nalaženja najkraćeg puta od svih čvorova mreže do jednog fiksnog čvora, i stoga se takav problem obično rješava svođenjem na generalniji problem koji upravo razmatramo). Dva algoritma za rješavanje ovog problema koja su se pokazala korisnim za potrebe računarskih mreža su Bellman-Fordov algoritam i Dijkstrin algoritam.

Bellman-Fordov algoritam je tipični primjer iterativnog algoritma, kod kojeg se djelimično

rješenje postupno popravlja iz iteracije u iteraciju, dok se ne postigne optimalno rješenje. Po ovom algoritmu, svakom čvoru se dodjeljuje tzv. potencijal. Vrijednost potencijala za neki čvor u svakom trenutku predstavlja dužinu najkraćeg do tada poznatog puta od posmatranog čvora do referentnog čvora. Na početku se samo referentnom čvoru dodjeljuje potencijal 0 (jer je to njegova udaljenost od samog sebe), dok ostalim čvorovima potencijal ostaje nedodijeljen (može se uzeti da su nedodijeljeni potencijali jednaki beskonačnosti). Zatim se razmatra redom jedan po jedan čvor. Za svaki čvor računa se zbir njegovog potencijala sa težinama svih grana koje izlaze iz tog čvora. Ukoliko je neki zbir manji od potencijala čvora u koji razmatrana grana vodi, njegov potencijal se mijenja i postaje jednak upravo

A B C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

Page 45: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

45

tom zbiru. Zaista, to znači da smo upravo našli kraći put do tog čvora od ranije poznatog puta, i to upravo kroz razmatrani čvor i razmatranu granu. Ukoliko je zbir veći od potencijala čvora u koji razmatrana grana vodi, njegov potencijal zadržava svoju raniju vrijednost.

Jedna iteracija Bellman-Fordovog algoritma završava kada se obrade svi čvorovi. Međutim, kako

obrada ma kojeg čvora može dovesti do promjene potencijala nekog već ranije obrađenog čvora, to ne mora značiti da su izračunati potencijali najbolji mogući. Stoga treba započeti novu iteraciju, u kojoj se iznova obrađuju redom svi čvorovi, ali polazeći od potencijala kakvi su dobijeni na kraju prethodne iteracije. Postupak se završava kada u nekoj iteraciji ne dođe do promjene niti jednog potencijala. Nađeni potencijali su tada konačni i predstavljaju najkraće udaljenosti čvorova mreže od referentnog čvora. Može se dokazati da broj iteracija ne može biti veći od broja čvorova, a tipično je znatno manji.

Razmotrimo izvođenje Bellman-Fordovog algoritma na primjeru mreže sa prethodne slike. Neka

je A referentni čvor. Njemu se dodjeljuje potencijal 0, dok je potencijal ostalih čvorova nedodjeljen (beskonačan). Dogovorimo se da čvorove razmatramo u abecednom poretku. Nakon razmatranja čvora A, čvorovi B, D i E respektivno dobijaju potencijale 13, 2 i 12. Nakon razmatranja čvora B, potencijal čvora A se ne mijenja (13 + 13 > 0), čvor C dobija potencijal 18, potencijal čvora E se ne mijenja (13 + 2 > 12), dok potencijal čvora F postaje 22. Nakon razmatranja čvora C, potencijali čvorova B i F se ne mijenjaju, dok čvor G dobija potencijal 21. Nakon ova 3 koraka, situacija je kao na sljedećoj slici:

Prelaskom na čvor D, dolazi do prve promjene potencijala. Naime, čvor A zadržava prethodni potencijal, ali se potencijal čvora E smanjuje sa 12 na 11 (2 + 9 < 12). Pored toga, čvor H dobija potencijal 3, tako da je situacija kao na sljedećoj slici:

Prelaskom na čvor E, potencijali čvorova A, B i D se ne mijenjaju, dok se potencijal čvora F

smanjuje sa 22 na 12 (11 + 1 < 22). Potencijal čvora H ostaje isti, dok čvor I dobija potencijal 15, što daje sljedeću situaciju:

A B C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 12 22

18

21

A B C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 11 22

18

21

3

Page 46: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

46

Sljedeći čvor za razmatranje je čvor F. U odnosu na njega, ne mijenjaju se potencijali čvorova B, C, E i G, dok se potencijal čvora I smanjuje sa 15 na 13. Pored toga, čvor J dobija potencijal 21, tako da imamo situaciju kao na sljedećoj slici:

Razmatranje čvora G ne dovodi do promjene potencijala niti jednog čvora. Nakon razmatranja

čvora H, potencijal čvora D ostaje isti, dok se potencijali čvorova E i I spuštaju sa vrijednosti 11 i 13 na vrijednosti 9 i 6 respektivno, što je prikazano na sljedećoj slici:

Sljedeći čvor za razmatranje je čvor I. Nakon njegovog razmatranja, potencijali čvorova E i H se

ne mijenjaju, dok potencijali čvorova F i J postaju respektivno 7 i 8, tako da je nova situacija kao na sljedećoj slici:

A B C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 11 12

18

21

3 15

A B C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 11 12

18

21

3 13 21

B A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 9 12

18

21

3 6 21

G 21

A C

D E F

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 9 7

18

3 6 8

B

Page 47: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

47

Posljednji čvor za razmatranje u prvoj iteraciji je čvor J. Nakon njegovog razmatranja, potencijali tačaka F i I ostaju isti, ali se potencijal čvora G snižava sa 21 na 20. Kako su obrađeni svi čvorovi, prva iteracija je završena, ali to ne znači da su svi potencijali dobili svoje konačne vrijednosti. Stanje nakon prve iteracije prikazano je na sljedećoj slici:

Drugu iteraciju započinjemo ponovo od čvora A, polazeći od potencijala kakvi su dobijeni na

kraju prve iteracije. Razmatranje čvora A ne dovodi do promjene potencijala niti jednog čvora. Isto se dešava i nakon razmatranja čvorova B, C i D. Međutim, nakon razmatranja čvora E, potencijali njemu susjednih čvorova A, D, F, H i I ostaju isti, ali se potencijal čvora B smanjuje sa 13 na 11 (9 + 2 < 13), što daje situaciju kao na sljedećoj slici:

Sljedeći čvor za razmatranje je čvor F. Nakon njegovog razmatranja, potencijali čvorova B, I i J

se ne mijenjaju, ali potencijali čvorova C, E i G postaju respektivno 13, 8 i 18. Nakon ovih izmjena, situacija je kao na sljedećoj slici:

Nakon razmatranja čvorova G, H, I i J ne dolazi do izmjene niti jednog potencijala. Kako su

ponovo obrađeni svi čvorovi, završena je i druga iteracija, nakon koje je situacija identična kao i na prethodnoj slici.

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 13

2 9 7

18

20

3 6 8

B

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 11

2 9 7

18

20

3 6 8

B

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 11

2 8 7

13

18

3 6 8

B

Page 48: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

48

Prelazimo na treću iteraciju. Razmatranje čvorova A i B ne dovodi ni do kakvih izmjena u potencijalima, dok razmatranje čvora C mijenja potencijal čvora G sa 18 na 16 (potencijali ostalih čvorova ostaju isti). Novonastala situacija prikazana je na sljedećoj slici:

Razmatranje čvora D ne dovodi ni do kakvih promjena, dok se nakon razmatranja čvora E

mijenja potencijal čvora B koji postaje 10, što daje sljedeću situaciju:

Dalje razmatranje čvorova F, G, H, I i J ne dovodi ni do kakvih promjena, tako da je završena i

treća iteracija. Dakle, situacija nakon treće iteracije je u skladu sa prethodnom slikom. Prelazimo na četvrtu iteraciju. Razmotrimo li ponovo sve čvorove od A do I redom, možemo

vidjeti da obrada niti jednog od ovih čvorova ne dovodi ni do kakve izmjene uspostavljenih potencijala čvorova. To zapravo znači da su uspostavljeni potencijali ujedno i konačni, te se algoritam završava u četvrtoj iteraciji, sa situacijom koja je identična kao na prethodnoj slici. Uspostavljeni potencijali predstavljaju dužine najkraćih puteva od pripadnih čvorova do referentnog čvora A.

Za praktične svrhe potrebno je poznavati ne samo koliko iznosi najkraća udaljenost od nekog

čvora do referentnog, nego i kuda tačno prolazi najkraći put. Međutim, tu informaciju je lako pronaći prateći potencijale. Krenemo od nekog čvora i pratimo onu granu koja vodi u čvor čiji je potencijal manji tačno za onoliko koliko iznosi težina posmatrane grane. Nastavimo li tako, sigurno dolazimo do referentnog čvora najkraćim putem. Recimo, neka tražimo najkraći put iz čvora B do referentnog čvora A. Kako čvor B ima potencijal 10, a njegov susjed E ima potencijal 8, koji je manji od potencijala čvora B tačno za onoliko koliko iznosi težina grane BE, to najkraći put iz čvora B ka čvoru A vodi kroz čvor E. Dalje, u čvoru E vidimo da je jedina grana koja vodi u čvor čiji je potencijal manji od potencijala čvora E tačno za onoliko koliko iznosi težina grane grana EF, koja vodi u čvor F. Dakle, traženi put vodi kroz čvor F. Ista logika nas dalje vodi u čvor I, zatim u čvor H, zatim u čvor D, i konačno, u čvor A. Dakle, traženi put je B – E – F – I – H – D – A. Jasno je da ovo mora biti najkraći put, jer su zbirovi težina grana duž ovog puta upravo jednaki potencijalu čvora B. Nađeni put je prikazan podebljano na sljedećoj slici.

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 11

2 8 7

13

16

3 6 8

B

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 10

2 8 7

13

16

3 6 8

B

Page 49: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

49

Najkraći put između proizvoljnog i referentnog čvora može se naći i jednostavnije ukoliko se tokom izvođenja algoritma prilikom ažuriranja potencijala čvorova također vodi i evidencija u odnosu na koji čvor je potencijal izračunat. Na taj način, za prethodni primjer bismo dobili evidenciju kao na sljedećoj slici. Prateće informacije uz potencijale čvorova tada direktno pokazuju prema kojem čvoru treba ići da bi se najkraćim putem stiglo do referentnog čvora.

Razmotrimo koliko je efikasan posmatrani algoritam. Neka je n broj čvorova. U najgorem

slučaju, svaki čvor može biti povezan sa n – 1 drugih čvorova, tako da se u jednoj iteraciji za svaki od n čvorova moraju testirati potencijali svih n – 1 njegovih susjeda. Stoga, u jednoj iteraciji je potrebno najviše n (n – 1) ≈ n2 testiranja i eventualih korigiranja potencijala. Kako broj iteracija u najgorem slučaju iznosi n, to je u najgorem slučaju potrebno oko n3 elementarnih operacija da se uspostave konačne vrijednosti svih potencijala.

U mnogim slučajevima je neophodno pronaći najkraće puteve iz svih čvorova mreže ne samo

prema jednom referentnom čvoru, nego prema svim ostalim čvorovima u mreži. Jasno je da je za tu svrhu moguće koristiti isti algoritam, ali je u svakom čvoru potrebno čuvati ne samo jedan potencijal, nego čitavu tabelu od n potencijala (po jedan za svaki od n mogućih referentnih čvorova). Na početku algoritma, za svaki čvor samo jedan od potencijala inicijaliziramo na nulu (onaj potencijal koji odgovara upravo tom čvoru kao referentnom), a ostale potencijale ostavljamo neinicijalizirane. Postupak dalje teče identično, samo se tada u svakoj od iteracija ažuriraju čitave tablice potencijala pridružene čvorovima, umjesto samo jednog potencijala pridruženog čvoru.

Bellman-Fordov algoritam je relativno spor algoritam, ali ima jednu dobru stranu koja ga čini

jako pogodnim za realizaciju na mrežama računara. Naime, primijetimo da se tokom izvođenja algoritma sve informacije razmjenjuju isključivo između susjednih čvorova, odnosno niti u jednom koraku na promjenu potencijala nekog čvora ne može utjecati potencijal niti jednog drugog čvora osim nekog od njegovih susjeda. Ukoliko pretpostavimo da su čvorovi grafa zapravo čvorišta neke računarske mreže, tokom izvođenja algoritma sva čvorišta trebaju razmjenjivati informacije samo sa čvorištima na koja su neposredno spojeni, odnosno nikakva komunikacija između čvorišta koja nisu susjedna nije potrebna.

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0 10

2 8 7

13

16

3 6 8

B

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 10/E

2/A 8/F

B

3/D 6/H

7/I

8/I

13/F

16/C

Page 50: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

50

Razmotrimo sada Dijkstrin algoritam za nalaženje najkraćeg puta. Tokom njegovog izvođenja se postupno gradi stablo najkraćih puteva koji vode ka referentnom čvoru. Slično Bellman-Fordovom algoritmu, na početku se referentnom čvoru dodjeljuje potencijal 0, dok ostalim čvorovima potencijal ostaje nedodijeljen. Pored toga, referentni čvor se proglašava za tekući čvor. U svakom koraku algoritma, potencijal tekućeg čvora se sabira sa težinama svih grana koje izlaze iz tog čvora, kao i kod Bellman-Fordovog algoritma, i ukoliko je neki zbir manji od potencijala čvora u koji razmatrana grana vodi, njegov potencijal se mijenja i postaje jednak upravo tom zbiru, a u suprotnom ostaje nepromijenjen. Zatim se pronalazi čvor sa najmanjim potencijalom. Grana koja spaja taj čvor sa onim čvorom u odnosu na kojeg je njegov potencijal bio izračunat dodaje se u stablo najkraćih puteva, a on se proglašava za novi tekući čvor. Postupak se dalje nastavlja na isti način, samo što se u svakom koraku prilikom traženja čvora sa najmanjim potencijalom ne uzimaju u obzir oni čvorovi koji su već povezani stablom najkraćih puteva, odnosno oni koji su već jednom bili tekući čvorovi (za njih ćemo reći da su “obrađeni”), kao ni one grane koje čine stablo najkraćih puteva. Postupak se završava nakon što se obrade svi čvorovi. Očigledno, za izvođenje ovog algoritma nije dovoljno samo voditi evidenciju o iznosima potencijala čvorova, već je za svaki potencijal potrebno voditi evidenciju o tome u odnosu na koji čvor je taj potencijal računat.

Demonstrirajmo izvođenje Dijkstrinog algoritma na primjeru iste mreže kao pri demonstraciji

Bellman-Fordovog algoritma. Neka je ponovo A referentni čvor. Njemu dodjeljujemo potencijal 0, i uzimamo ga za tekući čvor. Njegovi susjedi B, D i E dobijaju respektivno potencijale 13, 2 i 12. Najmanji potencijal ima čvor D, koji postaje novi tekući čvor. Granu DA dodajemo u stablo najkraćih puteva, tako da dobijamo situaciju kao na sljedećoj slici:

Nakon razmatranja novog tekućeg čvora D, čvor E mijenja svoj potencijal sa 12 na 11 (2 + 9 < 12), dok čvor H dobija potencijal 3. Najmanji potencijal među neobrađenim čvorovima ima čvor H, koji postaje novi tekući čvor. Granu HD dodajemo u stablo najkraćih puteva, tako da dobijamo situaciju kao na sljedećoj slici:

Nakon razmatranja čvora H, čvor E mijenja svoj potencijal sa 11 na 9, dok čvor I dobija

potencijal 3. Najmanji potencijal među neobrađenim čvorovima ima čvor I, koji postaje novi tekući čvor. Granu IH dodajemo u stablo najkraćih puteva, čime se dobija sljedeća situacija:

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 13/A

2/A 12/A

B

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 13/A

2/A 11/D

B

3/D

Page 51: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

51

Razmotrimo sada čvor I. U odnosu na njega, čvorovi F i J dobijaju redom potencijale 7 i 8, dok potencijal čvora E ostaje nepromijenjen (6 + 4 > 9). Od svih neobrađenih čvorova, čvor F ima najmanji potencijal, tako da on postaje novi tekući čvor, a grana FI se dodaje u stablo najkraćih puteva. Nakon razmatranja čvora F, potencijali čvorova B i J se ne mijenjaju, čvorovi C i G dobijaju redom potencijale 13 i 18, dok se potencijal čvora E smanjuje sa 9 na 8. Sada, od svih neobrađenih čvorova, najmanje potencijale imaju čvorovi E i J. Možemo se odlučiti za bilo koji od njih. Odlučimo li se za čvor E, on postaje novi tekući čvor, a grana EF dodaje se u stablo najkraćih puteva. Novu situaciju prikazuje sljedeća slika:

Nakon razmatranja čvora E, čvor B dobija novi potencijal 10, dok su svi njegovi susjedi svakako

već obrađeni. Sada, od svih neobrađenih čvorova, najmanji potencijal ima čvor J. On postaje novi tekući čvor, a u stablo najkraćih puteva dodaje se grana J I. Time dobijamo situaciju prikazanu na sljedećoj slici:

Nakon razmatranja čvora J, čiji je jedini neobrađeni susjed čvor G, ništa se ne mijenja. Ostala su tri neobrađena čvora, B, C i G. Od njih, najmanji potencijal ima čvor B, koji postaje novi tekući čvor, a u stablo najkraćih puteva dodajemo granu BE. Razmatranje čvora B također ništa ne mijenja, nakon čega kao neobrađeni čvorovi ostaju C i G. Od njih najmanji potencijal ima čvor C, koji postaje novi tekući čvor, a granu CF dodajemo u stablo najkraćih puteva. Nakon razmatranja posljednjeg neobrađenog čvora C, čvor G mijenja potencijal na 16. On svakako postaje tekući čvor, a grana GC dodaje se u stablo najkraćih puteva. Ovim su svi čvorovi obrađeni, te se algoritam završava, uz situaciju prikazanu na sljedećoj slici:

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 13/A

2/A 9/H

B

3/D 6/H

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 13/A

2/A 8/F

B

3/D 6/H

7/I

8/I

13/F

18/F

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 10/E

2/A 8/F

B

3/D 6/H

7/I

8/I

13/F

18/F

Page 52: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

52

Analizirajmo efikasnost izvršavanja Dijkstrinog algoritma. Algoritam se očigledno izvršava u n koraka, gdje je n broj čvorova. U svakom koraku treba analizirati i eventualno popraviti potencijale svih neobrađenih susjeda tekućeg čvora. U najgorem slučaju, kada je svaki čvor spojen sa svakim, u prvom koraku takvih susjeda može biti n – 1, u drugom koraku n – 2, itd. Stoga je ukupan broj operacija koje treba izvršiti za analizu i popravke potencijala čvorova u najgorem slučaju jednak zbiru (n – 1) + (n – 2) + ... + 2 + 1 = n (n – 1) / 2. Dalje, u svakom koraku treba naći najmanji potencijal između svih neobrađenih čvorova da bismo odredili koji čvor postaje novi tekući čvor. U prvom koraku, kandidata za novi tekući čvor može biti n – 1, u drugom koraku n – 2, itd. Stoga, za pronalaženje tekućih čvorova u svim koracima treba također n (n – 1) / 2 operacija. Dakle, u najgorem slučaju, broj elementarnih operacija koje se izvrše tokom izvođenja Dijkstrinog algoritma iznosi n (n – 1) ≈ n2. Ovo je znatno bolja efikasnost nego kod Bellman-Fordovog algoritma, koji u najgorem slučaju zahtijeva oko n3 elementarnih operacija.

Bez obzira na znatno veću efikasnost Dijkstrinog u odnosu na Bellman-Fordovog algoritma, on

posjeduje neke ozbiljne nedostatke, zbog kojih je Bellman-Fordov algoritam itekako značajan. Prvo, Dijkstrin algoritam ne radi sa grafovima kod kojih grane posjeduju negativne težine, ali se takvi grafovi ne javljaju u računarskim mrežama, pa nam taj nedostatak ovdje nije bitan. Znatno veći problem je što je Dijkstrin algoritam prilično teško implementirati u računarskim mrežama. Naime, u svakom koraku je neophodno odrediti novi tekući čvor razmatranjem svih neobrađenih čvorova, a ne samo susjeda tekućeg čvora. To odeređivanje ne može se odrediti samo razmjenom jednostavnih informacija između susjednih čvorova, kao kod Bellman-Fordovog algoritma. Ako pretpostavimo da su čvorovi grafa čvorišta neke računarske mreže, svako čvorište mora voditi evidenciju ne samo o svom potencijalu, nego o stanju čitave mreže (uključujući potencijale svih čvorova kao i evidenciju koji su čvorovi obrađeni a koji nisu) da bi se mogla donijeti evidencija o tome koji čvor preuzima ulogu tekućeg čvora. Ovo zahtijeva veću složenost čvorišta. Situacija postaje još složenija ukoliko je potrebno odrediti najkraće puteve do svih čvorova mreže, a ne samo do jednog referentnog čvora (a obično je potrebno). Količina informacija koju treba pamtiti tada se uvećava n puta (za svaki od n mogućih referentnih čvorova).

11. Protokoli trećeg nivoa

Protokoli trećeg nivoa imaju više različitih, ali povezanih funkcija. Na prvom mjestu, svi protokoli trećeg i višeg nivoa barataju sa logičkim adresama učesnika u komunikaciji (npr. IP adresama, ukoliko se koristi IP protokol), dok protokoli drugog nivoa poznaju samo fizičke adrese (recimo, MAC adrese). Kako protokol trećeg nivoa prilikom traženja usluga prenosa podataka do susjednog čvorišta mora protokolu drugog nivoa saopštiti fizičku adresu odredišta, prva stvar koju protokoli trećeg nivoa moraju obavljati je konverzija logičkih u fizičke adrese. Za tu svrhu, svi uređaji koji poznaju protokole trećeg nivoa, što uključuje sve računare kao krajnje tačke mreže (tzv. hostove) i inteligentniju mrežnu opremu poput rutera (koji su, u suštini, specijalizirani računari) moraju održavati konverzionu tablicu koja sadrži parove koji se sastoje od logičke i fizičke adrese za svakog učesnika u komunikaciji. Uz pretpostavku da se kao logička adresa koristi IP adresa a kao fizička adresa MAC adresa, ta tablica mogla bi izgledati recimo ovako (podsjetimo se da je IP adresa 32-bitni broj koji se obično predstavlja kao četiri 8-bitna broja razdvojena tačkama, dok je MAC adresa neki 48-bitni broj,

A C

D E F

G

H I

J

13 5

2 12 2 9 6 3

9 1 11

1 6 4 1 9 12

3 2

0/A 10/E

2/A 8/F

B

3/D 6/H

7/I

8/I

13/F

16/C

Page 53: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

53

koji se najčešće prikazuje kao 12-cifreni heksadekadni broj, grupiran u 6 grupa po 2 cifre razdvojene crticama):

Logička adresa Fizička adresa 192.168.10.1 45619810231523 (29–7D–B0–95–64–E3) 192.168.10.3 23851405837431 (15–B1–56–92–84–77) 192.168.11.13 92834517200140 (54–6E–B8–6B–AD–0C) ... ...

Prilikom pretvaranja logičke adrese u fizičku, prvo se logička adresa traženog odredišta pretražuje u konverzionoj tablici. Ukoliko se pronađe, odgovarajuća fizička adresa se prosto čita iz tablice. Međutim, problem nastaje ukoliko se tražena informacija ne nalazi u tablici. U tom slučaju, obično se izvršava specijalan podprotokol trećeg nivoa poznat pod nazivom protokol otkrivanja adrese ili ARP (Address Resolving Protocol). Prema ovom protokolu, onaj čvor koji ne može u tabeli pronaći neophodnu informaciju o fizičkoj adresi šalje specijalnu poruku, nazvanu ARP zahtjev (ARP Request), u koju je upakovana informacija da se radi o zahtjevu za otkrivanju adrese, kao i logička adresa čvorišta čija se fizička adresa traži. Ta poruka se šalje svim učesnicima u mreži, tehnikom koja se naziva javno emitiranje (broadcasting). Za broadcasting se koristi specijalna logička adresa namijenjena isključivo za broadcasting, koja ne može biti jednaka adresi niti jednog konkretnog računara. Svi učesnici u komunikaciji koji prime poruku sa takvom adresom, dužni su da je dalje distribuiraju svima.

Svaki računar (ili ruter) koji primi poruku koja predstavlja ARP zahtjev dužan je da uporedi

logičku adresu koja piše u sadržaju poruke sa svojom logičkom adresom. Ukoliko se one ne poklapaju, poruka se prosto ignorira. Međutim, ukoliko se one poklapaju, računar treba da pročita svoju fizičku adresu (postoje načini da se to uradi), upakuje je u poruku koja predstavlja odgovor na ARP zahtjev i proslijedi je nazad u smjeru odakle je poruka došla (razumije se da poruka mora sadržavati i adresu pošaljioca, da bi bilo moguće ispravno proslijediti odgovor). Konačno, kada pošaljioc ARP zahtjeva primi odgovor, on može ažurirati svoju konverzionu tablicu i nastaviti kao što je uobičajeno.

Slična procedura može se koristiti i u slučaju kada neki računar nema fiksno dodijeljenu logičku

adresu, nego se ona dinamički dodjeljuje prilikom svakog priključivanja računara na mrežu. U tom slučaju, računar koji vidi da ne poznaje svoju vlastitu logičku adresu, može poslati zahtjev da mu se ona dodijeli. Također, može se desiti da računar ima dodijeljenu logičku adresu, ali da ju je iz nekog razloga izgubio (to se, recimo, dešava kod radnih stanica bez diskova, koje gube informacije svaki put kada dođe do nestanka napajanja). U tom slučaju, protokol vrlo sličan ARP protokolu, pod nazivom RARP (Reverse Address Resolving Protocol), može se iskoristiti za pronalaženje izgubljene adrese. RARP zahtjev sadrži fizičku adresu računara čija se logička adresa traži. Onaj učesnik u komunikaciji čija konverziona tablica sadrži traženu informaciju o logičkoj adresi računara sa poznatom fizičkom adresom uputiće traženi odgovor. Vrlo sličan RARP protokolu je i IARP (Inverse Address Resolving Protocol) protokol. Razlika između RARP i IARP protokola je što kod RARP protokola, neki računar koji ne zna svoju vlastitu logičku adresu a zna fizičku, traži otkrivanje svoje logičke adrese, dok kod IARP protokola neki računar zahtijeva da mu se otkrije logička adresa nekog drugog računara (a ne njega samog) čiju fizičku adresu poznaje.

Blokovi podataka sa kojima manipuliraju protokoli trećeg nivoa obično se nazivaju paketi ili,

nešto specifičnije, datagrami (pošto se riječ paket nekada koristi i za bilo kakav blok podataka, neovisno od nivoa protokola koji sa njim manipulira), za razliku od okvira koji predstavljaju blokove podataka sa kojima manipuliraju protokoli drugog nivoa i koji se prenose kroz komunikacioni kanal tačno onakvi kakvi jesu. Datagrami u svom zaglavlju svakako sadrže, između ostalog, logičku adresu pošaljioca informacije i logičku adresu primaoca (tj. krajnjeg odredišta). Protokoli drugog nivoa na datagrame dodaju svoje vlastito zaglavlje, čime datagrami postaju okviri. Već smo rekli da zaglavlja okvira sadrže fizičke adrese pošaljioca i prijemnika informacija. Međutim, kako se protokoli drugog nivoa brinu samo o prenosu podataka između dva susjedna čvorišta u mreži, fizička adresa prijemnika

Page 54: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

54

u okviru je uvijek fizička adresa prvog narednog čvorišta ka kojem poruka putuje, a ne fizička adresa krajnjeg odredišta. Stoga, kada poruka putuje ka krajnjem odredištu, u podacima koji putuju kroz komunikacioni kanal, fizičke adrese pohranjene u okvirima se mijenjaju od čvorišta do čvorišta, dok logičke adrese ostaju iste tokom cijelog putovanja poruke. Jedina iznimka kada prilikom putovanja poruke može doći do izmjene logičke adrese biće obrađena nešto kasnije.

Recimo sada nešto i o strukturama IP adresa, koje predstavljaju najčešći sistem logičkog

adresiranja koji je danas u upotrebi. Kod IP adresa, jedna skupina bita identificira računar unutar mreže, dok druga skupina bita identificira samu mrežu (ovo je neophodno ukoliko se više manjih mreža povezuje u neku super-mrežu – drastičan primjer je, recimo, Internet). Prema starijem modelu klasifikacije IP adresa poznatom kao tzv. klasno adresiranje, IP adrese se dijele u različite klase, u zavisnosti od toga koliko je bita rezervirano za identifikaciju mreže, a koliko za identifikaciju računara unutar mreže. Pri tome se IP adrese iz različitih klasa mogu prepoznati po strukturi prvih nekoliko karakterističnih bita.

IP adrese klase A imaju oblik 0nnnnnnn.cccccccc.cccccccc.cccccccc, gdje su n biti koji

identificiraju mrežu, a c biti koji identificiraju računar unutar mreže. Dakle, kod ovog sistema adresiranja, 7 bita se koristi za identifikaciju mreže, a 24 bita za identifikaciju računara unutar mreže. S obzirom da ćemo uskoro vidjeti da su IP adrese u kojima su svi biti koji identificiraju računar jednaki nuli ili jedinici rezervirani za posebne namjene, slijedi da unutar mreže klase A možemo imati ukupno čak 224 – 2 = 16777214 računara, ali takvih mreža može biti najviše 27 = 128. IP adrese klase A lako se prepoznaju po tome što im je prvi bajt uvijek u opsegu od 0 do 127.

IP adrese klase B imaju oblik 10nnnnnn.nnnnnnnn.cccccccc.cccccccc, tako da se 14 bita koriste za

identifikaciju mreže, a 16 bita za identifikaciju računara unutar mreže. Ovim je broj računara u mreži smanjen na 216 – 2 = 65534, ali takvih mreža može biti ukupno 214 = 16384, što je znatno prihvatljivije sa aspekta broja mogućih mreža koje se mogu međusobno povezivati. IP adrese klase B prepoznaju se po tome što im je prvi bajt uvijek u opsegu od 128 do 191.

IP adrese klase C imaju oblik 110nnnnn.nnnnnnnn.nnnnnnnn.cccccccc, sa 21 bitom rezerviranim

za identifikaciju mreže, i 8 bita rezerviranim za identifikaciju računara unutar mreže. Na ovaj način, moguće je razlikovati čak 221 = 2097152 različitih mreža, ali pri tome u svakoj od mreža može biti svega 28 – 2 = 254 računara. Stoga se IP adrese iz klase C mogu koristiti samo za manje računarske mreže. IP adrese iz ove klase mogu se prepoznati po prvom bajtu koji je uvijek u opsegu od 192 do 223.

Postoje još i IP adrese klase D i klase E. IP adrese klase D počinju sekvencom bita 1110, i one se koriste za tzv. multicast adresiranje, u kojem se ista informacija istovremeno isporučuje grupi primaoca. Ove adrese imaju prvi bajt u opsegu od 224 do 239. Konačno, IP adrese klase E rezervirane su za specijalne potrebe. One počinju sekvencom bita 1111, i njihov prvi bajt je u opsegu od 240 do 255.

Već smo napomenuli da IP adrese kod kojih su svi biti koji služe za identifikaciju računara jednaki

nuli odnosno jedinici rezervirani za posebne namjene. Tako, ukoliko su svi biti za identifikaciju računara jednaki jedinici, radi se o adresi koja se koristi za broadcasting, tj. na koju trebaju obratiti pažnju svi računari u mreži. Na primjer, u nekoj mreži klase C, broadcasting adresa ima oblik 110nnnnn.nnnnnnnn.nnnnnnnn.11111111 i može se prepoznati po tome što joj je posljednji bajt jednak 255 (npr. 197.144.39.255). Nasuprot tome, IP adrese kod kojih su svi biti koji služe za identifikaciju računara jednaki nuli, radi se o tzv. mrežnoj adresi, tj. adresi koja identificira samu mrežu. Recimo, za mreže klase C mrežna adresa ima oblik 110nnnnn.nnnnnnnn.nnnnnnnn.0000000 i prepoznatljiva je po posljednjem bajtu koji je jednak 0 (npr. 197.144.39.0). Obratimo pažnju na razliku između adrese za broadcasting koja se odnosi na sve računare u mreži i mrežne adrese, za koju se može reći da predstavlja bilo koji računar (neodređeno koji) u mreži. Mrežne adrese se obično koriste u tabelama rutiranja, kada je potrebno ukazati kuda treba usmjeriti podatke koje idu ka bilo kojem računaru unutar neke mreže.

Page 55: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

55

Predložena podjela IP adresa na klase je veoma gruba, jer se odnos između broja računara u mreži i broja mreža ne može mijenjati u finijim koracima. Da bi se riješio ovaj problem, predloženo je i uvođenje tzv. maske podmreže (subnet mask), koja predstavlja sekvencu od 32 bita, u kojoj bit 1 označava da odgovarajući bit u IP adresi identificira mrežu, dok bit 0 označava da odgovarajući bit u IP adresi identificira računar unutar mreže. Tako je mrežu koja koristi IP adrese određene klase moguće podijeliti u manje podmreže. Recimo, neka imamo mrežu koja koristi IP adrese klase C. Prirodna maska podmreže za adrese klase C glasi 11111111.11111111.11111111.00000000 odnosno, decimalno zapisano, 255.255.255.0 (bite koji određuju da se radi o adresi klase C također svrstavamo u bite za identifikaciju mreže). Ukoliko sada ovu mrežu želimo podijeliti u četiri podmreže, potrebno je dodati još dva bita za identifikaciju podmreže. To možemo postići dodavanjem još dvije jedinice u masku podmreže, koja će sada glasiti 11111111.11111111.11111111.11000000 odnosno, decimalno zapisano, 255.255.255.192. U svakoj od tih podmreža ostaje 6 bita za identifikaciju računara, na osnovu čega broj računara u svakoj od tih podmreža može biti maksimalno 26 – 2 = 62.

U suštini, nakon uvođenja maske podmreže, sam pojam klasa postaje nepotreban, s obzirom da

sama maska određuje koji biti identificiraju mrežu, a koji računar unutar mreže. Zbog toga se, kad god se koriste maske podmreže, obično koristi tzv. bezklasno (classless) adresiranje, u kojem sam pojam klasa ne igra nikakvu ulogu. Recimo, neka imamo IP adresu 11010000.10010000.11001001.11000001 (ili dekadno 208.144.201.193) i masku podmreže 11111111.11111111.11111000.00000000 (dekadno 255.255.248.0). U ovoj adresi 21 bit određuje mrežu a preostalih 11 bita računar unutar mreže (tako da u ovoj mreži može biti ukupno 211 – 2 = 2046 računara , bez obzira što je u pitanju formalno adresa klase C, u kojoj ne bi moglo biti više od 254 računara). Dalje, kako se u praksi insistira da se maske podmreže uvijek moraju sastojati od sekvence uzastopnih jedinica iza koje slijedi sekvenca uzastopnih nula (tako da, na primjer, maska podmreže 11110000.11100111.11111000.00000000 nije legalna), obično se uz IP adresu umjesto kompletne maske podmreže piše samo kosa crta iza koje slijedi broj koji predstavlja broj uzastopnih jedinica unutar maske podmreže. Na primjer, IP adresa 208.144.201.193 iz prethodnog primjera zajedno sa pripadnom maskom podmreže 255.255.248.0 obično se piše prosto kao 208.144.201.193 / 21. Primijetimo da zbog navedenog ograničenja na strukturu maske podmreže, bajti koji čine masku podmreže mogu imati samo jednu od sljedećih 8 vrijednosti: 128, 192, 224, 240, 248, 252, 254 ili 255. Također, bitno je napomenuti da se izvođenjem logičke AND operacije bit po bit između IP adrese nekog računara i pripadne maske podmreže dobija mrežna adresa mreže kojoj pripada taj računar, što je i glavni razlog zbog čega maska podmreže ima upravo takvu strukturu. Na primjer, za računar iz prethodnog primjera lako je ustanoviti da mrežna adresa glasi 11010000.10010000.11001000.00000000 odnosno 208.144.200.0 dekadno.

Već smo vidjeli da sve učesnike u komunikaciji koji poznaju protokole trećeg nivoa možemo

podijeliti u dvije skupine: krajnje računare (hostove), koji su povezani sa ostatkom mreže preko samo jednog priključka, i rutere, koji su povezani sa ostatkom mreže preko više od jednog priključka. Pri tome je bitno napomenuti da za razliku od hostova, koji imaju jedinstvenu IP adresu, ruteri imaju po nekoliko IP adresa, po jednu za svaki od njihovih priključaka (interfejsa). Naime, ruteri su tipično spojne tačke koje spajaju više manjih mreža u jednu veću mrežu, tako da različiti priključci rutera logički pripadaju različitim podmrežama, tako da se njima dodjeljuju IP adrese čija struktura odražava pripadnost odgovarajućoj podmreži. Kada bi svi priključci rutera imali istu IP adresu (tj. kada bi ruter kao uređaj imao jedinstvenu IP adresu), postavlja se pitanje kako bi se u toj adresi dodijelili biti koji identificiraju podmrežu, s obzirom da ruter logički pripada svim podmrežama koje povezuje. Taj problem je riješen prosto razdvajanjem IP adresa koje odgovaraju pojedinim priključcima.

RUTER

Mreža 1

Mreža 2 Mreža 3

IP1

IP2 IP3

Page 56: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

56

Već smo rekli da se ruter pomoću kojeg se neka lokalna mreža povezuje na neku vanjsku mrežu (recimo, internet) obično naziva mrežni prolaz (gateway) i on može vršiti i neke dopunske funkcije poput prilagođavanja jedne mreže drugoj (u slučaju da su mreže međusobno različite strukture) koju obični ruteri ne vrše. U takvim slučajevima, vanjska mreža mora biti spremna da prihvati IP adrese svih računara u lokalnoj mreži koje se na nju priključuju (tj. njihove adrese moraju biti predviđene od strane administracije vanjske mreže). Međutim, često je to preveliko opterećenje adresnog prostora za vanjsku mrežu, tako da su česte situacije da je administracija vanjske mreže voljna da za potrebe lokalne mreže koja se na nju priključuje rezervira samo jednu IP adresu. Izlaz iz te situacije nađen je tako što se mrežnom prolazu koji povezuje tu lokalnu mrežu na vanjsku mrežu povjeri i funkcija prevođenja adresa. Mrežni prolazi koji su u stanju obavljati ovo prevođenje obično se nazivaju NAT (Network Address Translation) ruteri. NAT ruter prilikom prijema poruka iz lokalne mreže koji se prosljeđuju na vanjsku mrežu mijenja IP adrese u zaglavljima poruka u jednu te istu IP adresu dodijeljenu za potrebe te lokalne mreže od strane administracije vanjske mreže. U tom smislu, vanjska mreža vidi sve poruke koje su došle iz razmatrane lokalne mreže kao da su došle iz istog računara. Pri tome, računarima u lokalnoj mreži mogu se dodijeliti IP adrese po volji, s obzirom da su one potpuno neovisne od IP adresa računara u vanjskoj mreži i nevidljive za vanjsku mrežu. Ipak, kada god se koristi takva tehnika, računarima u lokalnoj mreži se obično dodjeljuju specijalne IP adrese čija struktura govori da se radi o “privatnim” adresama koje nisu vidljive izvan mreže. U klasi C za tu svrhu su rezervirane IP adrese čija prva 2 bajta glase 192 i 168 (npr. 192.168.10.3). Prednost upotrebe ovakvih adresa je u činjenici da ruteri znaju da takve adrese ne mogu “izaći” iz lokalne mreže, tako da ruteri u procesu usmjeravanja potpuno ignoriraju poruke koje sadrže ovakve IP adrese (s obzirom da one nisu interesantne za ostatak mreže). Naravno, u svakom slučaju, NAT ruter prilikom prevođenja adresa mora voditi internu evidenciju o tome koja je bila stvarna IP adresa u poruci koju je promijenio u jedinstvenu vanjsku IP adresu prije prosljeđivanja poruke na vanjsku mrežu. Kasnije, prilikom prijema eventualnog odgovora na poruku, NAT ruter će tu evidenciju iskoristiti za ponovnu pretvorbu jedinstvene vanjske IP adrese u IP adresu konkretnog računara, da bi poruka mogla stići na računar kojem je namijenjena.

Sljedeća važna funkcija koju obavljaju protokoli trećeg nivoa je usmjeravanje odnosno rutiranje

paketa (datagrama) koji putuju kroz mrežu prema krajnjem odredištu. Usmjeravanje je implementirano samo u onim tačkama mreže koji su namijenjeni da rade kao usmjerivači odnosno ruteri. Oni, na osnovu logičke adrese krajnjeg odredišta, trebaju po nekom algoritmu odlučiti u kojem smjeru treba dalje proslijediti poruku. Treba uočiti bitnu razliku između skretničara (switcheva) i rutera. Switchevi odluku o tome kuda poruku treba proslijediti donose na osnovu fizičke adrese, koja je uvijek adresa nekog čvorišta koje je direktno priključeno na njega i tu nema velike dileme. Switchevi nemaju svoje logičke adrese i oni su potpuno transparentni za protokole trećeg nivoa (tj. oni nisu uopće svjesni njihovog postojanja). Za razliku od njih, ruteri sličnu odluku donose na osnovu logičke adrese, koja tipično predstavlja adresu nekog učesnika u komunikaciji koji nije direktno spojen na taj ruter, nego se nalazi daleko od njega. Stoga je funkcija koju obavljaju ruteri mnogo zahtjevnija. Ukratko, ruteri moraju poznavati protokole trećeg nivoa. Za potrebe usmjeravanja, ruteri moraju održavati tablice usmjeravanja (rutiranja) koji sadrže informacije o tome na koji izlaz rutera treba proslijediti paket koji je namijenjen računaru sa zadanom logičkom adresom.

Najjednostavnije tablice rutiranja organizirane su kao skupina zapisa koji se tipično sastoje od tri

polja. Prvo polje predstavlja logičku adresu odredišta, drugo polje predstavlja logičku adresu susjednog čvorišta (rutera) na koji treba proslijediti poruku da bi ona stigla na traženo odredište, dok treće polje sadrži neku informaciju o udaljenosti traženog odredišta od razmatranog rutera (ova informacija se koristi interno za potrebe automatskog ažuriranja tabele rutiranja, što ćemo uskoro vidjeti). Kako bi bilo vrlo neracionalno u tablici rutiranja čuvati adrese svih odredišnih računara, logička adresa odredišta je tipično mrežna adresa mreže u kojoj se nalazi računar, s obzirom da kada poruka dospije u traženu lokalnu mrežu, ruteri dalje više nemaju posla. Zapravo, adrese odredišta u tablicama rutiranja su tipično bezklasne adrese sa odgovarajućom maskom podmreže. Kada ruter određuje kuda treba usmjeriti poruku, on čita IP adresu odredišta iz poruke i pravi logičku AND operaciju bit po bit sa maskom podmreže redom za svaku od adresa odredišta iz svoje tablice rutiranja. Onog trenutka kada ustanovi da se nakon obavljenog “maskiranja” adrese poklapaju, poruka se šalje

Page 57: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

57

na susjedno čvorište sa adresom iz odgovarajućeg reda tablice rutiranja. Pri tome su tablice rutiranja uvijek sortirane tako da adrese sa dužom maskom dolaze prije, tako da se “specifičnije” (tj. manje općenite) adrese testiraju prije “manje specifičnih” adresa (tj. onih u kojima je više maskiranih bita). Na primjer, neka isječak tablice rutiranja izgleda ovako:

Adresa odredišta Susjedno čvorište 203.137.219.192 / 26 207.96.144.21 205.144.224.0 / 19 144.197.25.3 202.248.0.0 / 13 178.54.133.18 0.0.0.0 / 0 192.139.44.1 Neka je sada potrebno usmjeriti poruku za računar sa IP adresom 205.144.235.39. Binarno

zapisana, ova adresa glasi 11001101.10010000.11101011.00100111. Prvo se testira prvi red tablice rutiranja sa adresom odredišta 203.137.219.192 / 26. Ovom redu tablice odgovara maska podmreže koja se binarno može zapisati kao 11111111.11111111.11111111.11000000. Nakon obavljanja logičke AND operacije sa IP adresom računara dobijamo 11001101.10010000.11101011.00000000 odnosno 205.144.235.0 dekadno. Kako se ova vrijednost razlikuje od 203.137.219.192, prelazimo na sljedeći red tablice, u kojem se nalazi adresa odredišta 205.144.224.0 / 19. Ovom redu tablice odgovara maska podmreže binarno zapisana kao 11111111.11111111.11100000.11000000. Nakon obavljanja logičke AND operacije sa IP adresom računara dobijamo 11001101.10010000.11100000.00000000 odnosno dekadno 205.144.224.0. Ovdje imamo poklapanje, tako da poruku treba usmjeriti na susjedno čvorište sa IP adresom 144.197.25.3.

U tabelama rutiranja posljednja adresa odredišta tipično uvijek ima oblik 0.0.0.0 / 0. Kako njoj

odgovara maska koja se sastoji samo od nula, nakon obavljanja logičke AND operacije uvijek će se dobiti sve nule, tako da se ova adresa može uklopiti sa ma kojom IP adresom. Stoga, susjedno čvorište koje odgovara ovoj adresi predstavlja podrazumijevano (default) odredište na koje se prosljeđuje paket u slučaju da se u tablici usmjeravanja ne nađe nikakva specifičnija informacija o tome u kojem pravcu treba proslijediti taj paket.

U zavisnosti od toga da li su tablice usmjeravanja fiksne ili se mijenjaju tokom vremena, protokole

rutiranja možemo razvstati u dvije grupe: – Statički protokoli rutiranja – Dinamički protokoli rutiranja Pošto su kod statičkih protokola rutiranja tablice rutiranja fiksne, to se ove tablice mogu

proračunati neovisno od mreže, koristeći neki algoritam za odabir najpovoljnijeg puta od svakog rutera do preostalih čvorova mreže, a zatim prosto unijeti ručno tako proračunate tablice u odgovarajuće rutere. Iako je to dosta naporan posao, to se radi samo jedanput ukoliko se konfiguracija mreže neće mijenjati. Međutim, svaka promjena u konfiguraciji mreže zahtijeva nova podešavanja rutera, što je dosta nezgodno. Također, statički protokoli ne mogu se prilagođavati promjenama uvjeta rada u mreži. Na primjer, oni nisu u stanju usmjeriti pakete nekim alternativnim putem u slučaju da se duž podrazumijevanog puta pojave velika zagušenja u protoku podataka.

Što se tiče dinamičkih protokola rutiranja, oni su tipično presloženi da bi se izveli u čistom

hardveru (sekvencijalnim sklopovima). Zbog toga se oni realiziraju softverskim putem. Upravo to je razlog zbog kojeg tipični ruteri moraju biti računari (barem specijalizirani ako ne i računari opće namjene). Kod dinamičkih protokola rutiranja, ruteri automatski ažuriraju tablice usmjeravanja, slično kao što switchevi automatski ažuriraju tablice koje sadrže informacije o fizičkim adresama računara koji su priključeni na njegove pojedine priključke. Međutim, kod switcheva je to ažuriranje prilično jednostavno, jer se može izvesti prostim praćenjem informacija u zaglavlju poruka koje kroz njega prolaze, tako da se sve može relativno jednostavno izvesti čak i hardverski. S druge strane, kod rutera ažuriranje tablica usmjeravanja nije moguće izvesti prostim praćenjem zaglavlja poruka koje prolaze

Page 58: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

58

kroz ruter, jer je neophodno voditi informacije i o udaljenim računarima, tj. računarima sa kojima ruter nije neposredno povezan. Stoga je ažuriranje tablica usmjeravanja moguće izvesti samo uz međusobnu saradnju rutera, odnosno ruteri moraju međusobno razmjenjivati informacije koje posjeduju, i ažurirati postojeće informacije na osnovu informacija koje su dobili od drugih rutera.

Svi dinamički protokoli rutiranja moraju koristiti neki kriterij za određivanje kojim putem treba

usmjeriti paket ka krajnjem odredištu. Naime, kod mreža iole složenije strukture, put od rutera do krajnjeg odredišta gotovo nikada nije jedinstven, tako da mora postojati neki način za izbor najboljeg između više mogućih puteva. Mjera povoljnosti puta između dva čvorišta obično se naziva metrika, pri čemu je bolji onaj put za koji metrika daje najmanju vrijednost. Najprostija metrika kvalitet puta između čvorišta X i Y mjeri prosto kao broj drugih čvorišta kroz koje put prolazi. Takva metrika naziva se metrika broja skokova (hop count metrika). Sa aspekta teorije grafova, ova metrika odgovara ukupnoj težini puta između čvorova X i Y uz pretpostavku da sve spojnice čvorova (grane) imaju težine jednake jedinici.

Bolje metrike dodjeljuju svakoj grani grafa (tj. vezi između dva čvora) izvjesnu težinu (pri čemu

veća težina označava nepovoljniju granu), i kvalitet puta između čvorišta X i Y mjere računajući sumu težina svih dionica (grana) duž izabranog puta. Težine pojedinih dionica mogu biti zadane u skladu sa njihovom fizičkom dužinom, ili još bolje u skladu sa očekivanim vremenom putovanja signala kroz dionicu i dozvoljenom brzinom prenosa podataka. Ovo je posebno značajno u slučaju kada sve dionice ne odgovaraju istom komunikacionom mediju. Na primjer, znatno je povoljnije imati 100 km veze optičkim kablom nego 1 km radio vezom, tako da bi, u posmatranom primjeru, dionice koja odgovara 100 km veze optičkim kablom trebalo dodijeliti manju težinu.

Težine pojedinih dionica mogu biti fiksno određene. Međutim, posebno su interesantni tzv.

adaptivni protokoli rutiranja, kod kojih se težine pojedinih dionica automatski mijenjaju tokom vremena. Naime, moguće je mjeriti protok informacija kroz pojedine dionice i smanjivati težinu onim dionicama za koje se ustanovi da nemaju gust protok informacija, a povećavati težinu onim dionicama kod kojih postoji veliko zagušenje u protoku poruka.

Jedan od najčešće korištenih dinamičkih protokola rutiranja koji se koristi u ruterima je RIP

(Routing Information Protocol) protokol. Ovaj protokol koristi metriku brojanja skokova (hop count) i Bellman-Fordov algoritam. Pri tome se, zbog korištene metrike, uzima da su težine svih grana jednake jedinici.

Prema RIP protokolu, svaki ruter održava tablicu usmjeravanja u kojoj svaki red sadrži logičku adresu nekog čvorišta mreže, zatim svoj vlastiti potencijal posmatrajući to čvorište kao referentni čvor (u skladu sa Bellman-Fordovim algoritmom), te oznaku izlaza rutera na koji treba proslijediti poruke koje putuju do tog čvorišta. Na početku, tablica svakog rutera sadrži samo informacije o samom sebi i čvorištima koja su neposredno spojeni na njega. Pri tome je naravno potencijal rutera jednak 0 ukoliko je referentni čvor upravo on sam, a jednak 1 ukoliko je referentni čvor neki od njegovih susjeda. Tokom vremena, ruteri periodično šalju svojim susjedima svoje tablice rutiranja (kod RIP protokola, svakih 30 sekundi), upakovane u poruke odgovarajuće strukture (propisane protokolom). Svaki ruter koji primijeti da je potencijal prema nekom referentnom čvoru koji je dobio od susjeda uvećan za jedan manji od njegovog vlastitog potencijala prema istom referentnom čvoru, popravlja svoj vlastiti potencijal na novu vrijednost. Ovo nije ništa drugo nego jedan korak Bellman-Fordovog algoritma, s obzirom da su sve težine grana jednake jedinici. Također, informacija o izlazu rutera na koji treba proslijediti poruke ka tom čvoru ažurira se da pokazuje na onaj ruter sa kojeg je pristigla popravljena informacija. Postupak se dalje periodično ponavlja. Nakon izvjesnog broja iteracija (ne većeg od ukupnog broja rutera, a tipično znatno prije), svi ruteri će sadržavati kompletirane informacije.

RIP protokol ćemo ilustrirati na primjeru mreže sa 6 čvorišta, prikazane na sljedećoj slici. Radi

jednostavnosti, logičke adrese čvorova su označene slovima, a oznake izlaza rutera poistovjećene su sa oznakom čvorišta u koje vode izlazi. Također ćemo, radi jednostavnosti, pretpostaviti da čitav ruter ima jedinstvenu logičku adresu (bez obzira što smo vidjeli da se različitim priključcima rutera

Page 59: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

59

dodjeljuju različite logičke adrese). Kao što je opisano, svaki od rutera inicijalno sadrži informacije samo o samom sebi, i svojim neposrednim susjedima:

Neka je nastupio trenutak u kojem ruteri međusobno razmjenjuju informacije. Razmatrajmo rutere redom, u abecednom poretku njihovih oznaka. Nakon što ruter A pošalje svoju tablicu rutiranja svojim susjedima B, C i E, čvor B pribavlja informaciju o čvoru C (koju ranije nije posjedovao), čvor C pribavlja informaciju o čvoru B, dok čvor E ne dobija nikakve nove informacije u odnosu na informacije koje je već posjedovao. Novonastala situacija prikazana je na sljedećoj slici:

Nakon što ruter B pošalje svoju tablicu rutiranja svojim susjedima A, D, E i F, čvor A dobija informacije o čvorovima D i F, čvor D dobija informacije o čvorovima A, C i E, čvor E dobija informaciju o čvoru D, dok čvor F dobija informacije o čvorovima A i C. Situacija nakon ovih dopuna prikazana je na sljedećoj slici. Primijetimo da je informacija pohranjena u čvoru F o čvoru C za sada neoptimalna. Zaista, prema toj informaciju, od čvora F do čvora C se može stići kroz tri grane (preko čvora B). To je zaista tačno, ali postoji i bolji put, kroz samo dvije grane (preko čvora E). Međutim, tu informaciju protokol tek treba da otkrije:

A 1 A B 2 A C 0 C D E 1 E F

A 0 A B 1 B C 1 C D E 1 E F

A 1 A B 1 B C 1 C D E 0 E F 1 F

A 1 A B 0 B C 2 A D 1 D E 1 E F 1 F

A B 1 B C D 1 D E 1 E F 0 F

A B 1 B C D 0 D E F 1 F

C

A B

D

E F

A 1 A B C 0 C D E 1 E F

A 0 A B 1 B C 1 C D E 1 E F

A 1 A B 1 B C 1 C D E 0 E F 1 F

A 1 A B 0 B C D 1 D E 1 E F 1 F

A B 1 B C D 1 D E 1 E F 0 F

A B 1 B C D 0 D E F 1 F

C

A B

D

E F

A 1 A B 2 A C 0 C D E 1 E F

A 0 A B 1 B C 1 C D 2 B E 1 E F 2 B

A 1 A B 1 B C 1 C D 2 B E 0 E F 1 F

A 1 A B 0 B C 2 A D 1 D E 1 E F 1 F

A 2 B B 1 B C 3 B D 1 D E 1 E F 0 F

A 2 B B 1 B C 3 B D 0 D E 2 B F 1 F

C

A B

D

E F

Page 60: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

60

Nakon što ruter C pošalje svoju tablicu rutiranja svojim susjedima A i E, oni ne dobijaju nikakve nove informacije. Slična stvar se dešava i nakon što ruter D pošalje tablicu rutiranja svojim susjedima B i F. Nakon što ruter E pošalje svoju tablicu rutiranja svojim susjedima A, B, C i F, ruteri A, B i E ne dobijaju nikakve nove informacije, dok ruter C dobija informacije o čvorovima D i F. Time dobijamo situaciju kao na sljedećoj slici:

Nakon što ruter F pošalje svoju tablicu rutiranja susjedima, ne dolazi ni do kakvih novih promjena. Svi ruteri su sada razmijenili svoje tablice rutiranja, i prva iteracija RIP protokola je završena. Ovakva situacija će ostati do trenutka kada nastupi nova serija razmjene tablica. U opisanom primjeru, svi ruteri imaju već nakon prve iteracije nekakve informacije (ne nužno optimalne) o putanji do svih drugih čvorišta. Kod većih mreža, sasvim je moguće da ruteri pribave kakve-takve informacije o putanji do svih ostalih čvorišta tek nakon nekoliko iteracija.

Neka je ponovo nastupio trenutak kada ruteri razmjenjuju svoje tablice usmjeravanja (druga

iteracija). Nakon što ruter A pošalje svoju tablicu rutiranja susjedima, ne dolazi ni do kakvih promjena. Slična situacija nastaje nakon što svoje tablice pošalju ruteri B, C i D. Međutim, nakon što ruter E pošalje svoju tablicu usmjeravanja svojim susjedima A, B, C i F, čvorovi A, B i C ne saznaju ništa novo, ali čvor F popravlja informaciju koju posjeduje o čvoru C (odnosno, pronalazi kraći put do njega). Time dobijamo situaciju kao na sljedećoj slici:

Nakon što ruter F pošalje svoju tablicu rutiranja susjedima, također ne dolazi ni do kakvih novih promjena. Ovim je završena i druga iteracija. Lako je vidjeti da u trećoj iteraciji također neće doći ni do kakve nove promjene, čime su optimalne putanje pronađene. Do daljih promjena može doći jedino ukoliko dođe do promjene konfiguracije mreže, odnosno ukoliko se dodaju ili uklone nove veze ili čvorišta. Stoga će, po RIP protokolu, ruteri nastaviti razmjenjivati svoje tablice rutiranja svakih 30 sekundi. Ukoliko dođe do bilo kakvih promjena u konfiguraciji mreže, sve tablice će, nakon nekoliko iteracija, biti ažurirane u skladu sa izvršenim promjenama.

A 1 A B 2 A C 0 C D 3 E E 1 E F 2 E

A 0 A B 1 B C 1 C D 2 B E 1 E F 2 B

A 1 A B 1 B C 1 C D 2 B E 0 E F 1 F

A 1 A B 0 B C 2 A D 1 D E 1 E F 1 F

A 2 B B 1 B C 3 B D 1 D E 1 E F 0 F

A 2 B B 1 B C 3 B D 0 D E 2 B F 1 F

C

A B

D

E F

A 1 A B 2 A C 0 C D 3 E E 1 E F 2 E

A 0 A B 1 B C 1 C D 2 B E 1 E F 2 B

A 1 A B 1 B C 1 C D 2 B E 0 E F 1 F

A 1 A B 0 B C 2 A D 1 D E 1 E F 1 F

A 2 B B 1 B C 2 E D 1 D E 1 E F 0 F

A 2 B B 1 B C 3 B D 0 D E 2 B F 1 F

C

A B

D

E F

Page 61: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

61

RIP protokol je veoma često korišten protokol, zbog svoje jednostavnosti. Moguće je izvesti poboljšanja ovog protokola, koji daju granama različite težine, odnosno koji razmatraju složenije metrike od hop count metrike. Takvi protokoli nazivaju se protokoli vektora rastojanja (Distance Vector Protocols). Međutim, najveći nedostatak svih protokola tog tipa je što se tačne tablice rutiranja uspostavljaju tek nakon niza iteracija, tako da u međuvremenu tablice rutiranja mogu biti nekompletne. Također, zbog činjenice da se tablice rutiranja mogu mijenjati iz iteracije u iteraciju, može se desiti (mada veoma rijetko) da paket poslan u nezgodnom trenutku “zaluta”, vođen nekompletnim tablicama rutiranja (ovo se može desiti recimo u trenucima kada dolazi do promjene konfiguracije mreže, što uključuje i pad nekog od rutera, ili veza koje ih povezuju). Da bi se izbjeglo “lutanje” paketa kroz mrežu, u zaglavlje paketa se dodaje jedno polje nazvano TTL (Time To Leave), koje se inicijalno postavlja na neku vrijednost (15 po RIP protokolu). Svaki ruter umanjuje sadržaj TTL polja za 1, i ukoliko njegova vrijednost dostigne nulu, paket se tretira kao “lutajući paket”, i uništava se (tj. ne prosljeđuje se dalje). Naravno, kasnije će biti izvršena retransmisija tog paketa, s obzirom da njegov prijem neće biti potvrđen. Očigledno, RIP protokol podrazumijeva da svaki paket može proći kroz najviše 15 rutera prije nego što stigne do krajnjeg odredišta. Ovaj uvjet je ispunjen u mrežama u kojima se RIP protokol koristi. Mreže kod kojih paket može putovati kroz više od 15 rutera do krajnjeg odredišta su u svakom slučaju izrazito složene mreže, kod kojih je potrebno koristiti efikasnije protokole od RIP protokola.

Za razliku od RIP i njemu srodnih protokola, efikasniji protokoli rutiranja zasnovani su na

Dijkstrinom algoritmu, umjesto na Bellman-Fordovom algoritmu. Kao što je već rečeno, osnovna nevolja kod primjene Dijkstrinog algoritma je što se neophodne informacije za njegovo provođenje ne mogu dobiti samo razmjenom informacija između susjednih čvorišta, već je u svakom čvorištu neophodno čuvati informacije o strukturi i stanju čitave mreže. Naravno, ukoliko ruteri ne poznaju strukturu mreže (odnosno raspored rutera i strukturi veza između njih), oni tu početnu informaciju mogu dobiti iterativno razmjenom informacija između susjednih rutera (slično kao kod RIP protokola), ali jednom kada se informacija o strukturi mreže kompletira, svaki od rutera mora održavati informacije o stanju u svim čvorištima mreže, a ne samo o svom vlastitom stanju. Stoga takvi protokoli moraju biti znatno složeniji od RIP protokola i tipično se koriste samo u velikim mrežama. Protokoli rutiranja koji održavaju informaciju o kompletnoj strukturi mreže i stanju u svim čvorištima mreže nazivaju se Link State protokoli. Ruteri koji podržavaju ovakve protokole moraju imati prilično velike memorijske resurse, s obzirom da je količina informacija koje je potrebno pamtiti u ruteru kod ovakvih protokola osjetno veća nego kod protokola vektora rastojanja i osjetno raste sa porastom veličine mreže. Stoga je posebno nesretna činjenica što su ovakvi protokoli potrebni upravo u mrežama velike dimenzije.

Link State protokoli posjeduju još jednu značajnu prednost u odnosu na RIP i slične protokole. S

obzirom da Dijkstrin algoritam tokom izvršavanja postupno prikuplja informacije o stablu najkraćih puteva do traženog čvora i s obzirom da je stablo takva struktura u kojoj ne postoje kružni putevi, moguće je sa sigurnošću izbjeći lutanje paketa i njihovo kruženje u mreži, tako da trikovi poput uvođenja TTL polja kod ovih protokola nisu potrebni.

Može se primijetiti da u nekoj mreži može postojati više jednako dobrih puteva između dva

zadana čvora. Recimo, u mreži iz primjera na kojem smo demonstrirali RIP protokol, uz hop count metriku postoje tri optimalna puta između čvorova C i D (putevi C − A − B − D, C − E − B − D i C − E − F − D), od kojih prvi vodi preko čvora A a druga dva preko čvora E. Dobri protokoli rutiranja mogu uzeti u obzir i ove informacije. Preciznije, protokol može kad god pronađe informacije o putu koji je jednako dobar kao i već nađeni put, ažurirati informacije i o tom alternativnom putu, zajedno sa informacijama o već nađenom putu. Tako bi, recimo, neko hipotetičko poboljšanje RIP protokola moglo u ruteru C čuvati informaciju da do čvora D vodi jedan optimalan put preko rutera A, a dva optimalna puta preko rutera B. Stoga bi se protokol mogao odlučiti da od svaka tri paketa koja mu pristignu, a koji su namijenjeni čvoru D, jedan paket pošalje ruteru A, a dva paketa ruteru B. Naravno, tablice rutiranja kod ovakvih protokola morale bi imati složeniju strukturu od prethodno opisane najjednostavnije strukture.

Page 62: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

62

Iz opisanog slijedi da protokoli rutiranja ne moraju sve pakete namijenjene istom odredištu usmjeravati istim putem. Usmjeravanje različitim putevima je čak poželjno, sa ciljem izbjegavanja zagušenja duž jednog istog puta. Sve to zavisi od konkretnog protokola rutiranja. S obzirom da su ruteri tipično programabilni, u njima je po potrebi moguće isprogramirati različite metode rutiranja. Dakle, ruteri mogu, ali ne moraju da uspostave fiksan put za put paketa između dva čvorišta. Većina jednostavnijih protokola rutiranja se ipak odlučuju da sve pakete koji putuju između dva fiksna čvorišta X i Y usmjeravaju duž jedne te iste putanje. U tom slučaju se kaže da protokol uspostavlja virtualnu vezu ili virtualno kolo (virtual circuit) za vezu između čvorova X i Y, pri čemu pod virtualnom vezom podrazumijevamo upravo tu putanju.

12. Protokoli četvrtog nivoa

Za razliku od protokola trećeg nivoa, koji obavljaju komunikaciju između izvornog i odredišnog

računara, odnosno između dva računara kao fizička uređaja, protokoli četvrtog nivoa komuniciraju između dva aplikaciona procesa na izvornom i odredišnom računaru (specijalno, komunikaciju je moguće ostvariti čak između dvije aplikacije na istom računaru, tj. izvorni i odredišni računar mogu biti isti). Zbog toga, kod protokola četvrtog nivoa, govorimo o izvornoj i odredišnoj aplikaciji. Pri tome obično jedna aplikacija, nazvana klijentska aplikacija, traži izvjesne usluge od neke druge aplikacije, nazvane aplikacija poslužitelj, ili serverska aplikacija (ponekad i samo server, ukoliko ne postoji zabuna od miješanja sa serverskim računarom). Recimo, kada korisnik traži pristup svojoj elektronskoj pošti, njegov preglednik elektronske pošte je klijentska aplikacija koja komunicira sa serverskom aplikacijom (mail serverom) na nekom udaljenom računaru, koja se brine o prikupljanju i čuvanju korisnikove elektronske pošte.

Pored razlike u tome šta su subjekti komunikacije, protokoli četvrtog nivoa se po još jednoj stvari

razlikuju od protokola trećeg nivoa. Naime, svi protokoli nižeg nivoa od četvrtog prenose kratke blokove podataka (pakete, datagrame, okvire) koji nastaju dodavanjem odgovarajućih zaglavlja na blokove podataka koje dobiju od protokola višeg nivoa. Međutim, protokoli četvrtog nivoa od protokola višeg nivoa dobijaju kompletne poruke (eventualno dopunjene zaglavljima dodanim od strane protokola viših nivoa), a ne samo fragmente poruka. Stoga je jedan od osnovnih zadataka protokola četvrtog nivoa izvršiti podjelu poruke na blokove razumne dužine (pakete) prilikom njenog slanja. Na svaki od paketa protokoli četvrtog nivoa dodaju svoje zaglavlje, i predaju ih na isporuku protokolima trećeg nivoa. Fragmentacijom poruka na pakete omogućava se da različiti paketi putuju različitim putanjama kroz mrežu, čime se povećava iskoristivost mreže.

Različiti mogući putevi paketa kroz mrežu predstavljaju jedan od razloga zbog kojeg paketi na

mjesto prijema mogu dolaziti u redoslijedu koji nije isti kao redoslijed slanja (drugi mogući razlog je eventualni gubitak nekog od paketa usljed greške u prenosu). Stoga protokoli četvrtog nivoa na mjestu prijema moraju prikupljati (baferovati) sve pristigle pakete, i slagati pakete u ispravan redoslijed. Tek kada se na mjestu prijema sklopi kompletna poruka, protokol četvrtog nivoa je smije isporučiti protokolu višeg nivoa. Jasno je da za potrebe ispravnog sklapanja paketa svi paketi moraju biti numerirani. Stoga je redni broj paketa jedna od obaveznih informacija koja se nalazi u zaglavljima paketa dodanih od strane protokola četvrtog nivoa. Također, na mjestu slanja, protokoli četvrtog nivoa moraju čuvati sve poslane pakete sve dok ne stigne potvrda njihovog ispravnog prijema na krajnje odredište, s obzirom da se može pojaviti potreba za retransmisijom.

Kao što je već rečeno, krajnje tačke komunikacije kod protokola četvrtog nivoa predstavljaju

dijelove nekih aplikacionih procesa. U žargonu protokola četvrtog nivoa, te krajnje tačke obično se nazivaju mrežne priključnice ili utičnice (sockets), mada se ne radi ni o kakvoj stvarnoj fizičkoj utičnici, nego o apstraktnom pojmu. Stoga se kaže da protokoli četvrtog nivoa komuniciraju između dvije mrežne priključnice (dva socketa). Mrežna priključnica (socket) određena je logičkom adresom računara na kojem se nalazi odgovarajući aplikacioni proces, kao i nekim identifikatorom samog aplikacionog procesa, s obzirom da se na istom računaru može nalaziti više neovisnih aplikacionih procesa. Ta identifikacija je obično neki broj. U žargonu najčešće korištenih protokola četvrtog nivoa

Page 63: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

63

TCP i UDP, identifikacioni broj aplikacionog procesa naziva se broj porta. Svi paketi pripremljeni od strane protokola četvrtog nivoa koji će biti prosljeđeni protokolu nižeg nivoa u svom zaglavlju obavezno sadrže podatke kojim identificiraju sockete pošaljioca i primaoca, tj. logičku adresu izvornog i odredišnog računara kao i brojeve portova koji identificiraju izvornu i odredišnu aplikaciju na izvornom i odredišnom računaru.

Protokoli četvrtog nivoa mogu se podijeliti u dvije grupe:

– Protokoli koji zahtijevaju uspostavu veze (Connection Oriented Protocols); – Protokoli koji ne zahtijevaju uspostavu veze (Conectionless Protocols);

Kod protokola koji zahtijevaju uspostavu veze, izvorni aplikaconi proces prvo zahtijeva

uspostavu veze sa odredišnim aplikacionim procesom, što se ostvaruje slanjem specijalnih poruka koje predstavljaju zahtjev za uspostavom veze. Tek nakon što odredišni aplikativni proces potvrdno odgovori na zahtjev za uspostavom veze, moguće je vršiti normalnu razmjenu podataka. Veza ostaje uspostavljena (otvorena) sve dok izvorni aplikacioni proces ne pošalje specijalan zahtjev za raskidom veze. Veza se nakon toga prekida. Ovakva komunikacija podsjeća na telefonski razgovor, u kojem je prije razgovora potrebno uspostaviti vezu, koja se nakon završetka razgovora prekida. S druge strane, kod protokola koji ne zahtijevaju uspostavu veze, slanje podataka se može izvršiti u bilo kojem trenutku, bez potrebe za prethodnom uspostavom veze, slično obavljanju razgovora putem radio stanice. Protokoli koji zahtijevaju uspostavu veze su složeniji, ali i pouzdaniji.

Protokoli četvrtog nivoa također mogu uključivati strategije za detekciju i oporavak grešaka, kao i

slanje zahtjeva za retransmisijom izgubljenih paketa, itd. Bez obzira što je to u načelu zadatak protokola drugog nivoa, i na nivoima protokola većeg od drugog može doći do gubitka paketa, recimo zbog greške u algoritmima rutiranja. Također, već je rečeno da postoje neki primitivni protokoli drugog nivoa u kojima se ne vrši detekcija ispravnosti prenosa. Stoga su protokoli četvrtog nivoa mjesto gdje bi se takve greške u načelu mogle otkriti i ispraviti. Napomenimo da nikakva detekcija i korekcija grešaka nije moguća na protokolima višeg nivoa od četvrtog. Drugim riječima, poruka koju formira protokol četvrtog nivoa (sastavljanjem pristiglih paketa) je manje ili više konačna, barem sa aspekta količine pohranjenih informacija. Jedine nove izmjene koje mogu nastati na protokolima višeg nivoa su odbacivanje zaglavlja, ili izmjena prezentacione forme poruke (u protokolima šestog nivoa) koje ne mogu izmijeniti količinu informacija sadržanu u poruci (npr. poruka se može iz kompresovane forme prevesti u raspakovanu formu, ili iz šifrovane u dešifrovanu, itd.).

Najčešće korišteni protokoli četvrtog nivoa danas su sljedeći protokoli:

– TCP (Transmission Control Protocol); – UDP (User Datagram Protocol);

TCP je primjer protokola koji zahtijeva uspostavu veze, i koji sadrži strategije za detekciju i

korekciju grešaka putem slanja zahtijeva za retransmisiju, dok je UDP primjer protokola koji ne zahtijeva uspostavu veze, i koji ne posjeduje nikakve strategije za detekciju i korekciju grešaka, odnosno za svaki emitirani paket pretpostavlja se da će stići na odredište. Jasno je da je TCP protokol mnogo pouzdaniji. Međutim, UDP protokol se koristi u onim slučajevima kada je brzina prenosa značajnija od pouzdanosti, i kada retransmisije nisu dozvoljene. Primjer je, recimo, prenos zvuka i slike u realnom vremenu, gdje bi svaka retransmisija poremetila redoslijed prenosa. S druge strane, manje smetnje u prenesenom zvuku i slici mogu se tolerirati, pogotovo ukoliko vjerovatnoća greške nije velika.

TCP i UDP protokoli rezerviraju određene brojeve portova za specijalne namjene. Tako su

brojevi portova manji od 1023 rezervirani za potrebe standardnih aplikacionih procesa, brojevi od 1024 do 49151 se iznajmljuju za potrebe namjenskih aplikacija preko institucije IANA (Internet Assigned Numbers Authority) koja vrši iznajmljivanje, dok su brojevi od 49152 do 65535 slobodni za

Page 64: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

64

bilo kakve potrebe aplikacionih procesa koji komuniciraju. Neki od brojeva portova koji su rezervirani za standardne aplikacione procese su sljedeći:

Broj porta Rezervirana namjena

20 Razmjena datoteka putem FTP aplikacionog protokola 21 Razmjena kontrolnih poruka putem FTP aplikacionog protokola 23 Izvršavanje komandi na udaljenom računaru putem TELNET protokola 25 Slanje elektronske pošte putem SMTP aplikacionog protokola

53 Otkrivanje IP adrese odredišnog računara na osnovu poznate URL identifikacije (poput www.utic.net.ba) putem DNS protokola

80 Prijem hipertekstualnih dokumenata (web stranica) putem HTTP aplikacionog protokola

110 Prijem elektronske pošte putem POP3 aplikacionog protokola 143 Prijem elektronske pošte putem IMAP aplikacionog protokola

13. Osnovne kriptografske tehnike

Poruke koje se prenose kroz kanale veze uvijek su podložne prisluškivanju od strane neovlaštenih

osoba. Da bi se obezbijedila sigurnost u prenosu, moguće je vršiti šifrirani prenos, koji se postiže upotrebom neke od kriptografskih metoda, pri čemu se kriptografija definira upravo kao nauka koja se bavi obezbjeđivanjem tajnog prenosa informacija. Ona ovaj zadatak obavlja putem transformacije poruka koji se prenose. Prema ISO/OSI modelu ova transformacija se izvodi u protokolima šestog nivoa, tj. u protokolima prezentacionog sloja, dok se u TCP/IP modelu ista transformacija obično izvodi kao podprotokol nekog od aplikacionih protokola, s obzirom da TCP/IP model ne definira posebno prezentacioni sloj protokola.

Ideja šifriranog prenosa je u osnovi posve jednostavna. Naime, pošaljioc umjesto neke poruke x

šalje poruku y = E(x) gdje je E neka transformacija (funkcija), koja se naziva funkcija enkripcije. Poruka x naziva se izvorna poruka odnosno izvorni tekst (mada se ne mora raditi o tekstu), dok je y šifrirana ili kodirana poruka (ili, kratko, šifrat). Primaoc prima šifriranu poruku y i iz nje rekonstruira originalnu poruku koristeći pravilo x = D(y), gdje je D tzv. funkcija dekripcije. Jasno je da mora vrijediti D(E(x)) = x, odnosno funkcija D mora biti inverzna funkcija funkcije E.

Moderni kriptografski postupci oslanjaju se na brojne rezultate elementarne teorije brojeva.

Interesantno je da je elementarna teorija brojeva, mada je bila zamišljena kao grana čisto teoretske matematike bez afiniteta ka ikakvim primjenama, danas postala jedna od najprimjenljivijih grana matematike, upravo zahvaljujući primjenama u kriptografiji. Za izlaganja koja slijede od naročitog interesa će nam biti izraz oblika

v = an mod m

pri čemu p mod q označava ostatak pri dijeljenju broja p brojem q. Razmotrimo prvo slučaj kada su vrijednosti a, n i m poznate, a treba izračunati vrijednost v. Značajno je da je ovaj račun uvijek moguće izvesti brzo i efikasno, čak i kada su a, n i m ogromni brojevi (reda više stotina cifara). Zaista, za klasično računanje stepena an postoje razni brzi postupci, kod kojih broj izvršenih operacija ostaje proporcionalan broju cifara brojeva a i n, a ne samoj veličini brojeva a i n. Jedan od takvih postupaka koji je najlakše opisati zasniva se na rekurzivnoj formuli

an =

− neparnozaparnoza

)()(

22/)1(

22/

nn

aaa

n

n

uz početni uvjet a0 = 1 odnosno a1 = a. Na primjer, računanje a100 se primjenom ove formule računa u svega 8 množenja:

Page 65: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

65

a100 = (a50)2 = ((a25)2)2 = ((a (a12)2)2)2 = ((a ((a6)2)2)2)2 = ((a (((a3)2)2)2)2)2 = ((a (((a a2)2)2)2)2)2

Međutim, vrijednost an mod m nije pametno računati tako što se prvo izračuna an pa onda nađe ostatak dijeljenja sa m. Naime, za velike vrijednosti a i n, broj an može imati astronomski broj cifara, iako krajnji rezultat an mod m mora biti u opsegu od 0 do m–1. Izlaz je u korištenju još jedne formule iz teorije brojeva, po kojoj za ma kakve brojeve p i q vrijedi ( p q) mod m = (( p mod m) (q mod m)) mod m Kombiniranjem ovih formula, dobijamo rekurzivnu formulu za efikasno računanje an mod m:

an mod m =

− neparnozaparnoza

mod))mod)mod(((mod)mod(

22/)1(

22/

nn

mmmaamma

n

n

S druge strane, problem računanja vrijednosti n iz poznatih vrijednosti a, m i v = an mod m je

neupredivo teži. Vrijednost n naziva se diskretni logaritam iz v po bazi a i modulu m, po analogiji sa klasičnim logaritmom. Za nalaženje diskretnog logaritma do danas nije poznat niti jedan postupak za njegovo računanje koji bi se mogao u razumno vrijeme obaviti kada su v, a i m brojevi sa više desetina cifara, a osnovano se vjeruje da takav postupak i ne postoji. Što se tiče računanja vrijednosti a iz poznatih vrijednosti v, n i m, situacija je nešto drugačija. Za računanje te vrijednosti, koja se naziva diskretni n-ti korijen iz v po modulu m, postoje efikasni postupci računanja, ali samo pod uvjetom da je poznata rastava modula m na proste faktore. S obzirom da je rastava nekog broja na proste faktore težak problem, koji se u općem slučaju ne može izvesti u razumnom vremenu za brojeve sa više desetina cifara, problem računanja diskretnog n-tog korijena je također u slučaju velikih brojeva praktično neizvodljiv, osim ako neko na neki način slučajno zna proste faktore modula m (takva osoba može izračunati diskretni korijen u razumnom vremenu). Vidjećemo uskoro da su ove osobine diskretnog logaritma i diskretnog korijena od ključnog značaja za modernu kriptografiju.

Nakon ovog teoretskog uvoda, pokažimo na kojim se osnovama zasnivaju moderni postupci

šifriranja i dešifriranja. Najstariji postupci šifriranja oslanjali su se isključivo na tajnost funkcije šifriranja E i tajnost funkcije dešifriranja D, koje su bile poznate samo pošaljiocu i primaocu poruke. Recimo, u Cezarovoj šifri, sva slova su bila zamijenjena slovima koji slijede tri slova kasnije po abecednom poretku, osim tri posljednja slova po abecedi, koja su se mijenjala slovima A, B i C. Na primjer, poruka “POZDRAV” se po Cezarovoj šifri mijenja porukom “SRCGUDY”. Međutim, takvi postupci postaju potpuno neupotrebljivi ukoliko se funkcije E i D otkriju.

Zbog pomenutog nedostatka, svi moderni kriptografski postupci se zasnivaju na boljoj ideji:

pošaljioc šifriranu poruku kreira pomoću pravila y = E(x, k) dok primaoc dešifrira poruku pomoću pravila x = D( y, k). Ovdje su funkcije E i D javne, odnosno poznate svima, dok je k određena tajna informacija koja se naziva ključ i koja smije biti poznata samo pošaljiocu i primaocu poruke. Naravno, za funkcije E i D pri ovakvom načinu šifriranja mora vrijediti uvjet D(E(x, k), k) = x. Jasno je da je ovakav postupak šifriranja siguran sve dok neko ne sazna ključ. Međutim, čak i ukoliko neko sazna ključ, dovoljno je samo promijeniti ključ, nakon čega se isti postupak i dalje može koristiti.

Kod opisanog metoda, koji se zove šifriranje tajnim ključem (private key encription), javlja se

problem što ključ k moraju poznavati kako pošaljioc, tako i primaoc. Ukoliko su pošaljioc i primaoc fizički razdvojeni, javlja se problem kako da bezbijedno razmijene informaciju o ključu. Interesantno je da postoji relativno jednostavni načini da se taj problem riješi, koje zajednički nazivamo protokoli razmjene ključeva. Opća ideja ovih protokola je sljedeća. Potrebno je pronaći dvije funkcije Φ i Ψ koje se lako računaju i za koje vrijedi Ψ(Φ(x), y) = Ψ(Φ( y), x), pri čemu se za funkciju Φ postavlja dopunski zahtjev da se njena inverzna funkcija Φ–1 veoma teško računa, što zapravo znači da ukoliko poznajemo samo Φ(x) i ništa drugo, nema načina da u razumnom vremenu odredimo vrijednost x uz pomoć tehnologije koja nam je danas na raspolaganju. Funkcije koje ispunjavaju taj uvjet nazivamo jednosmjerne funkcije (one way functions). Ideja je sada vrlo jednostavna. Neka dvije osobe A i B

Page 66: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

66

treba da se dogovore oko vrijednosti ključa k. Osoba A izabere nasumice neku vrijednost a, izračuna Φ(a) i pošalje javnim putem izračunatu vrijednost osobi B. Osoba B izabere nasumice neku vrijednost b, izračuna Φ(b) i pošalje javnim putem izračunatu vrijednost osobi A. Osoba A sada zna a i Φ(b), te može izračunati vrijednost Ψ(Φ(b), a). S druge strane, osoba B sada zna b i Φ(a), te može izračunati vrijednost Ψ(Φ(a), b). Zbog postavljenih zahtjeva na funkcije Φ i Ψ, imamo Ψ(Φ(b), a) = Ψ(Φ(a), b), tako da su krajnje vrijednosti koje su dobile osobe A i B jednake. Upravo ta vrijednost se uzima za dogovorenu vrijednost ključa k. Dakle, osoba A računa ključ po formuli k = Ψ(Φ(b), a), dok osoba B računa ključ po formuli k = Ψ(Φ(a), b). S obzirom da se u javnosti distribuiraju samo vrijednosti Φ(a) i Φ(b), a da je poznavanje vrijednosti a i b neophodno za računanje ključa, neko ko prisluškuje tok komunikacije mogao bi izračunati ključ samo ukoliko bi bio u stanju da iz vrijednosti Φ(a) i Φ(b) izračuna vrijednosti a i b. Međutim, kako je Φ jednosmjerna funkcija, ovo nije moguće izvesti u razumnom vremenu. Dakle, mada svaka osoba koja je prisluškivala komunikaciju principijelno posjeduje neophodne informacije na osnovu kojih je moguće izračunati ključ, ona to nije u stanju izvesti. Drugim riječima, jedino osoba A odnosno osoba B, koje posjeduju vrijednosti a odnosno b, mogu izračunati ključ u razumnom vremenu.

Ostaje problem kako odabrati funkcije Φ i Ψ sa traženim svojstvima. Teorija brojeva daje mnogo

mogućih odgovora na ovo pitanje. Najpoznatiji je tzv. Diffie-Hellmanov protokol razmjene ključeva, kod kojeg je Φ(x) = g x mod p i Ψ(x, y) = x y mod p gdje su p i g neki izabrani brojevi. Za sigurnost protokola potrebno je da p bude neki veliki prost broj (tipično sa više stotina cifara), dok g može da bude i posve mali broj, ali koji bi trebao biti tzv. primitivni korijen po modulu p (ovaj uvjet garantira da je Φ bijekcija na skupu cijelih brojeva između 0 i p–1). Uz ovako odabrane vrijednosti p i g, funkcija je Φ jednosmjerna funkcija (odnosno, bar se tako vjeruje – do sada niti za jednu poznatu funkciju njena jednosmjernost nije strogo matematski dokazana). Sada, prema Diffie-Hellmanovom protokolu, osobe A i B prvo treba da se dogovore o brojevima p i g u skladu sa postavljenim uvjetima, čime su određene funkcije Φ i Ψ. Bitno je istaći da se i ovaj dogovor može obaviti javno (cilj protokola zapravo i jeste u tome da se niti jedna razmjena informacija ne treba obavljati u tajnosti). Nakon toga, osoba A bira slučajni broj a u opsegu od 0 do p–1, računa vrijednost α = g a mod p i šalje tu vrijednost osobi B. Osoba B također bira slučajnu vrijednost b u opsegu od 0 do p–1, računa vrijednost β = g b mod p i šalje tu vrijednost osobi A. Osoba A sada računa ključ k po formuli k = βa mod p, dok osoba B računa ključ po formuli k = αb mod p. Da obje formule daju istu vrijednost za k, slijedi iz lanca identiteta u modularnoj aritmetici, prema kojem je:

βa mod p = (g b mod p)a mod p = gab mod p = (g a mod p)b mod p = αb mod p

Razmotrimo sada šta može učiniti osoba koja prisluškuje razmjenu ključeva po Diffie-

Hellmanovom protokolu. Takva osoba direktno može saznati samo vrijednosti p, g, α i β. Međutim, za računanje ključa, potrebno je još znati bilo vrijednost a, bilo vrijednost b. Prisluškivač može odrediti ove vrijednosti samo ukoliko je u stanju riješiti bilo jednačinu g a mod p = α po nepoznatoj a, bilo jednačinu g b mod p = β po nepoznatoj b. Obje jednačine su iste vrste i svode se na računanje diskretnog logaritma brojeva α odnosno β po bazi g i modulu p. Međutim, rekli smo da do danas nisu poznati algoritmi pomoću kojih je u razumnom vremenu moguće računati diskretne logaritme kad god je modul dovoljno velik. Na taj način nam teorija brojeva pruža siguran način za razmjenu ključeva.

Jednosmjerne funkcije također imaju svoju primjenu i za rješavanje problema autentifikacije.

Naime, neka je potrebno razlikovati k korisnika od kojih svaki ima svoju lozinku wi, i = 1..k za pristup. Naravno, računar koji vrši autentifikaciju mora imati sposobnost provjere da li je korisnik unio ispravnu lozinku. Međutim, isuviše bi bilo rizično na računaru za autentifikaciju čuvati same lozinke wi, i = 1..k. Naime, u tom slučaju bi svak ko ima pristup bazi podataka u kojoj se čuvaju lozinke mogao lako saznati lozinke svih korisnika. Zbog toga se umjesto samih lozinki, na računaru za autentifikaciju čuvaju transformirane lozinke Φ(wi), i = 1..k, gdje je Φ neka jednosmjerna funkcija. Zbog jednosmjernosti funkcije Φ, čak i ukoliko se neko domogne ovih podataka, oni mu neće biti od koristi, jer iz njih ne može u razumnom vremenu rekonstruisati lozinke wi, i = 1..k. Prilikom provjere identiteta, kada neki korisnik unese svoju lozinku w, računar koji vrši autentifikaciju umjesto da poredi

Page 67: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

67

unesenu vrijednost w sa svim lozinkama wi, i = 1..k, on prvo računa vrijednost Φ(w) koju nakon toga poredi sa pohranjenim vrijednostima Φ(wi), i = 1..k. Dakle, autentifikacija se na taj način obavlja usprkos činjenici da stvarne lozinke ne zna čak ni računar koji obavlja autentifikaciju.

Vratimo se ponovo na opći problem šifriranja i dešifriranja sa ključem. Neka se šifriranje obavlja

pomoću pravila y = E(x, k) a dešifriranje pomoću pravila x = D( y, k), gdje su E i D funkcije enkripcije i dekripcije respektivno, dok je k ključ. Vidjeli smo da je osnovni problem pri upotrebi ovakvog metoda šifriranja kako osigurati tajnost ključa k. Mada se ovaj problem može relativno uspješno riješiti korištenjem nekog od protokola razmjene ključeva, situacija postaje znatno komplikovanija ukoliko je vrijednost ključa potrebno distribuirati između većeg broja osoba. Iako postoje poopćenja protokola poput Diffie-Hellmanovog protokola za slučaj razmjene zajedničke vrijednosti ključa između n osoba gdje je n proizvoljan prirodan broj, situacija bi bila znatno jednostavnija kada bi se ključ mogao slobodno distribuirati u javnost. Stoga je prirodno postaviti pitanje da li je ikako moguće ključ također učiniti javnim.

Na prvi pogled, odgovor na prethodno postavljeno pitanje je odrečan, s obzirom da se iz poznatog

ključa k i šifrirane informacije y primjenom funkcije D neposredno dobija izvorna informacija x. Stoga je prilično iznenađujuće da je, problem ipak rješiv, i to na relativno jednostavan način. Ideja se ponovo zasniva na upotrebi jednosmjernih funkcija. Naime, pretpostavimo da su funkcije E i D takve da je vrijednost E(x, k) lako izračunati na osnovu poznatih x i k, dok je vrijednost D(y, k) na osnovu poznavanja samo y i k praktično nemoguće izračunati i u kakvom razumnom vremenu uz pomoć tehnologije koja nam je danas na raspolaganju (drugim riječima, funkcija dekripcije D je jednosmjerna funkcija). Tada je lako moguće kreirati šifriranu poruku y = E(x, k) na osnovu izvorne poruke x, dok je izvornu poruku x = D( y, k) praktično nemoguće rekonstruisati iz šifrirane poruke y, bez obzira što su i funkcija D i ključ k poznati. Doduše, u tom slučaju niko ne bi bio u stanju dešifrirati poruku. Međutim, pretpostavimo da postoji efikasan algoritam za računanje D( y, k) pod uvjetom da se znaju neke dopunske informacije o ključu k, koje nije moguće na efikasan način odrediti iz poznavanja k, i pretpostavimo da samo primaoc poruke (i niko drugi) zna te dopunske informacije. Tada samo primaoc poruke može dešifrirati poruku, bez obzira što su funkcije E i D kao i ključ k poznati svima. Za funkcije D sa takvim svojstvom kažemo da su jednosmjerne funkcije sa tajnim prolazom (trapdoor one way functions), dok se postupak šifriranja zasnovan na upotrebi takvih funkcija naziva šifriranje javnim ključem.

Ostaje pitanje kako je moguće da samo primaoc poruke zna dopunske informacije neophodne za

efikasno računanje D( y, k). Međutim, to uopće nije osobito teško. Na primjer, neka efikasan algoritam za računanje D( y, k) zahtijeva poznavanje rastave broja k na proste faktore. Primaoc poruke može uzeti dva ogromna prosta broja p i q koji imaju, recimo, 100 cifara (treba imati u vidu da postoje algoritmi kojima se efikasno u vrlo kratkom vremenu mogu generirati po volji veliki prosti brojevi) i kreirati broj k = p q. Tada primaoc zna proste faktore od k, ali niko drugi ko poznaje samo k ne može odrediti p i q, jer ne postoji nikakav postupak kojim se tako veliki prosti faktori tako velikog broja mogu naći u razumnom vremenu, čak i uz pomoć najbržih postojećih računara. Dakle, u tom slučaju samo je primaoc (i niko drugi) u stanju da dešifrira poruku.

Kao jedan konkretan primjer šifriranja javnim ključem možemo navesti Rabinov kriptosistem, koji

se direktno zasniva na prethodno opisanoj ideji. Neka je E(x, k) = x2 mod k. Tada za funkciju D mora vrijediti D( y, k)2 mod k = x, odnosno D( y, k) je diskretni kvadratni korijen iz x po modulu k. Međutim, ranije smo istakli da je za potrebe efikasnog računanja kvadratnog (i ma kojeg drugog) korijena po modulu k nužno poznavanje prostih faktora broja k. Ukoliko je k ogroman broj, niko ne može u razumno vrijeme odrediti proste faktore broja k znajući samo njega, ali neko ko poznaje faktore broja k (npr. neko ko je kreirao broj k po formuli k = p q gdje su p i q izabrani veliki prosti brojevi) može efikasno izračunati D( y, k). Ukoliko je taj neko upravo primaoc poruke, samo je on u stanju dešifrirati poruku. Algoritam za računanje D( y, k) (za onog ko poznaje p i q), posebno je jednostavan ukoliko su p i q izabrani tako da vrijedi p mod 4 = q mod 4 = 3, što se obično i čini. Brojevi koji su produkt dva takva prosta broja nazivaju se Blumovi brojevi, odnosno k je obično Blumov broj).

Page 68: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

68

Mada je Rabinov kriptosistem veoma jednostavan, njegov osnovni nedostatak je što funkcija D nije jednoznačna. Zaista, svaki broj koji uopće ima diskretni kvadratni korijen po modulu k = p q ima po tom modulu četiri različita kvadratna korijena. Odavde slijedi da se iz svake šifrirane poruke y mogu rekonstruisati četiri različita kandidata x za izvornu poruku, od kojih naravno samo jedna može biti prava poruka koja je zaista poslana. Stoga je za praktičnu primjenu Rabinovog kriptosistema potrebno ugraditi i neku strategiju kojom se prepoznaje prava poruka između četiri moguće poruke. U slučaju kad je izvorna poruka tekstualna, prepoznavanje prave poruke je relativno lako, s obzirom da će u tom slučaju lažne poruke tipično sadržavati posve besmislen tekst. Ukoliko to nije slučaj, prepoznavanje prave poruke se može postići ugradnjom izvjesnih signatura u izvornu poruku, čije odsustvo sigurno znači da se ne radi o pravoj poruci. Zbog opisanih komplikacija, Rabinov kriptosistem se rijetko koristi u praksi.

Od svih postupaka šifriranja javnim ključem, danas se najviše koristi postupak poznat pod

nazivom RSA kriptosistem, čije je ime akronim imena autora R. Rivesta, A. Shamira i L. Adlemana. U ovom postupku, za šifriranje se koristi formula y = x a mod m, pri čemu brojevi a i m moraju zadovoljavati uvjet NZD(a, ϕ(m)) = 1, gdje je ϕ Eulerova ϕ-funkcija (tj. ϕ(m) je broj brojeva koji su uzajamno prosti sa m). Ovdje je ključ par (a, m). Bitno je na početku uočiti da Rabinov kriptosistem nije specijalan slučaj RSA kriptosistema za a = 2, s obzirom da kod Rabinovog kriptosistema uvjet NZD(a, ϕ(m)) = 1 nije ispunjen. Za razumijevanje RSA kriptosistema, potrebne su nam neke osobine Eulerove ϕ funkcije. Ukoliko je poznata rastava broja m na proste faktore, recimo rastava oblika

m = p1

α1 p2α2 ... pk

αk vrijednost ϕ(m) se računa veoma lako po formuli ϕ(m) = p1

α1–1( p1 – 1) p2

α2–1( p2 – 1) ... pk

αk–1 ( pk – 1)

Specijalno, ukoliko je m = p q pri čemu su p i q različiti prosti brojevi, tada je ϕ(m) = ( p – 1) (q – 1). Međutim, izgleda da ne postoji postupak za računanje ϕ(m) koji ne bi zahtijevao poznavanje rastave broja m na proste faktore. Čak i kad bi taj postupak postojao, on bi se lako mogao iskoristiti za nalaženje rastave broja m na proste faktore. Recimo, neka je m = p q i neka postoji neki postupak kojim bi se mogla naći vrijednost ϕ(m) bez poznavanja p i q. Međutim, nakon toga bi bilo lako moguće naći i vrijednosti p i q rješavanjem sistema p q = m i ( p – 1) (q – 1) = ϕ(m) po p i q. Dakle, problem računanja ϕ(m) je jednako težak kao i problem nalaženja prostih faktora broja m. Kako se do danas vjeruje da je problem nalaženja prostih faktora velikih brojeva izuzetno težak problem, takav je i problem računanja ϕ(m) u odsustvu informacija o prostim faktorima broja m.

Vratimo se sada na RSA kriptosistem. Može se pokazati da formula za dešifriranje kod RSA kriptosistema glasi x = y b mod m pri čemu je b multiplikativni inverz po modulu ϕ(m), odnosno b je rješenje jednačine a b mod ϕ(m) = 1. Prema nekim rezultatima teorije brojeva, vrijednost b je veoma lako efikasno izračunati pomoću Euklidovog algoritma za poznate vrijednosti a i ϕ(m). Vrijednost a je svakako poznata (javni ključ). Međutim, računanje ϕ(m) nije moguće obaviti u razumnom vremenu bez poznavanja prostih faktora od m, tako da samo onaj ko poznaje proste faktore od m može dešifrirati poruku (podrazumijeva se da je m veliki broj), s obzirom da se, uz poznavanje ϕ(m), b može efikasno izračunati. Poruka koja se šifrira RSA postupkom mora biti u opsegu od 0 do m – 1. Ukoliko to nije slučaj, izvorna poruka se dijeli u blokove čija vrijednost leži u navedenom opsegu, nakon čega se svaki od blokova šifrira zasebno.

Ostaje pitanje kako odabrati javni ključ (a, m) tako da bude ispunjen uvjet NZD(a, ϕ(m)) = 1. To je

najbolje izvesti nasumičnim izborom a i provjerom da li je NZD(a, ϕ(m)) = 1 pomoću Euklidovog algoritma. Takav broj a uvijek se može naći u relativno malo pokušaja, s obzirom da prema teoriji vjerovatnoće vjerovatnoća da dva nasumice izabrana broja budu uzajamno prosta iznosi čak oko 60% (tačnije, 6/π2). Primijetimo da primaoc poruke može odmah nakon formiranja ključa (a, m) izračunati

Page 69: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

69

vrijednost b koju će koristiti za dešifriranje neovisno od poruke koja se prenosi. Zbog toga se par (b, m) često naziva i tajni ključ odnosno ključ za dešifriranje odnosno dekripciju.

Primjer RSA postupka ukazuje na drugi način na koji možemo gledati postupke kriptografije sa

javnim ključem. Naime, možemo smatrati da se pri takvim postupcima koriste dva ključa, tzv. javni ključ (ili klju č za enkripciju) ke i tzv. tajni ključ (ili klju č za dekripciju) kd, pri čemu se šifriranje vrši prema formuli y = E(x, ke), a dešifriranje prema formuli x = D(y, kd). Pri tome, za funkcije E i D kao i za ključeve ke i kd mora vrijedniti relacija D(E(x, ke),

kd) = x. Recimo, kod RSA postupka možemo uzeti da par (a, m) predstavlja javni ključ, a par (b, m) tajni ključ. Zbog ovakvog načina posmatranja, postupci šifriranja sa javnim ključem se ponekad nazivaju i asimetrični kriptosistemi (u smislu da se za šifriranje i dešifriranje koriste različiti klju čevi), za razliku od postupaka šifriranja sa tajnim ključem, koji se nazivaju i simetrični kriptosistemi (u smislu da se isti ključ koristi i za šifriranje i za dešifriranje). Jasno je da je zbog relacije D(E(x, ke),

kd) = x, koja mora biti ispunjena za sve vrijednosti x, u principu uvijek moguće izračunati tajni ključ kd iz javnog ključa ke. Međutim, za praktičnu primjenljivost kriptosistema, ova mogućnost ne smije biti izvodljiva ni u kakvom razumnom vremenu. Tipično, oba ključa ke i kd primaoc poruke računa iz nekih samo njemu poznatih pomoćnih informacija, ali samo ključ ke objavljuje u javnosti, dok ključ kd čuva za sebe. Prednost ovakvog načina posmatranja je u tome što se pri ovakvom pristupu, funkcija D izražava znatno jednostavnijim izrazima (recimo, kod RSA postupka, D i E su praktično iste funkcije). Bez obzira na to, matematički posmatrano, ovakav način posmatranja je u potpunosti ekvivalentan ranije razmotrenom pristupu, u kojem se pojam tajnog ključa nigdje ne pominje eksplicitno.

Obratimo pažnju da je kod šifriranja sa javnim ključem postupak šifriranja jednosmjeran, odnosno

pošaljioc i primaoc ne mogu zamijeniti uloge, s obzirom da primaoc zna informacije koje pošaljioc ne zna (niti ih zna iko drugi). Međutim, ovaj problem se lako prevazilazi ukoliko se koriste dva ključa kA i kB, pri čemu osoba A zna dodatne informacije o ključu kA, a osoba B zna dodatne informacije o ključu kB. Tada, kada osoba A šalje poruku x osobi B, ona šalje šifriranu poruku y = E(x, kB) koju B dešifrira kao x = D( y, kB), što može uraditi s obzirom da zna dodatne informacije o ključu kB. S druge strane, kad osoba B šalje poruku x osobi A, ona šalje šifriranu poruku y = E(x, kA) koju A dešifrira kao x = D( y, kA), što može uraditi s obzirom da zna dodatne informacije o ključu kA. Alternativno, ukoliko postupak šifriranja posmatramo na asimetričan način, tada možemo uzeti da osoba A posjeduje javni ključ kAe i tajni ključ kAd, dok osoba B posjeduje javni ključ kBe i tajni ključ kBd. Osoba A tada šifrira poruku x po formuli y = E(x, kBe), koju B dešifrira po formuli x = D( y, kBd). Slično, osoba B šifrira poruku x po formuli y = E(x, kAe), koju A dešifrira po formuli x = D( y, kAd).

Sada smo u mogućnosti da opišemo jednu revolucionarnu novinu koju pruža šifriranje javnim

ključem, koja je posve neizvodljiva pri šifriranju tajnim ključem. Pretpostavimo da osoba A pored šifrirane poruke y pošalje osobi B i poruku z = E(D(x, kA), kB), koju A može kreirati efikasno, s obzirom da zna dopunske informacije o ključu kA. Alternativno, ukoliko stvari posmatramo sa asimetričnog aspekta, z ćemo računati kao z = E(D(x, kAd),

kBe). Po prijemu poruke z, osoba B može efikasno izračunati vrijednost E(D( z, kB), kA) odnosno E(D( z, kBd),

kAe), pri čemu se kao rezultat treba dobiti x, jer je

E(D( z, kB), kA) = E(D(E(D(x, kA), kB), kB), kA) = E(D(x, kA), kA) = x

odnosno

E(D( z, kBe), kAd) = E(D(E(D(x, kAd),

kBe), kBd),

kAe) = E(D(x, kAd), kAe) = x

S obzirom da se pretpostavlja da je osoba B prethodno dešifrirala poruku x, ona može provjeriti da li je zaista E(D(x, kA), kA) = x odnosno E(D(x, kAd),

kAe) = x. Međutim, nakon što se osoba B uvjeri da je ova relacija zadovoljena, ona može sa sigurnošću tvrditi da je poruka x zaista stigla od osobe A (a ne eventualno od neke treće osobe C koja se lažno predstavlja kao osoba A), s obzirom da niko drugi nije u stanju efikasno izračunati z na osnovu x. Stoga se poruka z naziva digitalni potpis (digital signature)

Page 70: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

70

poruke x. Postojanje digitalnih potpisa je vjerovatno jedna od najfascinantnijih posljedica tehnika šifriranja sa javnim ključem, koja je unijela sasvim nova gledišta u modernu kriptografiju.

U praksi se digitalni potpisi računaju neznatno drugačije. Naime, gore opisani digitalni potpis dug je koliko i sama poruka koja se prenosi. Stoga se digitalni potpis najčešće računa po modificiranoj formuli z = E(D(H(x), kA), kB), gdje je H neka javno dogovorena funkcija za koju vrijednosti H(x) leže u znatno užem opsegu nego što je opseg vrijednosti koje x može uzimati. Takva funkcija obično se naziva funkcija raspršenja ili heš (hash) funkcija, dok se vrijednost H(x) naziva otisak prsta (fingerprint) poruke x ili “provarena” poruka (message digest). Recimo, jednostavan primjer takve funkcije H je H(x) = x mod m, koja generira samo vrijednosti H(x) u opsegu od 0 do m–1 (pri čemu je m zadani parametar, koji određuje veličinu “otiska prsta”). Na mjestu prijema, provjera potpisa vrši se testiranjem da li je E(D(z, kB), kA) = H(x), kako bi trebalo biti.

S obzirom da funkcija H sa navedenim svojstvima ne može biti injektivna, za svaku poruku x

uvijek postoje poruke x’, x” itd. sa istim otiskom prsta, tj. za koju je H(x) = H(x’) = H(x”) = ... što otvara mogućnost da se podmetne lažna poruka sa istim potpisom. Stoga, da bi funkcija H bila sigurna za kriptografske primjene, ona mora biti takva da ne postoji efikasan algoritam kojim se na osnovu poznate poruke x može konstruisati ijedna poruka x* za koju je H(x*) = H(x), niti da se za poznatu vrijednost h može konstruisati neka poruka x za koju vrijedi H(x) = h (jednostavni primjer funkcije H koji je maloprije naveden ne ispunjava ove sigurnosne kriterije). Postoje brojne funkcije H sa traženim svojstvima, pri čemu se najčešće koristi funkcija H poznata pod kodnim imenom MD5 (Message Digest ver. 5). Ova funkcija ne može se prikazati jednostavnom formulom, ali je moguće prikazati algoritam za njeno računanje, koji ovdje nećemo navoditi.

Teorija brojeva se masovno koristi i za konstrukciju protokola pomoću kojih neka osoba koja

poznaje neke tajne informacije može ubijediti druge da poznaje te informacije, bez otkrivanja i najmanje količine tih informacija. Takvi protokoli nazivaju se ubjeđivanja bez otkrivanja znanja (zero knowledge proofs). Ovdje je upotrijebljena riječ “ubjeđivanja” a ne “dokazi”, jer se više radi o ubjeđivanju sagovornika u posjedovanje informacija, nego o klasičnom dokazu u matematičkom smislu. Opisaćemo primjer jednog takvog protokola. Neka je jedino osobi A povjerena tajna šifra u vidu dva velika prosta broja p i q i neka je u javnosti objavljeno da je osoba A ona osoba koja zna proste faktore broja n = p q (naravno, u javnost je dat samo broj n, a ne i faktori p i q). Pokazaćemo kako je osoba A u stanju ubijediti neku drugu osobu (koju ćemo nazvati ispitivač) da je baš ona ta osoba, a da pri tome ne otkrije same brojeve p i q. Osoba A će narediti ispitivaču da izabere slučajan prirodan broj x manji od n i da ga saopći. Nakon toga, osoba A će izračunati diskretni kvadratni korijen iz x po modulu n ukoliko on postoji (bolje rečeno, jedan od korijena, pošto ih ima više) i saopćiće ispitivaču rezultat y, ili informaciju da diskretni kvadratni korijen ne postoji. Ispitivač sada lako može provjeriti da li je rezultat dobar, tj. da li je y2 mod n = x. Međutim, već je rečeno da računanje diskretnog kvadratnog korijena po modulu n zahtijeva poznavanje faktora broja n, tako da ako je neka osoba zaista u stanju izračunati y, ona mora znati p i q, odnosno ona mora biti osoba A. Naravno, moglo se desiti da je neka osoba koja se lažno predstavlja kao A slučajno pogodi vrijednost y, iako je vjerovatnoća za tako nešto veoma mala. Međutim, ako se opisani protokol ponovi više puta sa različitim nasumice odabranim vrijednostima x i ako ispitivana osoba svaki put uspješno odredi diskretni kvadratni korijen iz x po modulu n, svaka sumnja da se ne radi o osobi A praktično nestaje. Dakle, osoba A je u stanju ubijediti proizvoljnog ispitivača da je baš ona ta osoba koja poznaje tajne informacije, bez otkrivanja ikakvih informacija kako te tajne informacije glase.

U navedenom primjeru protokola dokaza bez otkrivanja znanja, tajna informacija sastojala se

samo od dva prosta broja. Opisani protokol se lako može generalizirati za dokazivanje poznavanja proizvoljne skupine podataka bez njihovog otkrivanja. Nije teško naslutiti kakve ovo mogućnosti otvara u savremenoj elektronskoj komunikaciji.

Page 71: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

71

14. Primjer aplikacionih protokola – razmjena elektronske pošte

Aplikacione protokole za elektronsku poštu možemo podijeliti na protokole za prijem i protokole za slanje elektronske pošte. To su protokoli koje klijentske aplikacije namijenjene za pregled i slanje elektronske pošte poput MS Outlook-a (e-mail klijenti) koriste za dobavljanje elektronske pošte sa udaljenog e-mail servera, odnosno za slanje elektronske pošte preko udaljenog e-mail servera. Praktično svi e-mail klijenti za dobavljanje elektronske pošte koriste ili POP3 (Post Office Protocol version 3) protokol, ili nešto sofisticiraniji protokol poznat kao IMAP (ova skraćenica se različito interpretira kao Internet Message Access Protocol, Internet Mail Access Protocol. Interactive Mail Access Protocol ili Interim Mail Access Protocol), dok se za slanje elektronske pošte gotovo isključivo koristi protokol pod nazivom SMTP (Simple Mail Transfer Protocol) ili razne njegove modifikacije.

POP3 protokol je nasljednik starijih protokola zvanih POP1 i POP2, koji se danas više ne koriste.

On je prvenstveno razvijen za potrebe korisnika koji sa mrežom uspostavljaju vezu tek povremeno (npr. vezom po pozivu odnosno dial-up vezom). Cilj POP3 protokola je da omogući brz prenos kompletne elektronske pošte sa serverskog na klijentski računar za vrijeme dok je korisnik povezan na mrežu, tako da korisnik kasnije može pregledati svoju poštu bez potrebe da i dalje bude priključen na mrežu. Mada mnogi e-mail klijenti imaju opciju da zadrže korisnikovu poštu i na serveru (opcija “Leave mail on server”), e-mail klijenti koji koriste POP3 tipično uspostavljaju vezu sa serverom, dobavljaju sve poruke, smještaju ih na korisnkov (klijentski) računar, nakon čega brišu poruke sa servera i prekidaju vezu. Za razliku od POP3 protokola, složeniji IMAP protokol podržava kako povezani (online) režim rada, gdje je korisnik za vrijeme rada sa elektronskom poštom cijelo vrijeme povezan sa serverom, tako i nepovezani (offline) režim rada, u kojem veza sa serverom traje samo za vrijeme prijema pošte. Za razliku od klijenata koji koriste POP3, klijenti koji koriste IMAP protokol tipično zadržavaju poštu na serveru sve dok korisnik eksplicitno ne zatraži brisanje pošte. Većina e-mail klijenata mogu koristiti bilo POP3 bilo IMAP protokol, ali veliki broj internet provajdera koji omogućavaju i usluge servera za elektronsku poštu podržava samo POP3.

Prema POP3 protokolu, klijentska i serverska aplikacija komuniciraju putem razmjene kratkih

tekstualnih poruka koji se prenose preko TCP porta 110 (varijanta POP3 protokola poznata kao POP3S koju koristi Google Gmail sistem, umjesto porta 110 koristi port 995). Nakon što klijent uspostavi TCP vezu sa serverskim računarom preko porta 110, on započinje slanje kratkih poruka koje predstavljaju komande, na koje server odgovara. Odgovori servera na početku sadrže tekst “+OK” ukoliko je komanda uspješno izvršena, ili tekst “–ERR” u slučaju greške. Iza “+OK” odnosno “–ERR” nalazi se ostatak koji zavisi od izvršene komande, odnosno od prirode greške. Slijedi primjer tipičnog dijaloga između e-mail klijenta i e-mail servera putem POP3 protokola (pojedini detalji će biti objašnjeni kasnije). Komande koje klijent šalje serveru prikazane su podebljano, dok su odgovori servera prikazani nakošeno. Jasno, e-mail klijent mora znati sa kojim e-mail serverom treba komunicirati, što se zadaje prilikom konfiguracije klijenta. Nakon što klijent uspostavi vezu sa serverom (u ovom primjeru, server se nalazi na adresi “mail.utic.net.ba”), dalji tok komunikacije izgleda recimo ovako:

+OK sun-v240-2.utic.net.ba POP3 service USER zjuric +OK Name is a valid mailbox PASS blabla +OK Maildrop ready STAT +OK 2 320 LIST +OK scan listing follows 1 120 2 200 . RETR 1 +OK 120 octets

Page 72: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

72

Return-path: <[email protected]> Date: Tue, 15 Jan 2008 16:02:43 –0500 From: "Hasan Jamak" <[email protected]> To: [email protected] Cc: [email protected] Subject: Proba Ovo je kratka probna poruka... . DELE 1 +OK message 1 deleted RETR 2

+OK 120 octets (Sad slijedi sadržaj druge poruke na analogan na čin...)

. DELE 2 +OK message 2 deleted QUIT +OK <mail.utic.net.ba> POP3 server signing off (mai ldrop empty)

Protokol tipično započinje slanjem komande “USER” iza koje slijedi korisničko ime (username) korisnika. Server provjerava da li je takav korisnik registriran i šalje obavještenje o uspjehu odnosno neuspjehu prijave. Nakon toga, slijedi komanda “PASS” iza koje se navodi lozinka korisnika (ove informacije e-mail klijent zna na osnovu postavki koje su izvršene pri njegovoj konfiguraciji). Nakon što je autentifikacija uspješno izvršena, klijent može saznati broj poruka u korisnikovom sandučetu (mailbox-u) kao i ukupno zauzeće memorije u bajtima od strane svih poruka pomoću komande “STAT”. Ove informacije se dobijaju u vidu dva broja koja slijede iza odgovora “+OK”. U slučaju da je potrebno saznati individualne dužine svake od poruka zasebno, klijent to može saznati pomoću komande “LIST”, na koju server odgovara izvještajem čiji je oblik jasan iz prethodnog primjera. Na osnovu ovog izvještaja, klijent može odlučiti da ne izvrši preuzimanje izvjesnih poruka, recimo onih čija je dužina veća od maksimalno dozvoljenog limita postavljenog prilikom konfiguracije. Glavni dio protokola sastoji se u preuzimanju poruka i njihovom brisanju sa servera. Preuzimanje se vrši pomoću komande “RETR”, a brisanje pomoću komande “DELE”. Obje komande kao parametar zahtijevaju broj poruke na koju se odnose. Primijetimo da klijent prvo mora saznati koliko poruka ima, da bi znao koliko “RETR” odnosno “DELE” komandi treba da pošalje. Na komandu “RETR” server odgovara samom e-mail porukom, koja osim korisnog sadržaja posjeduje i zaglavlje, iz kojeg se mogu saznati dopunske informacije poput toga ko je pošaljilac, kada je poruka poslana, šta joj je tema, itd. Klijent analizira ove informacije i prikazuje ih korisniku u nekom pogodno formatiranom obliku. Zaglavlje može biti znatno obimnije nego što je ovdje prikazano i njegove stavke ne moraju biti istim redoslijedom kako je ovdje prikazano (uglavnom, značenje pojedine stavke zaglavlja određeno je onim što slijedi prije znaka “:”, npr. stavka “Date:” predstavlja datum i vrijeme slanja). Koristan sadržaj poruke počinje nakon što zaglavlja uslijedi jedan prazan red. Konačno, protokol se završava komandom “QUIT”, koja raskida vezu sa serverom.

Kao što je vidljivo, e-mail klijenti i e-mail serveri putem POP3 protokola razmjenjuju klasične

poruke tekstualne sadržine, koje podrazumijevano nisu šifrirane ni na kakav način. Ukoliko postoji bojazan da bi to moglo dovesti do sigurnosnih problema, pomoću komande “STLS” može se zahtijevati enkripcija kompletne razmjene informacija uz pomoć TLS/SSL (Transport Layer Security/ Secure Sockets Layer) kriptografskog protokola. Ovaj kriptografski protokol je vrlo kompliciran tako da njegov detaljan opis izlazi izvan okvira ovog kursa, mada se on u osnovi se zasniva na idejama koje smo izložili kada smo govorili o osnovnim kriptografskim metodama. Nažalost, veliki broj e-mail servera nema podršku za komandu “STLS”. Varijanta POP3 protokola poznata kao POP3S automatski vrši enkripciju pomoću TLS/SSL protokola.

Primijetimo da se lozinka putem “PASS” komande prenosi u svojoj izvornoj formi, što može

predstavljati sigurnosni problem (neko može presresti komunikaciju i pročitati korisnikovu lozinku). Stoga, POP3 protokol predviđa i komandu “APOP” kojoj se kao parametri navode korisničko ime, kao

Page 73: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

73

i lozinka šifrirana MD5 jednosmjernom funkcijom, tako da bilo koja osoba koja bi pročitala šifriranu lozinku ne bi od nje imala nikakve koristi (o primjenama jednosmjernih funkcija za autentifikaciju smo govorili ranije). Na primjer, početak komunikacije POP3 protokolom između klijenta i servera koji razumiju POP3 komandu mogao bi izgledati recimo ovako:

+OK POP3 server ready <mail.utic.net.ba> APOP zjuric c4c9334bac560ecc979e58001b3e22fb +OK zjuric’s maildrop has 2 messages (320 octets)

Ovdje “c4c9334bac560ecc979e58001b3e22fb” predstavlja šifriranu lozinku. Nažalost, mnogi e-mail klijenti i serveri ne poznaju “APOP” komandu, s obzirom da je ona u opis POP3 protokola ušla naknadno. Inače, komanda “CAPA” predviđena POP3 protokolom daje spisak svih komandi koje server podržava, a koje nisu u spisku osnovnih komandi koje moraju biti podržane.

Poznato je da poruke elektronske pošte tipično mogu sadržavati razne netekstualne dodatke (attachmente) prikačene na poruku. Ovakvi podaci čuvaju se unutar same poruke na način propisan standardom poznatim kao MIME (Multipurpose Internet Mail Extensions). Da je poruka formatirana u skladu sa MIME standardom, prepoznaje se po stavci “MIME-version:” u zaglavlju poruke, iza koje slijedi verzija MIME standarda koja je korištena (tipično “1.0”). Kod ovako oblikovanih poruka, negdje u zaglavlju stoje i informacije o tome kakva je sve vrsta dodataka prikačena na poruku (slike, izvršni programi, tekstualni dokumenti, itd.) i na koji će se način prepoznati šta predstavlja samu poruku a šta dodatak. Pri tome su sami dodaci također na neki način (specificiran također u zaglavlju) kodirani kao nizovi znakova, tako da čine sastavni dio poruke. Razumije se da e-mail klijenti koji podržavaju attachmente moraju biti u stanju da interpretiraju ove informacije i da u skladu sa njima izvrše odgovarajući tretman dodataka (npr. da prikažu sliku unutar poruke ukoliko se radi o slikovnim dodacima). Međutim, samom POP3 protokolu MIME oblikovanje ne znači ništa, odnosno on cijelu poruku sa dodacima vidi kao jednu cjelinu i nije svjesan da je ona komponirana iz više neovisnih dijelova. Zbog toga POP3 klijenti nisu u stanju da dobave samo tekstualni dio poruke bez attachmenta, ili da dobave samo neki od specifičnih attachmenta, itd. Naime, mada svi moderni e-mail klijenti znaju raspoznati attachmente, sam protokol ih ne raspoznaje. Stoga, e-mail klijent može izvršiti interpretaciju poruke i razdvojiti attachmente od same poruke tek kada dobavi čitavu poruku (zajedno sa svim dodacima).

Već je rečeno da je POP3 protokol prvenstveno zamišljen tako da se pri svakom povezivanju klijenta na server sve poruke sa serverskog računara prebacuju na klijentski računar. Mada većina e-mail klijenata ima opciju zadržavanja poruka na serverskom računaru, ovu opciju nije lako pouzdano implementirati u klijentu sa POP3 protokolom. Neko bi mogao pomisliti da je dovoljno da klijent prosto ne pošalje serveru odgovarajuće “DELE” komande. Kratkoročno bi to zaista radilo. Međutim, osnovni problem je što su prema POP3 protokolu poruke identificirane samo sa svojim rednim brojem, koji se može promijeniti između dva povezivanja istog klijenta sa serverom. Zaista, zamislimo ovakav scenario. Neka je pri zadnjem čitanju poruka nekim e-mail klijentom u mailboxu bilo 5 poruka i neka je klijent odlučio da zadrži te poruke na serveru. E-mail klijent je zapamtio koji se broj odnosi na koju poruku. Neka je sada korisnik svom mailboxu pristupio sa nekog drugog mjesta pomoću nekog drugog e-mail klijenta i eksplicitno zatražio brisanje treće poruke. Posljedica ovog brisanja će biti da će prilikom sljedećeg povezivanja na server, poruke koje su ranije imale brojeve 4 i 5 sada imati brojeve 3 i 4, jer stara poruka sa brojem 3 više ne postoji, a numeracija poruka pri svakom povezivanju uvijek ide kao slijed uzastopnih brojeva. Prvi e-mail klijent naravno ne može znati da su dvije poruke promijenile svoje redne brojeve, što može stvoriti konfuziju u kasnijim pristupima.

Da bi se riješio ovaj problem i POP3 klijentima omogućilo da mogu pouzdano implementirati

“Leave mail on server” opciju, POP3 protokol predviđa i komandu “UIDL” (Unique Identification Listing). Naime, svaki e-mail server svakoj poruci u mailbox-u pridružuje jedinstveni nepromjenljivi identifikator koji se sastoji od nekog niza znakova. Kada se POP3 klijent poveže na server, on može iskoristiti ovu komandu da sazna trenutno stanje tabele preslikavanja koje povezuje ove identifikatore sa rednim brojevima poruka. Recimo, rezultat izvršavanja ove komande može biti kao što slijedi:

Page 74: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

74

UIDL +OK unique-id listing follows 1 16334–1117541027 2 16415–1117541027 . Klijent može iskoristiti informacije iz ove tabele da sazna koje su poruke zaista nove u odnosu na

trenutak prethodnog povezivanja i da na taj način izvrši prenos samo poruka koje nisu pribavljene (u slučaju kada se ne ostavljaju kopije poruka na serveru, klijent uvijek preuzima sve poruke, jer su sve nove). Nešto kasnije ćemo vidjeti kako je ovaj problem riješen u IMAP protokolu.

Za razliku od POP3 protokola, IMAP protokol koristi TCP port 143 za komunikaciju između

e-mail klijenta i e-mail servera. Trenutno je aktuelna verzija 4 ovog protokola, pa se nekada govori i o IMAP4 protokolu. Već smo rekli da ovaj protokol podržava kako online režim rada, gdje je korisnik za vrijeme rada sa elektronskom poštom cijelo vrijeme povezan sa serverom, tako i offline režim rada, u kojem veza sa serverom traje samo za vrijeme prijema pošte. IMAP protokol je predviđen da se poruke zadržavaju na serveru sve dok korisnik eksplicitno ne zatraži brisanje neke poruke. Klijenti koji koriste IMAP imaju pravo da prenesu elektronsku poštu na korisnikov računar (da bi korisnik mogao pregledati poštu i nakon što se veza sa serverom prekine), ali se takve prenesene poruke tretiraju isključivo kao lokalne kopije, koje ne moraju biti autoritativne. Drugim riječima, ukoliko iz bilo kojeg razloga dođe do izmjene lokalne kopije, pravom porukom se smatra ona koja je pohranjena na serveru. S obzirom da se prenos poruka sa servera na klijentski računar vrši samo na zahtjev, rad sa IMAP protokolom može biti mnogo brži nego sa POP3 protokolom u slučajevima kada je korisnikov mailbox pretrpan dugačkim porukama (s obzirom da POP3 uvijek vrši kompletan prenos mailboxa sa servera na korisnikov računar). Također, pri radu sa IMAP protokolom u online režimu rada, nova poruka postaje dostupna klijentu praktično istog trenutka kada se ona pojavi na serveru, za razliku od POP3 protokola ili pregledanju pošte preko WEB preglednika (tzv. Webmail) gdje korisnik mora eksplicitno zatražiti provjeru da li je stigla nova pošta. Pošto je IMAP protokol dosta kompliciran protokol, u njegove detalje nećemo ulaziti, nego ćemo samo istaći osnovne razlike između POP3 i IMAP protokola.

Za razliku od mnogih starijih internet protokola (ne samo za elektronsku poštu) koji su lozinke

prenosili u nešifriranom obliku (poput POP3 protokola u osnovnoj izvedbi), IMAP standardno prenosi lozinke u šifriranom obliku. Pri tome je opcionalno podržan i prenos lozinki u nešifriranom obliku, s obzirom da je šifriranje strategija koja mora biti dogovorno uspostavljena između klijenta i servera (tako da neke kombinacije klijent/server nisu u stanju uspostaviti šifrirani prenos). IMAP također podržava šifrirani prenos svih informacija preko TLS/SSL protokola, što se ostvaruje bilo automatski izborom porta 993 za komunikaciju (umjesto standardnog porta 143), bilo zadavanjem “STARTTSL” komande nakon uspostavljanja komunikacije.

POP3 protokol podrazumijeva da je u jednom trenutku samo jedan e-mail klijent povezan na isti

mailbox na serveru. Ukoliko to nije ispunjeno, mogu nastupiti ozbiljni problemi. Na primjer, neka su u isto vrijeme dva e-mail klijenta povezana na isti mailbox. Ukoliko jedan od klijenata izvrši neku akciju nad mailboxom putem POP3 protokola, drugi e-mail klijent nema nikakvu mogućnost da sazna da je ta akcija izvršena, tako da može doći do nekonzistencije. S druge strane, IMAP protokol predviđa mogućnost da u isto vrijeme na jedan mailbox može biti povezan proizvoljan broj e-mail klijenata, i obezbjeđuje mehanizme pomoću kojih e-mail klijenti mogu dobiti informaciju o izmjenama sadržaja mailboxa koje su izvršene od strane nekog drugog e-mail klijenta koji je u isto vrijeme povezan na isti mailbox.

Slijedeća bitna razlika između POP3 i IMAP protokola je podrška MIME formatiranim porukama

koje sadrže attachmente. Već smo rekli da MIME format POP3 protokolu ne znači ništa u smislu da on ne može razumjeti njihovu strukturu (interpretacija njihove struture prepušta se e-mail klijentu nakon što poruka već bude isporučena). S druge strane, IMAP protokol razumije strukturu MIME

Page 75: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

75

formatiranih poruka i u stanju je selektivno čitati njihove pojedine dijelove. Na primjer, moguće je tražiti preuzimanje čistog sadržaja poruke, bez dodataka koje su na nju prikačene. To je korisno kada recimo želimo pročitati tekstualni sadržaj poruke na koju su prikačeni masivni dodaci, čiji nas sadržaj u tom trenutku ne zanima, a čije bi preuzimanje tražilo isuviše mnogo vremena.

Često je potrebno voditi informacije o tome koje su poruke pročitane, na koje je odgovoreno, itd.

Međutim, POP3 protokol nije u stanju ostaviti ikakve informacije na serveru. Zbog toga, POP3 klijenti takve informacije moraju čuvati lokalno, na klijentskom računaru. Međutim, jasno je da te informacije neće biti dostupne ukoliko e-mail serveru pristupimo sa nekog drugog računara. S druge strane, IMAP protokol definira načine za pohranjivanje statusnih informacija na samom serveru, tako da će promjena statusnih informacija izvršena pomoću jednog klijenta biti vidljiva svim drugim klijentima, s obzirom da se informacije čuvaju na serveru kojem svi klijenti pristupaju. Također, ukoliko je potrebno čuvati kopije poslanih poruka, POP3 protokol nema načina pomoću kojih bi se te kopije mogle čuvati na serveru, nego se one čuvaju na klijentskom računaru. Naravno, one time postaju nedostupne sa bilo kojeg drugog računara. IMAP omogućava čuvanje kopija poslanih poruka na serveru, čime se ovaj problem rješava.

POP3 protokol ne omogućava korisniku da na serveru razvrstava poruke u foldere (to je moguće

uraditi samo na samom klijentskom računaru), niti da samostalno kreira nove mailbox-ove. Sve te mogućnosti su podržane u IMAP protokolu. Također, IMAP protokol omogućava da se serveru postavi zahtjev da izdvoji poruke koje zadovoljavaju određene kriterije. Kod POP3 protokola nemamo drugog izbora nego da preuzmemo sve poruke sa servera na klijentski računar, pa da eventualno tada izdvojimo poruke koje zadovoljavaju postavljene kriterije. Međutim, na taj način smo morali preuzeti i poruke koje nas ne zanimaju, tj. one koje ne zadovoljavaju postavljene kriterije.

Već smo rekli da POP3 klijenti moraju koristiti UIDL tabele da bi mogli pouzdano podržati

opciju “Leave mail on server”. Za razliku od POP3 protokola koji za jedinstvenu identifikaciju (UID) koristi sekvence znakova, IMAP protokol za istu svrhu koristi jedinstveni 32-bitni broj, koji se uvijek dodjeljuje u rastućem poretku kako poruke pristižu. Pri tome se ovi brojevi ne mijenjaju prilikom brisanja poruka, tako da generalno oni ne moraju činiti uzastopni slijed brojeva (poput rednih brojeva poruka). Stoga, da bi IMAP klijent pribavio nove poruke, dovoljno je da od servera zatraži isporuku poruka čiji su UID brojevi veći od najvećeg UID broja među porukama koje je već pročitao. S druge strane, POP3 klijenti moraju pretražiti čitavu UIDL tabelu da bi znali koje poruke nisu ranije dobavili. Razlika u efikasnosti može biti primijetna kada mailbox sadrži mnogo poruka.

Ovim smo opisali prednosti IMAP protokola u odnosu na POP3. Naravno, on ima i svoje mane,

od kojih je glavna mana složenost, tako da je IMAP dosta težak za implementaciju. Dalje, s obzirom da se sva pošta dugo vremena čuva na serveru, server mora imati jake memorijske i procesorske resurse. Pored toga, algoritmi za razmještanje i pretraživanje poruka na serveru moraju biti veoma pažljivo izvedeni, s obzirom da se pretraga uvijek vrši u mnoštvu poruka, što kod POP3 servera nije toliko izraženo. Također, neki detalji IMAP protokola, poput mogućnosti čuvanja kopija poslanih poruka na serveru mogu nepotrebno usporiti prenos, što može biti nedostatak u slučaju kada je brzina prenosa podataka mala.

Pređimo sada na opis SMTP protokola. Mada ovaj protokol u načelu podržava i prijem i slanje

elektronske pošte, e-mail klijenti SMTP protokol koriste isključivo za slanje pošte sa klijentskog računara na e-mail server, koji će se dalje brinuti o isporuci pošte na željeno krajnje odredište. Jedino e-mail serveri pri međusobnoj komunikaciji (za potrebe razmjene pošte) koriste SMTP kako za slanje, tako i za prijem. Razlog za ovo je što SMTP ne podržava slanje zahtjeva za prijemom pošte. SMTP jedino može poslati signal drugom računaru kojim ga obavještava da će mu biti isporučena pošta, koju on tada može pokupiti putem SMTP protokola (ova signalizacija se postiže slanjem “TURN” ili “ETRN” komande). Međutim, taj drugi računar ne može samostalno zatražiti prijem pošte putem protokola, nego taj prijem mora biti na neki način iniciran od strane pošaljiova pošte. To je razlog zbog kojeg se SMTP nikada ne koristi za prijem pošte u e-mail klijentima.

Page 76: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

76

Slično POP3 protokolu, klijent i server također komuniciraju putem razmjene kratkih tekstualnih poruka, tipično preko TCP porta 25. Poruke koje šalje klijent tipično predstavljaju komande, mada u određenoj fazi protokola (nakon izvršene komande “DATA”) predstavljaju i samu e-mail poruku koju želimo poslati. S druge strane, poruke koje šalje server su tipično odgovori servera na komande. Nakon uspostavljanja veze, klijent se prvo predstavlja serveru, razmjenjuje razne radne parametre sa serverom, šalje informacije o primaocima poruke, a nakon toga šalje i sam sadržaj poruke, nakon čega se veza može prekinuti. Prikazaćemo primjer tipičnog dijaloga između klijentske aplikacije i servera putem SMTP protokola (kao i kod primjera dijaloga putem POP3 protokola, komande koje šalje klijent biće prikazane podebljano, a odgovori servera nakošeno). U ovom primjeru, e-mail klijent želi istu poruku poslati na dva odredišta (detalji će biti objašnjeni nakon prikaza primjera). Nakon što klijent uspostavi vezu sa serverom (“mail.utic.net.ba” u ovom konkretnom primjeru), dalji tok komunikacije izgleda recimo ovako:

220 mail.utic.net.ba ESMTP Postfix HELO pmf.unsa.ba 250 Hello pmf.unsa.ba, I am glad to meet you MAIL FROM:<[email protected]> 250 OK RCPT TO:<[email protected]> 250 OK RCPT TO:<[email protected]> 250 OK DATA 354 End data with <CR><LF>.<CR><LF> From: "Zeljko Juric" <[email protected]> To: "Hasan Jamak" <[email protected]> Cc: [email protected] Date: Tue, 15 Jan 2008 16:02:43 –0500 Subject: Proba Ovo je kratka probna poruka... . 250 OK: queued as 12345 QUIT 221 Bye Primijetimo da odgovori servera uvijek započinju brojčanom oznakom, koja predstavlja šifru

značenja odgovora (npr. 250 označava uspješnu akciju), dok sam tekst koji slijedi iza brojčane oznake može varirati od servera do servera (tj. samo je brojčana oznaka relevantna za značenje odgovora). Nakon što se veza uspostavi, server se predstavlja pozdravnom porukom koja tipično sadrži njegovu adresu. Klijent započinje dijalog “HELO” komandom, pomoću koje se klijent predstavlja serveru navođenjem adrese klijenta kao parametra. Pomoću komande “MAIL FROM” klijent informira server o e-mail adresi pošaljioca poruke, dok se komandom “RCPT TO” zadaju odredišta na koja poruku treba isporučiti. Svaka uspješna akcija mora rezultirati odgovorom servera koji počinje šifrom 250 (npr. “250 OK”). Konačno, komandom DATA započinje se prenos same poruke. Svaka linija e-mail poruke koju treba poslati šalje se kao posebna tekstualna poruka na server. Pri tome, prvo treba pripremiti zaglavlje poruke. Zaglavlje ne mora sadržavati sve informacije, a informacije koje moraju biti prisutne prikazane su u primjeru. Koristan sadržaj poruke počinje nakon jednog praznog reda, a poruka se završava redom u kojem je samo tačka. Konačno, komanda “QUIT” završava komunikaciju.

Primijetimo da imamo prividno dupliranje informacija. Recimo, informacije o primaocima

poruke imamo kako u zaglavlju same poruke, tako i u argumentima komande “RCPT TO”. Treba istaći da se kao relevantne za isporuku uzimaju adrese navedene u komandi “RCPT TO”, čak i ako u zaglavlju poruke piše drugačije. Parametri proslijeđeni u komandama “HELO” i “MAIL FROM” upisuju se automatski u zaglavlje poruke u stavlje označene respektivno kao “Received:” i “Return-Path:”.

Page 77: Racunarske Mreze Zeljko Juric

Računarske mreže – Nezvanične bilješke sa predavanja

77

Danas se mnogo koristi i prošireni SMTP protokol, poznat kao ESMTP (Extended SMTP). Da bi klijent utvrdio da li server podržava ESMTP, on može započeti predstavku sa “EHLO” komandom umjesto komandom “HELO”. Ukoliko klijent odrečno odgovori (tj. odgovorom sa šifrom različitom od 250), server ne poznaje ESMTP, tako da klijent treba ponoviti predstavku sa komandom “HELO”. Ukoliko server poznaje ESMTP, on će izlistati popis dodatnih komandi koje poznaje, kao recimo u sljedećem primjeru:

220 mail.utic.net.ba ESMTP Postfix EHLO pmf.unsa.ba 250 Hello pmf.unsa.ba, I am glad to meet you 250 SIZE 14680064 250 PIPELINING 250 HELP Pomoću ESMTP komande “SIZE”, e-mail klijenti mogu saznati kolika je maksimalna dužina

poruke koju mailbox može prihvatiti, tako da ne pokušavaju bespotrebno poslati poruku koju server neće moći prihvatiti. Bez ove komande, jedino što klijent može uraditi je da pokuša poslati poruku i čekati na odgovor servera da li je poruka prihvaćena. Razumije se da se na taj način, u slučaju da prihvat ne uspije, bespotrebno troši vrijeme. Kao što je vidljivo iz prethodnog primjera, ista informacija se dobija i kao sastavni dio odgovora na “EHLO” komandu (14680064 bajta u prikazanom primjeru).

Najveći nedostatak SMTP protokola je što ne omogućava nikakvu autentifikaciju pošaljioca

poruke, odnosno bilo ko se može lažno predstaviti kao pošaljioc poruke. Ovo omogućava zloupotrebe u vidu distribucije neželjene pošte (spam). Propisana je modifikacija SMTP protokola poznata kao SMTP–AUTH (ili ESMTPA) koja bi trebala da riješi problem autentifikacije. Međutim, radi se o teškom problemu, tako da današnje izvedbe SMTP–AUTH još uvijek ne rješavaju ovaj problem na adekvatan način. Naime, za većinu predloženih rješenja postoje načini da se autentifikacija zaobiđe i ipak omogući slanje neželjene pošte čije je tačno porijeklo teško ustanoviti. Na rješavanji ovog problemu se danas intenzivno radi. Rješenje bi moglo biti u razvoju posve novog i radikalno drugačijeg protokola koji bi u potpunosti zamijenio SMTP, što danas izgleda malo vjerovatno s obzirom na njegovu veliku rasprostranjenost.