Documente Academic
Documente Profesional
Documente Cultură
03 Nivel Legatura Date
03 Nivel Legatura Date
ncadrarea
Adugarea de informaie de control pentru a ncadra datele:
Metode de ncadrare
Caractere de control (BSC Binary Synchronous Communication)
Exemplu: SYN SYN SOH
header STX text ETX CRC
SOH - start of heading STX - start of text ETX - end of text ETB - end of transmission block EOT - end of transmission ENQ - enquiry ACK - acknowledge NAK - not acknowledge SYN - synchronous idle DLE - data link escape CRC - cyclic redundancy check
flag
4
Dubleaz DLE la emisie i elimin la recepie. Exemplu: DLE STX Text...ETX...Text...DLE DLE...DLE ETX CRC
Se consider eroare recepia caracterului DLE urmat de altceva dect STX, ETX, DLE.
Alte funcii
Controlul erorilor:
Secvena (suma) de control a cadrului (FCS). Mesaje de confirmare. Ceasuri. Numere de secven.
Controlul fluxului:
Utilizarea mesajelor de permisiune pentru transmitor.
Gestiunea legturii:
Stabilirea i desfiinarea legturii. Re-iniializare dup erori. Configurarea legturii (staii primare i secundare, legturi multipunct, etc.).
cu w[i] A.
detecie corecie
0000000111 0000000111
0000011111 0000000000
8
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:
Bitul 1 controleaz biii Bitul 2 controleaz biii Bitul 4 controleaz biii Bitul 8 controleaz biii 1, 3, 5, 7, 9, 11. 2, 3, 6, 7, 10, 11. 4, 5, 6, 7. 8, 9, 10, 11.
Pentru paritate par: dac exist numr par de bii 1 ntre biii 3, 5, 7, 9 i 11, atunci bitul 1 va fi 0. dac exist numr impar de bii 1 ntre biii 3, 5, 7, 9 i 11, atunci bitul 1 va fi 1.
1 2 3 4 5 6 7 8 9 10 11 1110101 => 0 1 1 0 1 1 0 0 1 0 1 Se primete eronat 0 1 1 0 1 1 0 0 1 1 1 Biii de control eronai sunt 2, 8 8 + 2 = 10 => bitul din poziia 10 a fost inversat.
Protocoale de comunicaie Curs 2
9
10
r(X) se alege astfel ca w(X) s fie multiplu de g(X): w(X) = g(X).q(X) Xn-k.i(X) + r(X) = g(X).q(X) Xn-k.i(X) = g(X).q(X) + r(X)
11
12
13
14
15
Protocol start-stop
Staia 1
PDU1 PDU2
Staia
2
Ack1
Timp
16
Protocol start-stop
Staia 1
PDU1 Ack1 PDU2
Staia
2
PDU1 Ack1 PDU2
Timp
17
Staia 1
PDU1 PDU2 PDU3 PDU4 PDU5 PDU6 PDU3 PDU4 PDU5
Staia
2
Ack1 Ack2 Err3 Del4 Del5 Del6 Ack3
Timp
18
Staia 1
PDU1 PDU2 PDU3 PDU4 PDU5 PDU6 PDU3 PDU4 PDU5
Staia
2
Ack1 Ack2 Err3 Del4 Del5 Del6 Ack3
19
Staia
2
Ack1 Ack2 Err3 Nak Buf 3 4 Ack Buf 2 5 Buf Ack 2 6 Ack6
Timp
20
Staia
2
Ack1 Ack2 Err3 Buf4 Buf5 Buf6 Ack6
21
Utilizator A
Utilizator B
Entitate A
Entitate B
Nivelul fizic
22
Datele
Datele: typedef struct { void far* adresa; word lungime;} pachet; enum FelCadru {data, ack, nak}; typedef unsigned char byte; typedef unsigned int word; typedef byte NrSecv; typedef struct { FelCadru fel; NrSecv secv, conf; pachet info; } cadru;
Protocoale de comunicaie Curs 2
23
Primitivele de serviciu
Primitive de serviciu:
preluarea unui pachet de la retea pentru transmitere pe canal
pachet DeLaRetea();
livrarea ctre retea a unui pachet
TipEven wait();
24
Protocoale start-stop
Protocol simplex fr restricii (caz ideal):
utilizatorul A vrea s transmit date utilizatorului 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.
25
// entitatea din sistemul transmitatorului void transmit1() { cadru s; do {s.info=DeLaRetea(); //preia pachet LaFizic(s); //transmite cadru } forever; } // entitatea din sistemul void recept1() { cadru r; TipEven even; do{ even=wait(); r=DeLaFizic(); LaRetea(r.info); } forever; } receptorului
26
Utilizator A
Utilizator B
Entitate A (emitor)
Entitate B (receptor)
Date
Confirmri (reacie)
Nivelul fizic
27
void transmit2(){ cadru s; TipEven even; do{ s.info=DeLaRetea(); LaFizic(s); even=wait(); //ateapt confirmarea } forever; }
void recept2(){ cadru s,r; TipEven even; do{ even=wait(); r=DeLaFizic(); LaRetea(r.info); LaFizic(s); } forever; }
28
Alte primitive:
void inc (NrSecv&); #define MaxSecv 1 void inc(NrSecv& k) {k==MaxSecv ? k=0 : k++;}
29
30
if(even==SosireCadru){ r=DeLaFizic(); if(r.secv==CadruAsteptat){ LaRetea(r.info); //cadru n secventa inc(CadruAsteptat); } } } LaFizic(s); //transmite oricum confirmarea
}forever;
31
Utilizator A
Utilizator B
date i confirmri
date i confirmri
Nivelul fizic
32
33
void protocol4(){ NrSecv CadruUrmator=0; NrSecv CadruAsteptat=0; cadru r,s; TipEven even; // SosireCadru, TimeOut, EroareControl
even=wait();
if(even==SosireCadru){ r=DeLaFizic(); if(r.secv==CadruAsteptat){ LaRetea(r.info); inc(CadruAsteptat); } if(r.conf==CadruUrmator){ StopCeas(r.conf); s.info=DeLaRetea(); inc(CadruUrmator); } // prel. cadre receptionate
}forever;
Protocoale de comunicaie Curs 2
35
Notaia este (seq, ack, packet number). Un asterisk (*) arat c nivelul reea accept pachetul.
36
Un protocol Go Back N
Banda de asamblare i refacerea erorilor. Efectul erorii cnd:
(a) Fereastra receptorului este 1.
37
38
// urmatorul cadru de transmis // urmatorul cadru asteptat // c.m. vechi cadru neconfirmat
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;
40
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); } } // switch
}forever;
Protocoale de comunicaie Curs 2
41
42
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.fel == nak) retransmite_cadru_cerut; trateaza_confirmare_cadre_eliberind_buffere; break;
case EroareControl: transmite_nak; break;
43
Exemple de protocoale
HDLC High-Level Data Link Control. Folosite pentru legtura de date n Internet:
SLIP. PPP.
44
Tipuri de legatur:
Echilibrat, cu dou staii combinate. Neechilibrat, o staie primar, una sau mai multe secundare.
Moduri de transfer:
NRM, Normal Response Mode (legatur neechilibrat). ABM, Asynchronous Balanced Mode. ARM, Asynchronous Response Mode.
Procedura LAPB (Link Access Protocol Balanced) corespunde une legturi echilibrate cu staii combinate.
45
Semnificaie:
Seq: numr de secven cadru transmis (mod 8 sau 128). Next: numr de secven pentru urmatorul cadru ateptat. P/F (poll/final): invitaie la transmisie sau sfrit de transmisie.
46
Comenzi i rspunsuri
47
48
49
50
protocolul de retea este configurat folosind NCP (de exemplu pentru IP se face alocare adresa IP)
Terminate-request Terminate-ack
51
52
Sumar
Funciile legturii de date>
ncadrare. Transmisie transparent. Control erori. Control flux. Gestiune legturi.
Mecanisme folosite (numere de secven, confirmri, ceasuri, sume de control). Coduri detectoare / corectoare de erori (CRC / Hamming). Protocoale elementare (date, funcii, entiti). Protocoale start-stop i cu fereastr glisant. Exemple de protocoale
HDLC (High-Level Data Link Control). Folosite n Internet:
SLIP (Serial Line Internet Protocol). PPP (Point to Point Protocol).
Protocoale de comunicaie Curs 2
53