Sunteți pe pagina 1din 27

Subiecte Retele

1. Arhitectura retelelor:
a. Tipuri de retele (cu difuzare, punct la punct)
b. Retele locale, retele metropolitane, retele larg raspandite geografic (topologie, caracteristici)
c. Niveluri, protocoale, modelul de referinta OSI (7 niveluri); descriere, caracteristici
2. Nivelul legatura de date
a. Aspecte (caracteristici) ale proiectarii nivelului legaturii de date
b. Detectarea si corectarea eroirlor (Hamming+CRC)
c. Protocoale elementare pentru legatura de date (simplex fara restrictii, stop and wait, protocol cu confirmare si
retransmitere)
d. Protocoale cu fereastra glisanta si protocoale cu revenire cu n pasi (Go back n)
3. Nivelul retea
a. Aspecte (caracteristici, cerinte) ale proiectarii nivelului retea
b. Algoritmi de dirijare (calea cea mai scurta, inundarea, dirijarea centralizata, dirijarea izolata, dirijarea distribuita,
dirijarea ierarhica)
c. Controlul si evitarea congestionarii si a blocarii
d. Protocolul IP (descriere)
4. Nivelul Transport
a. Caracteristici ale nivelului Transport (notiuni de baza: adresarea, stabilirea si eliberarea conexiunii, controlul
fluxului, multiplexarea)
b. Protocolul TCP
c. Elemente de performanta
5. Nivelul Aplicatie
a. DNS, mail, www, ftp (o aplicatie la alegere).

1.

Arhitectura retelelor
a. Tipuri de retele
i. cu difuzare: au un canal de comunicatii partajat de toate masinile din retea. O masina
poate trimite mesaje scurte (pachete) care sunt primite de toate celelalte masini. Un
camp de adresa din pachet specifica masina careia ii este adresat pachetul. La primirea
unui pachet, masina verifica adresa; daca pachetul ii este adresat, il prelucreaza, altfel il
ignora. Un pachet se poate adresa tuturor destinatiilor (mod de operare numit difuzare),
prin specificarea unui cod special in campul de adresa; un astfel de pachet este prelucrat
de toate masinile din retea. Unele sisteme cu difuzare suporta transmisia catre un subset
de masini (mod de operare numit trimitere multipla). Schema posibila: un bit pt a indica
trimiterea multipla, restul de n-1 biti de adresa pot forma un nr de grup. O masina se poate
abona la un grup sau la toate. Un pachet trimis unui grup ajunge la toate masinile din
grupul respectiv.
ii. punct la punct: numeroase conexiuni intre perechi de masini individuale. Pt a ajunge la
destinatie, un pachet poate fi nevoit sa treaca prin una sau mai multe masini intermediare.
Sunt posibile trasee multiple, de diferite lungimi, de aceea sunt importante metodele de
determinare a drumurilor optime.
b. LAN, MAN, WAN
i. LAN (Local Area Networks) - Retelele locale: retele private localizate intr-o cladire/
campus de maxim cativa km. Folosite de companii, fabrici. Dimensiuni restranse
(administrarea retelei se simplifica). Tehnologie de transmisie: un cablu la care sunt
atasate toate masinile. Viteza pana la 10 Gbps, intarzieri mici (micro/nano secunde),
putine erori. Topologii posibile pt LAN-uri cu difuzare: retea cu magistrala (cu cablu
liniar; in fiecare moment cel mult o masina poate transmite; daca doua sau mai multe

c.

masini vor sa transmita simultan, se foloseste un mecanism de arbitrare; exemplu:


Ethernet), retea in inel (fiecare bit se propaga independent de ceilalti, fara sa astepte
restul pachetului; exemplu: FDDI - Fiber Distributed Data Interface). LAN-urile cu
difuzare pot fi statice ( algoritm round-robin: fiecare masina emite cand ii vine randul;
ineficient, se iroseste capacitatea canalului daca o masina nu are nimic de transmis cand
ii vine randul) sau dinamice (la cerere - metoda preferata).
ii. MAN (Metropolitan Area Network) - Retelele metropolitane: acopera un oras.
Exemplu: TV prin cablu (o antena foarte mare redistribuia semnalul catre casele
abonatilor). In ultima perioada a anilor 90, operatorii de retele de cablu TV au facut
schimbari in sistem pt a oferi servicii de internet in partile nefolosite ale spectrului. Atat
semnalul de TV, cat si Internetul sunt transmise catre un centralizator, care le distribuie
abonatilor.
iii. WAN (Wide Area Network) - Retelele larg raspandite geografic: acopera o arie intinsa
(o tara, un continent). Contin o colectie de masini (gazde) care apartin clientilor si care
sunt conectate printr-o subretea, care, de obicei, apartine unei companii de telefonie
sau unui furnizor de servicii Internet. Subreteaua transmite mesajele de la gazda la
gazda. In majoritatea WAN-urilor, este formata din linii de transmisie (fire de cupru,
fibra optica, legaturi radio) si elemente de comutare (routere). O linie de transmisie
leaga doua routere. Daca doua routere care nu sunt legate direct doresc sa comunice,
vor face asta indirect, prin routere intermediare. Acestea primesc pachetul in intregime, il
retin pana cand linia de iesire ceruta devine libera si apoi il retransmit. Subretelele care
funcitoneaza astfel se numesc subretele memoreaza-si-transmite sau cu comutare de
pachete. Cand o gazda are un mesaj de transmis, il sparge in pachete, fiecare retinandusi numarul de ordine din secventa. Pachetele sunt trimise individual si depozitate la gazda
receptoare, unde sunt reasamblate in mesajul initial. Deciziile de dirijare se iau la nivelul
local al routerului, prin algoritmi de rutare. Un WAN poate folosi si un sistem de sateliti (in
loc de comutare de pachete). Fiecare router are o antena care poate trimite si poate primi.
Niveluri, protocoale, modelul de referinta OSI
i. Niveluri: Retelele sunt organizate sub forma de straturi sau niveluri, fiecare construit
peste cel de dedesubt. Scopul fiecarui nivel este sa ofere anumite servicii nivelurilor
superioare, protejandu-le totodata de detaliile privitoare la implementarea acelor servicii.
Nivelul n de pe o masina converseaza cu nivelul n de pe alta masina.
ii. Protocoalele sunt seturi de reguli si conventii utilizate in comunicarea intre masini. O
lista de protocoale utilizate de un sistem, cate un protocol/nivel, se numeste stiva de
protocoale. O multime de niveluri si protocoale se numeste arhitectura de retea.
iii. Modelul de referinta OSI (Open Systems Interconnection): cuprinde 7 niveluri, la care
se ajunge aplicand urmatoarele principii:
1. un nivel trebuie creat cand este nevoie de un nivel de abstractizare diferit
2. fiecare nivel trebuie sa indeplineasca un rol bine definit
3. functia fiecarui nivel trebuie aleasa acordandu-se atentie definirii de protocoale
standardizate pe plan international
4. delimitarea nivelurilor trebuie facuta astfel incat sa se minimizeze fluxul de
informatii prin interfete
5. numarul de niveluri trebuie sa fie suficient de mare pt a nu fi nevoie sa se
introduca in acelasi nivel functii diferite si suficient de mic pt ca arhitectura sa
ramana functionala.
Modelul OSI nu reprezint n sine o arhitectur de reea, pentru c nu specific serviciile
i protocoalele utilizate la fiecare nivel. Modelul spune numai ceea ce ar trebui s fac
fiecare nivel. ISO a produs de asemenea standarde pentru fiecare nivel, ns aceste
standarde nu fac parte din modelul de referin propriu-zis.
1. Nivelul fizic: transmite biti printr-un canal de comunicatie. Proiectarea trebuie
sa garanteze ca atunci cand se transmite un bit 1, se receptioneaza un bit 1,
nu un bit 0. Probleme: cati volti trebuie utilizati pt a reprezenta un 1 si cati pt a
reprezenta un 0, daca transmisia se poate face simultan in ambele sensuri, cum

