Računalne mreže
 Studij elektrotehnike
 Tehnički fakultet Sveučilišta u Rijeci
 
 

 

ELEMENTI DIZAJNA SLOJA

UTVRĐIVANJE I ISPRAVLJANJE POGREŠAKA

 

 

 

 

Home : O kolegiju : Predavanja : Vježbe : Ocjenjivanje

 

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
     

1. ELEMENTI DIZAJNA SLOJA PODATAKOVNE VEZE
 

  • funkcije:
    1. osiguravanje usluga za mrežni sloj (dobro definirano sučelje)
    2. određivanje načina grupiranja bitova fizičkog nivoa u okvire (frames)
    3. rješavanje pogreški pri prijenosu
    4. 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

 

Modeli komunikacije između podatkovnih slojeva

Slika: Modeli komunikacije između podatkovnih slojeva (Tanenbaum, 1996)

  • najčešći  tipovi usluga (servisa):

    1. nepotvrđeni bespojni (unacknowledged connectionless service)

    2. potvrđeni bespojni  (acknowledged connectionless service)

    3. potvrđeni spojni (acknowledged connection-oriented service)
       

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:
  1. 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
  2. okviri se prenose
  3. 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:
  1. brojanje znakova
  2. omeđivanje početnim i završnim znakom s umetanjem (stuffing) znaka
  3. omeđivanje početnom i završnom "zastavicom" (flag) s umetanjem bita
  4. 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

Primjer za tvorbu okvira brojenjem znakova

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
     

Primjer za omeđivanje s DLE STX i DLE ETX

Slika: Primjer za omeđivanje s DLE STX i DLE ETX  (Tanenbaum, 1996)

  • nedostatak: metoda vezana uz 8-bitne znakove tj. uz ASCII kô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

  • najčešće brojanje znakova i još jedna metoda b-d. zbog dodatne sigurnosti


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


2. UTVRĐIVANJE I ISPRAVLJANJE POGREŠAKA (Error Detection and Correction)
 

tipovi pogrešaka:

  • izolirane jednobitne pogreške (single-bit errors)

    • promjena jednog bita koja ne utječe na susjedne bitove

    • lakše ih je naći i ispraviti

  • pogreške u snopovima (burst errors)

    • niz B bitova u kojem je su prvi i zadnji bit promijenjeni te bilo koji broj bitova između njih (dio bitova između je nepromijenjen)

    • utječu na manji broj okvira


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


Proces utvrđivanje pogrešaka

Slika: Proces utvrđivanje pogrešaka (Stallings, 2004)

a. Provjera paritetnog bita (parity check)

  • koristi se kôd pri kojem je podacima dodan jedan paritetni bit (parity bit) na kraj bloka podataka

  • bit se odabire tako da ukupni broj 1 bitova u okviru bude npr. paran:

    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

  • nakon odabira P(x) na strani pošiljaoca se vrši računanje

T(x) = xn-k D(x) Å  R(x)

  • tako kreirani kodirani okvir T(x) zaista je djeljiv sa P(x):

(P(x) Q(x) Å  R(x))Å  R(x) = P(x) Q(x)

  • ostatak R(x)  je zaštitni kôd (F(x)), lako se generira:

    • uzme se xn-k D(x) (D(x) se nadopuni sa n-k nula desno),

    • rezultat se podijeli sa P(x)

    • uzme se n-k ostatak i oduzme (ili zbroji mod 2) od xn-k D(x)

    • => rezultat je n-bitni okvir T(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

Proces ispravljanja pogrešaka

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

 


© 2004. N.Hoić-Božić