You are on page 1of 5

Sloj veze podataka

Pod susjednim računarima se podrazumijevaju računari međusobno povezane komunikaci-


jskim kanalom koji se teorijski ponaša kao žica (tj. kao koaksijalni kabl, telefonska žica ili
bežični kanal). Suština je da kanal koji se ponaša kao žica isporučuje bitove onim redom
kojim su poslani. Na prvi pogled radi se o toliko jednostavnom problemu da se tu nema
šta proučavati; računar A treba samo smještati podatke na žicu, a računar B samo ih pri-
hvata. Nažalost, u komunikacijskom kanalu ponekad nastaju greške. Štaviše, oni podatke
prenose ograničenom brzinom, pa uvijek postoji izvjesna vremenska razlika između tre-
nutka slanja i trenutka prijema podataka. Navedena ograničenja suštinski utiču na efika-
snost prenosa podataka i protokoli koji se koriste za komuniciranje moraju ih uzeti u obzir.

Projektovanje sloja podataka

Zbog mogućnosti pojavljivanja grešaka prilikom prenosa podataka, kao i potrebe za


usaglašavanjem brzine prenosa podataka i sposobnosti prijemnika da prihvati pristigle
podatke, neophodan je sloj koji će kontrolisati svaki uređaj u komunikaciji i obezbijediti
funkcije kao što su: formiranje okvira, kontrola toka podataka, detekcija i eventualno
ispravljanje grešaka. Taj kontrolni sloj je poznat kao sloj veze. Sloj veze podataka (DL-
Layer, Data Link Layer) ili sloj digitalne veze, ima zadatak da omogući pouzdan prenos
podataka s jednog računara na drugi kroz fizičku vezu i pri tome treba da otkrije i ako je
moguće ispravi greške nastale na fizičkom sloju. Generalno, na ovom sloju se operiše sa
okvirima ili ramovima (frames), a u okviru njega postoji više protokola. Osnovna funkcija
ovih protokola je postizanje pouzdane i efikasne komunikacije između dva susjedna
računara. Sloj veze podataka se naslanja na fizički sloj, a sa gornje strane on daje svoje
usluge mrežnom sloju. Drugim riječima, sloj veze podataka koristi usluge fizičkog sloja za
slanje i primanje bitova kroz komunikacijske kanale. On ima više funkcija, uključujući:
1. dobro definisan uslužni interfejs ka mrežnom sloju,
2. obrada (kontrola) grešaka u prenosu (detekcija i korekcija),
3. kontrola pristupa medijima (kontrola kada računar šalje podatke, odnosno
upravljanje tokom podataka tako da računar koji prima podatke ne bude njima
preplavljen),
4. određivanje početka i kraja okvira.

Da bi ostvario navedene ciljeve, sloj veze


podataka preuzima pakete koje dobija od
mrežnog sloja i kapsulira ih u okvire
(engl. frames), pogodne za prenos. Svaki okvir sadrži zaglavlje (header), polje za
korisničke podatke (payload field) u kome je paket, i završni blok okvira (frame trailer)
(slika desno). Rad sa okvirima je najvažniji posao sloja veze podataka.

Iako je ovdje riječ o nivou veze, mnoga načela, kao što su kontrola grešaka i upravljanje
tokom, važe kako za transportni, tako i za druge slojeve. Razlog je to što je njihov zaje-
dnički cilj pouzdanost a ona se postiže kada svi slojevi sarađuju. U mnogim mrežama se
ove funkcije u stvari uglavnom nalaze u višim slojevima, dok sloj veze podataka radi uz
minimalno „prihvatljiv“ nivo kvalitete. Međutim, bez obzira gdje se nalaze, ta načela su pri-
lično jednaka. U sloju veze podataka ona se često javljaju u svom najjednostavnijem i
najčistijem vidu, zbog čega je on pogodan za njihovo detaljno ispitivanje. Na sloju veze
podataka postoje dva tipa mreža. To su:
• neusmjereno (broadcast) mreže - jedan komunikacijski kanal dijele svi raču-
nari u mreži;
• point-to-point mreže - postoji više veza među pojedinim parovima računara.