2.

3.

4.

5.

6.

7.

2.

se stabileste conexiunea si cum se intrerupe cand au terminat de comunicat


ambele parti, cati pini are conectorul de retea si rolul fiecaruia.
Nivelul legatura de date: transforma un mijloc oarecare de transmisie intr-o
linie care sa fie disponibila nivelului retea fara erori de transmisie nedetectate.
Obliga emitatorul sa descompuna datele de intrare in cadre de date (frame-uri
de cateva sute sau cateva mii de octeti) si sa transmita cadrele secvential. Daca
serviciul este sigur, receptorul confirma fiecare cadru trimitand inapoi un cadru
de confirmare pozitiva. Probleme: evitarea inundarii unui receptor lent de catre
un transmitator rapid, tratarea erorilor, (la retele cu difuzare) accesul la canalul
partajat.
Nivelul retea: se ocupa de controlul subretelei. Determina modul in care
pachetele sunt dirijate de la sursa la destinatie (alege trasee static sau dinamic),
controleaza congestiile, se ocupa de calitatea serviciilor (intarziere, timp de
tranzitare, fluctuatii etc.). Probleme: diferente intre modurile de adresare ale
retelelor, neacceptarea unui pachet din cauza dimensiunilor mari, protocoale
diferite. In retelele cu difuzare, problema dirijarii este simpla, deci nivalul retea
este subtire sau nu exista,
Nivelul transport: accepta date de la nivelul sesiune, le descompune (daca este
cazul) in unitati mai mici, pe care le transfera nivelului retea, se asigura ca aceste
fragmente ajung corect la celalalt capat, toate acestea facute eficient si izoland
nivelurile superioare de eventuale modificari in tehnologia echipamentelor.
De asemenea, determina ce tip de serviciu sa furnizeze nivelului sesiune. Cel
mai obisnuit tip de conexiune transport este un canal punct-la-punct fara erori
(de fapt, un canal fara erori este utopic; de fapt se refera la un canal in care
rata erorilor este suficient de mica pt a fi neglijata) care furnizeaza mesajele
sau octetii in ordinea in care au fost trimisi. Alte tipuri posibile de servicii de
transport: transportul mesajelor individuale, fara garantia ordinii de livrare, si
difuzarea mesajelor catre destinatii multiple. Tipul serviciului este determinat
cand se stabileste conexiunea. Nivelul transport este un nivel capat-la-capat, de
la sursa la destinatie, deci un program de pe masina sursa comunica direct cu un
program similar de pe masina destinatie, folosind antetele mesajelor si mesaje
de control. Nivelurile inferioare (1-3) sunt inlantuite, comunicand cu vecinii directi,
iar nivelurile 4-7 sunt capat-la-capat.
NIvelul sesiune: permite utilizatorilor de pe masini diferite sa stabileasca
intre ei sesiuni. Acestea ofera diferite servicii, incluzand controlul dialogului
(respectarea ordinii in raport cu dreptul de a transmite), gestionarea jetonului
(prevenirea situatie in care doua entitati incearca aceeasi operatie critica
simultan) si sincronizarea (introducerea de puncte de control pe parcursul
transmisiilor lungi, astfel incat, in caz de esec, acestea sa poate fi reluate de
unde ramasesera).
Nivelul prezentare: se ocupa de sintaxa si semantica informatiilor transmise.
Pentru a face posibila comunicarea intre calculatoare cu reprezentari diferite
ale datelor, structurile de date care se trimit pot fi reprezentate in mod
abstract, alaturi de o codificare standardizata ce va fi utilizata pe cablu. Acest
nivel gestioneaza aceste structuri de date abstracte si permite definirea si
comunicarea unor structuri de date de nivel mai inalt.
Nivelul aplicatie: contine o varietate de protocoale utilizate frecvent (HTTP
- HyperText Transfer Protocol, care sta la baza WWW). Alte protocoale de
aplicatie se folosesc pentru transferul fisierelor, posta electronica, stiri in retea.

Nivelul legatura de date


a. Aspecte (caracteristici) ale proiectarii nivelului legaturii de date: Acest nivel furnizeaza o
interfata bine definita catre nivelul retea, trateaza erorile de transmisie si regleaza cadrele in asa
fel incat receptorii lenti sa nu fie inundati de catre emitatori rapizi. In aceste scopuri, nivelul legatura

