Sunteți pe pagina 1din 46

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Nivelul legturii de date

28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Funciile nivelului legturii de date


1 ncadrarea

28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Metode de ncadrare
1) Caractere de control (BSC - Binary Synchronous Communication)
SYN

SYN

SOH

header

SOH - start of heading


ETX - end of text
EOT - end of transmission
ACK - acknowledge
SYN - synchronous idle
CRC - cyclic redundancy check

STX

text

ETX

CRC

STX - start of text


ETB - end of transmission block
ENQ - enquiry
NAK - not acknowledge
DLE - data link escape

2) Numrarea caracterelor (DDCMP - Digital Data Communications


Message Protocol)
[Cyclic Redundancy Checking]
SYN SYN SOH count flag resp seq address CRC data CRC
3) Indicatori de ncadrare (HDLC - High Level Data Link Control)
flag

address

command

data

FCS

flag

[Frame Check Sequence]


28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

2 Transmisie transparenta
Umplere cu caractere
DLE STX ... DLE DLE ... DLE ETX

Umplere cu bii
01111110 ... 0111110 {0 or 1 } ... 01111110

28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

3 Controlul erorilor

secvena de control a cadrului - FCS - frame checking sequence


mesaje de confirmare
ceasuri
numere de secven
4 Controlul fluxului

utilizarea mesajelor de permisiune pentru transmitor


5 Gestiunea legturii

28.02.2015

stabilirea i desfiinarea legturii


re-iniializare dup erori
configurarea legturii (staii primare i secundare,
legturi multipunct etc.)

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Detecia i corectarea erorilor


Coduri corectoare de erori
A = {0, 1} alfabet binar
Wn mulimea cuvintelor w de lungime n peste A
w = w[0] w[1] ... w[n-1] , cu w[i] A.
ponderea Hamming a lui w
distana Hamming d(u,v) dintre u i v
Wn = Sn U Fn
Pentru u, v Sn i r erori:
d(u,v) >= r+1
detecie
d(u,v) >= 2r+1
corecie
Exemplu:
S10 = {0000000000, 0000011111, 1111100000, 111111111}
d(u,v) = 5 => putem corecta erori duble
0000000111
Se corecteaz la 0000011111
0000000111
Poate proveni din 0000000000
28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Metoda Hamming
Bii numerotai de la 1 (stnga) la n (dreapta)
Codificare:
Biii 1, 2, 4, 8, ... (puteri ale lui 2) sunt de control
Control paritate (par sau impar)
Bitul k este controlat de biii ale cror poziii nsumate dau k; reciproc:
Bit 1 controleaz biii 1, 3, 5, 7, 9, 11
Bit 2 controleaz biii 2, 3, 6, 7, 10, 11
Bit 4 controleaz biii 4, 5, 6, 7
Bit 8 controleaz biii 8, 9, 10, 11

Exemplu (paritate par)

1100001

=>

1 2 3 4 5 6 7 8 9 10 11
1 0 1 1 1 0 0 1 0 0 1

Se primete eronat

1 0 1 1 1 0 0 1 0

Bii de control eronai


8 + 2 = 10
=>

2, 8
bit din poziia 10 este inversat

28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Corecia erorilor in rafal


Utilizarea unui cod Hamming pentru corecia erorilor in rafal

Atunci cnd un cadru ajunge la receptor, matricea este reconstruit, coloan cu coloan. Dac a
aprut o eroare n rafal, de lungime k, va fi afectat cel mult un bit din fiecare dintre cele k cuvinte
de cod, dar codul Hamming poate corecta o eroare pe cuvnt de cod, aa nct ntregul bloc
poate fi refcut. Aceast metod utilizeaz kr bii de control pentru a face blocuri de km bii de
date imune la erorile n rafal de lungime k sau mai mic.
28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Coduri detectoare de erori


Coduri polinomiale
k bii de informaie (date)
n-k bii de control
n bii n total

i(X) polinomul corespunztor


r(X)
w(X) = X(n-k)i(X) + r(X)

w(X) = G(X).q(X)
X(n-k)i(X) + r(X) = G(X).q(X)
X(n-k)i(X) = G(X).q(X) + r(X)
r(X) = rest mprire X(n-k)i(X) la G(X)

