Sunteți pe pagina 1din 3

Protocoale de comunicat, ie, 2013

Universitatea Politehnica Bucures, ti


Facultatea de Automatic
a s, i Calculatoare

Protocoale de comunicat, ie
Laboratorul 3
Responsabili laborator: Costin Raiciu(costin.raiciu@cs.pub.ro), Liviu Ioan(liviu.ioan@cti.pub.ro)

Cerinte laborator
In cadrul laboratorului curent, leg
atura de date va corupe informat, ia transmisa.
Se cere s
a se implementeze mecanisme prin care datele corupte sa fie detectate/corectate.
Astfel, transmit,
atorul construies, te pachetele s, i le trimite catre receptor.
Receptorul primes, te pachetele, ns
a datele din payload nu coincid cu cele trimise de
transmit,
ator.
Se garanteaz
a c
a fiecare pachet primit de receptor cont, ine cel mult 1 bit eronat n cadrul zonei
de payload.
De asemenea, num
arul de octet, i transferat, i de legatura de date nu este afectat (nu se pierd
date).
Atunci c
and leg
atura de date corupe informat, iile transmise, exista urmatoarele mecanisme
pentru a gestiona erorile ap
arute:
(a) Detect, ia erorilor
i. Transmit,
atorul adaug
a informat, ii de redundant, a n pachetele trimise, astfel ncat
receptorul s
a poat
a identifica un pachet care nu este valid.
ii. Pentru problema din laborator, n care fiecare pachet cont, ine cel mult 1 bit eronat,
se poate folosi o verificare de paritate.
iii. Concret, informat, ia de redundant, a adaugata reprezinta suma modulo 2 a tuturor
bit, ilor din payload-ul pachetului.
iv. La recept, ie, se calculeaz
a suma bit, ilor modulo 2 din payload.
Dac
a rezultatul calculului este identic cu valoarea precizata de transmit, ator, atunci
pachetul este valid. Altfel, pachetul este eronat - transferul a es, uat.
(b) Corectarea erorilor
i. Transmit,
atorul adaug
a informat, ii de redundant, a n pachetele trimise, astfel ncat
receptorul s
a poat
a corecta un pachet care nu este valid.
ii. Pentru a corecta bitul gres, it, se va utiliza un cod Hamming(explicat, ii mai jos).
iii. In acest fel, transferul se poate efectua cu succes.

Protocoale de comunicat, ie, 2013

Coduri Hamming
Pentru a recupera un pachet eronat, se poate utiliza un cod Hamming.
Transmit,
atorul adaug
a o serie de bit, i de paritate care sunt responsabili pentru anumite pozit, ii
din cadrul zonei de payload.
Notat, ii:
(a) n - num
arul de bit, i de date efective
(b) k - num
arul de bit, i de paritate necesari
Intrebare: dorim s
a trimitem n bit, i de date. Care este numarul necesar de bit, i de paritate k?
Pentru codurile Hamming, dorim ca numarul format din alaturarea bit, ilor de paritate
(sindromul) s
a ne indice pozit, ia eronata din mesajul transmis.
Lungimea mesajului transmis este de n + k bit, i.
De asemenea, dorim ca acest num
ar sa ne indice s, i daca mesajul este valid(n cazul n care nu
exist
a o pozit, ie eronat
a).
As, adar, sindromul este un num
ar ntre 0 s, i n + k. Daca sindromul este egal cu 0, atunci nu
exist
a erori. O valoare a sindromului ntre 1 s, i n + k reprezinta pozit, ia eronata din cadrul
mesajului.
Concluzie: num
arul necesar de bit, i de paritate rezulta din condit, ia 2k n + k + 1.
Bit, ii de paritate sunt inserat, i n cadrul mesajului pe pozit, iile de forma 2i , i {0, 1, ..., k 1}.
Bitul de paritate de pe pozit, ia 2i raspunde de acele pozit, ii care au n reprezentarea binara
valoarea 1 pe pozit, ia i.
i
0
1
2
3

2i
1
2
4
8

Pozit, ii verificate
1, 3, 5, 7, 9, 11, 13, 15, 17
2, 3, 6, 7, 10, 11, 14, 15, 18
4, 5, 6, 7, 12, 13, 14, 15, 20
8, 9, 10, 11, 12, 13, 14, 15, 24

Exemplu: se dores, te transmiterea unui mesaj de 4 bit, i.


Mesajul cont, ine 4 bit, i, deci n = 4.
Din condit, ia 2k n + k + 1, avem k = 3.
In total, vor fi transmis, i 7 bit, i:
(a) 4 bit, i de date(D0 , D1 , D2 , D3 )
(b) 3 bit, i de verificare(P0 , P1 s, i P2 )
Mesajul are forma:
Pozit, ie
Cont, inut

1
P0

2
P1

3
D0

4
P2

5
D1

6
D2

7
D3

La transmisie:
P0 = D0 + D1 + D3
P1 = D0 + D2 + D3
P2 = D1 + D2 + D3
La recept, ie, se recalculeaz
a valorile pentru cei 3 bit, i de paritate.
Atent, ie, bit, ii de paritate pot fi s, i ei eronat, i, deci trebuie luat, i n calcul!
P0 = P0 + D0 + D1 + D3
P1 = P1 + D0 + D2 + D3
P2 = P2 + D1 + D2 + D3
Evident, sumele calculate reprezinta sume modulo 2.
Sindromul este: P2 P1 P0 .
Dac
a sindromul este egal cu 0(P0 = P1 = P2 = 0), atunci nu exista erori.
Altfel, sindromul ne va indica pozit, ia care trebuie negata pentru a corecta mesajul.

Protocoale de comunicat, ie, 2013

Detalii de implementare
(a) Implementarea va porni de la scheletul de cod pentru laboratorul 3.
(b) O modalitate facil
a de a determina suma modulo 2 este folosirea operatorului XOR.
Pas, i rezolvare laborator
(a) Se adaug
a c
ampurile necesare unui mesaj - pentru detect, ia erorilor.
(b) Se determin
a num
arul de pachete eronate primite de receptor.
(c) BONUS: Se implementeaz
a corectarea erorilor din mesaje(folosind un cod Hamming),
astfel nc
at transmisia s
a aib
a loc cu succes.
Not
a: nu trebuie s
a fie modificat
a structura msg definita n lib.h - se vor utiliza doar
c
ampurile len si payload.
Software disponibil
Simulator leg
atura de date - executabilul link - generat n urma make
Schelet de cod
API simulator:
int

int

send message(msg* m)
parametru: mesajul care va fi trimis
rezultat: num
arul de octeti transferati(n caz de succes) sau -1 n caz de eroare
recv message(msg* m)
parametru: adresa la care se memoreaza datele primite
rezultat: num
arul de octeti receptionati(n caz de succes) sau -1 n caz de eroare

Utilitare necesare:
Generare fisiere de o anumit
a dimensiune: dd
Verificare corectitudine transmisie: diff

S-ar putea să vă placă și