Sunteți pe pagina 1din 18

Corina-Ştefania Nănău

Cuprins

1.1 Nivelul Retea (Network Layer) - Continuare . . . . . . . . . . . . . . . . . . . . . . . . 2


1.1.1 Protocoale de routare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Nivelul Transport (Transport Layer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Functiile nivelului Transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Protocolul UDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.2.3 Protocolul TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.4 Transmiterea segmentelor TCP cu confirmare de primire . . . . . . . . . . . . . 12
1.2.5 Comparatie intre protocoalele TCP si UDP . . . . . . . . . . . . . . . . . . . . 17
Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1
Corina-Ştefania Nănău

Cursul 5

1.1 Nivelul Retea (Network Layer) - Continuare


1.1.1 Protocoale de routare
Intr-o retea de calculatoare, furnizarea pachetelor de date se poate face direct sau indirect.
Furnizarea directa apare in general atunci cand destinatia finala a pachetului este o gazda
legata la acceasi retea fizica (LAN) cu gazda care transmite pachetul.
Furnizarea indirecta apare atunci cand gazda de destinatie nu se afla in acceasi retea fizica
cu gazda care trimite pachetul. Pachetul va parcurge mediul de comunicatie al retelei locale in care se
afla gazda sursa, apoi va merge din router in router pana la routerul de care este legata reteaua locala
in care se afla gazda destinatie si in final va parcurge mediul de comunicatie catre destinatia finala.
Avand in vedere modul de deplasare al pachetelor de date intre dispozitivele din retea, putem
considera ca reteaua de calculatoare este conceputa sub forma de graf. Mediul de comunicatie formeaza
arcele grafului, iar dispozitivele care sunt legate in retea formeaza nodurile grafului.
Pentru ca un pachet sa ajunga de la o gazda aflata intr-o anumita retea locala, la o alta gazda
situata intr-o alta retea locala, el trebuie mai intai transmis routerului la care este legata prima retea
locala si apoi va strabate un drum in acest graf, pana la routerul la care este conectata gazda destinatie.
Functia de determinare a drumului permite routerului, sa aleaga dintre mai multe
cai disponibile, pe cea optima. Pentru determinarea acestor drumuri si alegerea drumului optim
la momentul respectiv, routerul foloseste o serie de tabele, numite si tabele de routare.
Problema care se pune este ca aceste tabele sa contina un numar cat mai mic da intrari. Daca
tabelele ar contine caile complete catre fiecare gazda din Internet, cautarea in aceste tabele ar deveni
practic imposibila.
Astfel, o intrare intr-o astfel de tabela contine adresa IP a unei retele locale de destinatie si
urmatorul nod catre destinatia respectiva.
Actualizarea acestor tabele se numeste routare sau dirijare de pachete.
Nivelul Retea foloseste tabelele de routare pentru a transmite pachetele de la o retea sursa, la
o retea destinatie. Dupa ce routerul determina care drum va fi folosit, el trece la transmiterea mai
departe a pachetului (forwarding). El ia pachetul care a fost primit la o interfata si il transmite mai
departe la o alta interfata care constituie urmatorul nod din drumul optim ales.
Pentru evaluarea drumurilor, existente intre doua routere la un moment dat, se folosesc si
informatiile despre topologia retelei sau despre gradul de utilizare al retelei. Aceste informatii se obtin
prin transmiterea de pachete de tip ”metadata”.
Cand ne referim la transmiterea mai departe a pachetelor, trebuie sa luam in discutie urmatoarele
aspecte:

ˆ fiecare pachet contine adresa IP a gazdei destinatie;


ˆ campul de retea al unei adrese IP identifica in mod unic o singura legatura fizica, catre o anumita
retea;
ˆ toate gazdele care au aceeasi valoare a campului de retea in adresle lor IP, sunt conectate la
aceeasi retea locala, si astfel fiecare poate transmite cadre de date in acea retea;
ˆ fiecare retea fizica ce face parte dintr-o inter-retea este conectata la o interfata a unui router.

Atunci cand o gazda sursa doreste sa transmita un pachet unei gazde destinatie, mai intai
compara valoarea campului retea din propria adresa IP cu cel din adresa de destinatie. Daca cele

2
Corina-Ştefania Nănău
doua valori sunt egale, atunci pachetul de date se transmite in reteaua locala din care fac parte cele
doua gazde, deci el este incapsulat intr-un cadru de date si transmis pe mediul de comunicatie. In caz
contrar, pachetul este transmis routerului prin interfata corespunzatoare retelei locale, router-ul fiind
responsabil cu transmiterea mai departe a pachetului.
Internetul este construit dintr-un numar mare de sisteme autonome (AS - Autonomous
Systems). Un AS este divizat in arii (grupuri consecutive de retele si gazde). Fiecare arie poate
contine routere care mentin informatii topologice ale acestor arii, numite area border routers.
Domeniul sistemului autonom este o portiune de retea pentru care router-ele au aceeasi
informatie privitoare la topologia ariei.
Coloana vertebrala (backbone) a sistemului autonom este responsabila cu distributia
informatiilor de routare intre arii. Toate ariile sunt conectate la coloana vertebrala, astfel incat se
poate ajunge dintr-o zona in alta ale sistemului autonom.
Fiecare astfel de sistem este administrat de o organizatie diferita si poate folosi propriul algoritm
de routare a pachetelor in interior. Un algoritm de routare in interiorul unui sistem autonom este numit
protocol de gateway interior. Algoritmul de routare utilizat intre sistemele autonome este numit
protocol de gateway exterior.

Protocoale de gateway interior


Protocoalele din aceasta categorie evalueaza sistemul autonom si iau decizii de routare pe baza
unor metrici de routare.
Primul protocol de acest gen, numit RIP (Routing Information Protocol), este un protocol
de routare pe baza vectorilor distanta ce utilizeaza numararea hop-urilor (routerelor) prin care trec
pachetele de date, care abordau unele metrici de routare precum:
ˆ lungimea drumului parcurs de pachetul de date,
ˆ latime de banda,
ˆ incarcarea retelei,
ˆ intarzierea de transmisie
Consideram reteaua reprezentata de graful din Fig. 1.1.

Figura 1.1: Retea reprezentata printr-un graf

Pasii pe care ii urmeaza acest protocol sunt:


1. Initial, fiecare nod cunoaste costul legaturii catre vecinii lui. O legatura care nu este operationala
are un cost egal cu ∞.
2. Fiecare router trimite anunturi la fiecare 30 secunde (sau atunci cand se modifica tabela lui de
routare) catre toti vecinii.
3. In tabela de routare, unde este stocat numarul minim de hop-uri in care se poate ajunge de la
un nod la altul, numarul maxim de hop-uri stocat este 15 (valorile mai mari sau egale cu 16 sunt
echivalente cu ∞).
4. Rutele devin nefolosibile (se seteaza valoarea cu ∞ dupa 3 minute in care nu se mai primeste
nicio actualizare).
5. Daca nu are loc nici o schimbare in topologia retelei, se realizeaza numai schimburi de informatii
intre vecini, nu si schimburi de metadate (informatii despre retea).
6. Procesul prin care se obtin informatiile de routare de catre noduri, se numeste convergenta.

3
Corina-Ştefania Nănău
Construim tabela initiala pentru nodul A (conform imaginii din Fig. 1.1), rezultand cea din
Tab. 1.1.

Destinatie Cost Nod urmator


B 1 B
C 1 C
D ∞ -
E 1 E
F 1 F
G ∞ -

Tabela 1.1: Tabela de routare initiala pentru nodul A din reteaua data

Urmand pasii protocolului RIP, in urma actualizarilor, tabela finala ajunge cea din Tab. 1.2.

Destinatie Cost Nod urmator


B 1 B
C 1 C
D 2 C
E 1 E
F 1 F
G 2 F

Tabela 1.2: Tabela de routare finala pentru nodul A din reteaua data

Acest protocol functioneaca bine in sisteme de mici dimensiuni.


Pentru cazul sistemelor mari, acesta a fost inlocuit cu un protocol bazat pe starea legaturilor,
construind astfel drumul cel mai scurt, protocol numit OSPF (Open Shortest Path First).
Protocolul OSPF suporta trei tipuri de conexiuni si retele:

ˆ Retele punct-la-punct intre doua routere.


ˆ Retele multi-acces cu difuzare (de cele mai multe ori la nivel de LAN-uri).
ˆ Retele multi-acces fara difuzare (de cele mai multe ori la nivel de WAN-uri cu comutare de
pachete).

OSPF functioneaza prin abstractizarea colectiei de retele, routere si linii reale dintr-un graf
orientat, in care fiecarui arc ii este atribuit un cost (care poate fi distanta, intarzierea, etc.). Apoi
calculeaza drumul cel mai scurt, bazandu-se pe costurile arcelor. O conexiune seriala intre doua
routere este reprezentata de o pereche de arce, cate unul in fiecare directie, cu costuri ce pot fi diferite
pe fiecare directie. O retea multi-acces este reprezentata de un nod pentru reteaua insasi, plus cate
un nod pentru fiecare router. Arcele de la nodul retea la routere au pondere 0 si sunt omise din graf.

(a) Un sistem autonom smplu


(b) Reprezentarea lui sub forma de graf

Figura 1.2

4
Corina-Ştefania Nănău
Un alt succesor eficient al lui RIP este IGRP (Interior Gateway Routing Protocol).
Acesta, randul sau, a suferit o imbunatatire ulterioara, aparand astfel protocolul EIGRP (Enhanced
Interior Gateway Routing Protocol). EIGRP este un protocol ce foloseste vectorul de distanta,
similar protocolului RIP, bazat insa pe o metrica mai complexa, ce ia in calcul latimea de banda
(kbps), timpul de intarziere (secunde) si gradul de siguranta a liniei de transfer.
Protocol EIGRP foloseste o varianta actualizata a algoritmului Belman-Ford, care utilizeaza un
vector de metrici in locul unei metrici simple pentru caracterizarea drumului de cost minim. Algoritmul
nu calculeaza doar drumul de cost minim (cu metrica cea mai mica), ci calculeaza mai multe drumuri,
a caror metrica sa fie incadrata intr-un interval predefinit. Calea aleasa de router pentru dirijarea
pachetelor va fi una dintre cele calculate de algoritm.

Protocoale de gateway exterior


Intre sistemele de administrare se foloseste un protocol diferit fata de cel folosit in interiorul
sistemelor autonome.
Cel mai intalnit dintre acestea este protocolul portilor de granita (BGP - Border Ga-
teway Protocol).
Scopurile unui protocol pentru gateway interior si ale unui protocol pentru gateway exterior
sunt diferite. Tot ce trebuie sa faca un protocol pentru gateway interior este sa mute pachetele cat
mai eficient de la sursa la destinatie.
Ruterele ce folosesc protocolul de gateway exterior trebuie sa tina cont intr-o mare masura de
politica utilizata de compania care e deservita de acel AS. De exemplu, un AS al unei corporatii poate
dori facilitatea de a trimite pachete oricarui site din Internet si sa receptioneze pachete de la orice site
din Internet. Cu toate acestea, poate sa nu doreasca sa asigure tranzitarea pentru pachetele dintr-un
AS strain, destinate unui AS strain diferit, chiar daca prin sistemul de administrare propriu trece cea
mai scurta cale dintre cele doua sisteme de administrare straine.
Pe de alta parte, sistemul de administrare poate fi dispus sa asigure tranzitarea pentru vecinii
sai, sau chiar pentru anumite AS-uri care au platit pentru acest serviciu de tranzitare. Companiile
telefonice, de exemplu, pot actiona ca un purtator pentru clientii lor, dar nu si pentru altii. Proto-
coalele pentru gateway exterior, in general, si BGP in particular, au fost proiectate pentru a permite
fortarea multor tipuri de politici de routare pentru traficul dintre sistemele de administrare.
Din punctul de vedere al unui router BGP, lumea consta din sistemele de administrare si liniile
care le conecteaza. Doua AS-uri sunt considerate conectate daca exista o linie intre doua routere de
granita din fiecare. Dat fiind interesul special al BGP-ului pentru traficul in tranzit, retelele sunt
grupate astfel in trei categorii:

ˆ Retele ciot (stub networks), care au doar o conexiune la graful BGP. Acestea nu pot fi folosite
pentru traficul in tranzit pentru ca nu este nimeni la capatul celalalt.
ˆ Retele multi-conectate, care pot fi folosite pentru traficul in tranzit, cu exceptia celor care refuza
explicit tranzitul.
ˆ Retele de tranzit, cum ar fi coloanele vertebrale, care sunt doritoare sa manevreze pachetele
altora, cu unele eventuale restrictii, si de obicei contra unui cost.

BGP este la baza un protocol bazat pe vectori distanta, dar destul de diferit de celelalte proto-
coale prezentate anterior. In loc sa mentina doar costul pana la fiecare destinatie, fiecare router BGP
memoreaza calea exacta folosita. Similar, in loc sa trimita periodic fiecarui vecin costul sau estimat
catre fiecare destinatie posibila, routerele BGP comunica vecinilor calea exacta pe care o folosesc.
Definirea BGP-ului se gaseste in RFC 1771 si 1774.

1.2 Nivelul Transport (Transport Layer)


Nivelul Transport este miezul intregii ierarhii de protocoale, avand ca sarcina transportul datelor
de la sursa la destinatie intr-un mod sigur, eficient din punctul de vedere al costurilor si independent
de reteaua fizica utilizata. Fara nivelul Transport si-ar pierde sensul intregul concept de ierarhie de

5
Corina-Ştefania Nănău
protocoale. Nivelul Transport este continut atat in modelul TCP/IP, care este fundamentul retelei
Internet, cat si in modelul OSI, asa cum se poate observa in Fig. 1.3.

Figura 1.3: Nivelul Transport din modelul OSI

Nivelul Transport separa nivelurile orientate pe aplicatii, si anume nivelurile 5, 6 si 7 ale mo-
delului OSI, menite sa asigure livrarea corecta a datelor intre calculatoarele interlocutoare, de cele
destinate operarii subretelei, si anume nivelurile 1, 2 si 3 ale modelului OSI, responsabile de deplasa-
rea mesajelor prin retea. Nivelurile inferioare pot suferi modificari de implementare, fara a influenta
nivelurile superioare.
Nivelul Transport administreaza transmisia de date de la un computer la altul, putand asigura si
unele servicii, ca de exemplu: calitatea in comunicare, siguranta liniei de transport, controlul fluxului
sau detectia si corectia erorilor.
Una dintre functiile acestui nivel este de a imparti datele in segmente mai mici, pentru a fi
transportate mai usor prin retea. El este proiectat astfel incat sa permita conversatii intre entitatile
pereche, formate din gazdele sursa, respectiv, destinatie.
In cadrul acetui nivel sunt implementate diferite protocoale, doua din cele mai cunoscute si
utilizate fiind:
ˆ TCP (Trasmission Control Protocol) este un protocol sigur, orientat pe conexiune, care
permite ca un flux de octeti trimisi de pe un calculator, sa ajunga fara erori pe orice alt dispozitiv
din retea. Orientarea pe conexiune nu semnifica faptul ca exista un circuit intre computerele
care comunica, ci faptul ca segmentele de date ale nivelului Aplicatie calatoresc bidirectional
intre doua gazde care sunt conectate logic pentru o anumita perioada de timp. Acest proces este
cunoscut sub denumirea de packet switching.
TCP fragmenteaza fluxul de octeti in mesaje discrete si transmite aceste segmente nivelului Re-
tea. TCP trateaza totodata controlul fluxului pentru a se asigura ca un emitator nu aglomereaza
(congestioneaza) un receptor mai lent cu mai multe mesaje decat poate acesta sa prelucreze.
ˆ UDP (User Datagram Protocol), este un protocol nesigur, fara conexiune, destinat aplicati-
ilor care doresc sa utilizeze propria lor secventiere si propriul control al fluxului. Protocolul UDP
este deasemenea mult folosit pentru interogari rapide de tipul intrebare-raspuns (client-server)
si pentru aplicatii in care comunicarea prompta este mai importatnta decat acuratetea acesteia,
asa cum sunt aplicatiile de transmisie de voce sau a imaginilor video.
Principalele diferente intre cele doua protocoale ale nivelului Transport (TCP si UDP) constau
in fiabilitate si rapiditatea comunicarii.

1.2.1 Functiile nivelului Transport


Principalele functii sau responsabilitati pentru nivelul Transport, pentru a realiza conexiunea
sursa - destinatie, sunt urmatoarele:

6
Corina-Ştefania Nănău
ˆ identificarea diferitelor aplicatii
ˆ multiplexarea si demultiplexarea datelor
ˆ trasarea comunicatiei individuale intre aplicatiile dispozitivului sursa si cele ale dispozitivului
destinatie
ˆ impartirea datelor in segmente si administrarea fiecarui segment in parte
ˆ reasamablarea segmentelor in fluxuri de date recunoscute de aplicatii

Identificarea diferitelor aplicatii


Un calculator are in general o singura legatura fizica la retea. Orice informatie destinata unui
anumit dispozitiv (de exemplu un alt calculator) trebuie sa specifice in mod obligatoriu adresa IP
a acelui dispozitiv. Pe un calculator pot exista in acelasi timp mai multe procese care au stabilite
conexiuni in retea. Prin urmare, datele trimise catre o destinatie trebuie sa specifice, pe langa adresa
logica (IP) a calculatorului si procesul caruia ii apartine informatia respectiva. Identificarea proceselor
se realizeaza prin intermediul porturilor.
Un port este un numar pe 16 biti care identifica in mod unic procesele care ruleaza pe un anumit
calculator. Orice aplicatie care realizeaza o conexiune in retea va trebui sa ataseze un numar de port
acelei conexiuni. Valorile pe care le poate lua un port sunt cuprinse intre 0 si 65535 (deoarece sunt
numere reprezentate pe 16 biti).
Exista trei tipuri diferite de numere pentru porturi, asa cum se poate observa in Fig. 1.4.

Figura 1.4: Categorii de numere de porturi

Multiplexarea si demultiplexarea datelor


Adresarea aplicatiilor este un exemplu de functionare a multiplexarii, putand exista mai multe
conexiuni de transport pentru o singura conexiune de retea. Folosind adresele de port, protocoalele de
la nivelul Transport, multiplexeaza la transmisie datele venite de la mai multe aplicatii, combinandu-
le intr-un singur flux de date care va fi transmis. Aceleasi protocoale primesc datele la receptie si
demultiplexeaza fluxul de date, directionand fiecare segment catre aplicatia sau procesul destinatar.
Pe scurt, multiplexarea si demultiplexarea datelor se refera la combinarea datelor provenite de
la mai multe procese sursa intr-un singur flux de date si reimpartirea fluxului inapoi in datele necesare
proceselor destinatar.

Trasarea comunicatiei individuale intre aplicatiile sursei si destinatiei


Identificarea diferitelor aplicatii are ca efect posibilitatea de a se realiza o comunicare individuala
intre acele aplicatii. Atunci cand un proces de tip aplicatie doreste sa stabileasca o conexiune cu o
aplicatie aflata 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 la care procesele pot sa astepte cereri de
conexiune. Aceste adrese sunt porturile.

Impartirea datelor in segmente si administrarea fiecarui segment in parte


Pentru a realiza comunicatia intre procese, nivelul Transport trebuie sa realizeze mai multe
sarcini diferite, dar care sunt dependente intre ele. Pentru transmisie, nivelul Transport trebuie sa
tina evidenta datelor venite de la fiecare aplicatie si apoi sa combine aceste date intr-un singur flux
de date pe care sa il trimita la nivelele inferioare.

7
Corina-Ştefania Nănău
De la nivelele superioare, nivelul Transport primeste cantitati mari de date asupra carora nu
poate sa execute operatia de multiplexare. Pentru a rezolva aceasta problema, se sparge fluxul de date
in segmente de dimensiuni mici, care sunt mai usor de manevrat la transmisia in retea.
Pentru a exemplifica segmentarea, vom presupune ca un computer incearca sa trimita prin retea
un fisier de dimensiuni foarte mari. Transferul acestui fisier ar dura foarte mult timp. Daca acest fisier
(transformat in flux de date) nu ar fi segmentat, nu ar exista nicio posibilitate ca alte terminale sa
foloseasca reteaua pe durata de transfer a acestor date. Alte terminale ar trebui sa astepte ca fisierul
sa fie transmis complet inainte ca ele sa inceapa sa transmita date.
Deoarece reteaua trebuie sa poata fi folosita de mai multe terminale in acelasi timp, trebuie
facuta aceasta segmentare (si apoi binenteles reasamblarea segmentelor).
Datele de la fiecare proces (terminal) se impart in bucati mici care ocupa putin din spatiul
aferent legaturii si astfel si celelalte terminale pot trimite simultan date pe retea. Acest procedeu
poarta deumirea de multiplexare in timp.

Reasamablarea segmentelor in fluxuri de date


Terminalul care primeste informatia trebuie sa realizeze operatiile inverse, adica sa reasambleze
datele din segmentele primite si sa refaca fluxul initial de date.

1.2.2 Protocolul UDP


UDP este un protocol simplu, cu putine functionalitati, care faciliteaza comunicarea intre doua
procese / aplicatii (de pe acelasi calculator sau de pe calculatoare diferite dintr-o retea). Unitatea
de date transmisa de acest protocol poarta numele de datagrama. Acesta nu realizeaza controlul
fluxului, al erorilor, nu retransmite datagrame pierdute etc. El pur si simplu ofera IP-ului un mijloc
de multiplexare a proceselor (aplicatiilor) folosind porturile de la nivelul Transport. Este utilizat in
transferurile scurte de date, de genul intrebare – raspuns din aplicatiile client - server. Principiul
de functionare este urmatorul: un client trimite o cerere scurta spre server si asteapta un
raspuns scurt; daca acesta nu vine intr-un anumit timp predefinit, atunci repeta cererea.
Un exemplu tipic de utilizare este intre un client si serverul DNS (Domain Name System) pentru
aflarea adresei IP corespunzatoare unui nume de gazda. Nu este nevoie de deschiderea unei conexiuni,
nici de inchidere, pentru transferul a doua mesaje scurte, care sa traverseze reteaua.
Atunci cand mai multe datagrame sunt trimise la destinatie, ele pot urma diferite cai, si pot
ajunge in ordine gresita. UDP nu tine cont de numerele de secventa, asa cum face protocolul TCP.
UDP nu are nici o modalitate de a reordona datagramele in ordinea in care au fost transmise. In Fig.
1.5 se observa acest lucru, si mai ales faptul ca datagramele pierdute nu se mai retransmit.

Figura 1.5: Transmiterea datagramelor la protocolul UDP

Prin urmare, UDP reasambleaza pur si simplu datele, in ordinea in care acestea au fost primite, si
le transmite mai departe aplicatiei. In cazul in care secventa de date este importanta pentru aplicatie,
aplicatia va trebui sa identifice secventa corecta a datelor si sa stabileasca modul in care datele trebuie

8
Corina-Ştefania Nănău
sa fie prelucrate.
In cazul utilizarii protocolului UDP, dupa procesul de segmentare are loc procesul de impachetare
a datelor. Aceasta impachetare consta in lipirea unui antet. PDU-ul (Protocol Data Unit) pentru
protocolul UDP este numit datagrama, desi uneori termenii segment de date si datagrama sunt
folositi alternativ pentru a descrie un PDU pentru nivelul Transport. O datagrama UDP consta dintr-
un antet de 8 de octeti urmata de zero sau mai multi octeti de date, asa cum se poate observa in Fig.
1.6.

Figura 1.6: Antetul datagramei UDP

Semnificatia informatiilor introduse in antet este urmatoarea:


ˆ Numar port sursa - 16 biti (2 octeti) - numarul de port al procesului care face apelul;
ˆ Numar port destinatie - 16 biti (2 octeti) - numarul de port al procesului care este apelat;
ˆ Lungime UDP – 16 biti (2 octeti) – dimensiunea antetului si a datelor;
ˆ Suma de control – 16 biti (2 octeti) - este un camp optional, care se completeaza doar daca
aplicatia care genereaza datagrama doreste acest lucru; acesta se calculeaza pentru verificarea
dimensiunii datagramei si se aplica pe intreaga datagrama (antet si date);
Campurile ”Numar port sursa” si ”Numar port destinatie” identifica punctele finale ale cone-
xiunii si constituie totodata un identificator al conexiunii. Portul sursa este in primul rand necesar
atunci cand un raspuns trebuie transmis inapoi la sursa. Prin copierea campului ”Numar port sursa”
din segmentul care soseste in campul ”Numar port destinatie” al segmentului care pleaca, procesul ce
trimite raspunsul specifica ce proces urmeaza sa-l primeasca de pe calculatorul cu care comunica.
Protocolul UDP nu realizeaza controlul fluxului, controlul erorii sau retransmiterea
unui segment incorect primit. Toate acestea depind de procesele utilizatorului. Avantajul acestui
protocol este insa rapiditatea in comunicare si faptul ca nu supraincarca reteaua cu mesaje.

1.2.3 Protocolul TCP


TCP este protocolul principal care permite transportul sigur al datelor de la un capat la altul al
unei conexiuni intr-o retea nesigura. A fost proiectat special pentru Internet si este larg folosit in acest
scop. Internetul este compus din nenumarate retele ce difera ca topologie, latime de banda, intarzieri
de transmitere a datelor, dimensiune a pachetelor, precum si in cazul altor parametri. TCP a fost
proiectat sa se adapteze in mod dinamic la proprietatile acestuia si sa fie robust in ceea ce priveste
mai multe tipuri de defecte.
TCP este un protocol orientat pe conexiune, segmentele calatorind bidirectional intre doua gazde
care sunt conectate logic pentru o anumita perioada de timp, permitand astfel ca un flux de octeti
trimisi de un calculator sa ajunga fara erori pe orice alt calculator din reteaua Internet.
Fiabilitatea comunicarii prin intermediul protocolului TCP este data de sesiunile orientate pe
conexiune. Inainte ca o gazda sa trimita date catre o alta gazda folosind protocolul TCP, nivelul
Transport initiaza un proces pentru a crea o legatura cu destinatia. Aceasta conexiune permite
urmarirea sesiunii (a fluxului de comunicare intre gazde). Acest proces se asigura ca fiecare gazda
are cunostinta despre comunicare si este pregatita pentru aceasta. O conversatie TCP completa cere
stabilirea unei sesiuni intre gazde, in ambele directii.
Dupa ce sesiunea a fost stabilita, destinatia trimite confirmari la sursa pentru fiecare segment
pe care il primeste. Aceste confirmari formeaza baza de fiabilitate in cadrul sesiunii TCP.
Cand sursa primeste o confirmare, se stie ca datele pentru care s-a primit respectiva confirmare
au fost livrate cu succes, si astfel se poate incheia urmarirea acelor datele. In cazul in care sursa nu

9
Corina-Ştefania Nănău
primeste o confirmare in cadrul unui interval prestabilite de timp, se retransmit datele catre destinatie.
Cateva dintre cele mai cunoscute aplicatii care transmit date cu ajutorul protocolului TCP sunt
prezentate (prin intermediul numerelor de port) in Tab. 1.3.

Numar Protocol Utilitate


port
21 FTP Serviciu de transfer de
fisiere
23 Telnet Serviciu de autentificare
la distanta
25 SMTP Serviciu de email
80 HTTP Aplicatia pentru World
Wide Web
110 POP-3 Serviciul de acces prin
email la distanta

Tabela 1.3: Aplicatii care folosesc protocolul TCP

Caracteristicile protocolului TCP


Principalele caracteristici ale protocolului TCP sunt:
ˆ Transferul de date in flux continuu - datele circula in acelasi timp, in ambele sensuri ale
conexiunii;
ˆ Siguranta transmisiei - recupereaza pachetele transmise cu erori, pierdute sau cu numar de
secventa eronat;
ˆ Controlul fluxului de date - in transferul de date dintre doua procese, cand aplicatia destinatie
trimite o confirmare catre emitent, se indica si numarul permis de octeti ce se pot receptiona,
pentru a se asigura ca transmiterea rapida de mesaje de catre un emitator, nu face ca un
receptor lent sa primeasca mai multe mesaje decat poate prelucra. In urma unui astfel de mesaj,
emitatorul isi va dimensiona segmentele transmise la lungimea indicata de receptor;
ˆ Multiplexarea - permite mai multor procese care ruleaza pe acelasi calculator gazda sa utilizeze
facilitatile protocolului TCP simultan;
ˆ Controlul conexiunii (fiabilitatea conexiunii) - presupune stabilirea numarului de secventa
si a dimensiunii ferestrei, pentru fiecare segment TCP;
ˆ Stabilirea conexiunii.

Stabilirea conexiunii
Atunci cand doua gazde comunica folosind protocolul TCP, se stabileste o conexiune
inainte ca datele sa poata fi transmise. Dupa ce comunicarea este completa, sesiunile
sunt inchise, iar conexiunea se incheie. Mecanismele de conectare si de sesiune activeaza functia
de fiabilitate a protocolului TCP.
Gazda urmareste fiecare segment de date in cadrul unei sesiuni si face schimb de informatii cu
privire la ce date sunt primite de fiecare gazda, utilizand informatiile din antetul TCP.
Pentru a stabili o conexiune, gazdele efectueaza o metoda numita three-way handshake. Bitii
de control din antetul TCP indica evolutia si starea conexiunii. Acest algoritm contine urmatorii pasi,
asa cum este prezentat in Fig. 1.7:
ˆ Clientul initiator trimite un segment care contine o valoare de secventa initiala (SEQclient =
100), ce serveste ca o cerere catre server pentru a incepe o sesiune de comunicatii;
ˆ Serverul raspunde cu un segment care contine:
– o valoare de confirmare (ACKserver = SEQclient + 1 = 101), egala cu valoarea secventei
primite plus 1. Valoarea de confirmare este una mai mare decat valoarea secventei, deoarece

10
Corina-Ştefania Nănău
ACK este intotdeauna urmatorul octet asteptat. Aceasta valoare de confirmare
permite clientului sa fie sigur ca la cererea lui de realizare a conexiunii i se raspunde;
– valoarea proprie de secventa de sincronizare (SEQserver = 300).
ˆ Clientul initiator raspunde cu un segment care contine:
– o valoare de confirmare (ACKclient = SEQserver + 1 = 301), egala cu valoarea secventei
primite plus 1;
– valoarea proprie de secventa de sincronizare plus 1 (SEQclient + 1 = 101).

Figura 1.7: Secventa necesara stabilirii unei conexiuni TCP

In Fig. 1.7 se poate observa succesiunea de secvente necesara crearii unei conexiuni intr-o
comunicare de tip TCP, unde:
ˆ SYN - Sincronizeaza valorile de secventa;
ˆ SEQ - Valoarea efectiva a secventei;
ˆ ACK - Valoarea de confirmare a primirii secventei;
ˆ CTL - Specifica bitii de control din antetul segmentului TCP, care sunt setati pe 1.

Antetul segmentului TCP


In cadrul nivelului Transport, dupa procesul de segmentare a datelor, are loc impachetarea
acestora. Aceasta impachetare consta in lipirea unui antet, noile entitati de transmisie si de receptie
purtand, asa cum am mai afirmat, numele de segmente.
Un segment TCP consta dintr-un antet de 20 de octeti (plus o parte optionala) urmat de zero
sau mai multi octeti de date, asa cum se poate observa in Fig. 1.8.

Figura 1.8: Antetul segmentului TCP

Protocolul TCP este cel care decide cat de mari trebuie sa fie aceste segmente. Dimensiunea
segmentului este limitata de unitatea maxima de transfer sau MTU (Maximum Transfer Unit). Deo-
arece MTU este in general de 1500 octeti (dimensiunea informatiei utile din Ethernet) se defineste o
limita superioara a dimensiunii unui segment.
Semnificatia informatiilor introduse in antet este urmatoarea:

11
Corina-Ştefania Nănău
ˆ Numar port sursa - 16 biti (2 octeti) - numarul de port al celui ce face apelul;
ˆ Numar port destinatie - 16 biti (2 octeti) - numarul de port al celui ce este apelat; campu-
rile ”Numar port sursa” si ”Numar port destinatie” identifica punctele finale ale conexiunii si
constituie totodata un identificator pentru conexiune.
ˆ Numarul de secventa - 32 biti (4 octeti) - numarul primului octet de date din cadrul segmen-
tului curent de date;
ˆ Numarul de confirmare - 32 biti (4 octeti) - valoarea urmatorului octet pe care destinatia se
asteapta sa il primeasca (nu a ultimului octet receptionat in mod corect);
ˆ Lungimea antetului - 4 biti - indica numarul de cuvinte de 32 de biti care sunt continute in
antetul TCP. Aceasta informatie este utila, deoarece campul ”Optiuni” este de lungime variabila,
variabilitate pe care o transmite astfel si antetului;
ˆ Rezervat – 6 biti - camp neutilizat, rezervat pentru viitor;
ˆ Steaguri /indicatori (Flags) - 6 biti - cu urmatoarea semnificatie:
– Bitul URG pozitionat pe 1 arata ca Indicatorul urgent este valid;
– Bitul ACK pe 1 indica faptul ca Numarul de confirmare este valid. Daca este pozitionat
pe 0, segmentul in discutie nu contine o confirmare, si atunci campul Numar de confirmare
este ignorat;
– Bitul PSH indica faptul ca informatia trebuie livrata aplicatiei de indata ce a fost recep-
tionata, fara a mai fi memorata in buffere, din ratiuni de eficienta;
– Bitul RST este folosit pentru a desfiinta o conexiune care a devenit inutilizabila din cauza
unur defectiuni ale calculatoarelor gazda sau din alte varii motive;
– Bitul SYN este folosit pentru stabilirea unei conexiuni. Cererea de conexiune contine
SYN = 1 si ACK = 0 , iar raspunsul la o astfel de cerere este confirmata prin combinatia
SYN = 1 si ACK = 1;
– Bitul FIN este folosit pentru a incheia o conexiune.
ˆ Lungime fereastra - 16 biti (2 octeti) - indica numarul de octeti, incepand cu cel indicat prin
numarul de confirmare, pe care ii poate receptiona cel ce primeste mesajul;
In cazul protocolului TCP, fluxul de control este tratat prin ferestre glisante, de dimensiune
variabila.
ˆ Suma de control - 16 biti (2 octeti) - indica suma campurilor de antet si de date, calculata
pentru verificare;
ˆ Indicator de urgenta - 16 biti (2 octeti) - permite identificarea pozitiei unor date de urgenta,
in cadrul protocolului TCP;
ˆ Optiuni - 32 biti (4 octeti) - a fost proiectat pentru a permite adaugarea unor facilitati supli-
mentare neacoperite de antetul obisnuit. Cea mai importanta optiune este aceea care permite
fiecarui calculator sa specifice incarcarea maxima de informatie utila TCP pe care este dispus
sa o accepte;
ˆ Date - datele furnizate protocolului de la nivelul superior;

1.2.4 Transmiterea segmentelor TCP cu confirmare de primire


Asa cum am mai afirmat, protocolul TCP ofera facilitatea de transmitere a mesajelor cu con-
firmarea primirii acestora. Daca un segment de date se pierde (de exemplu datorita unei erori de
transmisie, eroare detectata dar nu si corectata de receptor), este necesara retransmiterea acelui seg-
ment. Evident, emitatorul nu are cum sa ”ghiceasca” daca un anumit segment ajunge intact la
destinatie sau este pierdut. Drept urmare, trebuie stabilita o forma de comunicatie inapoi, dinspre
receptor spre emitator. Receptorul confirma astfel primirea corecta a segmentelor de date
prin intermediul campului ACK (acknowledge) din antetul segmentului TCP.
Ideea de baza a mecanismului de retransmitere este urmatoarea: la primirea cu succes a fiecarui
segment de date, receptorul trimite emitatorului cate un pachet cu rol de confirmare. Daca emitatorul
primeste confirmarea, trece la urmatorul segment. Daca emitatorul nu primeste confirmarea unui
segment in timpul de asteptare dus-intors normal, repeta trimiterea segmentului ce nu a fost confirmat.
Acest mecanism poate fi observat in Fig. 1.9, si poarta denumirea de Fereastra Glisanta.

12
Corina-Ştefania Nănău

Figura 1.9: Retransmiterea segmentelor pierdute

Functionarea corecta a unui algoritm de retransmitere este prezentata in Fig. 1.10. Se poate
observa in aceasta imagine, ca emitatorul nu trece la urmatorul segment de date pana cand nu primeste
confirmarea primirii corecte a segmentului anterior.

Figura 1.10: Functionarea corecta a unui algoritm de retransmitere

Desi este corect, algorimul ferestrei glisante cu transmitere pas cu pas din paragraful
precedent este ineficient in situatia in care timpul dus-intors intre emitator si receptor este mult mai
mare decat timpul necesar emiterii unui segment. Acest lucru se intampla in cazul transmiterii unor
segmente de dimensiuni mici prin legaturi cu debit mare, si la distanta mare. In aceasta situatie,
emitatorul emite repede un segment, dupa care asteapta (cea mai mare parte a timpului) propagarea
acestuia spre destinatar si intoarcerea confirmarii de primire.
Pentru cresterea eficientei, a fost introdusa posibilitatea ca emitatorul sa poata trimite unul dupa
altul mai multe segmente, fara a astepta confirmarea precedentului, pentru a-l trimite pe urmatorul.

13
Corina-Ştefania Nănău
Acest fapt nu elimina asteptarea confirmarii de primire, doar ca se permite trimiterea unui segment
nou inaintea sosirii confirmarii de primire pentru segmentul precedent. Timpul maxim de asteaptare
pentru confirmarea unui segment ramane totusi neschimbat, insa se permite trimiterea mai multor
segmente in acest timp. Aceasta noua abordare a fost adoptata ca o imbunatatire a algoritmului
Ferestrei Glisante.
Trimiterea mai multor segmente in avans schimba cateva lucruri fata de cazul trimiterii unui
singur segment.
Deoarece la un anumit moment pot exista mai multe segmente trimise de emitator si neconfir-
mate, pentru a putea corela confirmarile cu segmentele de date, este necesar ca si confirmarile sa fie
numerotate.
In urma pierderii unui segment, receptorul poate ajunge in situatia de a primi un segment fara
sa fi primit mai intai segmentul anterior. In aceasta situatie, receptorul:

ˆ ignora complet segmentul (in consecinta, nici nu trimite confirmare).


ˆ memoreaza segmentul, urmand sa il livreze destinatiei dupa primirea segmentului (sau segmen-
telor) anterioare.

Alegerea uneia sau a celeilate variante priveste doar receptorul, nu este parte a protocolului de comu-
nicatie. Mai mult, decizia de a memora sau de a ignora segmentul de date poate fi luata independent
pentru fiecare segment primit de receptor, in functie de memoria disponibila in acel moment.
In imaginile Fig. 1.11 si Fig. 1.12 putem observa doua modalitati de functionare ale algoritmului
Ferestrei Glisante. In primul caz, daca nu a fost primit segmentul numarul 2, segmentele 3 si 4
nu sunt acceptate si trebuiesc retransmise. In cel de-al doilea caz, daca segmentul 2 nu este primit,
receptorul primeste segmentele 3 si 4, dar trimite confirmarea primirii lor abia dupa ce a fost retransmis
segmentul 2 de catre gazda sursa si a fost confirmata primirea lui.

Figura 1.11: Functionarea ferestrei glisante, varianta 1

14
Corina-Ştefania Nănău

Figura 1.12: Functionarea ferestrei glisante, varianta 2

Reasamblarea in ordine a segmentelor TCP


In procesul de transmitere a informatiei exista posibilitatea, asa cum am putut observa anterior,
ca segmentele sa ajunga la destinatie in cu totul alta ordine fata de cea in care au fost trimise.
Pentru ca mesajul original sa fie inteles de receptor, segmentele sunt reasamblate in ordinea initiala.
Sunt alocate astfel numere de secventa in antetul fiecarui segment, care sa specifice ordinea emiterii
segmentelor.
In timpul instalarii sesiunii de comunicare, este setat un numar de secventa initial (ISN -
Initial Sequence Number). Acest numar de secventa initial reprezinta valoarea de pornire a
octetilor pentru sesiunea curenta, care vor fi transmisi la receptor.
In timp ce datele sunt transmise in timpul sesiunii, numarul de ordine este incrementat cu
numarul de octeti ce au fost transmisi la fiecare segment. Aceasta urmarire a octetilor de date
permite fiecarui segment sa fie unic identificat si recunoscut. Segmentele care lipsesc pot fi identificate
foarte usor. Numerele de ordine ale segmentelor ajuta la cresterea fiabilitatii prin indicarea modului
de reasamblare si reordonare a segmentelor primite.
Procesul de primire al protocolului TCP aseaza datele dintr-un segment intr-un
buffer de primire. Segmentele sunt plasate in ordinea corecta a numarului de ordine si se transmit
mai departe la nivelul aplicatie atunci cand acestea sunt reasamblate. Orice segment care soseste cu
un numar de secventa diferit de cel asteptat este retinut pentru prelucrare ulterioara. Dupa care,
atunci cand ajung segmentele cu octetii lipsa, aceste segmente retinute sunt prelucrate si ele.

Controlul fluxului de date in TCP


Una dintre functiile principale ale protocolului TCP este aceea de a se asigura ca fiecare segment
ajunge la destinatie. Serviciile TCP de la destinatie confirma datele pe care le-a primit de la aplicatia
sursa. Valoarea de secventa din antetul segmentului si numarul de confirmare sunt folosite impreuna
pentru a confirma primirea octetilor de date continuti de segmente.

15
Corina-Ştefania Nănău
Numarul de ordine este numarul de octeti care au fost transmisi in sesiunea curenta, plus
1 (acesta fiind numarul primului octet de date din segmentul curent). Protocolul TCP foloseste
numarul de confirmare in segmentele trimise inapoi la sursa, pentru a indica octetul urmator al
sesiunii curente, pe care receptorul se asteapta sa il primeasca.
Sursa este astfel informata ca destinatia a primit toti octetii din secventa curenta de date pana
la, dar nu inclusiv, octetul indicat de numarul de confirmare. Este de asteptat ca dispozitivul ce
trimite date, sa trimita un segment care utilizeaza un numar de ordine egal cu numarul de confirmare
primit. Pe scurt, fiecare conexiune este de fapt un ansamblu de doua sesiuni, fiecare pe
o singura directie. Numerele de secventa si numerele de confirmare sunt transmise in
ambele directii.
Cantitatea de date pe care o sursa o poate transmite inainte de a trebui sa primeasca o confir-
mare, se numeste dimensiunea (lungimea) ferestrei. Lungimea ferestrei este un camp din antetul
TCP care permite gestionarea de date pierdute si controlul fluxului.
Protocolul TCP ofera, de asemenea, mecanismele de control al fluxului de date. Controlul
fluxului asista fiabilitatea transmisiei prin protocolul TCP ajustand rata efectiva a fluxului de date
intre cele doua servicii din sesiune. Atunci cand sursa este informata ca valoarea de date specificata
in segmente este primita, se poate continua transmisia mai multor date pentru aceasta sesiune.
Lungimea ferestrei in antetul TCP precizeaza cantitatea de date care poate fi transmisa inainte
ca o confirmare sa fie primita. Dimensiunea ferestrei initiale se determina in cursul pornirii sesiunii.
Mecanismul de feedback TCP ajusteaza rata efectiva de transmitere a datelor la
debitul maxim pe care reteaua si dispozitivul destinatie il pot suporta fara pierderi.
Protocolul TCP incearca sa administreze rata de transmitere astfel incat toate datele sa fie primite si
retransmisiile sa fie minimizate.
In Fig. 1.13 apare o reprezentare simplificata a dimensiunii ferestrei si a confirmarii corespun-
zatoare.

Figura 1.13: Functionarea ferestrei glisante - confirmarea primirii ferestrelor si evidentierea dimensiunii
ferestrei

In acest exemplu, dimensiunea ferestrei initiale pentru o sesiune TCP este setata la 3000 bytes
(octeti), fara a-si ajusta valoarea pe parcursul transmisiei de date.
In cazul in care expeditorul a transmis 3000 de octeti (doua segmente de cate 1500 de octeti in
cazul de fata), se asteapta o confirmare a acestor octeti inainte de a transmite mai multe segmente
in aceasta sesiune. Odata ce expeditorul a primit aceasta confirmare de la receptor, poate transmite
din nou o cantitate de date de 3000 de octeti. In exemplul prezentat se trimit din nou doua segmente
a cate 1500 de octeti. Amintim ca dimensiunea segmentelor nu este obligatoriu fixa, dar in
general, valoarea MTU pentru Ethernet este de 1500 octeti.
In timpul intarzierii, pana se primeste confirmarea, expeditorul nu va mai trimite segmente su-
plimentare pentru aceasta sesiune. In perioadele cand reteaua este saturata sau resursele receptorului
sunt limitate, intarzierea poate creste. Cu cat aceasta intarziere creste mai mult, rata de transmitere
eficienta a datelor pentru sesiunea curenta scade.

16
Corina-Ştefania Nănău
1.2.5 Comparatie intre protocoalele TCP si UDP
O comparatie intre caracteristicile celor doua protocoale este oferita pe scurt in Fig. 1.14

Figura 1.14: Scurta comparatie intre TCP si UDP

Bibliografia folosita ca sursa de documentare pentru majoritatea informatiilor pre-


zentate in acest curs este urmatoarea:

17
Corina-Ştefania Nănău

Bibliografie

[1] Radu-Lucian Lupşa, Reţele de calculatoare, Principii

[2] Liviu Sime, Note de curs – Introducere ı̂n reţelele de calculatoare

[3] Reţele de calculatoare, Curs, UNIVERSITATEA ”POLITEHNICĂ” DIN BUCUREŞTI, FACUL-


TATEA TRANSPORTURI, Departamentul Telecomenzi şi Electronică ı̂n Transporturi

[4] Florea Ion, Reţele de calculatoare, Curs

[5] Silviu Vasile, Fundamentele retelelor de calculatoare (Introduction to Networks)

18

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