de date primeste pachete de la nivelul retea, pe care le incapsuleaza in cadre care contin un antet,
informatia utila si o incheiere.
i. Servicii oferite nivelului retea: Principalul serviciu: transferul datelor de la nivelul retea
al masinii sursa la nivelul retea al masinii destinatie. Posibilitatile de baza, oferite in
mod curent, sunt: serviciu neconfirmat fara conexiune (masina sursa trimite cadre
independente catre masina destinatie, fara ca masina destinatie sa confirme primirea
lor; nu e necesara stabilirea/desfiintarea unei conexiuni logice; daca un cadru se pierde,
nivelul legatura de date nu face nimic pentru recuperarea lui; adecvat cat rata de erori
este foarte scazuta si pentru traficul in timp real, unde a primi date cu intarziere este mai
rau decat a primi date eronate), serviciu confirmat fara conexiune (fiecare cadru este
confirmat individual; daca nu a ajuns intr-un interval de timp specificat, poate fi trimis din
nou; adecvat pentru canale nesigure, precum cele wireless), serviciu confirmat orientatconexiune (se stabileste o conexiune intre masinile sursa si masinile destinatie inainte
de a transfera date; fiecare cadru e numerotat si nivelul legatura de date garanteaza ca
toate cadrele sunt receptionate exact o data, in ordinea corecta; transferurile au trei faze:
stabilirea conexiunii, in care ambele masini initializeaza variabile si contoare, transmiterea
cadrelor si desfiintarea conexiunii, adica eliberarea variabilelor, tampoanelor si a altor
resurse).
ii. Incadrarea: nivelul legatura de date sparge sirul de biti in cadre si calculeaza suma de
control pentru fiecare cadru. Cand un cadru ajunge la destinatie, suma de control este
recalculata. Daca noua suma de control e diferita de cea din cadru, se iau masuri pentru
rezolvarea erorii. Pentru a marca inceputul si sfarsitul fiecarui cadru se folosesc diferite
metode, printre care: numararea caracterelor, indicatori cu inserare de octeti, indicatori de
inceput si de sfarsit cu inserare de biti, violarea codificarilor la nivel fizic. Prima metoda,
numararea caracterelor, foloseste un camp din antet pentru a specifica numarul de
caractere din cadru. Problema: valoarea contorului poate fi alterata pe drum, caz in care
destinatia pierde sincronizarea si nu poate localiza inceputul cadrului urmator. Metoda
rar utilizata. Metoda cu indicatori cu inserare de octeti: fiecare cadru incepe si se
termina cu un octet indicator. Doi octeti indicatori consecutivi indica sfarsitul unui cadru
si inceputul celui care urmeaza. Daca receptorul pierde sincronizarea, acesta poate
cauta otetul indicator pt a gasi sfarsitul cadrului. Probema: la transmiterea de date binare
(ex: un obiect, numere in virgula mobila) se poate intampla ca in date sa apara octetul
indicator. O posibila rezolvare: inserarea unui octet special (ESC) inaintea fiecarei aparitii
accidentale a indicatorului in date. (schema: Tanenbaum ed. a 4a, pag 170). Dezavantaj:
se limiteaza la utilizarea caracterelor de 8 biti, ceea ce nu este mereu suficient (UNICODE
foloseste 16 biti). Metoda cu indicatori cu inserare de biti foloseste un octet indicator
(flag): 01111110. De fiecare data canf nivelul legatura de date gaseste cinci biti 1
consecutivi in date, insereaza un bit 0. Cand receptorul primeste o succesiune de cinci biti
1, urmati de un bit 0, sterge bitul 0. astfel, granitele dintre 2 cadre sunt recunoscute usor
si se elimina problema limitarii la caractere de 8 biti. Ultima metoda, violarea codificailor
la nivel fizic, este aplicabila retelelor in care codificarea pe mediul fizic contine o anumita
redundanta. De exemplu, unele LAN-uri codific un bit de date utiliznd doi bii fizici. De
obicei, un bit 1 este reprezentat de o tranziie sus-jos i un bit 0 de o tranziie jos-sus.
Aceasta nseamn c fiecare bit de date are o tranziie n mijloc, receptorului fiindu-i uor
s localizeze frontierele biilor. Combinaiile sus-sus i jos-jos nu sunt utilizate pentru
date, dar sunt utilizate pentru delimitarea cadrelor in unele protocoale. Observatie: multe
protocoale de legatura de date utilizeaza o combinatie de contor de caractere cu una din
celelalte metode.

b.

iii. Controlul erorilor: masina destinatie trimite un feedback emitatorului pentru a-l asigura
de sosirea corecta a cadrelor. Pentru situatiile cand se pierde complet un cadru iar
destinatarul nu reactioneaza in niciun fel s-au introdus contoare de timp. Fiecare cadru
are un interval de timp in care ar trebui sa ajunga la destinatie, sa fie prelucrat, iar la
emitator sa ajunga un feedback. Daca acest timp se scurge fara primirea unui feedback,
cadrul este retransmis. Pentru a evita ca receptorul sa accepte acelasi cadru de mai multe
ori, se atribuie numere de secventa cadrelor de iesire.
iv. Controlul fluxului: Pentru a evita inundarea unui receptor lent de catre un emitator
rapid exista diferte abordari, dintre care mai des utilizate sunt controlul fluxului bazat
pe reactie, caz in care receptorul acorda emitatorului permisiunea de a mai transmite
date, sau cel puti comunica starea sa, si controlul fluxului bazat pe rata, caz in care
protocolul dispune de un mecanism care limiteaza rata de transmitere a emitatorului fara a
folosi informatii de la receptor. aceasta metoda nu se utilizeaza la niv. legatura de date.
Detectarea si corectarea erorilor (Hamming+CRC)
i. Coduri corectoare de erori (Hamming): Una din strategiile folosite pentru tratarea
erorilor este ca pe langa fiecare bloc de date trimis sa se includa suficienta informatie
redundanta pentru ca receptorul sa poata deduce care a fost caracterul transmis. aceasta
metoda se foloseste in cazul canalelor de comunicatie fara fir (sau, in general, mai
nesigure). Un cadru de lungime n biti, numit frecvent cuvant de cod de n biti, contine m
biti de date (mesaj) si r biti redundanti (m + r = n). Date fiind doua cuvinte de cod, putem
determina cati biti corespunzatori difera aplicand SAU EXCLUSIV. Rezultatul se numeste
distanta Hamming. Daca doua cuvinte de cod sunt despartite de o distanta Hamming d,
atunci sunt necesare d erori de un singur bit pentru a-l converti pe unul in celalalt. In multe
aplicatii de transmisie de date, toate cele 2m mesaje de date posibile sunt corecte, dar nu
sunt utilizate toate cele 2n cuvinte de cod posibile. Dat fiind algoritmul pt calculul bitilor de
control, putem construi o lista completa de cuvinte de cod permise si din aceasta lista
putem gasi cele doua cuvinte a caror distanta Hamming este minima. Aceasta este
distanta Hamming a codului complet. Pentru a detecta d erori, este nevoie de cod cu
distanta d+1. Pentru a corecta d erori este nevoie de cod cu distanta 2d+1. Daca dorim sa
proiectam un cod cu m biti de mesaj si r biti redundanti care sa ne permita sa corectam
toate erorile singulare. Pentru fiecare din cele 2m mesaje corecte exista n cuvinte de cod
eronate, aflate la distanta 1 => fiecare din cele 2m mesaje corecte necesita n+1 sabloane
asociate. Cum numarul total de sabloane este 2n, trebuie sa avem (n+1)2m <= 2n. Cum n
= m + r, obtinem (m + r + 1) <= 2r. Dandu-se m, acesta impune o limita inferioara asupra
nr. de biti de control necesari pt a corecta erorile singulare. Aceasta metoda poate fi
atinsa utilizand metoa lui Hamming. Bitii cuvantului de cod sunt numerotati consecutiv,
incepand cu bitul 1 din marginea din stanga, bitul 2 imediat in dreapta etc. Bitii care sunt
puteri ale lui 2 sunt biti de control, restul sunt biti de date. Fiecare bit de control forteaza
ca paritatea unui grup de biti (inclusiv el insusi) sa fie para (sau impara). Un bit poate fi
inclus in mai multe calcule de paritate. Pentru a vedea la care biti de control contribuie
bitul de date din pozitia k, rescriem k ca o suma de puteri a lui 2 (ex: 11 = 1 + 2 + 8). Un
bit este verificat de bitii de control care apar in dezvoltarea sa. Cand soseste un cuvant de
cod, receptorul initializeaza un control la 0, apoi examineaza fiecare bit de control k pt a
vedea daca are paritatea corecta. Daca nu, adauga k la control. Daca la final contorul
este 0, cuvantul e acceptat ca valid. Altfel valoarea contorului reprezinta numarul bitului
inversat. Codurile Hamming functioneaza doar pt erori singulare, dar pot fi modificate pt a
functiona si pentru erorile in rafala. O secventa de k cuvinte de cod consecutive este
aranjata ca o matrice, cu un cuvant de cod/linie. In loc sa transmitem datele pe linie, le

c.