Usluge mrežnom sloju

Sloj veze podataka treba da obezbijedi usluge za mrežni sloj. Osnovna usluga je prenos
podataka iz mrežnog sloja na izvorišnom računaru u mrežni sloj odredišnom računara. Na
izvorišnom računaru postoji dio (recimo, proces) mrežnog sloja koji isporučuje bitove sloju
veze podataka da bi ih ovaj proslijedio do odredi-
šta. Posao sloja veze je da prenese te bitove do
odredišnog računara kako bi se oni predali njego-
vom mrežnom sloju (slika desno (a)). Stvarni pre-
nos podataka odvija se prema šemi (b) sa iste sli-
ke, ali je lakše zamisliti da dva procesa sloja veze
međusobno direktno komuniciraju pomoću odgo-
varajućeg protokola.

Projektom se može predvidjeti da sloj veze podataka pruža različite usluge. Konkretne
ponuđene usluge zavise od protokola do protokola, ali se obično ugrađuju sljedeće tri:
1. prenos podataka bez uspostavljanja direktne veze i bez potvrde o njihovom prijemu
2. prenos podataka bez uspostavljanja direktne veze s potvrdom o njihovom prijemu;
3. prenos podataka sa uspostavljanjem direktne veze i s potvrdom o njihovom prije-
mu.

Pri prenosu bez uspostavljanja direktne veze i bez potvrde prijemu podataka, izvorišni
računar šalje nezavisne okvire podataka odredišnom računaru ne zahtijevajući od njega
potvrdu o prijemu okvira. Prije prenosa se ne uspostavlja logička veza između računara,
niti se po završenom prenosu takva veza raskida. Ako se neki okvir izgubi zbog smetnji na
liniji, sloj veze podataka to ne registruje, niti pokušava da ispravi greške. Opisana usluga
je pogodna kada je učestalost grešaka mala, tako da se ispravljanje grešaka prepušta višim
slojevima. Ona je podesna i za saobraćaj koji se odvija u realnom vremenu, npr. govorni,
kod koga veći problem predstavlja kašnjenje podataka nego njihovo izobličenje.

Prenos bez uspostavljanja direktne veze ali s potvrdom o prijemu podataka, predstavlja
pouzdaniju uslugu. I dalje se ne uspostavlja logička veza između pošiljaoca i primaoca, ali
se zahtijeva potvrda o prijemu svakog pojedinačnog okvira. Na taj način, pošiljalac zna da
li je okvir stigao u ispravnom stanju ili je putem zagubljen. Ako utvrdi da okvir nije stigao
na odredište unutar zadanog vremenskog intervala, pošiljalac ga može ponovo poslati.
Opisana usluga je zgodna za prenos preko bučnih kanala, kakvi postoje naročito u bežičnim
sistemima. Dobar primjer te klase usluga je mreža 802.11 (WiFi).

Treba možda naglasiti da potvrđivanje prijema okvira u sloju veze podataka nije obavezno
već samo predstavlja optimizaciju. Mrežni sloj uvijek može da pošalje paket i da čeka
potvrdu o njegovom sretnom dolasku od istog sloja na udaljenom računaru. Ako potvrda
ne stigne u predviđenom roku, pošiljalac jednostavno može da ponovo pošalje čitavu
poruku. Problem ovakve strategije jeste to što može biti neefikasna. Veze obično imaju
poznato vrijeme putovanja okvira do primaoca i strogo ograničenu veličinu okvira određenu
hardverom. Mrežni sloj ne zna te parametre. Mogao bi poslati veliki paket koji se dijeli,
recimo, na 10 okvira, od kojih se prosječno izgube 2. Tada bi paketu trebalo mnogo
vremena da se probije. Ako se umjesto toga zahtijeva potvrda za svaki okvir i svaki se
izgubljeni okvir ponovo šalje, tada se greške mogu ispraviti neposrednije i brže. Na
pouzdanim kanalima (na primjer, u optičkom vlaknu), opterećivanje kanala bezbrojnim
potvrdama o prijemu okvira nije neophodno, ali na bežičnim vezama koje su po prirodi
nepouzdane, takvo povećanje saobraćaja se isplati.