28.02.2015

Protocoale de comunicaie

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Coduri detectoare de erori

Calculul sumei de
control pentru un
cod polinomial

28.02.2015

Protocoale de comunicaie

10

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Algoritmul pentru calculul sumei de control


1. Fie r gradul lui G(x). Se adaug r bii 0 la captul mai puin
semnificativ al cadrului, aa nct acesta va conine acum n+r
bii i va corespunde polinomului xn-ki(x).
2. Se mparte irul de bii ce corespund lui G(x) ntr-un ir de bii
corespunznd lui xn-ki(x), utiliznd mprirea modulo 2.
3. Se scade restul (care are ntotdeauna r sau mai puini bii) din
irul de bii corespunznd lui xn-ki(x), utiliznd scderea
modulo 2. Rezultatul este cadrul cu sum de control ce va fi
transmis. Numim polinomul su T(x) sau r(x).

28.02.2015

Protocoale de comunicaie

11

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Analiza metodei
E(x) eroarea la recepie.
La recepia cadrului cu sum de control, receptorul l mparte
prin G(x); aceasta nseamn c va calcula [T(x) + E(x)]/G(x).
T(x)/G(x) este 0, aa nct rezultatul calculului este pur i
simplu E(x)/G(x).
Acele erori care se ntmpl s corespund unor polinoame
care l au ca factor pe G(x) vor scpa; toate celelalte vor fi
detectate.
Cum le detectm?
28.02.2015

Protocoale de comunicaie

12

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoale elementare pentru


legtura de date
Start-stop

28.02.2015

Protocoale de comunicaie

13

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Ferestre glisante

28.02.2015

Protocoale de comunicaie

14

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoalele legturii de date


Configuraia entitilor de protocol

utilizator A

utilizator B

nivel retea

entitate A

entitate B

nivel
legatura de
date
nivel fizic

28.02.2015

Protocoale de comunicaie

15

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Datele
typedef unsigned char byte;
typedef unsigned int word;
typedef byte NrSecv;
enum FelCadru {data, ack, nak};
typedef struct {
FelCadru fel;
NrSecv secv, conf;
pachet info;
} cadru;
typedef struct {void far* adresa;
word lungime;
} pachet;
28.02.2015

Protocoale de comunicaie

16

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Primitivele de serviciu
- preluarea unui pachet de la retea pentru transmitere pe canal
pachet DeLaRetea();
- livrarea ctre retea a unui pachet
void LaRetea (pachet);
- trecerea unui cadru nivelului fizic pentru transmisie
void LaFizic (cadru);
- preluarea unui cadru de la nivelul fizic
cadru DeLaFizic();
enum TipEven { SosireCadru,
EroareControl,
TimeOut,
ReteaPregatita};
TipEven wait();
28.02.2015

Protocoale de comunicaie

17

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoale start-stop
Protocol simplex fara restrictii
- utilizatorul A vrea s transmit date lui B folosind o
legtur sigur, simplex;
- A reprezint o surs inepuizabil de date;
- B reprezint un consumator ideal;
- canalul fizic de comunicaie este fr erori.

28.02.2015

Protocoale de comunicaie

18

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

# define forever while(1)


// entitatea din sistemul transmitatorului
void transmit1(){
cadru s;
do{
s.info=DeLaRetea();
//preia pachet
LaFizic(s);
//transmite cadru
} forever;
}
// entitatea din sistemul receptorului
void recept1(){
cadru r;
TipEven even;
do{
even=wait();
//asteapta cadru
r=DeLaFizic();
//primeste cadru
LaRetea(r.info);
//preda pachet
} forever;
}
28.02.2015

Protocoale de comunicaie

19

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocol simplex start-stop


canalul fara erori
utilizatorul B nu poate accepta date n orice ritm

utilizator A

utilizator B

transmitator

receptor

nivel retea

nivel legatura
de date

date
nivel fizic
reactie

28.02.2015

Protocoale de comunicaie

20

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

void transmit2(){
cadru s;
TipEven even;
do{
s.info=DeLaRetea();
LaFizic(s);
even=wait();
} forever;
}
void recept2(){
cadru s,r;
TipEven even;
do{
even=wait();
r=DeLaFizic();
LaRetea(r.info);
LaFizic(s);
} forever;
}
28.02.2015

