V. SLOJ PODATAKOVNE VEZE (Data Link)
- sloj podatakovne veze ili podatkovni sloj osigurava
prijenos između dva direktno spojena računala
- "susjedna računala" fizički povezana pomoću
komunikacijskog “wire-like” kanala
- glavna osobina takvog kanala: bitovi se dostavljaju u
točno istom redoslijedu u kojem su poslani
- funkcije:
- osiguravanje usluga za mrežni sloj (dobro definirano
sučelje)
- određivanje načina grupiranja bitova fizičkog nivoa u
okvire (frames)
- rješavanje pogreški pri prijenosu
- reguliranje toka okvira tako da ne dođe do zagušenja
(kad je primaoc okvira spor, a pošiljaoc brz)
1.1 Usluge za mrežni sloj
- osnovna funkcija sloja podatkovne veze: prenijeti
podatke (bitove) od mrežnog sloja izvora do mrežnog sloja odredišta

Slika: Modeli komunikacije između
podatkovnih slojeva
(Tanenbaum, 1996)
a. Nepotvrđeni
bespojni
- šalju se neovisni okviri bez potvrde odredišnog
računala o primitku
- ne vrši se obnavljanje okvira ako se neki izgubi
- servis prikladan:
- ako je broj grešaka mali, pa je
obnavljanje ostavljeno višim nivoima
- kada
važnije da
podaci brzo stignu nego točnost
podataka
b. Potvrđeni
bespojni
- potvrda (acknowledgment) se
šalje za svaki okvir posebno,
pa pošiljaoc zna da li je okvir stigao ili nije
- ako okvir ne stigne u nekom propisanom vremenskom
intervalu, šalje se ponovo
- ako se potvrda izgubi, okvir će se prenijeti više puta
- servis koristan za nepouzdane kanale kao na pr. bežične
sisteme
c. Potvrđeni
spojni
- najpouzdaniji servis, uspostavlja se veza prije slanja
okvira
- svaki poslani okvir je numeriran i sloj garantira:
- svaki okvir će biti primljen
- svaki okvir će se primiti točno jednom
- svi okviri će stići u pravom redosljedu
- 3 faze prijenosa:
- uspostavlja se veza tako da obje strane
inicijaliziraju brojače i varijable potrebne za vođenje računa o tome
koji su okviri već stigli, a koji nisu
- okviri se prenose
- oslobađa se veza, tj. varijable i ostali resursi
koji su bili potrebni za prijenos
1.2 Tvorba okvira (Framing)
- problem obilježavanja početka i kraja svakog okvira
- podatkovni sloj razbija niz bitova u diskretne okvire
i izračunava zaštitu (checksum) za svaki okvir
- zaštita se ponovo za svaki okvir računa na odredištu
- ako se razlikuje od polazne, došlo je do pogreške koju podatkovni sloj
treba riješiti
- 4 metode za razbijanje toka bitova u okvire:
- brojanje znakova
- omeđivanje početnim i završnim znakom s umetanjem (stuffing)
znaka
- omeđivanje početnom i završnom "zastavicom" (flag)
s umetanjem bita
- narušavanje pravila kodiranja fizičkog sloja
a. Brojanje znakova
-
koristi posebno polje u zaglavlju s podatkom o broju
znakova u okviru
-
kada sloj prijenosa podataka na odredištu vidi taj
broj, zna koliko znakova slijedi, tj. gdje je kraj okvira
-
problem ako se uslijed greške u prijenosu promijeni
podatak s brojem - ispada se iz sinhronizacije
-
dosta rijetko se koristi

Slika: Primjer za tvorbu okvira brojenjem
znakova
(Tanenbaum, 1996)
b. Omeđivanje početnim i završnim znakom
s umetanjem (stuffing) znaka
-
svaki okvir započinje s ASCII znakovima DLE
STX, a završava s DLE ETX (Data Link Escape, Start of TeXt, End of TeXt)
-
kod prijenosa binarnih podataka može se
dogoditi da se znakovi za DLE STX i DLE ETX pojave unutar podataka
-
zato se koristi tehnika umetanja znaka
(character stuffing): ispred svakog DLE niza dodaje se još jedan
DLE koji se na strani primaoca miče (jedini sami DLE su na početku i kraju
okvira) - znak DLE zamjenjuje se dvoznakom DLE DLE