Od tri pomenute usluge, najsloženija usluga koju nudi sloj veze podataka je prenos
podataka sa uspostavljanjem direktne veze. Izvorišni i odredišni računar uspostavljaju
vezu prije nego što se razmijene podaci. Svaki poslani okvir se numeriše, a sloj veze
podataka garantuje da je svaki takav okvir i primljen. Štaviše on garantuje da je svaki
takav okvir primljen samo jednom i da su svi okviri stigli redom kojim su poslani. Dakle,
usluga sa uspostavljanjem direktne veze obezbjeđuje procesima mrežnog sloja ekvivalent
pouzdanog toka bitova. Ona je prikladna za dugačke i nepouzdane veze, kao što su
satelitski kanal i telefonsko kolo za velika rastojanja. Da je upotrijebljena usluga bez
uspostavljanja direktne veze i s potvrdom o njihovom prijemu, lako je zamisliti da bi
gubljenje potvrda na putu izazvalo višekratno slanje (i primanje) istog paketa, čime bi se
rasipao propusni opseg.

Kod usluge sa uspostavljanjem direktne veze, podaci se prenose u tri jasno odijeljene faze.
U prvoj fazi se na obje strane inicijaliziraju promjenljive i brojači koji vode računa o
primljenim okvirima. U drugoj fazi se prenosi jedan ili više okvira. U trećoj, završnoj fazi,
veza se raskida i oslobađaju se promjenljive, baferi i drugi resursi upotrijebljeni za
održavanje veze.

Uokvirivanje

Da bi pružio usluge mrežnom sloju, sloj veze podataka mora da iskoristi usluge koje mu
nudi fizički sloj. Fizički sloj prihvata tok sirovih podataka i pokušava da ga isporuči na odre-
dište. Ako u kanalu postoji šum, kao u većini bežičnih i nekim kablovskim vezama, fizički
sloj će svojim signalima dodati nešto redundanse da bi učestalost grešaka sveo na prihva-
tljivu mjeru. Međutim, sloj veze podataka prima tok podataka u kojem može biti grešaka.
Vrijednosti primljenih bitova mogu biti promijenjene, njihov broj može biti manji, jednak
ili veći od broja poslanih bitova. Sloj veze podataka treba da otkrije takve greške i da ih,
kada zatreba, ispravi. Sloj veze najčešće dijeli tok podataka u okvire konačne veličine, za
svaki okvir izračunava kontrolni zbir (checksum) i upisuje ga u zaglavlje okvira prilikom
slanja. Kada okvir stigne na odredište, kontrolni zbir se izračunava ponovo. Ako se dobijeni
zbir razlikuje od zbira sadržanog u okviru, sloj veze zna da je nastala greška i preduzima
korake da je ispravi (tj. da odbaci oštećen okvir i možda da o tome povratno pošalje
izveštaj). Dijeljenje toka podataka na okvire u stvari je teže nego što na prvi pogled
izgleda. Dobra je metoda koja prijemniku olakšava otkrivanje početaka novih okvira i za
to troši mali dio propusnog opsega kanala. Biće opisane četiri metode.