//asteapta confirmarea

//poate fi doar SosireCadru


//transmite confirmarea

Protocoale de comunicaie

21

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocol simplex pentru un canal cu erori


void StartCeas(NrSecv);
void StopCeas (NrSecv);
Justificare - cadrele succesive m, m+1, m+2 cu numerele de secvena
respectiv 0, 1 si 0:
void inc (NrSecv&);

#define MaxSecv 1
void inc(NrSecv& k){
k==MaxSecv ? k=0 : k++;
}

28.02.2015

Protocoale de comunicaie

22

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

void transmit3() {
NrSecv CadruUrmator=0;
cadru s;
TipEven even;
s.info=DeLaRetea();
do{
s.secv=CadruUrmator;
LaFizic(s);
StartCeas(s.secv);
even=wait();

if(even==SosireCadru) {
StopCeas(s.secv);
s.info=DeLaRetea();
inc(CadruUrmator);
}
}forever;

// poate fi SosireCadru,
// TimeOut sau
// Eroarecontrol
//confirmare intacta

}
28.02.2015

Protocoale de comunicaie

23

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

void recept3(){
NrSecv CadruAsteptat=0;
cadru r,s;
TipEven even;
do{
even=wait();
//SosireCadru sau EroareControl
if(even==SosireCadru){
r=DeLaFizic();
if(r.secv==CadruAsteptat){
LaRetea(r.info);
//cadru n secventa
inc(CadruAsteptat);
}
LaFizic(s);
//transmite oricum confirmarea
}
}forever;
}

28.02.2015

Protocoale de comunicaie

24

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoale cu fereastr glisanta


Protocol cu fereastr de dimensiune unu
Configuraia
utilizator A

utilizator B

transm / rec

transm / rec

nivel retea

nivel legatura
de date

nivel fizic
date+confirmare
28.02.2015

Protocoale de comunicaie

25

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoale cu fereastra glisanta

O fereastr de dimensiune 1, cu numr de secven de 3 bii.


(a) Iniial.
(b) Dup transmiterea primului cadru.
(c) Dup recepia primului cadru.
(d) Dup recepia primei confirmri.
28.02.2015

Protocoale de comunicaie

26

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Fiecare statie realizeaza ciclic urmatoarele operatii:


receptia unui cadru,
prelucrarea sirului de cadre receptionate,
prelucrarea sirului de cadre transmise,
transmiterea sau retransmiterea unui cadru impreuna cu confirmarea cadrului
receptionat corect.
void protocol4(){
NrSecv CadruUrmator=0;
NrSecv CadruAsteptat=0;
cadru r,s;
TipEven even;
//SosireCadru, TimeOut sau
//EroareControl
s.info=DeLaRetea();
s.secv=CadruUrmator;
s.conf=1-CadruAsteptat;
LaFizic(s);
StartCeas(s.secv);

28.02.2015

Protocoale de comunicaie

27

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

do{
even=wait();
if(even==SosireCadru){
r=DeLaFizic();
if(r.secv==CadruAsteptat){

//preluare sir
cadre

receptionate
LaRetea(r.info);
inc(CadruAsteptat);
}
if(r.conf==CadruUrmator){

//prelujare sir
cadre transmisie

StopCeas(r.conf);
s.info=DeLaRetea();
inc(CadruUrmator);
}
}
s.secv=CadruUrmator;
s.conf=1-CadruAsteptat;
LaFizic(s);
StartCeas(s.secv);
}forever;
}

28.02.2015

Protocoale de comunicaie

28

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Un Protocol cu fereastra de un bit

Dou scenarii pentru protocolul 4. (a) Cazul normal. (b) Caz anormal.
Notaia este (seq, ack, packet number).
Un asterisc arat c nivelul reea accept pachetul.
28.02.2015

Protocoale de comunicaie

29

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Un protocol Go Back N

Banda de asamblare i refacerea erorilor. Efectul erorii cand:


(a) Fereastra receptorului este 1.
(b) Fereastra receptorului este mai mare.
28.02.2015