Slika: Primjer za omeđivanje s DLE STX i
DLE ETX
(Tanenbaum, 1996)
ôd,
potrebna je metoda i za znakove bilo koje veličine:
c. Omeđivanje početnom i završnom
"zastavicom" (flag) s umetanjem bita
-
tehnika dozvoljava okvire, kao i znakove, s
proizvoljnim brojem bitova
-
za označavanje krajeva okvira koristi se
posebni uzorak bitova, 01111110 - flag byte
-
kada se u podacima pojavi 5 jedinica,
umetne se 0 bit (bit stuffing)
-
na primjer:
0101111111111001
- niz podataka prije umetanja (poslao ga je mrežni sloj)
010111110111110001
- - niz podataka s umetnutim
0
bitom
d. Narušavanje pravila kodiranja fizičkog sloja
-
kod mreža gdje postoji redundancija pri
kodiranju, npr. za kodiranje 1 bita podataka koriste se 2 fizička bita
-
koristi se pogrešni fizički kod:
-
ako je 1 bit "high-low" par, a 0 bit
"low-high" par, kombinacije "low-low" i "high-high" se ne koriste za
podatke, pa mogu biti granice okvira
e. Kombinacija prethodnih metoda
1.3 Kontrola pogrešaka (Error Control)
-
svaki okvir mora se proslijediti mrežnom
sloju na odredištu točno jednom
-
primaoc šalje pošiljaocu posebni okvir sa
pozitivnom ili negativnom potvrdom o primljenom okviru - ako je potvrda
negativna, treba ponoviti slanje
-
problem potpunog gubitka okvira (ili
potvrde)
-
ako se izgubi potvrda, dolazi do blokiranja
(deadlock) na strani pošiljaoca koji bi zauvijek čekao potvrdu
-
rješenje: uvodi se sat (timer)
kod pošiljoca
-
pošiljaoc šalje okvir i ujedno pokreće
timer
-
interval sata - veći od vremena potrebnog
da okvir stigne na odredište, tamo se obradi i potvrda stigne natrag
pošiljaocu
-
ako vrijeme istekne, a potvrda još nije
stigla, pošiljaoc se upozorava na problem (šalje ponovo okvir)
-
problem dupliciranja okvira (okvir
je stigao, ali ne i potvrda, pa je poslan ponovo) rješava se rednim
brojevima koji se dodjeljuju izlaznim okvirima - tako primaoc
razlikuje original od kopija
1.4 Kontrola toka (Flow Control)
-
pošiljaoc želi slati okvire brže nego što
ih primaoc može prihvatiti što može dovesti do gubitka nekih okvira (čak i
u slučaju da nema pogreški)
-
rješenje je uvesti mehanizme kojima se
pošiljaoc usporava
-
protokoli sadrže dobro definirana pravila o
tome kada pošiljaoc smije poslati slijedeći okvir
-
na pr. pošalje n okvira, a zatim čeka dok
primaoc ne potvrdi da može nastaviti sa slanjem
tipovi pogrešaka:
2.1 Kodovi za utvrđivanje pogrešaka (Error-Detecting
Codes)
-
koriste se kada je jednostavnije ponovo poslati pogrešne podatke umjesto
da ih se ispravlja
-
princip za otkrivanje pogreški:
korištenje zaštitnih bitova (check bits)
-
podacima koji se šalju dodaju se
redundantni podaci
- na strani pošiljaoca: k bitova podataka + r
bitova za provjeru = okvir dužine n
- primatelj razdvaja dolazeći okvir na k bitova
podataka i (n-k) bitova zaštitnog kôda, izvodi određena računanja nad
podacima te uspoređuje dobivenu vrijednost s pristiglim zaštitnim
bitovima
- pogreška je utvrđena ako se te dvije vrijednosti
razlikuju

Slika: Proces utvrđivanje pogrešaka (Stallings,
2004)
a. Provjera paritetnog bita
(parity check)
10110101
=> 101101011
10110001 => 101100010
kôdom s jednim paritetnim bitom, mogu se
detektirati jednobitne greške (čim se jedan bit promijeni, poremeti se
parnost)
b. Polinomni kôd CRC (Cyclic
Redundancy Code)
-
jedna od metoda koja se često koristi
-
naziv polinomni kôd jer se k-bitni okvir
promatra kao da predstavlja koeficijentnu listu polinoma k-1
stupnja čiji su koeficijenti 0 i 1
-
osnovni princip:
za dani k-bitni niz podataka pri slanju se generira n-k -bitni niz tako da se
rezultirajući okvir (frame) sastoji od n bitova i djeljiv je s nekim preddefiniranim brojem (polinomom) o kojem se dogovaraju primaoc i
pošiljaoc
-
kod primanja poruka okvir se dijeli s istim
tim polinomom i ako nema ostatka, nema pogreške
-
na pr. niz koji se šalje
D=110011
=> polinom D(x)=x5 + x4 + x + 1
-
polinomna aritmetika se izvodi modulo 2 (+,
- kao XOR), npr. 1111+1010=0101
-
oznake:
D(x) - niz bitova koji se šalje
(dužina k)
T(x) - okvir (n bitova)
F(x) = T(x)-D(x) - zaštitni bitovi
(dužina n-k)
P(x) - unaprijed definirani polinom
djelitelj stupnja n-k (znaju ga pošiljaoc i primaoc); odabran je
tako da je T(x) djeljiv s
P(x)
bez ostatka