Prva, prebrojavanje bajtova, u zaglavlju postoji polje s brojem bajtova u okviru. Kada
sloj veze na odredištu pročita taj broj, on zna koliko bajtova slijedi iza njega i tako utvrđuje
kraj okvira. Ova tehnika je prikazana na donjoj slici (a) za četiri mala okvira veličine 5, 5,
8 i 8 bajtova. U ovom algoritmu nije dobro što broj bajtova može biti pogrešno očitan zbog
greške u prenosu. Na primjer, ako stvarni broj bajtova (5) u drugom okviru na donjoj slici
(b), zbog greške samo jednog bita postane 7, odredišni računar će izgubiti korak i neće
moći tačno pronaći početak sljedećeg okvira. Čak i ako zna da je okvir oštećen jer se njegov
kontrolni zbir ne slaže, odredišni računar ipak neće moći pronaći početak sljedećeg okvira.
Ni povratno slanje okvira na polazište sa zahtjevom za ponovno slanje ne pomaže pošto
odredišni računar ne zna koliko bajtova treba da preskoči da bi stigao do početka dijela
koji se ponovo šalje. Zbog svega navedenog, metod prebrojavanja bajtova rijetko se koristi
sam za sebe.
Po drugoj metodi, problem pono-
vnog sinhronizovanja poslije greške
zaobilazi se tako što se počeci i kra-
jevi svih okvira obilježavaju specijal-
nim bajtovima. Često se za obilježa-
vanje kraja jednog i početka drugog
okvira koristi isti indikatorski bajt
(flag byte), na slici lijevo (a) ozna-
čen kao FLAG. Dva uzastopna indi-
katorska bajta označavaju kraj
jednog i početak drugog okvira. Na
taj način, ako odredišni računar izgubi korak, samo treba da potraži dva indikatorska bajta
kako bi pronašao kraj tekućeg i početak narednog okvira. Međutim, još je jedan problem.
Lako se može dogoditi da se sekvenca bitova indikatorskog bajta slučajno nađe u
podacima, pogotovo kada se šalju binarni podaci kao što su fotografije ili pjesme. Takva
situacija obično ometa ispravno očitavanje okvira. Jedan od načina kojim se ovaj problem
može riješiti predviđa da sloj veze pošiljaoca umetne poseban kontrolni bajt (escape byte,
ESC) neposredno ispred svakog indikatorskog
bajta koji se slučajno zadesi unutar podataka.
Na taj način, indikatorski bajt za sinhroniza-
ciju može se razlikovati od istog bajta unutar
podataka na osnovu prisustva ili odsustva
kontrolnog bajta ESC ispred njega. Sloj veze
primaoca uklanja taj znak prije nego što poda-
tke preda mrežnom sloju. Opisana tehnika zo-
ve se umetanje bajtova (byte stuffing).
Naravno, slijedi pitanje: šta se događa kad se
unutar podataka slučajno nađe kontrolni bajt
ESC? Pa, i ispred njega se umeće kontrolni bajt ESC. Prijemnik uvijek uklanja prvi pristigli
bajt ESC a sljedeći bajt ne dira (to može biti drugi bajt ESC ili indikatorski bajt). Na gornjoj
slici (b) prikazano je nekoliko primjera. U svim slučajevima, niz bajtova koji se isporučuje
po uklanjanju umetnutog bajta potpuno odgovara prvobitnom nizu bajtova. I dalje se može
tražiti granica okvira po dva uzastopna indikatorska bajta i ne mora se voditi računa o
uklanjanju kontrolnih znakova ESC.

Umetanje prikazano na gornjoj slici predstavlja malo uproštenu šemu umetanja bajtova u
protokolu za vezu „od tačke do tačke“ (Point-to-Point Protocol, PPP), koji se u komuni-
kacijskim vezama upotrebljava za prenos paketa.

Treća metod uokvirivanja toka bitova prevazilazi jedan od nedostataka umetanja bajtova,
vezan za korištenje 8-bitnih bajtova. Uokvirivanje se može raditi i na nivou bita, zbog čega
okviri s podacima mogu biti različite dužine, što dopušta korištenje znakova kodiranih
proizvoljnim brojem bitova. Ova tehnika je bila razvijena za nekada veoma popularan
protokol za upravljanje povezivanjem podataka na visokom nivou (Highlevel Data Link
Control, HDLC). Svaki okvir počinje i završava posebnom sekvencom bitova, 01111110 ili
0x7E heksadecimalno (u stvari, indikatorskim bajtom). Kadgod sloj veze pošiljaoca u
podacima naiđe na pet uzastopnih jedinica, on automatski umeće nulu u izlazni tok bitova.
To umetanje bitova (bit stuffing) analogno je umetanju bajtova, gde se ispred indikator-
skog bajta u podacima umeće kontrolni bajt ESC. Time se obezbjeđuje i minimalna gustina
prelaza između 0 i 1, koja fizičkom sloju pomaže u održavanju sinhronizacije. Upravo zato
se umetanje bitova upotrebljava i na USB.