vom transmite pe coloana, incepand din stanga. Astfel, daca apare o eroare in rafala de
lungime k va fi afectat cel mult un bit din fiecare cuvant de cod, deci codul Hamming poate
corecta erorile.
ii. Coduri detectoare de erori (CRC - Cyclic Redundancy Code): folosite pe canale cu
o rata a erorilor mai mica (fire de cupru, fibra optica), erorile sunt detectate iar cadrele
in cauza sunt retransmise. Sirurile de biti sunt tratate ca reprezentari de polinoame cu
coeficienti 0 si 1. Un cadru de k biti este vazut ca o lista de coeficienti pt un polinom
cu k termeni (de gradul k-1). Aritmetica polinomiala este de tip modulo 2; adunarea si
scaderea sunt identice cu SAU EXCLUSIV. In cadrul acestei metode, transmitatorul si
receptorul se pun de acord in avans asupra unui polinom generator G(x). Atat bitul cel
mai semnificativ cat si cel mai putin semnificativ trebuie sa fie 1. Pentru a calcula suma
de control a unui cadru cu m biti, corespunzator polinomului M(x), cadrul trebuie sa fie
mai lung decat polinomul generator. Se adauga o suma de control la sfarsitul cadrului,
a.i. polinomul reprezentat de cadrul cu suma de control sa fie divizibil prin G(x). Cand
receptorul preia cadrul, incearca sa-l imparta la G(x). Daca se obtine un rest a avut loc o
eroare de transmisie. Algoritmul pentru calculul sumei de control: fie r gradul lui G(x); se
adauga r biti 0 la capatul mai putin semnificativ al cadrului, a.i. acesta va contine n + r biti
si va corespunde polinomului xrM(x). Se imparte sirul de biti ce corespund lui G(x) intr-un
sir de biti corespunzand lui xrM(x), utilizand impartirea modulo 2. Se scade restul, utilizand
scaderea modulo 2. Rezultatul este cadrul cu suma de control care va fi trimis.
Protocoale elementare pentru legatura de date (simplex fara
restrictii, stop and wait, protocol cu confirmare si retransmitere):
Definitii:

i.

Protocol simplex fara restrictii: pentru cazul utopic: date trimise intro singura directie, ambele niveluri retea (de transmisie si de receptie)
sunt mereu pregatite, timp de prelugrare neglijabil, memorie de stocare
infinita, canal fara erori. Fara numere de secventa sau confirmari.

ii.

Protocol simplu Stop and Wait (pas cu pas): se renunta la presupunerea


ca nivelul de retea receptor prelucreaza datele cu viteza infinita.

iii. Protocol simplu pentru canal cu zgomote: se deosebeste de predecesorii sai prin
faptul ca si emitatorul si receptorul au o variabila a carei valoare este pastrata cat timp
nivelul legatura de date este in starea de asteptare. Emitatorul pastreaza numarul de
secventa al urmatorului cadru de transmis in next_frame_to_send; receptorul pastreaza
nr. de secventa al urmatorului cadru asteptat in frame_expected. Astfel de protocoale se
numesc PAR (Positive Acknowledgement with Retransmission) sau ARQ (Automatic
Repeat reQuest)

d.

Protocoale cu fereastra glisanta si protocoale cu revenire cu n pasi (Go back n): datele se
transmit in ambele directii, folosindu-se acelasi circuit. Cadrele cu date de la A la B sunt
amestecate cu cadrele de confirmare de la A la B. Receptorul le diferentiaza uitandu-se la campul
kind din antetul cadrului. In plus, cand soseste un cadru de date, in locul transmiterii imediate a
unui cadru de control separat, receptorul poate astepta pana cand nivelul retea ii da un pachet de
trimis. Astfel, confirmarea este transportata cu urmatorul cadru cu date de iesire (atasare -

piggybacking). Daca nivelul retea nu trimite un pachet in cateva milisecunde, se trimite cadru de
confirmare separat. In cadrul protocoalelor cu fereastra glisanta, fiecare cadru are un numar de
secventa. Emitatorul mentine, la orice moment de timp, o multime de numere de secventa pe care
are voie sa le trimita (terminologie: aceste cadre apartin ferestrei de transmisie - sending
window). Similar, receptorul mentine o fereastra de receptie (receiving window) ce corespunde
multimii de cadre care pot fi acceptate. Aceste doua ferestre nu trebuie sa aiba aceleasi limite
minime si maxime si nici aceeasi dimensiune. Numerele de secventa din cadrul ferestrei
emitatorului reprezinta cadre transmise sau cadre ce pot fi transmise, dar inca neconfirmate. Cand
de la nivelul retea soseste un nou pachet, acestuia ii este atribuit urmatorul nr de secventa, iar
marginea superioara a ferestrei creste cu 1. Cand soseste o confirmare, creste cu 1 limita
inferioara a ferestrei. Daca fereastra creste la dimensiunea maxima, nivelul legatura de date al
emitatorului trebuie sa forteze inchiderea nivelului retea pana la eliberarea unui buffer. Fereastra
de receptie corespunde cadrelor pe care receptorul le poate accepta. Orice cadru din afara
ferestrei este eliminat. Cand este receptionat un cadru al carui nr de secventa este egal cu limita
inferioara a ferestrei, acesta este trimis spre nivelul retea, se genereaza o confirmare iar fereastra
se deplaseaza cu o unitate. Spre deosebire de fereastra emitatorului, fereastra receptorului
ramane de dimensiune constanta. O fereastra de dimensiune 1 accepta numai cadre ordonate.
Nivelul retea este alimentat mereu cu date in ordine corecta, indiferent de dimensiunea ferestrei. In
exemplul urmator, un protocol cu fereastra glisanta de 1 bit, next_frame_to_send arata ce cadru
incearca sa transmita emitatorul, iar frame_expected arata ce cadru este asteptat de receptor.

Timpul mare de transfer poate duce la irosirea largimii de banda. Combinatia dintre un timp de
tranzitie lung, largime de banda mare si un cadru scurt este foarte ineficienta, in special din cauza
regulii care cere ca un emitator sa astepte o confirmare inaintre trimiterii unui alt cadru. Solutie:
putem permite emitatorului sa transmita mai multe cadre in loc de unul singur, astfel incat sa
transmita continuu cadre pentru un timp egal cu timpul de tranzit, fara a umple fereastra. Aceasta
tehnica este numita banda de asamblare (pipelining). Problema: ce se intampla cand un cadru
din mijlocul sirului este modificat sau pierdut? Una dintre solutii este data de algoritmii cu revenire
cu n pasi (go back n), in cadrul carora receptorul elimina cadrele care urmeaza cadrului modificat/
pierdut, netrimitand confirmari pentru cadrele eliminate. Asadar receptorul refuza orice cadru in
afara urmatorului care trebuie livrat catre nivelul retea. Daca fereastra emitatorului se umple
inaintea expirarii contorului de timp, banda de asamblare va incepe sa se goleasca. Intr-un final se
vor retransmite toate cadrele neconfirmate. In exemplul de mai jos este un protocol go back n in
care fereastra receptorului are dimensiune 1.

3.