Protocoale de comunicaie

30

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocoale cu fereastra supraunitara de transmisie


Protocol cu retransmitere neselectiv
Fereastra maxima a transmitatorului poate fi de MaxSecv cadre
Scenariu pentru MaxSecv = 7
1.
2.
3.
4.
5.

28.02.2015

Transmitatorul trimite cadrele 0..7;


Toate cadrele snt receptionate si confirmate;
Toate confirmarile snt pierdute;
Transmitatorul retrimite la time-out toate cadrele;
Receptorul accepta duplicatele.

Protocoale de comunicaie

31

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

#define MaxSecv 7
void ActivRetea();
void DezactivRetea();
NrSecv CadruUrmator,
//urmatorul cadru de transmis
CadruAsteptat,
//urmatorul cadru asteptat
ConfAsteptata;
//cel mai vechi cadru neconfirmat
cadru r,s;
pachet tampon[MaxSecv+1];
NrSecv ntampon,i;
TipEven even;
short intre(NrSecv a, NrSecv b, NrSecv c){
//intoarce 1 daca a<=b<c circular
return a<=b && b<c || c<a && a<=b || b<c && c<a;
}
void transmite(NrSecv nrcadru){
//construieste si transmite un cadru de date
s.info=tampon[nrcadru];
s.secv=nrcadru;
s.conf=(CadruAsteptat+MaxSecv)%(MaxSecv+1);
LaFizic(s);
StartCeas(nrcadru);
}
28.02.2015

Protocoale de comunicaie

32

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

void protocol5(){
ActivRetea();
CadruUrmator=0;
CadruAsteptat=0;
ConfAsteptata=0;
ntampon=0;
do{
even=wait();
switch(even){
case ReteaPregatita:
tampon[CadruUrmator]=DeLaRetea();
ntampon++;
transmite(CadruUrmator);
inc(CadruUrmator);
break;

28.02.2015

Protocoale de comunicaie

33

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

case SosireCadru:
r=DeLaFizic();
if(r.secv==CadruAsteptat){
LaRetea(r.info);
inc(CadruAsteptat);
}
while(intre(ConfAsteptata, r.conf, CadruUrmator)){
ntampon--;
StopCeas(ConfAsteptata);
inc(ConfAsteptata);
}
break;
case EroareControl: break;
case TimeOut:
CadruUrmator=ConfAsteptata;
for(i=1;i<=ntampon;i++){
transmite(CadruUrmator);
inc(CadruUrmator);
}
}
if(ntampon<MaxSecv) ActivRetea();
else DezactivRetea();
}forever;
}
28.02.2015

Protocoale de comunicaie

34

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Protocol cu retransmitere selectiva


Fereastra receptorului nu poate fi egal cu cea a transmitorului
1. Transmitatorul trimite cadrele 0..6
2. Cadrele snt receptionate si fereastra recept. devine 7, 0, 1, 2, 3, 4, 5
3. Toate confirmarile snt pierdute
4. Transmitatorul retrimite cadrul 0 la time-out
5. Receptorul accepta cadrul 0 aflat n fereastra si cere cadrul 7
6. Transmitatorul afla cadre transmise corect si trimite 7, 0, 1, 2, 3, 4, 5
7. Receptorul accepta cadrele, cu exceptia lui 0, pentru care are deja un
cadru receptionat. Ca urmare, ignora acest cadru, lund n locul lui
dulpicatul cadrului 0 anterior.

28.02.2015

Protocoale de comunicaie

35

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

void protocol6(){
initializari_contoare;
do{ even=wait();
switch (even) {
case ReteaPregatita:
accepta_salveaza_si_transmite_un_cadru;
break;
case SosireCadru: r=DeLaFizic();
if (r.fel == data){
transm_nak_daca_r_dif_de_cadru_asteptat;
accepta_cadru_daca_in_fereastra_receptie;
livreaza_pachetele_sosite;
actualizeaza_fereastra_receptie;
}
if (r.kind == nak) retransmite_cadru_cerut;
trateaza_confirmare_cadre_eliberind_buffere;
break;
case EroareControl: transmite_nak; break;
case TimeOut: retransmite_cadrul_corespunzator; break;
case ReteaLibera: transmite_confirmare_ack;
}
activeaza_sau_dezactiveaza_nivel_retea;
}forever;
}
28.02.2015