T(x) =
xn-k D(x)
Å R(x)
(P(x) Q(x)
Å R(x))Å
R(x)
= P(x) Q(x)
-
kada na strani primaoca stigne T(x), podijeli se s
P(x),
ako nije bilo pogreški pri prijenosu, nema ostatka
-
ukoliko je nastala pogreška, primaocu je stiglo:
T(x)
Å
E(x)
-
pri dijeljenju je ostatak
E(x)/P(x)
-
pogreška se NEĆE ustanoviti
ako je s
E(x) djeljiv s
P(x)
odnosno CRC neće otkriti one pogreške-polinome
E(x)koji sadrže kao faktor
P(x)
-
na primjer, ako je pogreška
jednobitna
E(x) = xi
(i
je krivi bit), uvijek će se pronaći ako
P(x)
sadrži barem 2 člana
-
za dvobitne pogreške
P(x)
mora imati barem 3 člana, itd.
-
najčešće korišteni djelitelji
su:
CRC-12 = X12 + X11
+ X3 +X2 + X + 1
CRC-16 = X16 + X15
+X2 + 1
CRC-CCITT = X16 + X12
+ X5 + 1
CRC-32 = X32 + X26
+ X23 +X22 + X16 + X12 + X11
+ X10 + X8 + X7 + X5 + X4
+X2 + X + 1
CRC-32 - za IEEE 802 LAN
standarde
2.2 Kodovi za ispravljanje
pogrešaka (Error-Correctong
Codes)
-
uz svaki blok podataka
uključuje se dovoljno redundantnih informacija koje će omogućiti primaocu
da zaključi kakav mora biti preneseni znak
-
obično k-bitni blok
podataka preslikava (pomoću nekog od algoritama za kodiranje) u n-bitni
okvir (n > k) - naziva se n-bitna kodna riječ (codeword)
-
pošiljaoc provjerava kodnu
riječ, moguće je:
-
nije bilo pogreški
-
pogreške su utvrđene i
ispravljne
-
pogreške su utvrđene, ali se
ne mogu ispraviti
-
pogreške nisu utvrđene -
rezultat je neispravan k-blok podataka

Slika: Proces ispravljanja pogrešaka (Stallings,
2004)
-
jedan od načina: korištenje
Hammingove udaljenosti (Hamming distance)
-
za dvije kodne riječi
definira se Hammingova udaljenost d kao broj različitih bitova na
odgovarajućim pozicijama, npr:
V1 = 10001000
V2 = 10110001
d=4
-
ako je udaljenost dviju
kodnih riječi d, potrebno je d jednobitnih greški da se
jedna kodna riječ pretvori u drugu
-
kod prijenosa podataka
najveći mogući broj kodnih riječi je 2n
(n je dužina riječi) ali se obično sve ne koriste;
iz čitave liste legalnih kodnih riječi pronalazi se par čija je
Hammingova udaljenost minimalna i to je Hammingova udaljenost cijelog
koda o kojoj ovisi pronalaženje i ispravljanje greški
-
da se pronađe k
greški, potreban je kôd sa k+1 razlikom jer tako ne može
k jednobitnih greški promijeniti jednu ispravnu kodnu riječ u drugu
-
da se ispravi k
greški, potreban je kôd sa razlikom od 2k+1 jer su tada
legalne kodne riječi tako daleko jedna od druge da se i sa k
promjena može pronaći originalna ispravna kodna riječ (ispravna riječ je
najbliža pogrešnoj riječi u odnosu na bilo koju drugu kodnu riječ)
Primjer:
- kôd sa samo 4 ispravne kodne riječi:
0000000000, 0000011111, 1111100000, 1111111111
- Hammingova udaljenost
kôda je 5
- mogu se ispravljati 2 bitne greške (k=2,
jer je 2k +1 = 5)
- ako npr. stigne 0000000111, primaoc zna
da original mora biti 0000011111
- ako je došlo do 3-struke greške, npr.
umjesto 0000000000 stiglo 0000000111, greška neće biti korektno
ispravljena
|