Nivelul retea
a. Aspecte (caracteristici, cerinte) ale proiectarii nivelului retea: acest nivel are ca sarcina
preluarea pachetelor de la sursa si transferul lor catre destinatie. Ajungerea la destinatie poate
necesita mai multe salturi prin routere intermediare. Nivelul retea este cel mai scazut nivel care se
ocupa de transmisii capat la capat. Sistemul este format din echipamentul companiei de
telecomunicatii si echipamentul clientului. Acest echipament este folosit astfel: o gazda care are de
transmis un pachet il transmite celui mai apropiat router; pachetul este memorat acolo pana ajunge
integral, a.i. sa poata fi verificata suma de control, apoi este trimis mai departe catre urmatorul
router de pe traseu, pana ajunge la destinatie. Acest mecanism reprezinta comutarea de pachete
de tip memoreaza-si-transmite. Serviciile furnizate nivelului transport au fost proiectate tinand
cont de urmatoarele scopuri: serviciile sa fie independente de tehnologia routerului, nivelul
transport sa fie independent de numarul, tipul si tipologia routerelor existente, adresele de retea
disponibile la nivelul transport sa foloseasca o schema de numerotare uniforma. Serviciile pot fi
orientate pe conexiune sau neorientate pe conexiune. Serviciile neorientate pe conexiune:
pachetele sunt trimise in subretea individual si dirijate independent de celelalte. Nu este necesara
o initializare prealabila. Pachetele sunt numite frecvent datagrame, iar subreteaua este numita
subretea datagrama. Functionare: presupunem ca o masina vrea sa transmita un mesaj de 4 ori
mai lung decat dimensiunea maxima a unui pachet, asa ca nivelul retea trebuie sa il sparga in 4
pachete si sa le trimita pe fiecare in parte primului router. Fiecare router are o tabela interna care ii
spune unde sa trimita pachete pentru fiecare destinatie posibila. Este posibil ca primele 3 pachete
sa fie trimise pe un traseu iar ultimul, din diverse motive (ex: congestionarea unei rute), sa fie trimis

pe alt traseu (pentru detalii: Tanenbaum, pag 311-313). Algoritmii care administreaza tabelele si
iau deciziile de rutare se numesc algoritmi de rutare. In cadrul unui serviciu orientat pe
conexiune se stabileste o cale de la routerul sursa la routerul destinatie, numita VC (Virtual
Circuit), iar subreteaua este numita subretea cu circuite virtuale. Ideea care sta la baza
circuitelor virtuale este evitarea alegerii unei noi rute pentru fiecare pachet transmis. Cand se
stabileste o conexiune, se alege o cale intre masina sursa si destinatie, care este memorata in
tabelele routerelor. Acea cale este folosita pentru tot traficul de pe conexiune. Cand conexiunea
este eliberata, circuitul virtual virtual este inchis (detalii: Tanenbaum, pag 313-314).

b.