Protocoale de comunicaie

36

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Exemple Protocoale Data Link

HDLC High-Level Data Link Control


Legatura de date in Internet

28.02.2015

Protocoale de comunicaie

37

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

HDLC procedura LAPB


HDLC este o familie de protocoale
Tipuri statii
primara
secundara
combinata

genereaza comenzi
genereaza raspunsuri
genereaza ambele, comenzi si raspunsuri

Tipuri legatura
balansata
nebalansata

cu doua statii conbinate


o statie primara, una sau mai multe secundare

Moduri de transfer
NRM - Normal Response Mode (legatura nebalansata)
ABM - Asynchronous Balanced Mode
ARM - Asynchronous Response Mode
Procedura LAPB (Link Access Protocol Balanced) coresponde une legaturi
balansate cu statii combinate
28.02.2015

Protocoale de comunicaie

38

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

High-Level Data Link Control


Format cadru

Camp de Control pentru


(a) Cadru de informatie

(b) Cadru supervizor

(c) Cadru nenumerotat


28.02.2015

Protocoale de comunicaie

39

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Comenzi si raspunsuri
-----------------------------------------------------------------------------------------------------------Comenzi
Raspunsuri
-----------------------------------------------------------------------------------------------------------I = information
(suspended)
------------------------------------------------------------------------------------------------------------RR = receive ready
RR
RNR = receive not ready
RNR
REJ = reject
REJ
------------------------------------------------------------------------------------------------------------SABM = set asynchronous
UA = unnumbered acknowledge
balanced mode
DISC = disconnect
DM = disconnected mode
FRMR = frame reject
------------------------------------------------------------------------------------------------------------

28.02.2015

Protocoale de comunicaie

40

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Legatura de date in Internet


Un calculator domestic actionand drept gazda Internet

28.02.2015

Protocoale de comunicaie

41

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Serial Link Internet Protocol SLIP


nu este standard Internet
protocol de incadrare a pachetelor
folosit pentru conexiuni seriale punct la punct peste care
ruleaza TCP/IP intre gazde si rutere
Reguli Protocol
defineste doua caractere speciale: END si ESC
o gazda SLIP trimite date in pachet
END in pachet inlocuit cu ESC si octal 334
ESC in packet inlocuit cu ESC si octal 335
dupa ultimul octet din pachet se transmite END.

28.02.2015

Protocoale de comunicaie

42

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

PPP Point to Point Protocol


Ofera
incadrare
Link Control Protocol, LCP
Network Control Protocol, NCP

Format de cadru PPP pentru modul nenumerotat


Addresa 11111111 = toate statiile accepta cadrul
Control 00000011 = nenumerotat
Protocol = selecteaza dintre
LCP, NCP
IP, IPX, OSI CLNP, XNS
28.02.2015

Protocoale de comunicaie

43

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

PPP Point to Point Protocol (2)

Diagrama simplificata pentru activare/dezactivare linie

28.02.2015

Protocoale de comunicaie

44

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

PPP Point to Point Protocol (3)

I - Initiator
28.02.2015

R - Responder
Protocoale de comunicaie

45

Universitatea Politehnica Bucureti - Facultatea de Automatica si Calculatoare

Sumar
Funciile nivelului legtura de date (ncadrare, transmisie transparenta,
controlul erorilor, controlul fluxului, gestiunea legturilor)
Detecia i corectarea erorilor (codul Hamming, coduri polinomiale - CRC)
Protocoalele legturii de date (date, functii, entitati)
Protocol start-stop simplex fara restrictii / cu restrictii
Protocol simplex pentru un canal cu erori
Protocoale cu fereastr glisant
Protocol cu fereastr de un bit
Protocol Go Back N

Protocoale cu fereastr supraunitar de transmisie


Protocol cu retransmitere selectiva
Exemple Protocoale Legatura de date: HDLC
Legatura de date in Internet
Serial Link Internet Protocol SLIP
PPP Point to Point Protocol

28.02.2015

Protocoale de comunicaie

46

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