Kada primalac u dolaznom toku bitova pronađe 5 uzastopnih jedinica iza kojih slijedi nula,
on iz toka automatski izbacuje tu nulu. Umetanje (i izbacivanje) bitova potpuno je nevi-
dljivo mrežnom sloju na oba računara, baš
kao i umetanje (i izbacivanje) bajtova. Ako
korisnički podaci sadrže kôd indikatora,
01111110, taj indikator se prenosi kao
011111010, ali se čuva u memoriji primaoca
kao 01111110 (slika desno: a. originalni po-
daci, b. podaci tokom prenosa, c. podaci u
memoriji primaoca poslije izbacivanja bitova). Primjenom metode umetanja bitova, nedvo-
smisleno se utvrđuje granica između dva okvira na osnovu indikatorskog koda. Ako pri-
malac izgubi korak, on treba samo skenirati ulazni tok i da u njemu potraži indikatorske
sekvence pošto se one mogu pojaviti samo na granicama okvira ali ne i unutar podataka.

Bez obzira da li se radi o umetanju bitova ili bajtova, dužina okvira se mijenja u zavisnosti
od sadržaja, tj. podataka koji se prenose. Primjera radi, ako u podacima nema indikatorskih
bajtova, 100 bajtova će biti preneseno u okviru dužine približno 100 bajtova. S druge
strane, ako se podaci sastoje isključivo od indikatorskih bajlova, uz svaki indikatorski bajt
biće dodan kontrolni bajt ESC, pa će dužina okvira bili približno 200 bajtova. Pri umetanju
bitova, povećanje iznosi približno 12,5%, pošto se svakom bajtu dodaje jedan bit.

Posljednja metod uokvirivanja podrazumijeva upotrebu jedne prečice u fizičkom sloju.


Kodiranje bitova u signale često obuhvata ponavljanje (redundantost) kao pomoć
prijemniku. Redundansa znači da neki signali ne mogu biti sastavni dio regularnih podata-
ka. Na primjer, u linijskom kodu 4B/5B, 4 bita podataka se preslikava u 5 bitova signala
da bi se dobio dovoljan broj bitskih prelaza. To znači da se od 32 moguća signala ne
upotrebljava 16. Dio tih rezervisanih signala se može upotrijebiti kao pokazatelj početka i
kraja okvira. Svodi se na to da za razgraničenje okvira se upotrebljavaju „zabranjeni
kodovi“. Ljepota ovoga je to što za pronalaženje početka i kraja okvira nije potrebno ništa
umetati pošto kao graničnici se koriste rezervisani signali.

Zbog veće sigurnosti, protokoli sloja veze kombinuju prebrojavanje znakova s nekom od
drugih metoda. U Ethernetu i WiFi (802.11) mrežama uobičajeno je da okvir počne strogo
definisanim kodom zvanim preambula. Taj kod zna biti prilično dugačak (za 802.11
uobičajeno je 72 bita), kako bi prijemnik stigao da se pripremi za dolazni paket. lza
preambule, u zaglavlju slijedi polje s dužinom, tj. brojem bajtova okvira, pomoću kojeg se
određuje kraj okvira.

Zadaci za vježbu
1. U toku podataka za koji se koristi algoritam umetanja bajtova nalazi se sljedeći
fragment: A B ESC C ESC FLAG FLAG D. Kako će on izgledati poslije umetanja bajtova?

2. U protokolu sloja veze koristi se sljedeće kodiranje znakova: A: 01000111; B:


11100011; FLAG: 01111110; ESC: 11100000. Napisati binarnu sekvencu bitova poslanih
za okvir od četiri znaka: A B ESC FLAG, kada se koriste sljedeće metode uokvirivanja:
prebrojavanje bajtova, indikatorski bajtovi uz umetanje bajtova, početni i završni flag
bajtovi uz umetanje bitova.

Literatura
Preuzeto iz:
Andrew S. Tanenbaum, David J. Wetherall, „Računarske mreže“, prevod petog izdanja,
Mikro knjiga Beograd, 2013.

You might also like