CATEGORII DOCUMENTE |
NIVELUL LEGATURILOR DE DATE
Aspecte ale proiectarii nivelului legaturilor de date
Nivelul legaturilor de date are un numar de functii specifice pe care trebuie sa le indeplineasca. Aceste functii includ:
furnizarea unei interfete bine-definite catre nivelul de retea;
determinarea modului in care bitii nivelului fizic sunt grupati in cadre;
tratarea erorilor de transmisie si reglarea fluxului cadrelor in asa fel, incat receptorii lenti sa nu fie inundati de catre emitatori rapizi.
In urmatoarele sectiuni vom examina pe rand fiecare dintre aceste aspecte.
Servicii oferite nivelului retea
Functia nivelului legatura de date este sa ofere servicii nivelului retea. Principalul serviciu este transferul datelor de la nivelul de retea al masinii sursa la nivelul de retea al masinii destinatie. La nivelul de retea al masinii sursa exista un proces, care trimite bitii catre nivelul legaturilor de date, pentru a fi transmisi la destinatie.
Functia nivelului legatura de date este sa transmita bitii spre masina destinatie, pentru ca acolo sa fie livrati nivelului retea, asa cum se arata in Fig. l(a). Transmisia efectiva urmeaza calea din Fig. l(b), dar este mai usor de inteles in termenii a doua procese ale nivelului legatura de date care comunica utilizand un protocol al legaturii de date.
Fig. 1. (a) Comunicatie virtuala, (b) Comunicatie efectiva.
Nivelul legatura de date poate fi proiectat sa ofere diferite servicii. Serviciile efective oferite pot varia de la sistem la sistem. Trei posibilitati de baza, oferite in mod curent, sunt:
Serviciu neconfirmat fara conexiune.
Serviciu confirmat fara conexiune.
Serviciu confirmat orientat-conexiune.
Serviciul neconfirmat fara conexiune consta din aceea ca masina sursa trimite cadre independente catre masina destinatie, fara ca masina destinatie sa trebuiasca sa confirme primirea lor.
In acest caz, nu sunt necesare stabilirea si desfiintarea unei conexiuni. Daca un cadru este pierdut datorita zgomotului de pe linie, la nivelul legatura de date nu se face nici o incercare pentru recuperarea lui. Aceasta clasa de servicii este adecvata atunci cand rata de erori este foarte scazuta, asa ca recuperarea este lasata nivelurilor superioare. De asemenea, este adecvata pentru traficul de timp real cum ar fi vorbirea, unde datele intarziate sunt mai nocive decat datele eronate. Majoritatea LAN - urilor utilizeaza la nivelul legaturii de date, servicii neconfirmate fara conexiune.
Urmatorul pas in ceea ce priveste siguranta este serviciul confirmat fara conexiune.
Atunci cand este oferit acest serviciu, inca nu se utilizeaza conexiuni, dar fiecare cadru trimis este confirmat individual. In acest mod, emitatorul stie daca un cadru a ajuns sau nu cu bine. Daca nu a ajuns intr-un interval de timp specificat, poate fi trimis din nou. Acest serviciu este folositor pentru canale nesigure, cum ar fi sistemele neconectate prin fir.
Poate ca merita sa subliniem ca asigurarea confirmarii la nivelul legaturii de date este doar o optimizare, niciodata o cerinta. Nivelul transport poate intotdeauna sa trimita un mesaj si sa astepte sa fie confirmat.
Daca confirmarea nu apare in timp util, atunci emitatorul poate retrimite intregul mesaj.
Problema cu aceasta strategie este aceea ca daca mesajul mediu este spart in, sa zicem, 10 cadre si 20% din totalul cadrelor sunt pierdute, transmiterea mesajului poate lua foarte mult timp.
In cazul in care sunt confirmate si retransmise cadre individuale, intregul mesaj va fi transmis mult mai rapid. Pe canale sigure, precum cablul, costul suplimentar implicat de un astfel de protocol al legaturii de date poate fi nejustificat, dar pe canale fara fir, costul este pe deplin justificat datorita nesigurantei acestora.
Cel mai sofisticat serviciu pe care nivelul legatura de date il pune la dispozitia nivelului retea este serviciul orientat-conexiune. In cazul acestui serviciu, masinile sursa si destinatie stabilesc o conexiune inainte de a transfera date. Fiecare cadru trimis pe conexiune este numerotat si nivelul legatura de date garanteaza ca fiecare cadru trimis este intr-adevar receptionat. Mai mult, garanteaza ca fiecare cadru este receptionat exact o data si toate cadrele sunt receptionate in ordinea corecta. in schimb, in cazul serviciului fara conexiune, este posibil ca, datorita unei confirmari pierdute, un cadru sa fie transmis de mai multe ori si, prin urmare, receptionat de mai multe ori.
Spre deosebire de acesta, serviciul orientat conexiune furnizeaza proceselor de la nivelul retea echivalentul unui flux de biti sigur.
Atunci cand este utilizat serviciul orientat conexiune, transferurile au trei faze distincte.
In prima faza este stabilita conexiunea, ambele parti initializand variabile si contoarele utilizate pentru a tine evidenta cadrelor care au fost receptionate si a celor care nu au fost.
In a doua faza, sunt transmise unul sau mai multe cadre.
In a treia si ultima faza, conexiunea este desfiintata, eliberand variabilele, memoriile si alte resurse utilizate la mentinerea conexiunii.
Sa consideram un exemplu tipic: o subretea WAN formata din rutere conectate prin linii telefonice punct-la-punct, inchiriate. Cand un cadru ajunge la un ruter, hardware-ul verifica suma de control si trimite cadrul programelor nivelului legatura de date (care se pot afla intr-un cip de pe adaptorul de retea).
Programele nivelului legatura de date verifica sa vada daca acesta este cadrul asteptat si, daca este asa, trimit pachetul din campul de informatie utila catre programele de dirijare.
Programele de dirijare aleg linia de iesire corespunzatoare si trimit pachetul inapoi, catre programele nivelului legatura de date, care apoi il transmit. Fluxul dintre doua rutere este aratat in Fig. 2.
Linie de transmisie catre ruter
Fig. 2. Plasarea protocolului legatura de date.
Programul de dirijare doreste frecvent ca operatia sa fie corect executata, ceea ce presupune conexiuni secventiale sigure pe fiecare linie punct-la-punct. El nu doreste sa fie deranjat prea des de pachete care s-au pierdut pe drum.
Este sarcina protocolului legaturii de date, prezentat in dreptunghiul punctat, sa faca liniile de comunicatie nesigure sa para perfecte sau, cel putin, suficient de bune. Aceasta proprietate este foarte importanta pentru legaturile fara fir, care sunt, prin natura lor, foarte nesigure. Ca o remarca, cu toate ca s-a prezentat copii ale programelor nivelului legatura de date in fiecare ruter, de fapt exista o singura copie, care trateaza toate liniile, utilizand tabele si structuri de date diferite pentru fiecare dintre ele.
Incadrarea
In vederea furnizarii unui serviciu nivelului retea, nivelul legatura de date trebuie sa utilizeze serviciul furnizat de catre nivelul fizic. Sarcina nivelului fizic este sa primeasca un flux de biti si sa incerce sa-1 trimita la destinatie. Nu se garanteaza ca acest flux de biti nu contine erori. Numarul de biti receptionati poate fi mai mic, egal cu, sau mai mare decat numarul de biti transmisi si pot avea valori diferite. Este la latitudinea nivelului legatura de date sa detecteze si, daca este necesar, sa corecteze erorile.
Abordarea uzuala pentru nivelul legatura de date este sa sparga sirul de biti in cadre discrete si sa calculeze suma de control pentru fiecare cadru.
Atunci cand un cadru ajunge la destinatie, suma de control este recalculata. Daca noua suma de control este diferita de cea continuta in cadru, nivelul legatura de date stie ca a aparut o eroare si face operatiile necesare pentru a o rezolva (adica, elimina cadrul eronat si trimite inapoi un raport de eroare).
Spargerea sirului de biti in cadre este mai dificila decat pare la prima vedere. O cale pentru a realiza aceasta incadrare este inserarea de intervale de timp intre cadre, asa cum inseram spatii intre cuvinte intr-un text normal. Totusi, retelele dau rareori garantii referitoare la timp, asa ca este posibil ca aceste intervale sa fie comprimate sau ca in timpul transmisiei sa fie inserate alte intervale.
Deoarece este prea periculos sa ne bizuim pe timp pentru a marca inceputul si sfarsitul fiecarui cadru, au fost elaborate alte metode. In aceasta sectiune vom analiza patru metode:
Numararea caracterelor.
Caractere de inceput si de sfarsit, cu inserare de caractere.
Indicatori de inceput si de sfarsit, cu inserare de biti.
Violarea codificarilor la nivel fizic.
1. Prima metoda de incadrare utilizeaza un camp din antet pentru a specifica numarul de caractere din cadru. Atunci cand nivelul legatura de date de la destinatie primeste contorul de caractere, stie cate caractere urmeaza si unde este sfarsitul cadrului. Aceasta tehnica este prezentata in Fig. 3 (a) pentru patru cadre de dimensiune de 5,5,8 si 8 caractere.
Fig. 3-3. Un sir de caractere, (a) Fara erori, (b) Cu o eroare.
Problema cu acest algoritm este ca valoarea contorului poate fi alterata de erori de transmisie. De exemplu, daca contorul de caractere din al doilea cadru din Fig. 3(b) din 5 devine 7, destinatia va pierde sincronizarea si va fi incapabila sa localizeze inceputul cadrului urmator. Chiar daca suma de control este incorecta si destinatia stie ca a primit cadru eronat, nu exista nici o posibilitate de a determina unde incepe urmatorul cadru.
Nu ajuta nici trimiterea unui cadru inapoi la sursa, cerand o retransmisie, deoarece destinatia nu stie peste cate caractere sa sara pentru a incepe retransmisia. Din acest motiv, metoda contorizarii caracterelor este rar utilizata.
2. A doua metoda de incadrare inlatura problema resincronizarii dupa o eroare prin aceea ca fiecare cadru incepe cu secventa de caractere ASCII DLE STX si se termina cu secventa DLE ETX. (DLE inseamna Data Link Escape, STX este Start of TeXt si ETX este End of TeXt). In acest mod, daca destinatia pierde evidenta limitelor cadrelor, tot ceea ce trebuie sa faca este sa se uite dupa caracterele DLE STX sau DLE ETX pentru a vedea unde sunt.
O problema serioasa cu aceasta metoda apare atunci cand se transmit date binare, cum ar fi un program obiect sau numere in virgula mobila. Se poate intampla ca in date sa apara caracterele DLE STX sau DLE ETX, care vor interfera cu cadrul. Un mijloc de rezolvare a acestei probleme este ca nivelul legatura de date al emitatorului sa insereze un caracter ASCII, DLE, chiar inaintea fiecarui caracter DLE 'accidental' din date. Nivelul legatura de date de la capatul receptor inlatura caracterele DLE inainte ca datele sa fie transmise nivelului retea. Aceasta tehnica se numeste inserare de caractere (character stuffing).
Astfel, absenta sau prezenta unui singur DLE permite sa se faca diferenta intre DLE STX sau DLE ETX de incadrare si cele din date. DLE-urile din date sunt intotdeauna dublate. Figura 4 prezinta un exemplu de sir de date inaintea inserarii, dupa inserare si dupa extragere.
Un dezavantaj major al utilizarii acestei metode de incadrare este acela ca este limitata la caractere de 8 biti in general si la codul caracterelor ASCII in particular. Datorita dezvoltarii retelelor, dezavantajele inserarii de coduri de caractere in mecanismul de incadrare a devenit din ce in ce mai evident, asa ca a trebuit dezvoltata o noua tehnica, care sa permita caractere de dimensiune variabila.
Fig. 4. (a) Date trimise de nivelul retea, (b) Datele dupa ce nivelul legatura de date a inserat caractere, (c) Datele trimise catre nivelul retea al receptorului.
3. Noua tehnica permite cadrelor de date sa contina un numar arbitrar de biti si permite coduri de caractere cu un numar arbitrar de biti per caracter.
Functioneaza astfel: fiecare cadru incepe si se termina cu un sablon special pe biti, 01111110, numit octet indicator (flag). De fiecare data cand nivelul legatura de date al emitatorului identifica cinci de unu consecutivi in date, insereaza automat un bit 0 in sirul de biti de rezultati. Aceasta inserare de biti (bit stuffing) este similara inserarii de caractere, in care un DLE este inserat in sirul de caractere de iesire, inainte de fiecare DLE din date. Atunci cand receptorul primeste o succesiune de cinci biti 1, urmati de un bit 0, extrage automat (adica, sterge) bitul 0. La fel ca si inserarea de caractere, care este complet transparenta pentru nivelul retea din ambele calculatoare, asa este si inserarea de biti. Daca datele utilizator contin sablonul indicator, 01111110, acest indicator este transmis ca 011111010, dar in memoria receptorului este pastrat ca 01111110.
Figura 5 da un exemplu de inserare de biti.
Fig. 5. Inserare de biti. (a) Datele originale, (b) Datele asa cum apar pe linie. (c) Datele asa cum sunt stocate in memoria receptorului dupa extragerea bitilor inserati.
In cazul inserarii de biti, granitele dintre doua cadre pot fi recunoscute fara ambiguitate datorita sablonului indicator. Astfel, daca receptorul pierde evidenta a ceea ce primeste, tot ceea ce are de facut este sa caute la intrare secventele indicator, deoarece acestea pot sa apara numai la marginile cadrului si niciodata in interiorul datelor.
Ultima metoda de incadrare este aplicabila retelelor in care codificarea pe mediul fizic contine o anumita redundanta. De exemple unele LAN-uri codifica un bit de date utilizand doi biti fizici. De obicei, un bit 1 este reprezentat de o tranzitie sus-jos si un bit 0 de o tranzitie jos-sus. Combinatiile sus-sus si jos-jos nu sunt utilizate pentru date. Schema inseamna ca fiecare bit de date are o tranzitie in mijloc, receptorului fiindu-i usor sa localizeze frontierele bitilor. Aceasta utilizare de coduri fizice incorecte este parte a standardului 802 LAN.
Ca observatie finala asupra incadrarii, multe protocoale de legatura de date utilizeaza, pentru o mai mare siguranta, o combinatie de contor de caractere cu una dintre celelalte metode. La sosirea unui cadru, pentru a localiza sfarsitul acestuia, este utilizat campul contor. Cadrul este acceptat ca valid doar daca in pozitia respectiva exista delimitatorul corespunzator si daca suma de control este corecta. Altfel, sirul de intrare este scanat pentru a detecta urmatorul delimitator.
Controlul erorilor
Problema marcarii inceputului si sfarsitului fiecarui cadru fiind rezolvata, ne vom indrepta atentia catre problema urmatoare: cum sa fim siguri ca toate cadrele ajung pana la urma la nivelul retea de la destinatie si in ordinea corecta.
Sa presupunem ca emitatorul trimite cadrele de iesire fara sa verifice daca au ajuns corect. Asa ceva se poate accepta in cazul serviciilor neconfirmate fara conexiune, dar nu in cel al serviciilor sigure, orientate conexiune.
Modul uzual de a asigura o. transmitere sigura este de a furniza emitatorului o reactie inversa despre ceea ce se intampla la celalalt capat al liniei. De obicei protocolul ii cere receptorului sa trimita inapoi cadre de control speciale, purtand confirmari pozitive sau negative despre cadrele sosite. Daca emitatorul receptioneaza o confirmare pozitiva despre un cadru, el stie ca acel cadru a ajuns cu bine. Pe de alta parte, o confirmare negativa inseamna ca ceva a mers prost si cadrul trebuie retransmis.
O complicatie in plus vine de la posibilitatea ca defectele de echipament sa determine disparitia completa a unui cadru (de exemplu intr-o rafala de zgomot). In acest caz, receptorul nu va reactiona in nici un fel, din moment ce nu are nici un motiv sa reactioneze. Trebuie sa fie clar ca un protocol in care emitatorul trimite un cadru si apoi asteapta o confirmare, pozitiva sau negativa, va ramane agatat pentru totdeauna daca un cadru este complet pierdut datorita nefunctionarii echipamentului.
Aceasta posibilitate a determinat introducerea contoarelor de timp (ceasurilor) la nivelul legaturii de date. Atunci cand emitatorul trimite un cadru, porneste de obicei si un contor de timp. Contorul de timp este setat sa expire dupa un interval suficient de lung pentru ca acel cadru sa poata ajunge la destinatie, sa fie prelucrat acolo si confirmarea sa se propage inapoi catre emitator.
In mod normal, cadrul va fi corect receptionat si confirmarea va sosi inainte ca timpul sa expire, caz in care contorul va fi anulat.
Dar, daca fie cadrul, fie confirmarea se pierd, intervalul de timp expira, in acest caz, emitatorul fiind atentionat ca a aparut o problema. Solutia evidenta este retransmiterea cadrului.
Dar, atunci cand cadrele pot fi transmise de mai multe ori, exista pericolul ca receptorul sa accepte acelasi cadru de doua sau mai multe ori si sa-1 trimita de mai multe ori nivelului retea. Pentru a evita aceasta situatie este necesar sa atribuim numere de secventa cadrelor de iesire, asa incat receptorul sa poata face distinctie intre cadrele retransmise si cele originale.
Intreaga problematica a gestiunii ceasurilor si numerelor de secventa, astfel incat fiecare cadru sa ajunga la nivelul retea de la destinatie o singura data, fara exceptie, reprezinta o parte importanta a obligatiilor nivelului legatura de date.
Controlul fluxului
Un alt aspect important de proiectare care apare la nivelul legatura de date (si, desigur, si la nivelurile superioare) este cum trebuie procedat cu un emitator care doreste sistematic sa transmita cadre mai repede decat poate sa accepte receptorul. Aceasta situatie poate sa apara usor atunci cand emitatorul ruleaza pe un calculator rapid (sau mai putin incarcat) si receptorul ruleaza pe o masina lenta (sau foarte incarcata). Emitatorul continua sa transmita cadre la o rata inalta pana cand receptorul este inundat. Chiar daca transmisia este fara erori, la un anumit punct receptorul nu va mai fi capabil sa trateze cadrele care sosesc si va incepe sa piarda unele dintre ele. Bineinteles, trebuie facut ceva pentru a evita aceasta situatie.
Solutia uzuala este de a introduce controlul fluxului (flow control) pentru a obliga emitatorul sa nu trimita mai rapid decat poate sa accepte receptorul. Aceasta necesita in general un mecanism de reactie, asa incat emitatorul sa-si poata da seama daca receptorul poate sau nu sa tina pasul.
Sunt cunoscute diferite scheme de control al fluxului, dar cele mai multe dintre ele utilizeaza acelasi principiu de baza. Protocolul contine reguli bine-definite despre momentul cand emitatorul poate trimite urmatorul cadru. Aceste reguli interzic trimiterea cadrelor inainte ca receptorul sa o permita, implicit sau explicit.
De exemplu, cand se stabileste o conexiune, receptorul trebuie sa spuna: 'Acum poti sa-mi trimiti n cadre, dar dupa ce au fost trimise,* sa nu trimiti altele pana cand nu iti spun sa continui
DETECTAREA SI CORECTAREA ERORILOR
Ca rezultat al proceselor fizice care le genereaza, erorile dintr-un mediu (de exemplu radio) tind sa vina mai curand in rafale decat izolate. Sosirea erorilor in rafala, are atat avantaje cat si dezavantaje de erorile izolate pe un singur bit Avantajul este acela ca. datele de la calculator sunt trimise intotdeauna in blocuri de biti.
Sa presupunem ca dimensiunea unui bloc este de 1000 de biti si rata de eroare este de 0.001 per bit. Daca erorile ar fi independente, multe blocuri ar contine o eroare. Daca erorile vin in rafala de cate 100, in medie vor fi afectate doar unul sau doua blocuri din 100.
Dezavantajul erorilor in rafala este acela ca sunt mult mai greu de detectat si corectat decat erorile izolate.
Coduri corectoare de erori
Proiectantii de retele au dezvoltat doua strategii de baza pentru tratarea erorilor. O modalitate este ca pe langa fiecare bloc de date trimis sa se includa suficienta informatie redundanta pentru ca receptorul sa poata deduce care a fost caracterul transmis. O alta solutie este sa se includa suficienta redundanta pentru a permite receptorului sa constate ca a aparut o eroare, dar nu care este eroarea, si sa ceara o retransmisie. Prima strategie utilizeaza coduri corectoare de erori, iar cea de-a. doua utilizeaza coduri detectoare de erori.
Pentru a intelege cum pot fi tratate erorile, este necesar sa privim cu atentie la ceea ce este cu adevarat o eroare. in mod normal, un cadru contine m biti de date (adica mesaj) si r biti redundanti sau de control. Sa consideram lungimea totala n (adica, n = m + r), O unitate formata din n biti, care contine date si biti de control, este numita frecvent cuvant de cod de n biti (n-bit codeword).
Date fiind doua cuvinte de cod, sa zicem, 10001001 si 10110001, este posibil sa determinam cati biti de corespondenta difera. in acest caz difera 3 biti. Pentru a determina cati biti difera, aplicam operatorul SAU EXCLUSIV intre cele doua cuvinte de cod si numaram bitii 1 din rezultat. Numarul de pozitii binare in care doua cuvinte de cod difera se numeste distanta Hamming (Hamming, 1950).
Semnificatia sa este ca daca doua cuvinte de cod sunt despartite de o distanta Hamming d, sunt necesare d erori de un singur bit pentru a-1 -converti pe unul in celalalt.
In multe aplicatii de transmisie de date, toate cele 2m mesaje de date posibile sunt corecte, dar, datorita modului in care sunt calculati bitii de control, nu sunt utilizate toate cele 2n cuvinte de cod posibile. Dat fiind algoritmul pentru calculul bitilor de control, este posibil sa construim o lista completa de cuvinte de cod permise si din aceasta lista sa gasim cele doua cuvinte de cod a caror distanta Hamming este minima. Aceasta distanta este distanta Hamming a codului complet.
Proprietatile detectoare si corectoare de erori ale unui cod depind de distanta sa Hamming. Pentru a detecta d erori, este nevoie de un cod cu distanta d + 1, deoarece cu un asemenea cod nu exista nici o modalitate ca d erori de un singur bit sa poata modifica un cuvant de cod corect intr-un alt cuvant de cod corect. Atunci cand receptorul vede un cuvant de cod incorect, poate spune ca s-a produs o eroare de transmisie. Similar, pentru a corecta d erori, este nevoie de un cod cu distanta 2d + 1, deoarece in acest mod cuvintele de cod corecte sunt atat de distantate, incat, chiar cu d modificari, cuvantul de cod originar este totusi mai apropiat decat alte cuvinte de cod si va fi unic determinat.
Ca un exemplu simplu de cod detector de erori sa consideram un cod in care la date este adaugat un singur bit de paritate. Bitul de paritate este ales astfel, incat numarul de biti 1 din cuvantul de cod este par (sau impar). De exemplu, atunci cand 10110101 este trimis in paritate para, prin adaugarea unui bit la sfarsit devine 101101011, in timp ce 10110001 devine 101100010.
Un cod cu un singur bit de paritate are distanta 2, deoarece orice eroare pe un singur bit produce un cuvant de cod cu paritatea gresita. Acesta poate fi utilizat pentru detectarea erorilor singulare.
Ca exemplu simplu de cod corector de erori, sa consideram un cod cu numai patru cuvinte de cod corecte:
0000000000, 0000011111, 1111100000 si 1111111111.
Acest cod are distanta 5, ceea ce inseamna ca poate corecta erori duble. Daca soseste cuvantul de cod 0000000111, cel ce receptioneaza stie ca originalul trebuie sa-fi fost 00000111111. Daca totusi o eroare tripla modifica 0000000000 in 0000000111, eroarea nu va fi corectata corespunzator.
Sa ne imaginam ca dorim sa proiectam un cod cu m biti de mesaj si r biti de control care ne va permite sa corectam toate erorile singulare. Pentru fiecare din cele 2m mesaje corecte exista n cuvinte de cod eronate, aflate la distanta 1 de el. Acestea sunt formate prin inversarea sistematica a fiecaruia dintre cei n biti din cuvantul de cod de n biti format din el. Astfel, fiecare din cele 2m mesaje corecte necesita n+1 sabloane asociate. Cand numarul total de sabloane este 2n, trebuie sa avem (n+1) 2m < = 2n. Utilizand n m+r, aceasta conditie devine (m + r + 1)< = 2r. Dandu-se m, acesta impune o limita inferioara asupra numarului de biti de control necesari pentru a corecta erorile singulare.
Aceasta limita inferioara teoretica poate fi, de fapt, atinsa utilizand o metoda atribuita lui Hamming (1950). Bitii cuvantului de cod sunt numerotati consecutiv, incepand cu bitul 1 de la marginea din stanga. Bitii care sunt puteri ale lui 2 (1,2,4,8,16 etc.) sunt biti de control. Restul (3, 5,6,7,9 etc.) sunt completati cu cei m biti de date. Fiecare bit de control forteaza ca paritatea unui grup de biti, inclusiv el insusi, sa fie para (sau impara).
Fig. 3-6. Utilizarea unui cod Hamming pentru corectarea erorilor in rafala.
Un bit poate fi inclus in mai multe calcule de paritate. Pentru a vedea la care biti de control contribuie bitul de date din pozitia k, rescriem k ca o suma de puteri ale lui 2.
De exemplu, 11= 1+2+8 si 29=1+4+8+16. Un bit este verificat de acei biti de control care apar in dezvoltarea sa (de exemplu, bitul 11 este verificat de bitii 1,2 si 8).
Cand soseste un cuvant de cod, receptorul initializeaza un contor la 0. Acesta examineaza apoi fiecare bit de control, k (k = 1,2,4,8) pentru a vedea daca are paritatea corecta. Daca nu, adauga k-la contor. Daca, dupa ce au fost examinati toti bitii de control, contorul este 0 (adica, daca toti bitii au fost corecti), cuvantul de cod este acceptat ca valid. Daca valoarea contorului este nenula, ea reprezinta numarul bitului incorect. De exemplu, daca bitii de control 1, 2 si 8 sunt eronati, atunci bitul inversat este 11, deoarece este singurul verificat de bitii 1, 2 si 8.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 2692
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved