109
 P.C. 1. Nivelurile OSI (Open Systems Interconnection) Nivelul fizic se ocupã de transmiterea biþilor printr-un canal de comunicaþie. Proiectarea trebuie sã garanteze cã atunci când unul din capete trimite un bit 1, acesta e receptat în cealaltã parte ca un bit 1, nu ca un bit 0. Problemele tipice se referã la câþi volþi trebuie utilizaþi pentru a reprezenta un 1 ºi câþi pentru un 0, dacã transmisia poate avea loc simultan în ambele sensuri, cum este stabilitã conexiunea iniþialã ºi cum este întreruptã când au terminat de comunicat ambele pãrþi, câþi pini are conectorul de reþea ºi la ce foloseºte fiecare pin. Aceste aspecte de proiectare au o legãturã strânsã cu interfeþele mecanice, electrice, funcþionale ºi procedurale, ca ºi cu mediul de transmisie situat sub nivelul fizic. Nivelul legaturii de date trateaza erorile de transmisie produse la nivelul fizic, realizand o comunicare corecta intre doua noduri adiacente. Mecanismul utilizat in acest scop este impartirea sirului de biti in cadre, carora le sunt adaugate informatii de control (coduri de verificare, numere de secventa etc). Cadrele sunt transmise individual putand fi verificate si confirmate de catre receptor. Alte functii ale nivelului se refera la: controlul fluxului datelor (astfel incat transmitatorul sa nu furnizeze date mai rapid decat le poate accepta receptorul) si gestiunea legaturii (stabilirea legaturii, controlul schimbului de date si desfiintarea legaturii). Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si destinatar, trecand eventual prin noduri intermediare. Decizia este luata astfel incat sa nu existe in acelasi timp legaturi supraincarcate si legaturi neutilizate, evitandu-se deci congestionarea retelei. O alta functie importanta a nivelului retea este cea de interconectare a retelelor cu arhitecturi diferite. Nivelul transport realizeaza o comunicare sigura intre doua calculatoare gazda, detectand si corectand erorile pe care nivelul retea nu le trateaza. El este important nu numai prin pozitia pe care o ocupa, la mijlocul ierarhiei de nivele, dar si prin functia sa, de a furniza nivelelor superioare o interfata independenta

Rezumat PC 1

Embed Size (px)

DESCRIPTION

Protocoale de comunicatie