Algoritmi de dirijare (calea cea mai scurta, inundarea, dirijarea centralizata, dirijarea
izolata, dirijarea distribuita, dirijarea ierarhica): principala functie a nivelului retea este dirijarea
pachetelor de la masina sursa catre masina destinatie. Algoritmul de dirijare raspunde de
alegerea liniei de iesire pe care trebuie trimis un pachet receptionat. Un router ruleaza intern
doua procese: unul care preia fiecare pachet care soseste, cautand in tabela de dirijare linia de
iesire folosita pentru el (retransmitere - forwarding) si altul care se ocupa de completarea si
actualizarea tabelei de rutare prin algoritmul de dirijare. Acest algoritm trebuie sa aiba anumite
proprietati: corectitudine, simplitate, robustete, stabilitate, echitate, optimalitate. Algoritmii pot
fi neadaptivi (dirijare statica - static routing), in cadrul carora alegerea caii folosite pentru a
ajunge de la nodul A la nodul B (oricare A, B) se calculeaza in avans, off-line si parvine routerului la
initializarea retelei, sau adaptivi, care isi modifica deciziile de dirijare pentru a reflecta modificarile
de topologie si pe cele de trafic. Algoritmii adaptivi difera prin locul de unde isi iau informatia (local,
de la un router vecin sau de la toate routerele), prin momentul la care schimba rutele (la fiecare
t secunde, cand se schimba incarcarea sau cand se schimba topologia) si prin metrica folosita
pentru optimizare (distanta, numarul de salturi, timpul estimat pentru tranzit).
i. Calea cea mai scurta: construim un graf al subretelei, fiecare nod al grafului fiind un
router, iar fiecare arc o linie de comunicatie (legatura). Pentru a alege o cale intre o
pereche data de routere, algoritmul trebuie sa gaseasca in graf calea cea mai scurta intre
ele. Modalitati de a masura lungimea caii: numarul de salturi, distanta geografica in km,
valori medii ale asteptarii in coada si intarzierii de transmisie. Etichetele de pe arce ar
putea fi calculate ca functii care depind de distanta, largime de banda, trafic mediu, cos al
comunicatiei, lungime medie a cozilor de asteptare, intarziere masurate si alti factori. Cel
mai cunoscut algoritm pentru calcului celei mai scurte cai intre doua noduri intr-un graf
este cel al lui Dijkstra (explicat aici: https://www.youtube.com/watch?v=8Ls1RqHCOPw ).
Implementare:

ii.

Inundarea: fiecare pachet receptionat este transmis mai departe pe fiecare linie de
iesire, mai putin cea pe care a venit. Pentru a limita numarul de pachete duplicate se
foloseste un contor (initializat cu lungimea caii de la sursa la destinatie sau, daca aceasta
nu este cunoscuta, cu valoarea cea mai defavorabila - diametrul subretelei) care este
decrementat la fiecare salt. Cand contorul ajunge la 0, pachetul este distrus. Alta metoda
pentru controlul inundarii este identificarea pachetelor care au fost deja inundate, pentru
a preintampina trimiterea lor a doua oara. Routerul sursa plaseaza in fiecare pachet
un numar de secventa pe care il primeste de la masina gazda asociata. Fiecare router
mentine o lista pentru fiecare router sursa cu numerele de secventa provenite de la acel
router sursa si care au fost deja trimise mai departe. Daca soseste un pachte care se
afla in lista, nu este trimis mai departe. Fiecare lista este insotita de un contor k, care
semnifica faptul ca toate numerele de secventa pana la k au fost deja tratate. La receptia
unui pachet este usor sa se verifice daca este un duplicat, caz in care este distrus. O
varianta a algoritmului de inundare este inundarea selectiva (selective flooding), in

care pachetele nu sunt trimise pe fiecare legatura de iesire, ci doar pe cele care duc
aproximativ in directia potrivita.
iii. Dirijarea centralizata: o masina creeaza tabela de rutare, iar celelalte masini doar o
folosesc. Se poate utiliza algoritmul lui Floyd. Acesta foloseste tabloul distantelor minime.

c.

iv. Dirijarea distribuita (bazata pe starea legaturilor): Fiecare router trebuie sa descopere
care sunt vecinii sau si sa afle adresele de retea ale acestora, sa masoare intarzierea
sau costul pana la fiecare dintre vecinii sai, sa pregateasca un pachet prin care anunta
pe toata lumea ca a terminat de cules datele despre vecini, sa trimita acest pachet
catre toate celelalte routere si sa calculeze cea mai scurta cale spre fiecare router.
Determinarea vecinilor se face trimitand un pachet HELLO pe fiecare linie prin care este
legat la alt router. Routerul de la celalalt capat raspunde trimitand un pachet cu identitatea
sa (un identificator unic). Masurand timpul pana la primirea raspunsului si impartindu-l la
2, routerul initiator poate estima intarzierea. Apoi fiecare router construieste un pachet
cu propria identitate, un numar de secventa, varsta si o lista a vecinilor, pachet pe care-l
trimite mai departe prin inundare. Dupa ce un router a acumulat un set complet cu starea
legaturilor, el poate construi graful intregii subretele.
v. Dirijarea ierarhica: routerele sunt impartite in regiuni, fiecare router stiind toate detaliile
necesare pentru dirijarea pachetelor in cadrul regiunii sale, dar nestiind nimic despre
organizarea interna a celorlalte regiuni. Pentru retele foarte mari, ierarhia se face pe mai
multe niveluri. Numarul optim de niveluri pentru o retea cu N routere este lnN.
vi. Dirijarea izolata: se foloseste algoritmul cartofului fierbinte: pachetul receptionat
este plasat in coada cea mai scurta. Se poate lua in consideratie doar lungimea cozilor
anumitor linii, selectate conform cailor celor mai scurte.
Controlul si evitarea congestionarii si a blocarii: controlul congestiei se poate face prin solutii
in bucla deschisa (incearca sa se asigure ca nu apar probleme; dupa ce sistemul este pornit si
functioneaza, nu se mai fac niciun fel de corectii; se decide cand sa se accepte trafic nou, cand
sa se distruga pachete si care sa fie acestea, toate acestea fara a tine cont de starea curenta a
retelei) sau in bucla inchisa (bazate pe conceptul de reactie inversa - feedback). Aceasta abordare
are trei parti: monitorizarea sistemului pentru a detecta cand si unde se produce congestia,
trimiterea acestor informatii catre locurile unde se pot executa actiuni, ajustarea sistemului pentru
a corecta problema. In vederea monitorizarii subretelei se pot folosi diverse metrici, din care cele
mai utilizate sunt: procentul din totalul pachetelor care au fost distruse din cauza lipsei de spatiu
temporar de memorare, lungime medie a cozilor de asteptare, numarul de pachete retransmise
pe motiv de timeout, intarzierea medie a unui pachet, deviatia standard a intarzierii unui pachet.

Transferul informatiei legate de congestie la punctul in care se poate face ceva se poate realiza
prin trimiterea unor pachete de la routerul care a detectat congestia catre sursa sau sursele de
trafic, dar aceasta metoda ar congestiona si mai tare reteaua. Alta metoda (mai eficienta) ar
fi rezervarea unui bit sau a unui camp in fiecare pachet pentru a fi completat de routere daca
congestia depaseste o anumita valoare. Cand un router detecteaza congestie, el completeaza
campurile tuturor pachetelor expediate, prevenindu-si vecinii. O alta abordare este trimiterea
periodica a unor pachete de proba care sa intrebe explicit despre congestie.
i. Modalitati de prevenire a congestiei:

ii.

detalii: Tanenbaum, 348 - 349


Controlul congestiei:
1. In subretele bazate pe VC: controlul admisiei - dupa aparitia congestiei fie nu se
mai stabilesc conexiuni virtuale pana nu se rezolva problema, fie se stabilesc
ocolind zonele cu probleme. Alternativ se poate negocia o intelegere intre gazda
si subretea la stabilirea unui VC, intelegere care specifica volumul si forma
traficului, calitatea serviciului cerut, etc. Astfel, subreteaua isi rezerva resurse
(tabele, zone tampon in routere, latime de banda) de-a lungul caii.
2. In subretele datagrama: fiecare router poate asocia fiecarei linii de iesire o
variabila care sa reflecte utilizarea recenta a acelei linii. Daca acea constanta
depaseste un anumit prag, linia de iesire intra intr-o stare de avertisment. Cand
soseste un pachet se verifica daca linia pe care trebuie sa plece este in stare
de avertisment, caz in care se iau masuri. Printre masuri se numara: un bit
de avertizare in antetul pachetului (care, odata cu confirmarea primirii, anunta
sursa ca trebuie sa-si reduca traficul), pachete de soc trimise catre sursa cu
destinatia pachetului trimis (astfel, sursa nu mai trimite pachete pe acea cale
pana la revenirea la normal; pachetele de soc pot contine avertismente pe
niveluri - bland, sever, ultimatum - in functie de severitatea congestiei), pachete
de soc cu salt (au efect la fiecare salt pe care-l fac, nu doar cand ajung la sursa),
imprastierea incarcarii (routerele inundate arunca o parte din pachete, RED
(Random Early Detection - detectia aleatoare timpurie) - aruncarea pachetelor
inainte de blocarea completa a retelei (routerele mentin tot timpul o medie a
lungimii cozilor; cand lunginea medie a cozii unei linii este depasita, linia este
congestionata; routerul nu poate spune care sursa este problema, asa ca arunca
la intamplare pachete din coada liniei in cauza).

d.

Protocolul IP (descriere): la nivelul retea Internetul poate fi vazut ca o colectie de subretele sau
sisteme autonome (Autonomous Systems - AS) care sunt interconectate. Liantul care tine
Internetul la un loc este protocolul de nivel retea, numit IP (Internet Protocol). Sarcina lui este de
a oferi cel mai bun mod posibil de a transporta datagrame de la sursa la destinatie. O datagrama
IP e formata dintr-un antet si un text. Antetul are o parte fixa de 20 de octeti si o parte optionala de
lungime variabila.

Campul Versiune memoreaza carei versiuni de protocol ii apartine datagrama (IPv4 / IPv6).
Campul IHL (Internet Header Length) da lungimea antetului in cuvinte de 32 de octeti (minim 5,
maxim 15 => antetul are maxim 60 de octeti). Campul Tip serviciu arata carei clasa de servicii
apartine pachetul. Campul lungimea totala include antet + date, iar campul identificare permite
receptorului sa determine carei datagrame apartine un pachet primit. DF (Dont Fragment) - un bit
care forteaza trimiterea datagramei intr-o singura bucata (chiar daca pe alta ruta). MF (More
Fragments) - un bit care anunta ca mai urmeaza fragmente dintr-o datagrama. Toate pachetele au
acest bit 1, mai putin ultimul. Deplasamentul fragmentului spune locul curent al fragmentului in
datagrama. Campul timp de viata este un contor initializat cu 255 secunde care este decrementat
la fiecare salt. Cand ajunge la 0, pachetul este eliminat si se transmite la sursa un avertisment.
Campul Protocol spune carui proces de transport trebuie predata datagrama (TCP, UDP, etc.).
Campul Optiuni este de lungime variabila, proiectat astfel pentru a oferi un subterfugiu care sa
permita introducerea de noi elemente. Initial erau definite 5 optiuni:

Fiecare gazda si router din Internet are o adresa IP care codifica adresa sa de retea si de gazda.
Combinatia este unica: nu exista doua masini cu aceeasi adresa IP. Toate adresele IP au 32 de biti
si sunt scrise in notatia zecimala cu punct, fiecare din cei 4 octeti fiind scris in zecimal, de la 0 la
255. Adresa 0.0.0.0 este folosita de gazde cand sunt pornite. Adresele de forma 127.xx.yy.zz sunt
rezervate pentru testari in bucla locala (pachetele trimise catre aceasta adresa sunt prelucrate local
si tratate ca pachete sosite).

Adresele IP sunt insuficiente. Solutia pe termen lung este tranzitia catre IPv6 (adrese de 128
biti), dar aceasta se intampla foarte lent. O solutie rapida, pe termen scurt, este folosirea NAT
(Network Adress Translation). Ideea de baza este alocarea fiecarei companii a unei singure
adrese IP (sau a unui numar mic de adrese) pentru traficul Internet. In interiorul companiei, fiecare
calculator primeste o adresa IP unica, folosita pentru traficul intern. Cand un pachet paraseste
compania si se duce la ISP (Internet Service Provider) are loc o translatare de adresa, care are loc
intr-o unitate NAT (NAT box) carre converteste adresa interna la adresa IP reala a companiei.
Unitatea NAT este deseori insotita de un firewall care se ocupa de securitate, verificand ce intra si
ce iese din companie.
Datorita epuizatii adreselor IP se doreste trecerea la IPv6. La crearea acestui protocol s-a
tinut cont de urmatoarele obiective majore:
1. Sa suporte miliarde de gazde
2. Sa reduca dimensiunea tabelelor de dirijare
3. Sa simplifice protocolul, pentru a permite routerelor sa proceseze pachetele mai
rapid
4. Securitate mai buna
5. Atentie mai mare acordata tipului de serviciu
6. Sa ajute trimiterea multipla, permitand specificarea de domenii
7. Sa creeze conditiile pentru ca o gazda sa poata migra fara schimbarea adresei
sale
8. Sa permita evolutia protocolului in viitor
9. Sa permita coexistenta vechiului si noului protocol pentru cativa ani

IPv6 are adrese mai lungi (16 octeti), un antet mai simplu (doar 7 campuri), suport mai
bun pentru optiuni, securitate imbunatatita si atentie mai mare acordata calitatii serviciilor.

4.

Campul Tip de trafic este folosit pentru a distinge intre pachetele care au diverse cerinte de livrare
in timp real. Eticheta fluxului are rolul de a permite unei surse si unei destinatii sa stabileasca o
pseudo-conexiune cu proprietati si cerinte particulare. Campul Lungimea informatiei utile spune
cati octeti urmeaza dupa antetul de 40 de octeti. Campul Antetul urmator spune care din antetele
de extensie, daca exista vreunul, urmeaza dupa cel curent. Daca acest antet este ultimul, acest
camp mentioneaza carui tip de protocol (TCP, UDP) i se va transmite pachetul.
Nivelul Transport
a. Caracteristici ale nivelului Transport (notiuni de baza: adresarea, stabilirea si eliberarea
conexiunii, controlul fluxului, multiplexarea)
i. Adresarea: Atunci cand un proces aplicatie doreste sa stabileasca o conexiune cu un
proces aflat la distanta, el trebuie sa specifice cu care proces doreste sa se conecteze.
Metoda folosita in mod normal este de a defini adrese de transport (porturi) la care
procesele pot sa astepte cereri de conexiune. Le vom numi TSAP (Transport Service
Access Point). Punctele similare la nivelul retea sunt numite NSAP (Network Service
Access Point). Exemplu de NSAP: adresele IP. Adresele TSAP pot sa fie fixe, dar acest
model functioneaza doar pentru un numar mic de servicii cheie, ale caror adrese nu se
schimba niciodata. O solutie mai buna este protocolul de conectare initiala. In loc
ca orice server sa asculte la un TSAP fixat, fiecare masina are un server de procese
care asculta in acelasi timp la un numar de porturi, asteptand o cerere de conexiune.
Potentialii utilizatori ai serviciului pot face o cerere de conexiune, specificand adresa
TSAP a serviciului dorit. Daca nu exista server care sa astepte conexiuni la acel port,
se stabileste o conexiune la serverul de procese. Acesta da nastere serverului cerut, ii
permite sa mosteneasca conexiunea cu utilizatorul, apoi continua sa accepte noi cereri.
pentru situatiile in care serviciile exista independent de serverul de procese exista un
proces special numit server de nume. Pentru a gasi adresa TSAP corespunzatoare unui

serviciu dat prin nume, utilizatorul se conecteaza la serverul de nume si il intreaba care
este adresa serviciului dorit. Dupa aceea elibereaza conexiunea cu serverul de nume si
stabileste o noua conexiune cu serviciul de care are nevoie.
ii. Stabilirea conexiunii: principala problema ar fi existenta duplicatelor intarziate (in cazul
unei subretele congestionate, in care confirmarile ajung greu inapoi, se poate ca un
pachet sa fie retransmis de cateva ori). O solutie este eliminarea pachetelor imbatranite.
Durata de viata a unui pachet poate fi limitata la un maxim cunoscut prin mai multe
tehnici: restrictii in proiectarea subretelei, adaugarea unui contor al nodurilor parcurse
in fiecare pachet, adaugarea unei amprente de timp la fiecare pachet. Este necesara si
eliminarea confirmarilor unui pachet, nu doar a pachetului, ca sa nu incurce nimic. Pentru
a ocoli problemele generate de pierderea datelor din memoria unei masini dupa o cadere
se poate echipa fiecare masina cu un ceas (un contor binar care se autoincrementeaza
la intervale regulate). Cand conexiunea este initiata, k biti mai nesemnificativi ai ceasului
sunt folositi ca numar initial de secventa. Astfel, fiecare conexiune isi numeroteaza TPDUurile diferit. Daca una dintre masini cade, entitatea de transport nu mai stie unde a ramas
in spatiul numerelor de secventa. Astfel se poate ajunge la confuzii. Pentru a evita asta se
iau masuri ca numerele de secventa sa nu fie utilizate (adica atribuite altor TPDU-uri) un
timp T. Conexiunea se face cu intelegere in trei pasi (three-way handshake). Gazda 1
alege un numar de secventa x si trimite un TDPU CONNECTION REQUEST care contine
x gazdei 2. Gazda 2 raspunde cu CONNECTION ACK, confirmand x si anuntand numarul
sau initial de secventa, y. In cele din urma gazda 1 confirma alegerea lui y gazdei 2 in
primul mesaj de date pe care il trimite.
iii. Eliberarea conexiunii: poate fi simetrica (conexiunea este privita ca doua conexiuni
separate unidirectionale care trebuie eliberate separat) sau asimetrica (cand unul din
interlocutori inchide, conexiunea este intrerupta; brusca, duce la pierderi de date). Se
foloseste foarte des eliberarea simetrica in trei pasi: unul dintre utilizatori trimite un TPDU
de tip DR (DISCONNECT REQUEST). Cand acesta soseste, receptorul trimite si el un
TPDU de tip DR si porneste un ceas pentru a trata cazul in care mesajul sau e pierdut.
Cand primeste mesajul inapoi, initiatorul trimite o confirmare si elibereaza conexiunea.
iv. Controlul fluxului - principale probleme: alocarea bufferelor si capacitatea de transport
a subretelei. Daca serviciul nu este sigur, emitatorul va trebui sa memoreze toate
TPDU-urile trimise. Totusi, daca emitatorul stie ca receptorul are intotdeauna buffere
disponibile, nu mai are nevoie de copii ale TPDU-urilor. Ramane astfel in discutie
dimensiunea bufferelor. Daca cele mai multe TPDU-uri au aceeasi dimensiune, bufferele
pot fi organizate intr-o resursa comuna care contine buffere de aceeasi dimensiune, cu
un TPDU per buffer. Daca dimensiunea TPDU-urilor variaza foarte mult, o solutie buna
este utilizarea unor buffere de dimensiune variabila, dar se complica gestiunea lor. O
alta posibilitate este folosirea unui buffer circular, acesta utilizand eficient memoria. A
doua limitare majora este capacitatea de transport a retelei. Daca doua routere adiacente
pot schimba x pachete/secunda si exista y cai distincte intre doua gazde, atunci rata
maxima de TPDU-uri/secunda este x*y. Pentru ca emitatorul sa functioneze la capacitate
maxima, se poate folosi o schema cu fereastra glisanta in care emitatorul modifica
dinamic dimensiunea ferestrei. Daca reteaua poate transporta x TPDU-uri pe secunda si
durata unui ciclu (de la transmisie la revenirea confirmarii) este c, dimensiunea ferestrei la
emitator trebuie sa fie c*x.
v. Multiplexarea:
1. in sus: daca doar o singura adresa de retea este disponibila pe o gazda, este
necesar un mod de a spune carui proces trebuie dat.

2.

in jos: daca un utilizator are nevoie de mai multa latime de banda decat poate
oferi un circuit virtual, nivelul transport poate deschide mai multe conexiuni retea
si poate distribui traficul prin acestea.

b.

Protocolul TCP (Transmission Communication Protocol) a fost proiectat pentru a asigura un flux sigur de octeti in
IP separata.
imparte
in fragmente
Serviciulcare
TCPnu
este
depasesc
obtinut prin
64Kcrearea
octeti siatat
expediaza
de catrefiecare
emitator,
fragment
cat si de
intr-o
catre
datagrama
receptor, a unor puncte finale
masinii gazda si un numar de 16 biti, local gazdei respective, numit port. Pentru a obtine o
conexiune TCP, trebuie stabilita expliciti o conexiune intre un socket de pe masina emitatoare si un
socket de pe masina receptoare. Un socket poate fi folosit la un moment dat pentru mai multe
conexiuni. Se foloseste un demon (buhuhu - program care ruleaza continuu si se ocupa de
cererile de servicii), numit inetd (Internet daemon) care se autoataseaza la mai multe porturi si
asteapta prima conexiune care vine. Cand acest lucru se intampla, inetd creeaza un nou proces si
executa in el demonul adecvat, lasand acel demon sa se ocupe de cerere. Toate conexiunile TCP
sunt duplex integral si punct-la-punct. TCP nu suporta difuzarea (partiala sau totala). Fiecare octet
al unei conexiuni TCP are propriul numar de secventa, reprezentat pe 32 de biti. Entitatile TCP
interschimba informatie sub forma de segmente. Acestea sunt formate dintr-un antet de 20 de
octeti (plus o parte optionala) urmat de 0 sau de mai multi octeti de date.

URG - urgent, ACK - acknowledgement, PSH - informatie fortata, SYN - utilizat pentru stabilirea
unei conexiuni. SYN = 1 si ACK = 0 indica faptul ca acel camp suplimentar de confirmare nu e utilizat.
Raspunsul la o astfel de cerere contine o confirmare, deci SYN = 1 si ACK = 1. FIN - pentru incheierea unei
conexiuni. Conexiunile se stabilesc utilizand intelegerea in trei pasi. Pentru a evita congestia, fiecare
emitator mentine doua ferestre: cea acceptata de catre receptor si fereastra de congestie. Numarul de octeti
care pot fi trimisi e dat de minimul dintre cele doua. Fereastra de congestie primeste la stabilirea conexiunii
dimensiunea celui mai mare segment utilizat de acea conexiune, apoi se treimite un segment de
dimensiune maxima. Daca acesta e confirmat inaintea expirarii timpului, fereastra de congestie se dubleaza
si te trimit 2 segmente. Daca si acestea sunt confirmate la timp, fereastra se dubleaza iar; procedeul se
repeta pana cand confirmarea nu mai ajunge in timp util. Acest algoritm se numeste algoritmul startului
lent. In practica, startul lent se foloseste pentru a determina cat poate reteaua sa duca, acea crestere
exponentiala oprindu-se la atingerea unui prag. Mai departe fereastra creste liniar odata cu transmisiile
reusite.
c. Elemente de performanta
i. Probleme de performanta: Congestiile pot fi cauzate de o supraincarcare temporara
a resurselor sau de o dezehilibrare a balantei acestora. Supraincarcarile pot fi initiate si
in mod sincron (exemplu: furtuna de difuzare - daca un TPDU contine un parametru
eronat, iar receptorii sunt setati sa trimita un mesaj de eroare, acel TPDU trimis la 10000
de masini poate scoate din functiune reteaua). Sistemul trebuie sa fie bine reglat pentru a
functiona la capacitate maxima.
ii. Masurarea performantelor retelei: se va tine cont de urmatoarele:
1. dimensiunea testului sa fie suficient de mare
2. testele sa fie reprezentative
3. utilizarea atenta a ceasurilor
4. nu trebuie sa se petreaca ceva neasteptat in timpul masuratorilor
5. lucrul cu memoria ascunsa poate distruge masuratorile
iii. Proiectarea de sistem pentru performante superioare se va face dupa urmatoarele
reguli:
1. Viteza procesorului este mai importanta decat viteza retelei
2. Reducerea numarului de pachete pentru a reduce supraincarcarea datorata
programelor
3. Minimizarea numarului de comutari de context (de exemplu, din mod nucleu in
mod utilizator)
4. MInimizarea numarului de copieri
5. Oricand se poate cumpara largime de banda, dar niciodata o intarziere mai mica
6. Evitarea congestiei este preferabila eliminarii congestiei
7. Evitarea intarzierilor
5.

Nivelul Aplicatie
DNS (Domain Name System): consta intr-o schema ierarhica cde nume de domenii si a unui
sistem de baze de date distribuite pentru implementarea acestei scheme. DNS-ul este folosit in principal
pentru a pune in corespondenta numele sistemelor gazda si adresele destinatiilor de e-mail cu adresele
IP. Programul aplicatie apeleaza o procedura de biblioteca numita resolver, transferandu-i numele ca
parametru. Resolverul trimite un pachet UDP la serverul DNS local, care cauta numele si returneaza adresa
IP catre resolver, care o trimite apelantului. Programul poate stabili acum o conexiune TCP cu destinatia sau
ii poate trimite pachete UDP.
Internetul este divizat in peste 200 de domenii de nivel superior, fiecare domeniu cuprinzand mai
multe sisteme gazda. Fiecare domeniu este partitionat in subdomenii, acestea sunt partitionate la randul lor,
etc. Se creeaza o ierarhie reprezentabila intr-un arbore.

Domeniile de pe primul nivel se impart in generice (com, edu, gov, int, mil, net, org, biz, info, name,
pro, aero, coop ) si de tari.