Citation preview

  • P.C.

    1. Nivelurile OSI (Open Systems Interconnection)

    Nivelul fizic se ocup de transmiterea biilor printr-un canal de comunicaie. Proiectarea trebuie s garanteze c atunci cnd unul din capete trimite un bit 1, acesta e receptat n cealalt parte ca un bit 1, nu ca un bit 0. Problemele tipice se refer la ci voli trebuie utilizai pentru a reprezenta un 1 i ci pentru un 0, dac transmisia poate avea loc simultan n ambele sensuri, cum este stabilit conexiunea iniial i cum este ntrerupt cnd au terminat de comunicat ambele pri, ci pini are conectorul de reea i la ce folosete fiecare pin. Aceste aspecte de proiectare au o legtur strns cu interfeele mecanice, electrice, funcionale i procedurale, ca i cu mediul de transmisie situat sub nivelul fizic.

    Nivelul legaturii de date trateaza erorile de transmisie produse la nivelul fizic, realizand o comunicare corecta intre doua noduri adiacente. Mecanismul utilizat in acest scop este impartirea sirului de biti in cadre, carora le sunt adaugate informatii de control (coduri de verificare, numere de secventa etc). Cadrele sunt transmise individual putand fi verificate si confirmate de catre receptor. Alte functii ale nivelului se refera la: controlul fluxului datelor (astfel incat transmitatorul sa nu furnizeze date mai rapid decat le poate accepta receptorul) si gestiunea legaturii (stabilirea legaturii, controlul schimbului de date si desfiintarea legaturii).

    Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si destinatar, trecand eventual prin noduri intermediare. Decizia este luata astfel incat sa nu existe in acelasi timp legaturi supraincarcate si legaturi neutilizate, evitandu-se deci congestionarea retelei. O alta functie importanta a nivelului retea este cea de interconectare a retelelor cu arhitecturi diferite.

    Nivelul transport realizeaza o comunicare sigura intre doua calculatoare gazda, detectand si corectand erorile pe care nivelul retea nu le trateaza. El este important nu numai prin pozitia pe care o ocupa, la mijlocul ierarhiei de nivele, dar si prin functia sa, de a furniza nivelelor superioare o interfata independenta

  • de tipul retelei utilizate. Functiile sunt realizate de entitati situate in sistemele gazda, fara concursul altor entitati similare intermediare, motiv pentru care se numesc functii "capat la capat" (capetele fiind cele doua entitati de transport corespondente).

    Nivelul sesiune ofera toate serviciile pentru gestiunea jetoanelor, lasand la latitudinea utilizatorilor semnificatiile asociate acestora. Ele au la baza utilizarea unui mesaj special, numit jeton (token), care poate fi trecut de la un utilizator la altul si a carui posesie ofera detinatorului anumite privilegii: de a transmite date, de a stabili puncte de sincronizare, de a stabili inceputul unei activitati etc.

    Nivelul prezentare realizeaza transformari ale reprezentarii datelor, astfel incat sa se pastreze semnificatia lor, rezolvandu-se totodata diferentele de sintaxa. Functiile principale se refera la codificarea standard a datelor transmise intre calculatoare cu conventii de reprezentare diferite, la comprimarea textelor, precum si la criptarea/decriptarea acestora in vederea protectiei si securitatii lor.

    Nivelul aplicatie, cel mai inalt nivel al arhitecturii, are rolul de fereastra de comunicare prin care se fac toate schimburile de date intre utilizatori. Fiind nivelul care furnizeaza servicii direct aplicatiilor, el cuprinde toate functiile pe care acestea le pot solicita: - identificarea utilizatorilor cooperanti, autentificarea lor si determinarea disponibilitatii acestora, - stabilirea calitatii serviciului, - sincronizarea aplicatiilor cooperante si selectarea modului de dialog, - stabilirea responsabilitatilor pentru tratarea erorilor, - identificarea constrangerilor asupra sintaxei datelor, - transferul informatiei.

  • 2. Serviciile oferite de nivelul legatura de date nivelului retea. Nivelul legtur de date poate fi proiectat s ofere diferite servicii. Serviciile efective oferite pot varia de la sistem la sistem. Trei posibiliti de baz, oferite n mod curent, sunt: 1. Serviciu neconfirmat fr conexiune. 2. Serviciu confirmat fr conexiune. 3. Serviciu confirmat orientat-conexiune.

    Serviciul neconfirmat fr conexiune const din aceea c maina surs trimite cadre independente ctre maina destinaie, fr ca maina destinaie s trebuiasc s confirme primirea lor. n acest caz, nu sunt necesare stabilirea i desfiinarea unei conexiuni logice. Dac un cadru este pierdut datorit zgomotului de pe linie, la nivelul legtur de date nu se face nici o ncercare pentru recuperarea lui. Aceast clas de servicii este adecvat atunci cnd rata de erori este foarte sczut, nct recuperarea este lsat n sarcina nivelurilor superioare. De asemenea, este adecvat pentru traficul de timp real, cum ar fi cel de voce, unde a primi date cu ntrziere este mai ru dect a primi date eronate. Majoritatea LAN-urilor utilizeaz la nivelul legturii de date servicii neconfirmate fr conexiune.

    Urmtorul pas n ceea ce privete sigurana este serviciul confirmat fr

    conexiune. Atunci cnd este oferit acest serviciu, nc nu se utilizeaz conexiuni, dar fiecare cadru trimis este confirmat individual. n acest mod, emitorul tie dac un cadru a ajuns sau nu cu bine. Dac nu a ajuns ntr-un interval de timp specificat, poate fi trimis din nou. Acest serviciu este folositor pentru canale nesigure, cum ar fi sistemele fr fir.

    Asigurarea confirmrii la nivelul legturii de date este doar o optimizare,

    niciodat o cerin. Nivelul reea poate ntotdeauna s trimit un mesaj i s atepte s fie confirmat. Dac confirmarea nu apare n timp util, atunci emitorul poate retrimite ntregul mesaj. Problema cu aceast strategie este aceea c, de obicei, cadrele au o lungime maxim impus de hardware, iar pachetele nivelului reea nu au aceasta limitare. Dac pachetul mediu este spart n, s zicem, 10 cadre i 20% din totalul cadrelor sunt pierdute, transmiterea acestuia poate lua

  • foarte mult timp. n cazul n care cadrele individuale sunt confirmate i retransmise, pachetele ntregi vor fi transmise mult mai rapid. Pe canale sigure, precum fibra optic, costul suplimentar implicat de un astfel de protocol al legturii de date poate fi nejustificat, dar pe canale fr fir, costul este pe deplin justificat datorit nesiguranei acestora.

    Cel mai sofisticat serviciu pe care nivelul legtur de date l pune la

    dispoziia nivelului reea este serviciul orientat-conexiune. n cazul acestui serviciu, mainile surs i destinaie stabilesc o conexiune nainte de a transfera date. Fiecare cadru trimis pe conexiune este numerotat i nivelul legtur de date garanteaz c fiecare cadru trimis este ntr-adevr recepionat. Mai mult, garanteaz c fiecare cadru este recepionat exact o dat i toate cadrele sunt recepionate n ordinea corect. n schimb, n cazul serviciului fr conexiune, este posibil ca, datorit unei confirmri pierdute, un cadru s fie transmis de mai multe ori i, prin urmare, recepionat de mai multe ori. Spre deosebire de acesta, serviciul orientat conexiune furnizeaz proceselor de la nivelul reea echivalentul unui flux de bii sigur.

    Atunci cnd este utilizat serviciul orientat conexiune, transferurile au trei

    faze distincte. n prima faz este stabilit conexiunea, ambele pri iniializnd variabile i contoare, utilizate pentru a ine evidena cadrelor care au fost recepionate i a celor care nu au fost. n a doua faz, sunt transmise unul sau mai multe cadre. n a treia i ultima faz, conexiunea este desfiinat, elibernd variabilele, tampoanele i alte resurse utilizate la meninerea conexiunii.

  • 3. Incadrarea la nivelul legatura de date

    Deoarece este prea periculos s ne bizuim pe timp pentru a marca

    nceputul i sfritul fiecrui cadru, au fost elaborate alte metode. Vom analiza 3

    metode:

    1. Numrarea caracterelor.

    2. Indicatori cu inserare de octei.

    3. Indicatori de nceput i de sfrit, cu inserare de bii.

    Prima metod de ncadrare utilizeaz un cmp din antet pentru a specifica

    numrul de caractere din cadru. Atunci cnd nivelul legtur de date de la

    destinaie primete contorul de caractere, tie cte caractere urmeaz i unde

    este sfritul cadrului. Problema cu acest algoritm este c valoarea contorului

    poate fi alterat de erori de transmisie. Chiar dac suma de control este incorect

    i destinaia tie c a primit cadru eronat, nu exist nici o posibilitate de a

    determina unde ncepe urmtorul cadru. Nu ajut nici trimiterea unui cadru

    napoi la surs, cernd o retransmisie, deoarece destinaia nu tie peste cte

    caractere s sar pentru a ncepe retransmisia. Din acest motiv, metoda

    contorizrii caracterelor este rar utilizat.

    A doua metod de ncadrare nltur problema resincronizrii dup o

    eroare, prin aceea c fiecare cadru ncepe i se termin cu o secvena special de

    octei. Iniial, octeii ce indicau nceputul, respectiv sfritul erau diferii, dar n

    ultimii ani s-a trecut la utilizarea unui singur octet, numit octet indicator, att ca

    indicator de nceput, ct i de sfrit. n acest fel, dac receptorul pierde

    sincronizarea, acesta poate cuta octetul indicator pentru a gsi sfritul cadrului.

    Doi octei indicatori consecutivi indic sfritul unui cadru i nceputul celui care

    urmeaz.

  • O problem serioas cu aceast metod apare atunci cnd se transmit date

    binare, cum ar fi un obiect sau numere n virgul mobil. Se poate ntmpla ca n

    date s apar octetul folosit ca indicator.

    Aceast situaie interfereaz cu procesul de ncadrare. O cale de rezolvare a

    acestei probleme este ca nivelul legtur de date al emitorului s insereze un

    octet special (ESC) naintea fiecrei apariii accidentale a indicatorului n date.

    Nivelul legtur de date al receptorului va elimina acest octet special nainte de a

    pasa datele nivelului reea. Aceast tehnic poart numele de inserare de octei

    (eng.: byte stuffing) sau inserare de caractere (eng.: character stuffing) . Deci, un

    octet indicator utilizat pentru ncadrare poate fi difereniat de unul prezent n

    date prin faptul c este sau nu precedat de un octet special.

    Bineneles, urmtoarea ntrebare este: Ce se ntmpl dac un octet

    special apare n mijlocul datelor? Rspunsul este c pe lng el se insereaz nc

    un octet special. Deci, un singur octet special face parte dintr-o secven special,

    iar un octet special dublu indica faptul ca un singur octet de acest tip a aprut in

    cadrul datelor. n toate cazurile, secvena de octei obinut dup eliminarea

    octeilor inserai este exact secvena original.

    Un dezavantaj major al utilizrii acestei metode de ncadrare este acela c

    este limitat la utilizarea caracterelor de 8 bii. Nu toate codurile utilizeaz

    caractere de 8 bii.

    A treia metoda de incadrare permite cadrelor de date s conin un numr

    arbitrar de bii i permite coduri de caractere cu un numr arbitrar de bii per

    caracter. Funcioneaz astfel: fiecare cadru ncepe i se termin cu un ablon

    special pe bii, 01111110, numit octet indicator (flag). De fiecare dat cnd nivelul

    legtur de date al emitorului identific cinci de unu consecutivi n date,

    insereaz automat un bit 0 n irul de bii de rezultai. Aceast inserare de bii (bit

    stuffing) este similar inserrii de caractere, n care un octet escape este inserat n

    irul de caractere de ieire, nainte de fiecare octet indicator din date.

    Atunci cnd receptorul primete o succesiune de cinci bii 1, urmai de un bit 0,

    extrage automat (adic terge) bitul 0. La fel ca i inserarea de caractere, care este

  • complet transparent pentru nivelul reea din ambele calculatoare, aa este i

    inserarea de bii. Dac datele utilizator conin ablonul indicator, 01111110, acest

    indicator este transmis ca 011111010, dar n memoria receptorului este pstrat ca

    01111110.

    4. Coduri corectoare de erori

    Proiectanii de reele au dezvoltat dou strategii de baz pentru tratarea

    erorilor. O modalitate este ca pe lng fiecare bloc de date trimis s se includ

    suficient informaie redundant pentru ca receptorul s poat deduce care a fost

    caracterul transmis. O alt soluie este s se includ suficient redundan pentru

    a permite receptorului s constate c a aprut o eroare, dar nu care este eroarea,

    i s cear o retransmisie. Prima strategie utilizeaz coduri corectoare de erori, iar

    cea de-a doua utilizeaz coduri detectoare de erori. Folosirea codurilor corectoare

    de erori este deseori referit sub numele de corectare de erori n avans (eng.:

    forward error correction).

    Fiecare dintre aceste tehnici se utilizeaz in situaii diferite. Pe canale cu

    siguran mare, cum ar fi fibra optic, este mai eficient s utilizm un cod

    detector de erori i s retransmitem blocul n care s-au detectat erori. In cazul

    canalelor de comunicaie fr fir, este indicat sa adugm destul informaie

    redundant fiecrui bloc, n loc s ne bazm pe retransmisie, care poate s fie la

    rndul su afectat de erori.

    Pentru a nelege cum pot fi tratate erorile, este necesar s privim cu

    atenie la ceea ce este de fapt o eroare. n mod normal, un cadru conine m bii

    de date (adic mesaj) i r bii redundani sau de control. S considerm lungimea

    total n (adic, n = m + r ). O unitate format din n bii, care conine date i bii de

    control, este numit frecvent cuvnt de cod de n bii (eng.: n-bit codeword).

    Date fiind dou cuvinte de cod, s zicem, 10001001 i 10110001, este

    posibil s determinm ci bii corespunztori difer. n acest caz difer 3 bii.

    Pentru a determina ci bii difer, aplicm operatorul SAU EXCLUSIV ntre cele

    dou cuvinte de cod i numrm biii 1 din rezultat.

  • Numrul de poziii binare n care dou cuvinte de cod difer se numete

    distana Hamming (Hamming, 1950). Semnificaia sa este c dac dou cuvinte de

    cod sunt desprite de o distan Hamming d, sunt necesare d erori de un singur

    bit pentru a-l converti pe unul n cellalt.

    n multe aplicaii de transmisie de date, toate cele 2m mesaje de date

    posibile sunt corecte, dar, datorit modului n care sunt calculai biii de control,

    nu sunt utilizate toate cele 2n cuvinte de cod posibile. Dat fiind algoritmul pentru

    calculul biilor de control, este posibil s construim o list completa de cuvinte de

    cod permise i din aceast list s gsim cele dou cuvinte de cod a cror distan

    Hamming este minim. Aceast distan este distana Hamming a codului

    complet.

    Proprietile detectoare i corectoare de erori ale unui cod depind de

    distana sa Hamming. Pentru a detecta d erori, este nevoie de un cod cu distan

    d + 1, deoarece cu un asemenea cod nu exist nici o modalitate ca d erori de un

    singur bit s poat modifica un cuvnt de cod corect ntr-un alt cuvnt de cod

    corect. Atunci cnd receptorul vede un cuvnt de cod incorect, poate spune c s-a

    produs o eroare de transmisie. Similar, pentru a corecta d erori, este nevoie de un

    cod cu distan 2d + 1, deoarece n acest mod cuvintele de cod corecte sunt att

    de distanate, nct, chiar cu d modificri, cuvntul de cod originar este totui mai

    apropiat dect alte cuvinte de cod i va fi unic determinat.

    S ne imaginm c dorim s proiectm un cod cu m bii de mesaj i r bii de

    control care ne va permite s corectm toate erorile singulare. Pentru fiecare din

    cele 2m mesaje corecte exist n cuvinte de cod eronate, aflate la distan 1 de el.

    Acestea sunt formate prin inversarea sistematic a fiecruia dintre cei n bii din

    cuvntul de cod de n bii format din el. Astfel, fiecare din cele 2m mesaje corecte

    necesit n+1 abloane asociate. Cum numrul total de abloane este 2n, trebuie

    s avem (n+1) 2m

  • consecutiv, ncepnd cu bitul 1 de la marginea din stnga, bitul 2 imediat la

    dreapta sa, etc. Biii care sunt puteri ale lui 2 (1, 2, 4, 8, 16 etc.) sunt bii de

    control. Restul (3, 5, 6, 7, 9 etc.) sunt completai cu cei m bii de date. Fiecare bit

    de control foreaz ca paritatea unui grup de bii, inclusiv el nsui, s fie par (sau

    impar).

    Un bit poate fi inclus n mai multe calcule de paritate. Pentru a vedea la

    care bii de control contribuie bitul de date din poziia k, rescriem k ca o sum de

    puteri ale lui 2. De exemplu, 11= 1+2+8 i 29=1+4+8+16. Un bit este verificat de

    acei bii de control care apar n dezvoltarea sa (de exemplu, bitul 11 este verificat

    de biii 1, 2 i 8).

    Cnd sosete un cuvnt de cod, receptorul iniializeaz un contor la 0.

    Acesta examineaz apoi fiecare bit de control, k (k = 1, 2, 4, 8...) pentru a vedea

    dac are paritatea corect. Dac nu, adaug k la contor. Dac, dup ce au fost

    examinai toi biii de control, contorul este 0 (adic, dac toi biii au fost

    coreci), cuvntul de cod este acceptat ca valid. Dac valoarea contorului este

    nenul, ea reprezint numrul bitului incorect. De exemplu, dac biii de control

    1, 2 i 8 sunt eronai, atunci bitul inversat este 11, deoarece este singurul verificat

    de biii 1, 2 i 8.

    Codurile Hamming pot corecta numai erori singulare. Totui, exist un

    artificiu care poate fi utilizat pentru a permite codurilor Hamming s corecteze

    erorile n rafal. O secven de k cuvinte de cod consecutive este aranjat ca o

    matrice, avnd cte un cuvnt de cod pe fiecare linie. n mod normal, datele ar fi

    transmise linie cu linie, de la stnga la dreapta. Pentru a corecta erorile n rafal,

    datele vor trebui transmise pe coloane, ncepnd cu coloana cea mai din stnga.

    Cnd au fost trimii toi cei k bii, este transmis a doua coloan i aa mai

    departe, aa cum se arat in fig. 3-7. 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.

  • 5. Coduri detectoare de erori

    Codurile corectoare de erori sunt adesea utilizate pe canale fr fir, care

    sunt cunoscute ca fiind predispuse la erori, n comparaie cu firele de cupru sau

    fibra optic. Fr coduri detectoare de erori, comunicaia ar fi greu de realizat. In

    cazul firelor de cupru sau a fibrei optice rata erorilor este mult mai mic, aa c

    detectarea erorilor i retransmisia este de obicei mai eficient aici ca metod de

    tratare a erorilor care apar ocazional.

    Dac unui bloc i se adaug un singur bit de paritate i blocul este puternic

    deformat de o eroare n rafal lung, probabilitatea ca eroarea s fie detectat

    este de numai 0.5, ceea ce este greu de acceptat. ansele pot fi mbuntite

    considerabil dac fiecare bloc transmis este privit ca o matrice dreptunghiular de

    n bii lime i k bii nlime, dup cum am artat mai sus. Pentru fiecare coloan

    este calculat un bit de paritate, care este adugat ntr-o nou linie de la sfritul

    matricei. Matricea este apoi transmis linie cu linie. La sosirea blocului, receptorul

    verific toi biii de paritate. Dac oricare din ei este greit, va cere o retransmisie

    a blocului. Retransmisii succesive sunt cerute daca este nevoie, pn cnd ntregul

    bloc este recepionat fr erori de paritate.

    Aceast metod poate detecta o singur rafal de lungime n, cu numai un

    bit pe coloan modificat. O rafal de lungime n+1 va trece totui nedetectat dac

    primul i ultimul bit sunt inversai, iar toi ceilali bii sunt coreci (o eroare n

    rafal nu nseamn c toi biii sunt greii, ci c cel puin primul i ultimul sunt

    greii). Dac blocul este puternic deformat de o rafal lung sau de rafale scurte

    multiple, probabilitatea ca oricare din cele n coloane s aib, accidental, paritatea

    corect este 0.5, deci probabilitatea ca un bloc eronat s fie acceptat atunci cnd

    nu ar trebui este 2 la -n.

  • Cu toate c schema de mai sus poate fi uneori adecvat, n practic este

    larg utilizat o alt metod: codul polinomial (cunoscut i sub numele de cod cu

    redundan ciclic, eng.: cyclic redundancy code). Codurile polinomiale sunt

    bazate pe tratarea irurilor de bii ca reprezentri de polinoame cu coeficieni 0 i

    1. Un cadru de k bii este vzut ca o list de coeficieni pentru un polinom cu k

    termeni, de la xk-1 la x0. Se spune c un astfel de polinom este de gradul k-1. Bitul

    cel mai semnificativ (cel mai din stnga) este coeficientul lui xk-1; urmtorul bit

    este coeficientul lui xk-2 .a.m.d. De exemplu, 110001 are ase bii i ei reprezint

    un polinom cu ase termeni cu coeficienii 1, 1, 0, 0, 0 i 1: x5+x4+x0. Aritmetica

    polinomial este de tip modulo 2, n conformitate cu regulile teoriei algebrice. Nu

    exist transport la adunare i nici mprumut la scdere. Att adunrile ct i

    scderile sunt identice cu SAU EXCLUSIV. mprirea lung este fcut ca n binar

    cu excepia faptului c scderea este realizat modulo 2, ca mai sus. Despre un

    mpritor se spune c intr ntr-un demprit dac dempritul are tot atia

    bii ca mpritorul.

    Atunci cnd este utilizat metoda codului polinomial, emitorul i

    receptorul se pun de acord n avans asupra unui polinom generator G(x). Att

    bitul cel mai semnificativ ct i cel mai puin semnificativ trebuie s fie 1. Pentru a

    calcula suma de control pentru un cadru cu m bii, corespunztor polinomului

    M(x), cadrul trebuie s fie mai lung dect polinomul generator. Ideea este de a

    aduga o sum de control la sfritul cadrului, astfel nct polinomul reprezentat

    de cadrul cu sum de control s fie divizibil prin G(x). Cnd receptorul preia cadrul

    cu suma de control, ncearc s-l mpart la G(x). Dac se obine un rest,

    nseamn c a avut loc o eroare de transmisie.

    Algoritmul pentru calculul sumei de control este urmtorul:

    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

    xrM(x).

    2. Se mparte irul de bii ce corespund lui G(x) ntr-un ir de bii corespunznd lui

    xrM(x), utiliznd mprirea modulo 2.

  • 3. Se scade restul (care are ntotdeauna r sau mai puini bii) din irul de bii

    corespunznd lui xrM(x), utiliznd scderea modulo 2. Rezultatul este cadrul cu

    sum de control ce va fi transmis. Numim polinomul su T(x).

    S analizm puterea acestei metode. Ce tipuri de erori vor fi detectate? S

    ne imaginm c apare o eroare de transmisie, aa nct n loc s soseasc irul de

    bii pentru T(x), ajunge T(x) + E(X). Fiecare bit din E(x) corespunde unui bit care a

    fost inversat. Dac n E(x) exist k bii 1, aceasta nseamn c au aprut k erori de

    un singur bit.

    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.

    6. Protocoalele elementare ale legaturii de date

    *Protocolul Start-Stop -transmitorul trimite un nou cadru numai dup recepia confirmrii pozitive a cadrulului precedent.

    *Protocol simplex far restrictii. Cea mai simpl variant de protocol are n vedere urmtoarele consideraii: utilizatorul A vrea s transmit date lui B folosind o legtur sigur, simplex; A reprezint o surs inepuizabil de date, astfel nct transmitorul nu trebuie s atepte niciodat la preluarea datelor pentru transmisie; B reprezint un consumator ideal, care preia imediat datele de la receptor ori de cte ori acesta i le d; canalul fizic de comunicaie este fr erori.

    *Protocol simplex start-stop. n a doua variant, considerm n continuare canalul fr erori, dar utilizatorul B nu poate accepta date n orice ritm. Este necesar controlul fluxului, care n acest caz se realizeaz printr-o reacie a receptorului ctre transmitor, permindu-i

  • acestuia din urm s transmit urmtorul cadru. Reacia are forma unui cadru fictiv.

    *Protocol simplex pentru un canal cu erori. S-ar prea c n cazul unui canal cu erori o uoar modificare a protocolului anterior este suficient. Receptorul transmite un cadru de confirmare doar pentru cadre corecte. n caz de eroare, transmitorul nu primete confirmarea ntr-un timp prestabilit i ca urmare retransmite cadrul. Funcia de armare a ceasului i de permisiune a evenimentului TimeOut este: void StartCeas(NrSecv); iar funcia de dezarmare a ceasului este: void StopCeas (NrSecv);

    Parametrul lor permite asocierea unui eveniment TimeOut cu cadrul avnd un numr de secven specificat. Aceast variant prezint pericolul duplicrii cadrelor, n cazul n care se pierde confirmarea mesajului i nu mesajul (transmitorul retransmite cadrul precedent, pe care receptorul l ia drept cadru nou). Evitarea acestei erori se face prin includerea unui numr de secven n antetul cadrului. Deoarece n acest caz, numrul de secven trebuie s diferenieze doar dou cadre succesive, este suficient un contor de un bit, numerele de secvena 0 i 1 ale cadrelor succesive alternnd.

    Pentru justificare, fie cadrele succesive m, m+1, m+2 cu numerele de secven respectiv 0, 1 i 0. Dup transmisia cadrului m (0), poate urma m (0), sau m+1 (1), dup cum s-a primit sau nu confirmarea. n nici un caz nu urmeaz m+2 (0), care presupune confirmarea corect a lui m (0). Deci dac receptorul a primit corect m (0) i primete un nou cadru cu numr de secven 0, el nu poate fi dect m (0) i n consecin l ignor.

    *Protocol cu fereastra glisanta

    -nu ateapt confirmarea cadrelor precedente pentru a transmite cadre noi.

    Protocoalele anterioare snt simplex. Pentru o transmisie duplex ar fi necesare dou legturi distincte, una pentru fiecare sens. Ca alternativ, putem utiliza cadrele de confirmare pentru transmiterea datelor n sens opus. Dac nu snt date, se transmite doar confirmarea. Apar deci mai multe feluri de cadre, difereniabile printr-un cmp din antet (fel).

  • Aceste elemente snt cuprinse n protocoalele cu fereastr glisant. Esena lor este prezentat n continuare. Transmitorul menine o list cu numerele de secven ale cadrelor transmise dar neconfirmate, alctuind fereastra transmitorului. Cnd trebuie transmis un cadru, i se ataeaz numrul de secven urmtor (fereastra se mrete). Cnd se recepioneaz o confirmare, marginea inferioar a ferestrei se deplaseaz cu o unitate. Cadrele se pstreaz de transmitor pn la confirmarea lor.

    Receptorul pstreaz o list cu numerele de secven ale cadrelor pe care le poate accepta (fereastra receptorului). Cadrele din fereastr snt acceptate, celelalte snt ignorate. Cnd sosete un cadru cu numr de secven egal cu marginea inferioar, fereastra este deplasat cu o poziie (prin modificarea ambelor margini), pstrndu-se dimensiunea constant.

    *Protocol cu fereastr de dimensiune unu. Ambele ferestre fiind unitare, transmitorul trebuie s atepte

    confirmarea nainte de a transmite un nou cadru (la fel ca n cazul precedent). Deoarece algoritmii transmitorului i receptorului snt aproape identici, dm o singur descriere pentru ambele staii. Fiecare staie realizeaz ciclic urmtoarele operaii: recepia unui cadru, prelucrarea irului de cadre recepionate, prelucrarea irului de cadre transmise, transmiterea sau retransmiterea unui cadru impreun cu confirmarea cadrului recepionat corect.

    O situaie necorespunztoare apare dac ambele staii transmit un cadru iniial. Pentru a corecta acest neajuns, o staie trebuie s o precead pe cealalt prin aciunile sale. Pentru aceasta, doar una trebuie s execute transmisia unui cadru n afara buclei principale.

    Cmpul conf conine numrul ultimului cadru recepionat corect. Dac el

    corespunde cadrului aflat n transfer, transmitorul preia alt pachet pentru transmisie. Altfel, se transmite acelai pachet.

  • Cmpul secv conine numrul de secven al cadrului. Dac el coincide cu cel ateptat, se transmite un pachet nivelului reea. Staiile nu se blocheaz i nu accept duplicate. S presupunem de exemplu c A ncearc s trimit cadrul 0 lui B, iar B ncearc s trimit cadrul 0 lui A. Presupunem c timpul de ateptare (timeout) al lui A este prea scurt, deci A trimite repetat cadre (0, 1, A0 ). Cnd primul cadru valid ajunge la B, va fi acceptat, punndu-se CadruAsteptat pe 1. Celelalte cadre snt ignorate, avnd secv=0. Mai mult, duplicatele au conf = 1, n timp ce B ateapt conf = 0 pentru a scoate un nou pachet de la reea. Ca urmare, B va continua s transmit repetat un cadru cu (0, 0,...). Unul din cadre ajunge la A, care ncepe s transmit un nou pachet.

    *Protocoale cu fereastr supraunitar de transmisie.

    n cazul unor canale cu ntrzieri mari de transmisie, ateptarea confirmrii fiecrui cadru nainte de transmiterea urmtorului poate conduce la o eficien sczut. Astfel, la un canal cu o ntrziere de propagare dus-ntors de 500 msec i o viteza de 50 Kbps, transmiterea unui cadru de 1000 de bii dureaz efectiv doar 20 de milisecunde din cele 520 necesare ciclului complet de transmitere i recepie a confirmrii.

    Performana se poate ameliora permind transmiterea unui cadru nainte

    de a se primi confirmarea cadrelor anterioare. n exemplul precedent, dac transmitorul trimite cadrele unul dup altul, el va recepiona confirmarea primului cadru dup transmiterea celui de al 26-lea. Erorile nu pot fi sesizate i corectate imediat de transmitor. De obicei, el afl despre producerea unei erori dup ce a transmis i alte cadre. Receptorul, care trebuie s pstreze secvenialitatea cadrelor pe care le livreaz utilizatorului, are dou posibiliti de tratare a cadrelor primite dup eroare.

    O cale este de ignorare a acestora, fr transmitere de confirmri. Ea

    corespunde unei ferestre de recepie unitare. n acest caz, transmitorul va fi obligat s retransmit toate cadrele ncepnd cu cel eronat. A doua cale este memorarea cadrelor recepionate corect, urmnd a fi retransmise selectiv doar cadrele eronate. Ea corespunde unei ferestre a receptorului mai mare ca unu.

    *Protocol cu retransmitere neselectiv.

  • Fereastra maxim a transmitorului poate fi de MaxSecv cadre, dei exist MaxSecv+1 numere de secven distincte. Justificm aceast restricie prin urmtorul scenariu, n care presupunem c MaxSecv=7: 1. Transmitorul trimite cadrele 0..7; 2. Toate cadrele snt recepionate i confirmate; 3. Toate confirmrile snt pierdute; 4. Transmitorul retrimite la time-out toate cadrele; 5. Receptorul accept duplicatele.

    n acest protocol renunm la presupunerea c utilizatorul este o surs ideala de pachete i includem mecanismul de reglare a fluxului de date: cnd utilizatorul are un pachet de transmis el provoac un eveniment "ReteaPregatita"; cnd o staie are MaxSecv cadre neconfirmate, ea interzice reelei s-i transmit alte pachete prin procedura "DezactivRetea"; cnd numrul de pachete scade, ea anuleaz restricia prin funcia "ActivRetea".

    Transmitorul pstreaz cadrele neconfirmate pentru o eventual retransmisie. Confirmarea cadrului n provoac automat confirmarea cadrelor n-1, n-2,... anterioare, ceeace compenseaz eventualele pierderi ale confirmrilor acestor cadre. Deoarece mai multe cadre i asteapt confirmarea, se utilizeaz ceasuri separate pentru diferite mesaje. Fiecare ceas este pornit la transmiterea unui cadru i este oprit la recepia confirmrii sale. La producerea unui eveniment TimeOut, toate cadrele aflate n memoria tampon a transmitorului snt retrimise.

    *Protocol cu retransmitere selectiva.

    n acest caz, fereastra receptorului este mai mare ca unu. Cnd se primete un cadru avnd numr de secven n fereastr, el este acceptat i memorat de nivelul legtur de date, nefiind comunicat utilizatorului dect dup livrarea cadrelor dinaintea sa.

    Fereastra receptorului nu poate fi egal cu cea a transmitorului aa cum

    rezult din urmtorul scenariu, pentru MaxSecv = 7 : 1. Transmitorul trimite cadrele 0..6 2. Cadrele snt recepionate i fereastra receptorului devine 7,0, 1, 2, 3, 4, 5 3. Toate confirmrile snt pierdute 4. Transmitorul retrimite cadrul 0 la time-out 5. Receptorul accept cadrul 0 aflat n fereastra i cere cadrul 7

  • 6. Transmitorul afl c toate cadrele sale au fost transmise corect i trimite cadrele 7, 0, 1, 2, 3, 4, 5 7. Receptorul accept cadrele, cu excepia lui 0, pentru care are deja un cadru recepionat. Ca urmare, ignor acest cadru, lund n locul lui dulpicatul cadrului 0 anterior.

    Eroarea se produce deoarece ferestrele succesive ale receptorului au numere de secven comune, neputndu-se face diferena ntre cadrele noi i duplicatele celor vechi. Pentru a elimina aceste suprapuneri, fereastra receptorului trebuie s fie cel mult jumtate din gama numerelor de secven.

    Fereastra receptorului determin i numrul de tampoane de recepie, ca de altfel i numrul de ceasuri necesare. Cnd canalul este puternic ncrcat, confirmrile cadrelor transmise de la staia A la staia B pot fi comunicate odat cu datele vehiculate de la B la A. Dac traficul de la B la A este sczut, se recurge la transmiterea unor cadre speciale de confirmare. Transmiterea confirmrilor nu se face imediat dup recepia unui cadru corect, ci dup un interval de timp convenabil stabilit i numai dac n acest interval nu a aprut posibilitatea transmiterii confirmrii ntr-un cadru de date de la B la A. Terminarea intervalului de timp are drept corespondent evenimentul "ReteaLibera". Pentru a mbunti eficiena transmisiei, dac receptorul detecteaz un cadru eronat, el poate transmite o confirmare negativ "nak", care reprezint o cerere explicit de retransmitere a cadrului specificat n "nak". Receptorul trebuie s evite transmiterea mai multor cadre "nak" pentru acelai cadru ateptat. 7. HDLC - Controlul de nivel nalt al legturii de date

    n aceast seciune vom examina un grup de protocoale strns legate, puin

    mai vechi, dar care sunt nc foarte utilizate. Ele sunt toate derivate din protocolul pentru legtura de date utilizat n lumea mainframe-urilor IBM, numit SDLC (Synchronous Data Link Control, rom.: protocolul de control sincron al legturii de date). Dup ce a dezvoltat SDLC, IBM l-a supus examinrii ANSI i ISO pentru acceptare ca standard SUA i, respectiv, internaional. ANSI a modificat protocolul, astfel nct acesta a devenit ADCCP (Advanced Data Communication Control Procedure, rom.: procedur de control avansat al comunicaiilor de date), iar ISO l-a modificat i a produs HDLC (High-level Data Link Control, rom.: control de nivel nalt al legturii de date). CCITT a adoptat i modificat HDLC pentru al su

  • LAP (Link Access Procedure, rom.: procedur de acces la legtur) care este parte a standardului pentru interfaa de reea X.25, dar, mai trziu l-a modificat din nou, rezultnd LAPB, n scopul de a-l face mai compatibil cu o versiune ulterioar de HDLC. Un lucru frumos n ceea ce privete standardele este c sunt multe, dintre care poi alege. n plus, dac nu i place nici unul dintre ele, poi atepta modelul care va aprea anul viitor.

    Aceste protocoale se bazeaz pe aceleai principii. Toate sunt orientate pe

    bii i folosesc inserarea de bii pentru transparena datelor. Ele difer doar n puncte minore, i totui suprtoare. Discuia care urmeaz, despre protocoalele orientate pe bii, intenioneaz a fi o introducere general. Pentru detaliile specifice fiecrui protocol, consultai definiia corespunztoare.

    Toate protocoalele orientate pe bii folosesc structura de cadru prezentat

    n fig. 3-24. Cmpul Adres este primul ca importan pentru liniile cu terminale multiple, unde el este folosit pentru a identifica unul dintre terminale. Pentru liniile punct-la-punct, el este folosit uneori pentru a deosebi comenzile de rspunsuri.

    Cmpul Control este folosit pentru numere de secven, confirmri i alte scopuri, dup cum se va arta n continuare.

    Cmpul Date poate conine informaii arbitrare. Poate avea lungime arbitrar, cu toate c eficiena sumei de control scade odat cu creterea lungimii cadrului, datorit creterii probabilitii de apariie a erorilor n rafal.

    Cmpul Suma de Control este o variant CRC (Cyclic Redundancy Code - cod ciclic redundant).

    Cadrul este delimitat cu o alt secven indicator (01111110). Pe liniile punct-la-punct inactive secvenele indicator sunt transmise continuu. Un cadru minim conine trei cmpuri i are n total 32 de bii, excluznd indicatorii de la capete.

  • Exist trei tipuri de cadre: Informaie, Supervizor i Nenumerotat. Coninutul cmpului Control pentru fiecare dintre aceste trei tipuri este prezentat n fig. 3-25. Acest protocol folosete o fereastr glisant, cu un numr de secven reprezentat pe 3 bii. n fereastr pot fi pstrate, la un moment dat, pn la apte cadre neconfirmate.

    Cmpul Secven din fig. 3-25(a) este numrul de secven al cadrului.

    Cmpul Urmtor este o confirmare ataat. Oricum, toate protocoalele ader la convenia c, n loc s ataeze numrul ultimului cadru recepionat corect, s foloseasc numrul primului cadru nerecepionat (adic urmtorul cadru ateptat). Opiunea pentru ultimul cadru primit sau urmtorul cadru recepionat este arbitrar; nu are importan ce convenie este utilizat, dac este folosit cu consecven.

    Bitul P/F nseamn Test/Final (eng.: Poll/Final). El este folosit atunci cnd un

    calculator (sau un concentrator) interogheaz un grup de terminale. Cnd este

    folosit ca P, calculatorul invit terminalul s trimit date. Toate cadrele trimise de

    terminal, cu excepia celui final, au bitul P/F setat pe P. Pentru cadrul final bitul

    este setat la F.

    n cteva dintre protocoale, bitul P/F este folosit pentru a fora cealalt

    main s trimit imediat un cadru Supervizor, n loc s atepte fluxul invers la

    care s se ataeze informaia despre fereastr. Bitul are de asemenea cteva

    utilizri minore referitoare la cadrele nenumerotate.

  • Numeroasele tipuri de cadre Supervizor sunt difereniate prin cmpul Tip.

    Tipul 0 este un cadru de confirmare (numit oficial RECEIVE READY) folosit pentru a

    indica urmtorul cadru ateptat. Cadrul este folosit atunci cnd nu exist flux

    invers care s poat fi folosit pentru ataare.

    Tipul 1 este un cadru de confirmare negativ (oficial numit REJECT). Este

    folosit pentru a indica detecia unei erori de transmisie. Cmpul Urmtor indic

    primul cadru din secven ce nu a fost recepionat corect (deci cadrul ce trebuie

    retransmis). Transmitorului i se cere s retransmit toate cadrele neconfirmate,

    ncepnd cu Urmtor-ul.

    Tipul 2 este RECEIVE NOT READY. El confirm toate cadrele, cu excepia lui

    Urmtor, exact ca RECEIVE READY, dar spune transmitorului s opreasc

    transmisia. RECEIVE NOT READY este destinat s semnaleze anumite probleme

    temporare aprute la receptor, cum ar fi lipsa zonelor tampon, i nu ca o

    alternativ la controlul fluxului cu fereastr glisant. Cnd problema a fost

    rezolvat, receptorul trimite un RECEIVE READY, REJECT sau anumite cadre de

    control.

    Tipul 3 este SELECTIVE REJECT. El cere retransmiterea, ns doar pentru

    cadrul specificat. Din acest punct de vedere este folositor atunci cnd

    dimensiunea ferestrei transmitorului este jumtate sau mai puin din

    dimensiunea spaiului secvenei. Astfel, dac receptorul dorete s pstreze cadre

    care erau n afara secvenei pentru posibila folosire ulterioar, el poate s foreze

    retransmiterea oricrui cadru, folosind SELECTIVE REJECT. HDLC i ADCCP permit

    acest tip de cadru, dar SDLC i LAPB nu l permit (adic nu exist Selective Reject)

    i cadrele de tipul 3 nu sunt definite.

    Cea de-a treia clas o reprezint cadrul Nenumerotat. El este folosit uneori

    n scopuri de control, dar poate fi folosit i pentru transportul datelor atunci cnd

    se recurge la un serviciu nesigur, neorientat pe conexiune. Diversele tipuri de

    protocoale orientate pe bii difer considerabil aici, spre deosebire de celelalte

    dou tipuri, unde erau aproape identice. Pentru a indica tipul cadrului sunt

    disponibili cinci bii, dar nu sunt folosite toate cele 32 de posibiliti.

  • Toate protocoalele furnizeaz o comand, DISC (DISConnect), care permite

    ca o main s anune c se va opri. De asemenea exist o comand ce permite ca

    o main, care tocmai s-a reconectat, s-i anune prezena i s foreze resetarea

    tuturor numerelor de secven la zero. Aceast comand poart numele de SNRM

    (Set Normal Response Mode - stabilete modul normal de rspuns). Din

    nefericire, modul normal de rspuns numai normal nu este. Este un mod

    neechilibrat (adic asimetric) n care unul din capetele liniei este master iar

    cellalt este slave. SNRM dateaz din timpurile cnd comunicaia datelor

    presupunea un terminal neinteligent comunicnd cu un calculator gazd puternic,

    ceea ce este, evident, asimetric. Pentru a face protocolul mai potrivit cazurilor n

    care cei doi parteneri sunt egali, HDLC i LAPB au o comand suplimentar, SABM

    (Set Asynchronous Balanced Mode - stabilete modul asincron echilibrat), care

    reseteaz linia i declar ambii parteneri ca fiind egali. De asemenea, aceste

    protocoale au comenzile SABME i SNRME, care sunt identice cu SABM i,

    respectiv, SNRM, cu excepia faptului c ele permit folosirea unui format extins

    pentru cadru, care utilizeaz numere de secven pe 7 bii n locul unora pe 3 bii.

    A treia comand prevzut de toate protocoalele este FRMR (FRaMe

    Reject), folosit pentru a indica sosirea unui cadru cu suma de control corect, dar

    cu semantic imposibil. Exemple de semantic imposibil sunt cadru de tipul 3

    Supervizor n LAPB, un cadru mai scurt de 32 de bii, un cadru de control

    nepermis, confirmarea unui cadru care a fost n afara ferestrei etc. Cadrele FRMR

    conin un cmp de date de 24 de bii care arat ceea ce a fost eronat la cadrul

    respectiv. Datele includ cmpul de control al cadrului eronat, parametrii ferestrei

    i o colecie de bii folosii pentru a semnala erori specifice.

    Cadrele de control pot fi pierdute sau deteriorate ca i cadrele de date, de

    aceea i ele trebuie confirmate. n acest scop este furnizat un cadru special de

    control, numit UA (Unnumbered Acknowledgement). Deoarece poate exista un

    singur cadru de control neconfirmat, nu exist niciodat ambiguiti asupra

    cadrului care este confirmat. Cadrele de control rmase sunt folosite pentru

    iniializare, interogare i raportarea strii. Exist, de asemenea, un cadru de

    control care poate conine informaii arbitrare, UI (Unnumbered Information).

  • Aceste date nu sunt livrate nivelului reea, ci sunt destinate a fi primite chiar de

    nivelul legtur de date.

    8. Servicii furnizate de nivelul retea nivelului transport

    Nivelul reea furnizeaz servicii nivelului transport la interfaa dintre cele

    dou niveluri. O ntrebare important este ce fel de servicii furnizeaz nivelul

    reea nivelului transport. Serviciile nivelului reea au fost proiectate avnd n

    vedere urmtoarele scopuri:

    1. Serviciile trebuie s fie independente de tehnologia ruterului.

    2. Nivelul transport trebuie s fie independent de numrul, tipul i topologia

    ruterelor existente.

    3. Adresele de reea disponibile la nivelul transport trebuie s foloseasc o

    schem de numerotare uniform, chiar n cadrul reelelor LAN i WAN.

    Obiectivele fiind stabilite, proiectantul nivelului reea are o mare libertate

    n a scrie specificaiile detaliate ale serviciilor oferite nivelului transport. Aceast

    libertate degenereaz adesea ntr-o aprig btlie ntre dou tabere opuse.

    Problema central a discuiei este dac nivelul reea trebuie s furnizeze servicii

    orientate pe conexiune sau servicii neorientate pe conexiune.

  • O tabr (reprezentat de comunitatea Internet) afirm c scopul ruterului

    este de a transfera pachete i nimic mai mult. n viziunea lor (bazat pe

    experiena a aproape 30 de ani de exploatare a unei reele de calculatoare n

    funciune), subreeaua este inerent nesigur, indiferent cum ar fi proiectat. De

    aceea calculatoarele gazd trebuie s accepte faptul c reeaua este nesigur i s

    fac controlul erorilor (i.e., detecia i corecia erorii) i controlul fluxului ele

    nsele.

    Acest punct de vedere duce rapid la concluzia c serviciul reea trebuie s

    fie neorientat pe conexiune, cu dou primitive SEND PACKET i RECEIVE PACKET

    i cu foarte puin n plus. n particular, nu trebuie fcut nici o operaie pentru

    controlul ordinii sau fluxului pachetelor pentru c oricum calculatorul gazd va

    face acest lucru, i, de obicei, dublarea acestor operaii aduce un ctig

    nesemnificativ. n continuare, fiecare pachet va trebui s poarte ntreaga adres

    de destinaie, pentru c fiecare pachet este independent de pachetele

    predecesoare, dac acestea exist.

    Cealalt tabr (reprezentat de companiile de telefoane) afirm c

    subreeaua trebuie s asigure un serviciu orientat pe conexiune sigur. Ei susin c

    100 de ani de experien cu sistemul telephonic mondial reprezint un ghid

    excelent. n aceast perspectiv, calitatea serviciului este elementul dominant, i

    ntr-o subreea fr conexiuni, calitatea serviciului este dificil de obinut, n special

    pentru trafic in timp real cum ar fi voce i imagine.

    9. Subretea datagrama si subretea cu circuite virtuale

    Dac este oferit un serviciu neorientat pe conexiune, atunci pachetele sunt

    trimise in subreea individual i dirijate independent de celelalte. Nu este

    necesar nici o iniializare prealabil. n acest context, pachetele sunt numite

    frecvent datagrame (datagrams) (prin analogie cu telegramele), iar subreeaua

    este numit subreea datagram (datagram subnet). Dac este folosit serviciul

    orientat conexiune, atunci, nainte de a trimite pachete de date, trebuie stabilit o

    cale de la ruterul surs la ruterul destinaie. Aceast conexiune este numit VC

  • (virtual circuit, circuit virtual), prin analogie cu circuitele fizice care se stabilesc n

    sistemul telefonic, iar subreeaua este numit subreea cu circuite virtuale

    (virtual-circuit subnet).

    S vedem cum funcioneaz o subreea datagram. S presupunem c

    procesul P1 din fig. 5-2 are un mesaj lung pentru procesul P2. El transmite mesajul

    nivelului transport, cu instruciunile de livrare ctre procesul P2 aflat pe

    calculatorul gazd H2. Codul nivelului transport ruleaz pe calculatorul gazd H1,

    de obicei n cadrul sistemului de operare. Acesta insereaz la nceputul mesajului

    un antet corespunztor nivelului transport i transfer rezultatul nivelului reea,

    probabil o alt procedur din cadrul sistemului de operare.

    S presupunem c mesajul este de patru ori mai lung dect dimensiunea

    maxim a unui pachet, aa c nivelul reea trebuie s l sparg n patru pachete, 1,

    2, 3, i 4 i s le trimit pe fiecare n parte ruterului A, folosind un protocol punct-

    la-punct, de exemplu, PPP. Din acest punct controlul este preluat de compania de

    telecomunicaii. Fiecare ruter are o tabel intern care i spune unde s trimit

    pachete pentru fiecare destinaie posibil. Fiecare intrare n tabel este o pereche

    compus din destinaie i linia de ieire folosit pentru acea destinaie. Pot fi

    folosite doar linii conectate direct. De exemplu, n fig. 5-2, A are doar dou linii de

    ieire ctre B i C astfel c fiecare pachet ce vine trebuie trimis ctre unul

    dintre aceste rutere, chiar dac ultima destinaie este alt ruter. Tabela de rutare

    iniial a lui A este prezentat n figur sub eticheta iniial.

  • Cum au ajuns la A, pachetele 1, 2 i 3 au fost memorate pentru scurt timp

    (pentru verificarea sumei de control). Apoi fiecare a fost trimis mai departe ctre

    C conform tabelei lui A. Pachetul 1 a fost apoi trimis mai departe ctre E i apoi

    ctre F. Cnd a ajuns la F, a fost ncapsulat ntr-un cadru al nivelului legtur de

    date i trimis ctre calculatorul gazd H2 prin reeaua LAN.

    Totui, ceva diferit s-a ntmplat cu pachetul 4. Cnd a ajuns la A a fost

    trimis ctre ruterul B, chiar dac i el este destinat tot lui F. Dintr-un motiv

    oarecare, A a decis s trimit pachetul 4 pe o rut diferit de cea urmat de

    primele trei. Poate c a aflat despre o congestie undeva pe calea ACE i i-a

    actualizat tabela de rutare, aa cum apare sub eticheta mai trziu. Algoritmul ce

    administreaz tabelele i ia deciziile de rutare se numete algoritm de rutare

    (routing algorithm).

    Pentru serviciile orientate conexiune, avem nevoie de o subreea cu

    circuite virtuale. S vedem cum funcioneaz aceasta. Ideea care se st la baza

    circuitelor virtuale este evitarea alegerii unei noi ci (rute) pentru fiecare pachet

    trimis, ca n fig. 5-2. n schimb, atunci cnd se stabilete o conexiune, se alege o

    cale ntre maina surs i maina destinaie, ca parte component a iniializrii

    conexiunii i aceasta este memorat n tabelele ruterelor. Acea cale este folosit

    pentru tot traficul de pe conexiune, exact n acelai mod n care funcioneaz

    sistemul telefonic. Atunci cnd conexiunea este eliberat, este nchis i circuitul

    virtual. n cazul serviciilor orientate conexiune, fiecare pachet poart un

    identificator care spune crui circuit virtual i aparine.

  • De exemplu, s considerm situaia din fig. 5-3. Aici calculatorul gazd H1 a

    stabilit conexiunea 1 cu calculatorul gazd H2. Aceasta este memorat ca prima

    intrare n fiecare tabel de rutare. Prima linie a tabelei lui A spune c dac un

    pachet purtnd identificatorul de conexiune 1 vine de la H1, atunci trebuie trimis

    ctre ruterul C, dndu-i-se identificatorul de conexiune 1. Similar, prima intrare a

    lui C dirijeaz pachetul ctre E, tot cu identificatorul de conexiune 1.

    Acum s vedem ce se ntmpl dac H3 vrea, de asemenea, s stabileasc o

    conexiune cu H2. Alege identificatorul de conexiune 1 (deoarece iniializeaz

    conexiunea i aceasta este singura conexiune) i indic subreelei s stabileasc

    circuitul virtual. Aceasta conduce la a doua linie din tabele. Observai c apare un

    conflict deoarece dei A poate distinge uor pachetele conexiunii 1 de la H1 de

    pachetele conexiunii 1 de la H3, C nu poate face asta. Din acest motiv, A asociaz

    un identificator de conexiune diferit pentru traficul de ieire al celei de a doua

    conexiuni. Pentru evitarea conflictelor de acest gen ruterele trebuie s poat

    nlocui identificatorii de conexiune n pachetele care pleac. n unele contexte,

    aceasta se numete comutarea etichetelor (label switching).

    Comparaie ntre subreele cu circuite virtuale i subreele datagram

  • 10. Algoritmi de dirijare

    Algoritmul de dirijare (routing algorithm) este acea parte a software-ului

    nivelului reea care rspunde de alegerea liniei de ieire pe care trebuie trimis un

    pachet recepionat. Dac subreeaua folosete intern datagrame, aceast decizie

    trebuie luat din nou pentru fiecare pachet recepionat, deoarece este posibil ca

    cea mai bun rut s se fi modificat ntre timp. Dac subreeaua folosete circuite

    virtuale, deciziile de dirijare sunt luate doar la iniializarea unui nou circuit virtual.

    Dup aceea pachetele de date vor urma doar calea stabilit anterior. Acest ultim

    caz este numit uneori dirijare de sesiune (session routing), deoarece calea rmne

    n funciune pentru o ntreag sesiune utilizator (de exemplu o sesiune de

    conectare de la un terminal -login- sau un transfer de fiiere).

    Uneori este util s se fac distincia ntre dirijare, care nseamn alegerea

    cii care va fi folosit, i retransmitere, care se refer la ceea ce se ntmpl atunci

    cnd sosete un pachet. Se poate spune despre un ruter c ruleaz intern dou

    procese. Unul dintre ele preia fiecare pachet care sosete, cutnd n tabela de

  • dirijare linia de ieire folosit pentru el. Acesta este procesul de retransmitere

    (forwarding). Cellalt proces se ocup de completarea i actualizarea tabelei de

    rutare. Aici intervine algoritmul de dirijare.

    Indiferent dac ruta se alege independent pentru fiecare pachet sau doar la

    stabilirea unei noi conexiuni, un algoritm de dirijare trebuie s aib anumite

    proprieti: corectitudine, simplitate, robustee, stabilitate, echitate, optimalitate.

    Algoritmii de dirijare pot fi grupai n dou mari clase: neadaptivi i

    adaptivi. Algoritmii neadaptivi (nonadaptive algorithms) nu i bazeaz deciziile

    de dirijare pe msurtori sau estimri ale traficului i topologiei curente. Astfel,

    alegerea cii folosite pentru a ajunge de la nodul I la nodul J (oricare ar fi I i J) se

    calculeaz n avans, off-line i parvine ruterului la iniializarea reelei. Aceast

    procedur se mai numete i dirijare static (static routing).

    Algoritmii adaptivi (adaptive algorithms), prin contrast, i modific

    deciziile de dirijare pentru a reflecta modificrile de topologie i de multe ori i pe

    cele de trafic. Algoritmii adaptivi difer prin locul de unde i iau informaia (de

    exemplu local, de la un ruter vecin sau de la toate ruterele), prin momentul la

    care schimb rutele (de exemplu la fiecare T secunde, cnd se schimb

    ncrcarea sau cnd se schimb topologia) i prin metrica folosit pentru

    optimizare (de exemplu distana, numrul de salturi sau timpul estimat pentru

    tranzit).

    Algoritmi statici:

    - Algoritmul lui Dijkstra: Fiecare nod este etichetat (n paranteze) cu distana

    de la nodul surs pn la el, de-a lungul celei mai bune ci cunoscute. Iniial

    nu se cunoate nici o cale, aa c toate nodurile vor fi etichetate cu infinit.

    Pe msur ce se execut algoritmul i se gsesc noi ci, etichetele se pot

    schimba, reflectnd ci mai bune. O etichet poate fi fie temporar, fie

    permanent. Iniial toate etichetele sunt temporare. Atunci cnd se

    descoper c o etichet reprezint cea mai scurt cale posibil de la surs

    ctre acel nod, ea devine permanent i nu se mai schimb ulterior.

  • - Inundarea: fiecare pachet recepionat este trimis mai departe pe fiecare

    linie de ieire, cu excepia celei pe care a sosit. Este evident c inundarea

    genereaz un mare numr de pachete duplicate, de fapt un numr infinit

    dac nu se iau unele msuri pentru a limita acest proces.

    o O astfel de msur este pstrarea unui contor de salturi n antetul

    fiecrui pachet, contor care este decrementat la fiecare salt i care

    face ca pachetul s fie distrus cnd contorul atinge valoarea zero.

    Ideal ar fi ca acest contor s fie iniializat cu lungimea cii de la surs

    la destinaie. Dac emitorul nu cunoate lungimea cii, poate

    iniializa contorul la valoarea cea mai defavorabil, adic diametrul

    subreelei.

    o O metod alternativ pentru limitarea inundrii este identificarea

    pachetelor care au fost deja inundate, pentru a prentmpina

    trimiterea lor a doua oar. O cale pentru a realiza acest scop este ca

    ruterul surs s plaseze un numr de secven n fiecare pachet pe

    care l primete de la calculatorul gazd asociat. Fiecare ruter

    necesit meninerea unei liste pentru fiecare ruter surs, cu

    numerele de secven provenite de la acel ruter surs i care au fost

    deja trimise mai departe. Dac sosete un pachet care se afl n list,

    el nu mai este trimis mai departe. Pentru a limita creterea lungimii

    listei, fiecare list trebuie nsoit de un contor, k, care semnific

    faptul c toate numerele de secven pn la k au fost deja tratate.

    La recepia unui pachet este uor s se verifice dac este un duplicat,

    caz n care este distrus. Evident, lista cu numere mai mici dect k nu

    este necesar, deoarece k o rezum.

    - Inundarea selectiva: ruterele nu trimit fiecare pachet recepionat pe

    fiecare legtur de ieire, ci doar pe acele linii care duc aproximativ n

    direcia potrivit. De obicei sunt puine motive pentru a trimite un pachet

    spre partea de vest a reelei folosind o legtur spre est, dect dac

    topologia reelei este cu totul deosebit i ruterul este sigur de acest lucru.

    Algoritmi dinamici:

  • - Algoritmul de dirijare cu vectori distan (distance vector routing)

    o Presupune c fiecare ruter menine o tabel (de exemplu un vector)

    care pstreaz cea mai bun distan cunoscut spre fiecare

    destinaie i linia care trebuie urmat pentru a ajunge acolo. Aceste

    tabele sunt actualizate prin schimbul de informaii ntre nodurile

    vecine.

    o Algoritmul de dirijare cu vectori distan este cunoscut i sub alte

    nume, cel mai des algoritmul distribuit de dirijare Bellman-Ford i

    algoritmul Ford-Fulkerson, dup numele cercettorilor care l-au

    propus.

    o n dirijarea pe baza vectorilor distan, fiecare ruter pstreaz o

    tabel de dirijare coninnd cte o intrare pentru fiecare ruter din

    subreea. Aceast intrare are dou pri: linia de ieire preferat care

    se folosete pentru destinaia respectiv i o estimare a timpului sau

    distanei pn la acea destinaie. Metrica folosit poate fi numrul de

    salturi, ntrzierea n milisecunde, numrul total de pachete care

    ateapt n cozi de-a lungul cii, sau ceva asemntor.

    o Se presupune c ruterul cunoate distana spre fiecare dintre

    vecinii si. Dac se folosete metrica salturilor, distana este doar de

    un salt. Dac metrica folosit este cea a lungimii cozilor de ateptare,

    ruterul examineaz pur i simplu lungimile acestor cozi. Dac metrica

    este cea a ntrzierilor, ruterul o poate msura direct prin pachete

    speciale ECHO, n care receptorul va marca doar timpul curent

    (tampila de timp) i le va trimite napoi ct mai repede posibil.

    o Ca exemplu, s presupunem c se folosete metrica ntrzierilor i c

    ruterul cunoate ntrzierea spre fiecare dintre vecinii si. O dat la

    fiecare T msec fiecare ruter trimite spre fiecare vecin o list a

    estimrilor proprii spre fiecare destinaie. De asemenea el

    recepioneaz o list similar de la fiecare vecin. S presupunem c

    una dintre aceste tabele tocmai a sosit de la vecinul X, cu Xi fiind

    estimarea lui X despre ct timp este necesar pentru a ajunge la

    ruterul i. Dac ruterul tie c ntrzierea spre X este m msec, el tie

    de asemenea c poate atinge ruterul i trecnd prin X n Xi + m msec.

  • Fcnd aceste calcule pentru fiecare vecin, un ruter poate stabili care

    estimare pare a fi cea mai bun, pentru a folosi aceast estimare,

    mpreun cu linia corespunztoare n noua tabel de dirijare. Este de

    remarcat faptul c vechea tabel de dirijare nu intervine n calcule.

    o Problema numararii la infinit

    Dirijarea folosind vectori distan funcioneaz n teorie, ns n

    practic are o limitare important: dei ea converge spre

    rezultatul corect, o face foarte lent. n particular, ea

    reacioneaz rapid la vetile bune, dar foarte lent la cele rele.

    S considerm un ruter care are un cel mai bun drum spre

    destinaia X foarte lung. Dac la urmtorul schimb de

    informaii, vecinul su A raporteaz brusc o ntrziere mic

    spre X, ruterul va comuta i va folosi linia spre A pentru a dirija

    traficul spre X. Astfel, ntr-o singur schimbare a vectorului,

    vestea bun a fost luat n considerare. ntr-o subreea avnd

    calea cea mai lung de lungime N salturi, dup N schimburi

    fiecare ruter va afla despre liniile i ruterele nou aprute.

    S considerm acum situaia n care toate liniile i ruterele sunt

    iniial n funciune. Ruterele B, C, D i E au distanele spre A

    respectiv de 1, 2, 3, 4. Brusc, A se oprete sau, alternativ, linia

    dintre A i B este ntrerupt, ceea ce reprezint efectiv acelai

    lucru din punctul de vedere al lui B.

    La primul schimb de pachete, B nu primete nimic de la A. Din

    fericire, C spune: Nici o problem. Eu tiu o cale spre A de

    lungime 2. ns B nu tie c aceast cale a lui C trece prin B

    nsui. Dup cunotinele lui B, C ar putea avea zece linii, toate

    cu ci separate de lungime 2 spre A. Prin urmare B va crede c

    poate ajunge la A prin C pe o cale de lungime 3. D i E nu i

    actualizeaz intrrile proprii pentru A la primul schimb.

    La al doilea schimb, C remarc faptul c fiecare dintre vecinii

    si pretinde a avea o cale de lungime 3 spre A. El va alege la

    ntmplare unul dintre aceti vecini i va nregistra noua

    distan spre A ca fiind 4.

  • Din aceast figur se poate deduce de ce vetile rele circul

    mai lent: orice ruter va avea ntotdeauna o valoare cu cel mult

    unu mai mare dect valoarea minim a vecinilor si. Treptat,

    toate ruterele vor ajunge la infinit, ns numrul de schimburi

    necesar depinde de valoarea numeric folosit pentru a

    reprezenta valoarea infinit. Din aceast cauz este recomandat

    s se aleag infinitul, ca fiind lungimea celei mai mari ci, plus

    1. Dac metrica este ntrzierea n timp, atunci nu este definite

    nici o limit superioar, astfel nct este necesar o valoare

    mare pentru a preveni considerarea unui drum cu ntrziere

    mare ca fiind un drum defect. Nu este deloc surprinztor c

    aceast problem este numit problema numrrii la infinit (the

    count to infinity problem).

    Miezul problemei este c atunci cnd X i spune lui Y c are o

    cale spre o destinaie, Y nu are de unde s tie dac se afl el

    nsui pe acea cale.

    - Dirijarea folosind starea legaturilor

    o Ideea algoritmului bazat pe starea legturilor este simpl i poate fi

    formulat n 5 puncte. Fiecare ruter trebuie s fac urmtoarele:

    S descopere care sunt vecinii si i afle adresele de reea ale

    acestora.

    S msoare ntrzierea sau costul pn la fiecare din vecinii si.

    S pregteasc un pachet prin care anun pe toat lumea c

    tocmai a terminat de cules datele despre vecini.

    S trimit acest pachet ctre toate celelalte rutere.

    S calculeze cea mai scurt cale spre fiecare ruter.

    o Ca urmare, ntreaga topologie i toate ntrzierile sunt msurate

    experimental i distribuite spre fiecare ruter. Apoi se poate rula

  • algoritmul lui Dijkstra pentru a afla cea mai scurt cale ctre fiecare

    ruter.

    o Determinarea vecinilor: Cnd un ruter este pus n funciune, prima sa

    sarcin este s afle care sunt vecinii si. El realizeaz aceasta prin

    trimiterea unui pachet special HELLO pe fiecare linie prin care este

    legat la alt ruter. Ruterul de la cellalt capt trebuie s rspund

    anunnd ntr-un pachet identitatea sa. Aceste nume trebuie s fie

    unice global, pentru c dac mai trziu un ruter afl c trei rutere

    sunt conectate toate la F, este esenial ca acesta s poat determina

    dac cele trei se refer la acelai F.

    o Msurarea costului liniei:

    Algoritmul de dirijare bazat pe starea legturilor cere ca fiecare

    ruter s tie, sau cel puin s aib o estimare rezonabil, a

    ntrzierii ctre fiecare dintre vecinii si. Cel mai direct mod de

    a afla acest lucru este de a trimite un pachet special ECHO pe

    linie, cernd ca ruterul partener s-l trimit napoi imediat.

    Msurnd timpul n care pachetul se ntoarce (round-trip time)

    i mprindu-l la doi, ruterul iniiator poate avea o estimare

    rezonabil a ntrzierii. Pentru rezultate i mai bune, testul

    poate fi repetat de mai multe ori, folosindu-se apoi valoarea

    medie obinut. Bineneles, aceast metod presupune

    implicit c ntrzierile sunt simetrice, dar nu mereu este aa.

    O problem interesant este dac s se considere sau nu

    ncrcarea reelei la msurarea ntrzierii. Pentru a ine cont de

    ncrcare, timpul de revenire trebuie msurat din momentul n

    care pachetul ECHO este pus n coad. Pentru a ignora

    ncrcarea, ceasul se poate porni n momentul n care pachetul

    ECHO ajunge pe prima poziie din coad.

    o Construirea pachetelor cu starea legturilor:

    De ndat ce a fost colectat informaia necesar pentru

    realizarea schimbului, se poate trece la pasul urmtor, fiecare

    ruter construind un pachet care conine toate datele. Pachetul

    ncepe cu identitatea expeditorului, urmat de un numr de

  • secven, vrst i o list a vecinilor. Pentru fiecare vecin se

    specific ntrzierea asociat.

    Construirea pachetelor cu starea legturilor se face uor.

    Partea mai dificil este s se determine cnd s fie construite

    ele. O posibilitate este ca ele s fie construite periodic, adic la

    intervale regulate. O alt posibilitate este atunci cnd se

    produce un eveniment semnificativ, cum ar fi scoaterea din

    funciune a unui vecin sau a unei linii, sau repunerea lor n

    funciune, sau modificarea semnificativ a proprietilor lor.

    o Distribuirea pachetelor cu starea legturilor:

    Cea mai complicat parte a algoritmului este distribuirea sigur

    a pachetelor cu starea legturilor. De ndat ce pachetele sunt

    distribuite i instalate, ruterele care primesc primele pachete

    i vor schimba rutele. n consecin, rutere diferite ar putea

    folosi versiuni diferite ale topologiei, ceea ce poate duce la

    apariia unor inconsistene, bucle, maini inaccesibile sau a

    altor probleme.

    Ideea fundamental este folosirea inundrii pentru a distribui

    pachetele cu starea legturilor. Pentru a avea controlul

    inundrii, fiecare pachet conine un numr de secven care

    este incrementat la fiecare nou pachet trimis. Ruterele

    pstreaz evidena tuturor perechilor (ruter surs, numr

    secven) pe care le vd. La sosirea unui nou pachet cu starea

    legturilor, el este cutat n lista pachetelor deja vzute. Dac

    pachetul este nou, el este retrimis pe toate liniile, cu excepia

    celei pe care a sosit. Dac este un duplicat, pachetul este

    distrus. Dac pachetul sosit are un numr de secven mai mic

    dect cel mai mare numr de secven detectat, atunci el este

    rejectat ca fiind nvechit.

    Acest algoritm are cteva probleme, dar ele sunt tratabile. n

    primul rnd, dac numerele de secven ating valoarea

    maxim posibil i rencep de la valori mici, se pot produce

    confuzii. Soluia este folosirea numerelor de secven pe 32

  • bii. Considernd un pachet de starea legturilor pe secund,

    ar trebui 137 ani pentru a se rencepe de la valori mici, astfel

    nct aceast posibilitate poate fi ignorat.

    n al doilea rnd, dac un ruter se defecteaz, el va pierde

    evidena numerelor de secven. Dac va rencepe de la 0,

    urmtorul pachet va fi rejectat ca duplicat.

    n al treilea rnd, dac numrul de secven este alterat i se

    recepioneaz 65540 n loc de 4 (eroare de modificare a unui

    bit), pachetele de la 5 la 65540 vor fi rejectate ca fiind

    nvechite, deoarece se consider c numrul de secven

    curent este 65540.

    Soluia tuturor acestor probleme este includerea vrstei

    pachetului dup numrul de secven i decrementarea sa la

    fiecare secund. Cnd vrsta ajunge la zero, informaia de la

    ruterul respective este distrus. n mod normal un nou pachet

    apare, s zicem, la fiecare 10 sec., astfel nct informaia de la

    ruter expir doar dac ruterul este oprit (sau dac ase

    pachete consecutive s-au pierdut, un lucru extrem de

    improbabil). Cmpul Age este decrementat de asemenea de

    fiecare ruter la nceputul procesului de inundare, pentru a se

    asigura c nici un pachet nu se poate pierde sau nu poate

    supravieui o perioad nelimitat (un pachet avnd vrsta zero

    este distrus).

    o Calcularea noilor rute:

    De ndat ce un ruter a acumulat un set complet de pachete cu

    starea legturilor, el poate construi graful ntregii subreele,

    deoarece fiecare legtur este reprezentat. De fapt, fiecare

    legtur este reprezentat de dou ori, o dat pentru fiecare

    direcie. Cele dou valori pot fi mediate sau folosite separat.

    Acum poate fi folosit local algoritmul lui Dijkstra, pentru a

    construi cea mai scurt cale ctre toate destinaiile posibile.

    Rezultatul acestui algoritm poate fi trecut n tabelele de

    dirijare, iar apoi operaiile normale pot fi reluate.

  • 11. Dirijarea prin difuzare

    n unele aplicaii, calculatoarele gazd au nevoie s trimit mesaje ctre mai

    multe sau ctre toate celelalte calculatoare gazd. De exemplu, un serviciu de

    distribuire a rapoartelor meteorologice, de actualizare a cursului aciunilor sau

    transmisiuni radio n direct ar putea funciona mai bine prin difuzarea datelor

    ctre toate mainile, fiind la latitudinea celor interesate de date s le

    recepioneze. Trimiterea simultan a unui pachet ctre toate destinaiile se

    numete difuzare (broadcast); mai multe metode pentru realizarea ei au fost

    propuse.

    O metod de difuzare care nu are cerine speciale pentru subreea este ca

    sursa s trimit un pachet distinct ctre fiecare destinaie. Metoda este nu numai

    consumatoare de lime de band, dar ea cere ca sursa s dein o list complet

    a tuturor destinaiilor. S-ar putea ca n practic aceasta s fie singura metod

    utilizabil, ns ea este metoda cea mai puin dorit.

    Inundarea este un alt candidat evident. Dei inundarea este nepotrivit

    pentru comunicaia obinuit capt la capt, pentru difuzare ar trebui luat serios

    n considerare, mai ales dac nici una dintre metodele ce vor fi descrise n

    continuare nu este aplicabil. Problema folosirii inundrii ca metod de difuzare

    este aceeai cu problema ivit la folosirea sa ca algoritm de dirijare capt la capt:

    genereaz prea multe pachete i consum lime de band prea mare.

    Al treilea algoritm este dirijarea multidestinaie (multidestination routing).

    Dac se folosete aceast metod, fiecare pachet conine fie o list a destinaiilor,

    fie o hart de bii care indic destinaiile dorite. Atunci cnd un pachet ajunge la

    un ruter, ruterul verific toate destinaiile pentru adetermina setul liniilor de

    ieire pe care trebuie trimis pachetul. (O linie de ieire este selectat dac este

    calea cea mai bun pentru cel puin o destinaie.) Ruterul genereaz o nou copie

    a pachetului pentru fiecare linie de ieire folosit i include n fiecare pachet doar

    acele destinaii care folosesclinia respectiv. Efectul este partiionarea mulimii

    destinaiilor ntre liniile de ieire. Dup un numr suficient de salturi, fiecare

    pachet va conine o singur destinaie i poate fi tratat ca un pachet normal.

    Dirijarea multidestinaie este asemntoare trimiterii separate a mai multor

  • pachete ctre adresele destinaie, cu excepia faptului c atunci cnd mai multe

    pachete trebuie s urmeze aceeai cale, unul dintre ele pltete tot drumul, iar

    celelalte cltoresc gratuit.

    Al patrulea algoritm de difuzare utilizeaz explicit arborele de scufundare al

    ruterului care iniiaz difuzarea sau orice alt arbore de acoperire util. Un arbore

    de acoperire (spanning tree) este un subset al subreelei care include toate

    ruterele i nu conine bucle. Dac fiecare ruter cunoate care din liniile sale

    particip la arborele de acoperire, el poate copia un pachet de difuzare

    recepionat pe toate liniile de ieire care fac parte din arborele de acoperire, cu

    excepia celei pe care a fost recepionat. Aceast metod asigur o utilizare

    deosebit de eficient a limii de band, genernd numrul minim de pachete

    necesare pentru a rezolva problema. Singura problem este c, pentru a fi

    aplicabil, fiecare ruter trebuie s dein cunotine despre un anume arbore de

    acoperire. Uneori aceast informaie este disponibil (de exemplu la dirijarea

    bazat pe starea legturilor), iar alteori nu este disponibil (de exemplu la

    dirijarea cu vectori distan).

    Ultimul nostru algoritm cu difuzare este o ncercare de a aproxima

    comportamentul precedentului, chiar i atunci cnd ruterele nu tiu absolut nimic

    despre arborele de acoperire. Ideea, numit trimiterea pe calea invers (reverse

    path forwarding) este remarcabil de simpl odat ce a fost indicat. Cnd un

    pachet de difuzare ajunge la un ruter, acesta verific dac pachetul a sosit pe linia

    pe care se trimit de obicei pachete ctre sursa difuzrii. Dac este aa, este o

    ans foarte mare ca nsui pachetul de difuzare s fi urmat cea mai bun cale,

    fiind astfel prima copie care ajunge la ruter. Aceasta fiind situaia, ruterul trimite

    pachetul pe toate liniile de ieire, cu excepia celei pe care a sosit. Dac ns

    pachetul a sosit pe alt linie dect cea preferat pentru a ajunge la surs, pachetul

    este distrus, fiind considerat un posibil duplicat.

    12. Dirijarea cu trimitere multipla (multicast)

    Unele aplicaii necesit ca procese aflate la mari distane unele de altele s

    lucreze n grup, de exemplu, un grup de procese care implementeaz o baz de

    date distribuit. n aceste situaii, este adesea necesar ca un proces s trimit un

  • mesaj ctre toi ceilali membri ai grupului. Dac grupul este mic, el poate trimite

    fiecrui partener un mesaj capt la capt. Dac grupul este mare, aceast

    strategie este costisitoare. Uneori se poate folosi difuzarea, dar folosirea difuzrii

    pentru a anuna 1000 de maini dintr-o reea cu un milion de noduri este

    ineficient, deoarece majoritatea receptorilor nu sunt interesai de mesaj (sau

    chiar mai ru, sunt foarte interesai, dar nu trebuie s vad mesajul). De aceea,

    avem nevoie de o modalitate de a trimite mesaje spre grupuri bine definite.

    Trimiterea unui mesaj ctre un astfel de grup se numete multicasting, iar

    algoritmul de dirijare asociat se numete dirijare multicast (multicast routing). n

    aceast seciune, vom descrie o modalitate de a realiza dirijarea multicast.

    Dirijarea multicast necesit managementul grupului. Trebuie s existe

    modaliti de a crea i distruge grupuri i de a permite proceselor s intre n

    grupuri sau s le prseasc. Cum se realizeaz aceste funcii nu este treaba

    algoritmului de dirijare. Important pentru algoritmul de dirijare este c atunci

    cnd un proces se ataeaz unui grup, el trebuie s informeze gazda sa despre

    aceasta. Este important ca ruterele s tie cror grupuri le aparin calculatoarele

    gazd asociate. Fie calculatoarele gazd trebuie s anune ruterul asociat la

    producerea unei modificri n alctuirea grupurilor, fie ruterul trebuie s

    interogheze periodic aceste calculatoare gazd. n ambele cazuri, ruterul afl din

    ce grupuri fac parte calculatoarele gazd. Ruterele i informeaz vecinii, astfel c

    informaia se propag prin subreea.

    Pentru a realiza dirijarea multicast, fiecare ruter calculeaz arborele de

    acoperire care acoper toate celelalte rutere din subreea. Atunci cnd un proces

    trimite un pachet multicast ctre un grup, primul ruter i examineaz arborele de

    acoperire i l reteaz, eliminnd toate liniile care nu conduc ctre calculatoare

    gazd, membre ale grupului. Pachetele multicast sunt dirijate doar de-a lungul

    arborelui de acoperire corespunztor.

    Sunt posibile mai multe moduri de retezare a arborelui de acoperire. Cel

    mai simplu se poate folosi dac se utilizeaz dirijarea bazat pe starea legturilor

    i fiecare ruter cunoate ntreaga topologie a subreelei, inclusiv apartenena

    calculatoarelor gazd la grupuri. Atunci arborele poate fi retezat pornind de la

  • sfritul fiecrei ci, mergnd spre rdcin i eliminnd toate ruterele care nu

    aparin grupului respectiv.

    n cazul dirijrii folosind vectori distan, poate fi aplicat o alt strategie de

    retezare a arborelui. Algoritmul de baz folosit este trimiterea pe calea invers.

    Oricum, ori de cte ori un ruter fr nici un calculator gazd interesat de un

    anume grup i fr nici o conexiune la alte rutere primete un mesaj multicast

    pentru acel grup, el va rspunde cu un mesaj PRUNE (retezare), anunnd

    expeditorul s nu i mai trimit mesaje multicast pentru acel grup. Cnd un ruter

    care nu are printre calculatoarele gazd nici un membru al vreunui grup primete

    astfel de mesaje pe toate liniile sale, el poate de asemenea s rspund cu un

    mesaj PRUNE. n acest fel subreeaua este retezat recursiv.

    13. Dirijarea pentru calculatoare gazd mobile

    Calculatoarele gazd care nu se mic niciodat se numesc staionare. Ele

    sunt conectate la reea prin fire de cupru sau fibre optice. Prin contrast, putem

    distinge alte dou categorii de calculatoare gazd. Calculatoarele gazd

    migratoare sunt de fapt calculatoare gazd staionare, dar care, din cnd n cnd,

    se mut dintr-un loc fixat n altul i care folosesc reeaua doar atunci cnd sunt

    conectate fizic. Calculatoarele gazd cltoare efectueaz calcule n timp ce se

    deplaseaz i doresc s menin legtura n timpul deplasrii. Vom folosi termenul

    gazd mobil pentru a desemna fiecare dintre ultimele dou categorii, adic toate

    calculatoarele gazd care sunt departe de cas i doresc totui s fie conectate.

    Fiecare domeniu are unul sau mai muli ageni pentru strini (foreign

    agent), procese ce in evidena tuturor gazdelor mobile care viziteaz domeniul.

    n plus, fiecare domeniu are un agent local (local agent) care ine evidena

    calculatoarelor gazd cu domiciliul n domeniul respectiv, dar care momentan

    viziteaz alte domenii.

    Cnd un nou calculator gazd ptrunde ntr-un domeniu, fie prin

    conectarea la acesta (ataarea fizic la LAN), fie prin plimbarea printr-o celul,

  • trebuie s se nregistreze la agentul pentru strini din domeniul respectiv.

    Procedura de nregistrare se desfoar de obicei astfel:

    - Periodic, fiecare agent pentru strini difuzeaz un pachet anunndu-i

    existena i adresa. Un utilizator mobil nou sosit trebuie s atepte unul

    dintre aceste mesaje, ns dac niciunul nu sosete ntr-un interval

    rezonabil de timp, calculatorul mobil poate difuza un pachet care spune:

    Este vreun agent pentru strini prin zon?

    - Calculatorul mobil se nregistreaz la agentul pentru strini preciznd

    adresa sa permanent, adresa actual a nivelului legtur de date, precum

    i unele informaii de securitate.

    - Agentul pentru strini contacteaz apoi agentul local al domeniului din care

    provine utilizatorul mobil i i spune: Unul dintre calculatoarele tale gazd

    se afl chiar aici. Mesajul agentului pentru strini ctre agentul local

    conine adresa de reea a agentului pentru strini. El mai conine de

    asemenea i informaia de securitate, pentru a convinge agentul local c

    gazda mobil este ntr-adevr acolo.

    - Agentul local examineaz informaia de securitate, care conine i o

    tampil de timp, pentru a dovedi c a fost generat n ultimele cteva

    secunde. Dac este mulumit, atunci anun agentul pentru strini c poate

    trece la aciune.

    - Cnd agentul pentru strini primete confirmarea de la agentul local, el

    creeaz o nou intrare n tabela sa i anun utilizatorul mobil c a fost

    nregistrat.

    Ideal, atunci cnd un calculator gazd prsete un domeniu, acest lucru

    trebuie anunat, pentru a fi scos din eviden, ns muli utilizatori pur i simplu

    nchid calculatorul cnd termin.

    Agentul local face dou lucruri cand primeste un pachet pentru gazda

    mobila. n primul rnd, ncapsuleaz pachetul n cmpul de informaie util

    (payload) al unui pachet de trimis, pe care l expediaz apoi ctre agentul pentru

    strini. Acest mecanism se numete tunelare. Dup ce recepioneaz pachetul

  • ncapsulat, agentul pentru strini extrage pachetul iniial din cmpul payload i l

    trimite ctre calculatorul gazd mobil drept cadru al nivelului legtur de date.

    n al doilea rnd, agentul local anun expeditorul mesajului ca de acum

    ncolo s trimit pachetele adresate gazdei mobile ncapsulndu-le n cmpul de

    informaie util (payload) al unor pachete trimise explicit agentului pentru strini,

    n loc s le trimit la adresa de domiciliu a calculatorului gazd mobil. Pachetele

    urmtoare vor putea fi dirijate direct ctre utilizator, prin intermediul agentului

    pentru strini, evitnd trecerea prin locaia de domiciliu.

    14. Dirijarea n reele AD HOC

    Reelele de noduri ce ntmpltor se afl aproape unul de cellalt sunt

    numite reele ad hoc (ad hoc network) sau MANET (Mobile Ad hoc NETworks,

    reele mobile ad hoc).

    Au fost propui diferii algoritmi de dirijare pentru reelele ad hoc. Unul

    dintre cei mai interesani este algoritmul de dirijare AODV (Ad hoc On-demand

    Distance Vector, vectori distan ad hoc la cerere). Este o rud ndeprtat a

    algoritmului cu vectori distan Bellman-Ford dar adaptat pentru un mediu mobil

    i care ia n considerare limitele lrgimii de band i durata scurt de funcionare

    a unei baterii n acest mediu. O alt caracteristic neobinuit este faptul c

    acesta este un algoritm la cerere, adic determin o cale ctre o anumit

    destinaie doar atunci cnd cineva dorete s trimit un pachet ctre acea

    destinaie.

    La orice moment de timp, o reea ad hoc poate fi descris de un graf de noduri (rutere + gazde). Dou noduri sunt conectate (de exemplu, exist un arc ce le unete n graf) dac pot comunica direct folosind radioul. Algoritmul AODV menine o tabel n fiecare nod, n care cheia este destinaia, i care d informaii despre acea destinaie, inclusiv crui vecin trebuie trimise pachetele pentru a ajunge la destinaie. Operatii care se realizeaza in nodurile intermediare atat pe ruta de la dus, cat si la intoarcere :

  • 15. Protocolul IP

    O datagram IP const dintr-o parte de antet i o parte de text. Antetul are

    o parte fix de 20 de octei i o parte opional cu lungime variabil. Formatul

    antetului este prezentat n fig. 5-53. El este transmis n ordinea big endian (cel mai

    semnificativ primul): de la stnga la dreapta, ncepnd cu bitul cel mai

    semnificativ al cmpului Versiune. (Procesorul SPARC este de tip big endian;

    Pentium este de tip little endian - cel mai puin semnificativ primul). Pe mainile

    de tip little endian, este necesar o conversie prin program att la transmisie ct

    i la recepie.

    Cmpul Versiune memoreaz crei versiuni de protocol i aparine

    datagrama. Prin includerea unui cmp versiune n fiecare datagram, devine

    posibil ca tranziia ntre versiuni s dureze ani de zile, cu unele maini rulnd

    vechea versiune, iar altele rulnd-o pe cea nou. La ora actual are loc o tranziie

    de la IPv4 la IPv6, care deja dureaz de civa ani i n nici un caz nu s-a apropiat

    de final.

  • Din moment ce lungimea antetului nu este constant, un cmp din antet,

    IHL, este pus la dispoziie pentru a spune ct de lung este antetul, n cuvinte de 32

    de octei. Valoarea minim este 5, care se aplic atunci cnd nu sunt prezente

    opiuni. Valoarea maxim a acestui cmp de 4 bii este 15, ceea ce limiteaz

    antetul la 60 de octei i, astfel, cmpul de opiuni la 40 de octei. Pentru unele

    opiuni, cum ar fi cea care nregistreaz calea pe care a mers un pachet, 40 de

    octei sunt mult prea puini, fcnd aceast opiune nefolositoare.

    Cmpul Tip serviciu este unul dintre puinele cmpuri care i-a schimbat

    sensul (oarecum) dea lungul anilor. A fost i este n continuare menit s

    diferenieze diferitele clase de servicii. Sunt posibile diferite combinaii de

    fiabilitate i vitez. Pentru vocea digitizat, livrarea rapid are prioritate fa de

    transmisia corect. Pentru transferul de fiiere, transmisia fr erori este mai

    important dect transmisia rapid.

    La nceput, cmpul de 6 bii coninea (de la stnga la dreapta), un cmp

    Preceden de trei bii i trei indicatori, D, T i R. Cmpul Preceden reprezint

    prioritatea, de la 0 (normal) la 7 (pachet de control al reelei). Cei trei bii

    indicatori permiteau calculatorului gazd s specifice ce l afecteaz cel mai mult

    din mulimea {Delay (ntrziere), Throughput (Productivitate), Reliability

    (Fiabilitate)}. n teorie, aceste cmpuri permit ruterelor s aleag ntre, de

    exemplu, o legtur prin satelit cu o productivitate mare i o ntrziere mare sau o

    linie dedicat cu o productivitate sczut i o ntrziere mic. n practic, ruterele

    curente ignor adesea ntregul cmp Tip serviciu.

    Pn la urm, IETF a cedat i a modificat puin cmpul pentru a-l adapta la

    servicii difereniate. ase dintre bii sunt folosii pentru a indica creia dintre

    clasele de servicii descrise mai devreme i aparine pachetul. Aceste clase includ

    patru prioriti de introducere n coad, trei probabiliti de respingere i clasele

    istorice.

    Lungimea total include totul din datagram - att antet ct i date.

    Lungimea maxim este de 65535 octei. n prezent, aceast limit superioar este

    tolerabil, dar n viitoarele reele cu capaciti de gigaoctei vor fi necesare

    datagrame mai mari.

  • Cmpul Identificare este necesar pentru a permite gazdei destinaie s

    determine crei datagrame i aparine un nou pachet primit. Toate fragmentele

    unei datagrame conin aceeai valoare de Identificare.

    Urmeaz un bit nefolosit i apoi dou cmpuri de 1 bit. DF nsemn Dont

    Fragment (A nu se fragmenta). Acesta este un ordin dat ruterelor ca s nu

    fragmenteze datagrama pentru c destinaia nu este capabil s reasambleze

    piesele la loc. De exemplu, cnd un calculator pornete, memoria sa ROM poate

    cere s i se trimit o imagine de memorie ca o singur datagram. Prin marcarea

    datagramei cu bitul DF, emitorul tie c aceasta va ajunge ntr-o singur bucat,

    chiar dac aceasta nseamn c datagrama trebuie s evite o reea cu pachete mai

    mici pe calea cea mai bun i s aleag o rut suboptimal. Toate mainile trebuie

    s accepte fragmente de 576 octei sau mai mici.

    MF nsemn More Fragments (mai urmeaz fragmente). Toate fragmentele,

    cu excepia ultimului, au acest bit activat. El este necesar pentru a ti cnd au

    ajuns toate fragmentele unei datagrame.

    Deplasamentul fragmentului spune unde este locul fragmentului curent n

    cadrul datagramei. Toate fragmentele dintr-o datagram, cu excepia ultimului,

    trebuie s fie un multiplu de 8 octei - unitatea de fragmentare elementar. Din

    moment ce sunt prevzui 13 bii, exist un maxim de 8192 de fragmente pe

    datagram, obinndu-se o lungime maxim a datagramei de 65536 octei, cu

    unul mai mult dect cmpul Lungime total.

    Cmpul Timp de via este un contor folosit pentru a limita durata de via

    a pachetelor. Este prevzut s contorizeze timpul n secunde, permind un timp

    maxim de via de 255 secunde. El trebuie s fie decrementat la fiecare salt (hop -

    trecere dintr-o reea n alta) i se presupune c este decrementat de mai multe ori

    cnd st la coad un timp ndelungat ntr-un ruter. n practic, el contorizeaz

    doar salturile. Cnd ajunge la valoarea zero, pachetul este eliminat i se trimite

    napoi la gazda surs un pachet de avertisment. Aceast facilitate previne

    hoinreala la infinit a datagramelor, ceea ce se poate ntmpla dac tabelele de

    dirijare devin incoerente.

  • Cnd nivelul reea a asamblat o datagram complet, trebuie s tie ce s

    fac cu ea. Cmpul Protocol spune crui proces de transport trebuie s o predea.

    TCP este o posibilitate, dar tot aa sunt i UDP i alte cteva. Numerotarea

    protocoalelor este global la nivelul ntregului Internet.

    Suma de control a antetului verific numai antetul. O astfel de sum de

    control este util pentru detectarea erorilor generate de locaii de memorie

    proaste din interiorul unui ruter. Algoritmul este de a aduna toate jumtile de

    cuvinte, de 16 bii, atunci cnd acestea sosesc, folosind aritmetic n complement

    fa de unu i pstrarea complementului fa de unu al rezultatului. P