Documente Academic
Documente Profesional
Documente Cultură
Reele de Calculatoare
Curs 10
Obiective:
1. Nivelul transport
Nivelul transport nu este doar un alt nivel, el este miezul ntregii ierarhii de protocoale. Sarcina
sa este de a transporta date de la maina surs la maina destinaie ntr-o manier sigur i
eficace din punctul de vedere al costurilor, independent de reeaua sau reelele fizice utilizate.
Fr nivelul transport i-ar pierde sensul ntregul concept de ierarhie de protocoale.
1.1.1
Scopul principal al nivelului transport este de a oferi servicii eficiente, sigure i ieftine
utilizatorilor, n mod normal procese aparinnd nivelului aplicaie. Pentru a atinge acest scop,
nivelul transport utilizeaz serviciile oferite de nivelul reea. Hardware-ul i/sau software-ul care
se ocup de toate acestea n cadrul nivelului transport poart numele de entitate de transport.
Entitatea de transport poate aparine nucleului sistemului de operare, unui proces distinct, unei
biblioteci legate de aplicaiile de reea sau poate fi gsit n cadrul plcii de reea. Relaia
(logic) ntre nivelurile reea, transport i aplicaie este prezentat n Figura 10-1.
Primitiva
LISTEN
CONNECT
SEND
RECEIVE
CONNECTION REQ.
DATE
(nimic)
DISCONNECT
DISCONNECTION REQ.
Explicaii
Se blocheaz pn cnd un proces
ncearc s se conecteze
ncearc s stabileasc conexiunea
Transmite informaie
Se blocheaz pn cnd primete
date trimise
Trimis de partea care vrea s se
deconecteze
Pentru a vedea cum pot fi utilizate aceste primitive, se consider o aplicaie cu un server i un
numr oarecare de clieni la distan. La nceput, serverul apeleaz primitiva LISTEN, n
general prin apelul unei funcii de bibliotec care face un apel sistem pentru a bloca serverul
pn la apariia unei cereri client. Atunci cnd un client vrea s comunice cu serverul, el va
executa un apel CONNECT. Entitatea de transport trateaz acest apel blocnd apelantul i
trimind un pachet la server. Acest pachet ncapsuleaz un mesaj ctre entitatea de transport
de pe server.
Se va folosi acronimul TPDU (Transport Protocol Data Unit - unitate de date a protocolului de
transport) pentru toate mesajele schimbate ntre dou entiti de transport corespondente.
Astfel, TPDU-urile (schimbate la nivelul transport) sunt coninute n pachete (utilizate de nivelul
reea). La rndul lor, pachetele sunt coninute n cadre (utilizate la nivelul legtur de date).
Atunci cnd este primit un cadru, nivelul legtur de date prelucreaz antetul cadrului i d
coninutul util nivelului reea. Entitatea reea prelucreaz antetul pachetului i paseaz
coninutul util entitii de transport. Aceast ierarhie este ilustrat n Figura 10-3.
Apelul CONNECT al clientului genereaz un TPDU de tip CONNECTION REQUEST care i
este trimis serverului. Atunci cnd acesta ajunge, entitatea de transport verific dac serverul
este blocat ntr-un apel LISTEN (deci dac ateapt o cerere de conexiune). n acest caz,
deblocheaz serverul i trimite napoi clientului un TPDU CONNECTION ACCEPTED. Atunci
cnd acest TPDU ajunge la destinaie, clientul este deblocat i conexiunea este stabilit.
Acum pot fi schimbate date folosindu-se primitivele SEND i RECEIVE. Cea mai simpl posibilitate este ca una din pri s fac un apel RECEIVE (blocant) ateptnd ca cealalt parte s
5
Se observ c la nivelul transport, chiar i un schimb de date simplu, unidirecional, este mult
mai complicat dect la nivelul reea. Fiecare pachet de date trimis va fi (n cele din urm)
confirmat. Pachetele care conin TPDU-uri de control sunt de asemenea confirmate, implicit sau
explicit. Aceste confirmri sunt gestionate de entitile de transport folosind protocoalele de la
nivelul reea i nu sunt vizibile utilizatorilor nivelului transport. Similar, entitile de transport
trebuie s se ocupe de ceasuri i de retransmisii. Nimic din tot acest mecanism nu este vizibil
pentru utilizatorii nivelului transport, pentru care o conexiune este un tub fr pierderi: un
utilizator ndeas bii la un capt i acetia apar, ca prin minune, la captul celalalt. Aceast
capacitate de a ascunde complexitatea este motivul care face ierarhia de protocoale s fie un
instrument att de puternic.
Atunci cnd o conexiune nu mai este necesar, ea trebuie eliberat pentru a putea elibera i
spaiul alocat n tabelele corespunztoare din cele dou entiti de transport. Deconectrile se
pot face n dou variante: asimetric sau simetric. n varianta asimetric, oricare dintre
utilizatori poate ape-la o primitiv DISCONNECT, ceea ce va avea ca rezultat trimiterea unui
TPDU DISCONNECT REQUEST entitii de transport aflate la distan. La sosirea acestuia
conexiunea este eliberat.
n varianta simetric fiecare direcie este nchis separat, independent de cealalt. Atunci cnd
una din pri face un apel DISCONNECT, nsemnnd c nu mai sunt date de trimis, ea va putea
nc recepiona datele transmise de entitatea de transfer aflat la distan. n acest model
conexiunea este eliberat dac ambele pri au apelat DISCONNECT.
Primitiva
SOCKET
BIND
LISTEN
ACCEPT
CONNECT
SEND
RECEIVE
CLOSE
Soclurile nou create nu au nc nici o adres. Ataarea unei adrese se face utiliznd primitiva
BIND. Odat ce un server a ataat o adres unui soclu, clienii se pot conecta la el. Motivul
pentru care apelul SOCKET nu creeaz adresa direct este c unor procese le pas de adresa
lor, n timp ce altele nu.
Urmeaz apelul LISTEN, care aloc spaiu pentru a reine apelurile primite n cazul cnd mai
muli clieni ncearc s se conecteze n acelai timp. Spre deosebire de modelul din primul
nostru exemplu, aici LISTEN nu mai este un apel blocant.
Pentru a se bloca i a atepta un apel, serverul execut o primitiv ACCEPT. Atunci cnd
sosete un TPDU care cere o conexiune, entitatea de transport creeaz un nou soclu cu
aceleai proprieti ca cel iniial i ntoarce un descriptor de fiier pentru acesta. Serverul poate
atunci s creeze un nou proces sau fir de execuie care va gestiona conexiunea de pe noul
soclu i s atepte n continuare cereri de conexiune pe soclul iniial. ACCEPT returneaz un
descriptor normal de fiier, care poate fi folosit pentru citirea i scrierea n mod standard, la fel
ca pentru fiiere.
Din punct de vedere al clientului, soclul trebuie creat folosind o primitiv SOCKET, dar primitiva
BIND nu mai este necesar, deoarece adresa folosit nu mai este important pentru server.
Primitiva CONNECT blocheaz apelantul i demareaz procesul de conectare. Cnd acesta s-a
terminat (adic atunci cnd TPDU-ul corespunztor a fost primit de la server), procesul client
este deblocat i conexiunea este stabilit. Att clientul ct i serverul pot utiliza acum primitivele
SEND i RECEIVE pentru a transmite sau recepiona date folosind o conexiune duplex integral.
Se pot folosi i apelurile de sistem READ i WRITE standard din UNIX, dac nu sunt necesare
opiunile speciale oferite de SEND i RECV.
Eliberarea conexiunii este simetric. Atunci cnd ambele pri au executat primitiva CLOSE,
conexiunea este eliberat.
Serviciul transport este implementat prin intermediul unui protocol de transport folosit de cele
dou entiti de transport. Cteva caracteristici sunt asemntoare pentru protocoalele de
transport i pentru cele de legtur de date. Amndou trebuie s se ocupe, printre altele, de
controlul erorilor, de secveniere i de controlul fluxului.
Totui, exist diferene semnificative ntre cele dou protocoale. Aceste diferene sunt datorate
deosebirilor majore dintre mediile n care opereaz protocoalele, aa cum rezult din Figura 106. La nivelul legturii de date, cele dou rutere comunic direct printr-un canal fizic, n timp ce la
nivelul transport acest canal fizic este nlocuit de ntreaga subreea. Aceast deosebire are mai
multe implicaii importante pentru protocoale.
n cazul legturii de date, pentru un ruter nu trebuie specificat cu care alt ruter vrea s
comunice, deoarece fiecare linie specific n mod unic o destinaie. n schimb, n cazul nivelului
transport este necesar adresarea explicit.
n plus, procesul stabilirii unei conexiuni prin cablul din Figura 10-6(a) este simplu: cellalt capt
este ntotdeauna acolo (n afar de cazul n care nu a czut) i n nici unul din cazuri nu sunt
prea multe de fcut. Pentru nivelul transport ns, stabilirea iniial a conexiunii este mult mai
complicat, aa cum se va vedea.
Figura 10-6 (a) Mediul pentru nivelul legtur de date. (b) Mediul pentru nivelul transport.
O alt diferen ntre nivelurile legtur de date i transport, care genereaz multe probleme,
este existena potenial a unei capaciti de memorare a subreelei. Atunci cnd un ruter trimite
un cadru (nivel legtur de date), acesta poate s ajung sau poate s se piard, dar nu poate
s se plimbe un timp ajungnd pn la captul lumii i s apar 30 de secunde mai trziu, ntrun moment nepotrivit. Dac subreeaua folosete datagrame i dirijare adaptiv, exist o
posibilitate - care nu poate fi neglijat - ca un pachet s fie pstrat pentru un numr oarecare de
9
2.1 Adresarea
Atunci cnd un proces aplicaie (de exemplu, un proces utilizator) dorete s stabileasc o
conexiune cu un proces aflat la distan, el trebuie s specifice cu care proces dorete s se
conecteze. (La protocoalele de transport neorientate pe conexiune apare aceeai problem: cui
trebuie trimis mesajul?). Metoda folosit n mod normal este de a defini adrese de transport la
care procesele pot s atepte cereri de conexiune. n Internet acestea se numesc porturi. La
reelele ATM perechile se numesc AAL - SAP-uri. n continuare se va folosi pentru acestea
termenul generic TSAP (Transport Service Access Point - punct de acces la serviciul de
transport). Punctele similare n cazul nivelului reea (adic adresele la nivel reea) sunt numite
NSAP (Network Service Access Point). Adresele IP sunt exemple de NSAP-uri.
Figura 10-7 ilustreaz relaia ntre TSAP, NSAP i conexiunile transport. Procesele aplicaie,
att clienii ct i serverele, se pot ataa la TSAP pentru a stabili o conexiune la un TSAP la
distan. Aceste conexiuni ruleaz prin TSAP-uri pe fiecare gazd aa cum se arat.
Necesitatea de a avea mai multe TSAP-uri este dat de faptul c n unele reele, fiecare
calculator are un singur NSAP, deci cumva este nevoie s se disting mai multe puncte de
sfrit de transport care partajeaz acel NSAP.
Un scenariu posibil pentru stabilirea unei conexiuni la nivel transport este urmtorul.
1. Un proces server care furnizeaz ora exact i care ruleaz pe gazda 2 se ataeaz la
TSAP 122 ateptnd un apel. Felul n care un proces se ataeaz la un TSAP nu face
parte din modelul de reea i depinde numai de sistemul de operare local. Poate fi
utilizat un apel de tip LISTEN din capitolul precedent.
2. Un proces aplicaie de pe gazda 1 dorete s afle ora exact; atunci el genereaz un
apel CONNECT specificnd TSAP 1208 ca surs i TSAP 1522 ca destinaie. Aceast
aciune are ca rezultat n cele din urm stabilirea unei conexiuni la nivel transport ntre
procesele aplicaie de pe gazda 1i serverul 1 de pe gazda 2.
3. Procesul aplicaie trimite o cerere o cerere pentru timp.
10
Gazda 1
Gazda 2
Trebuie reinut c foarte bine pot exista alte servere pe gazda 2 care s fie ataate la alte
TSAPuri i care s atepte conexiuni care ajung pe acelai NSAP.
Figura 10-7 explic aproape tot, cu excepia unei mici probleme: cum tie procesul utilizator de
pe maina 1 c serverul de or exact este ataat la TSAP 1522? O posibilitate este ca acest
server de or exact s se ataeze la TSAP 1522 de ani de zile i, cu timpul, toi utilizatorii au
aflat acest lucru. n acest model serviciile au adrese TSAP fixe, care pot fi afiate n fiiere n
locuri bine cunoscute, cum este fiierul etc/services pe sistemele UNIX care afieaz ce servere
sunt ataate permanent i la ce porturi. Dar schema cu adrese de servicii fixe funcioneaz doar
pentru un numr mic de servicii cheie, a cror adres nu se schimb niciodat (de exemplu
server de Web). ns, n general, procesele utilizator vor s comunice cu alte procese care
exist numai pentru scurt timp i nu au o adres TSAP dinainte cunoscut. Pe de alt parte, pot
exista mai multe procese server, majoritatea utilizate foarte rar, i ar fi neeconomic ca fiecare s
fie activ i s asculte la o adres TSAP fix tot timpul. Pe scurt, este necesar o soluie mai
bun.
O astfel de soluie este prezentat n Figura 10-8, ntr-o form simplificat. Ea este cunoscut
ca protocolul de conectare iniial. n loc ca orice server s asculte la un TSAP fixat, fiecare
main care dorete s ofere servicii utilizatorilor aflai la distan are un server de procese
special care acioneaz ca un intermediar pentru toate serverele mai puin utilizate. El ascult n
11
Figura 10-8 Stabilirea unei conexiuni ntre calculatorul gazd1 i serverul pentru ora exact.
n timp ce acest protocol funcioneaz bine pentru serverele care pot fi create ori de cte ori
este nevoie de ele, exist mai multe situaii n care serviciile exist independent de serverul de
procese. De exemplu, un server de fiiere va rula folosind un hardware specializat (o maina cu
disc) i nu poate fi creat din mers. Pentru a trata aceast situaie, este des utilizat o soluie
alternativ. n acest model exist un proces special numit server de nume (name server sau,
uneori, directory server). Pentru a gsi adresa TSAP corespunztoare unui serviciu dat prin
nume, aa cum este ora exact, utilizatorul stabilete o conexiune cu serverul de nume (care
ateapt mesaje la un TSAP cunoscut). Apoi utilizatorul trimite un mesaj specificnd numele
serviciului, iar serverul de nume i trimite napoi adresa TSAP a acestuia. Dup aceasta,
utilizatorul elibereaz conexiunea cu serverul de nume i stabilete o nou conexiune cu
serviciul dorit.
n acest model, atunci cnd este creat un nou serviciu, el trebuie s se nregistreze singur la
serverul de nume, furniznd att numele serviciului oferit (n general un ir ASCII) ct i adresa
12
Figura 10-9 (a) TPDU-urile nu pot s intre n regiunea interzis. (b) Problema resincronizrii.
Odat ce ambele entiti de transport au czut de acord asupra numrului de secven iniial,
pentru controlul fluxului poate fi folosit orice protocol cu fereastr glisant. n realitate curba ce
reprezint numrul iniial de secven (desenat cu linie ngroat) nu este chiar liniar, ci n
trepte, cci ceasul avanseaz n trepte. Pentru simplitate, se va ignora acest detaliu.
O problem apare atunci cnd cade un calculator gazd. Cnd el i revine, entitatea sa de
transport nu tie unde a rmas n spaiul numerelor de secven. O soluie este de a cere
entitii de transport s stea neocupat T secunde dup revenire pentru ca n acest timp toate
vechile TPDU s dispar. Totui, ntr-o reea complex T poate fi destul de mare, astfel c
aceast strategie nu este prea atrgtoare.
15
Figura 10-10 Trei scenarii posibile de stabilire a conexiunii pentru un protocol cu nelegere n
trei pai. CR reprezint CONNECTION REQUEST. (a) Cazul normal, (b) Un duplicat vechi al
unui mesaj CONNECTION REQUEST apare cnd nu trebuie, (c) Sunt duplicate att
CONNECTION REQUEST ct i CONNECTION ACCEPTED.
Pentru a rezolva aceasta problem, Tomlinson (1975) a introdus stabilirea conexiunii cu nelegere n trei pai (three-way handshake). Acest protocol nu necesit ca ambele pri s nceap
s trimit acelai numr de secven, deci poate fi utilizat i mpreun cu alte metode de
sincronizare dect ceasul global. Procedura normal de iniiere a conexiunii este exemplificat
17
Eliberarea simetric este util atunci cnd fiecare proces are o cantitate fix de date de trimis i
tie bine cnd trebuie s transmit i cnd a terminat. n alte situaii ns, nu este deloc uor de
determinat cnd trebuie eliberat conexiunea i cnd a fost trimis tot ce era de transmis. S-ar
putea avea n vedere un protocol de tipul urmtor: atunci cnd 1 termin, trimite ceva de tipul:
Am terminat. Ai terminat i tu? Dac gazda 2 rspunde: Da, am terminat. nchidem! conexiunea
poate fi eliberat n condiii bune.
Figura 10-13 Patru cazuri posibile la eliberarea conexiunii: (a)Cazul normal cu confirmare n
trei timpi. (b)Ultima confirmare este pierdut. (c) Rspunsul este pierdut. (d) Rspunsul i
urmtoarele cereri de deconectare sunt pierdute. (DR=DISCONNECT REQUEST).
Se consider acum cazul n care cel de-al doilea DR este pierdut: utilizatorul care a iniiat deconectarea nu va primi rspunsul ateptat, va atepta un anumit timp i va trimite din nou un
DR. n Figura 10-13(c), se poate vedea cum se petrec lucrurile n acest caz, presupunnd c la
a doua ncercare toate TPDU-urile ajung corect i la timp.
Ultima posibilitate pe care o studiem, prezentat n Figura 10-13(d), este similar cu cea din
21
Figura 10-14 (a) Tampoane de dimensiune fix nlnuite. (b) Tampoane de dimensiune
variabil nlnuite. (c) Un tampon circular pentru fiecare conexiune.
Chiar dac receptorul va realiza memorarea temporar a mesajelor primite, mai rmne problema dimensiunii tamponului. Dac cea mai mare parte a TPDU-urilor au aceeai dimensiune,
este natural organizarea tampoanelor ntr-o resurs comun care conine tampoane de
aceeai dimensiune, cu un TPDU per tampon, ca n Figura 10-14(a). Dac ns dimensiunea
23
Figura 10-15 Alocarea dinamic a tampoanelor. Sgeile indic direcia transmisiei. Punctele
de suspensie (...) indic pierderea unui TPDU.
Figura 10-15 este un exemplu pentru modul n care administrarea dinamic a ferestrelor poate fi
folosit ntr-o subreea cu datagrame, cu numere de secven pe 4 bii. Se presupune c
informaia despre alocarea tampoanelor este mpachetat n TPDU-uri distincte i c este
separat de traficul n sens invers. La nceput A dorete opt tampoane, dar nu i se acord dect
patru. Dup aceea trimite trei TPDU-uri, iar al treilea este pierdut. TPDU-ul 6 confirm recepia
tuturor TPDU-urilor cu numere de secven mai mici sau egale cu 1, permind lui A s
elibereze acele tampoane i, mai mult, l informeaz pe A c B poate s mai recepioneze trei
TPDU-uri (adic TPDU-urile cu nu-mere de secven 2, 3, 4). A tie c a trimis deja numrul 2,
deci se gndete c ar putea trimite 3 i 4, ceea ce i ncearc s fac. n acest moment, el
este blocat i trebuie s atepte alocarea unui tampon. Expirarea timpului pentru primirea
confirmrii determin retransmisia mesajului 2 (linia 9), care poate avea loc, dei emitorul este
blocat, deoarece se vor utiliza tampoane deja alocate. n linia 10, B confirm primirea tuturor
TPDU-urilor pn la 4, dar l ine pe A nc blocat. Urmtorul TPDU de la B la A aloc nc un
tampon i i permite lui A s continue.
n cazul strategiilor pentru alocarea tampoanelor de tipul celei de mai sus, eventuale probleme
25
Multiplexarea poate s fie util nivelului transport i din alt motiv, legat de deciziile tehnice i nu
de politica de preuri ca pn acum. S presupunem, de exemplu, c o subreea folosete
intern circuite virtuale i impune rat de date maxim p fiecare dintre ele. Dac un utilizator are
nevoie de mai mult lime de band dect poate oferi un circuit virtual, o soluie este ca nivelul
transport s deschid mai multe conexiuni reea i s distribuie traficul prin acestea (ntr-un
sistem round-robin), la fel ca n Figura 10-16(b). Acest mod de operare se numete
multiplexare n jos. n cazul a k conexiuni reea deschise limea de band real este
multiplicat cu un factor k. Un exemplu obinuit de multiplexare n jos apare la utilizatorii care
au acas o linie ISDN. Aceast linie pune la dispoziie dou conexiuni separate de 64 Kbps.
Folosirea ambelor pentru apelul unui distribuitor de Internet i mprirea traficului pe ambele
linii, face posibil atingerea unei limi de band efectiv de 128 Kbps.
27
ncercarea de a reproiecta mai minuios protocolul nu ajut. Chiar dac clientul i serverul
schimb mai multe TPDU-uri nainte ca serverul s transfere datele, astfel nct clientul tie
exact ceea ce se petrece pe server, nu poate afla dac serverul a czut imediat nainte sau
imediat dup transferul datelor. Concluzia se impune de la sine: dat fiind condiia de baz ca
dou evenimente s nu fie simultane, revenirea dup o cdere nu poate fi fcut transparent
29
Internet-ul are dou protocoale principale n nivelul de transport: unul neorientat pe conexiune i
unul orientat pe conexiune. Protocolul neorientat pe conexiune se numete UDP. Protocolul
orientat pe conexiune se numete TCP.
3.1.
Introducere n UDP
3.2.
ntr-un anume sens, trimiterea unui mesaj ctre o staie la distan i primirea napoi a unui rspuns seamn mult cu realizarea unei funcii de apel ntr-un limbaj de programare. n ambele
31
Figura 10-19 Paii pentru a crea un apel de procedur la distan. Stub-urile sunt haurate.
n ciuda eleganei conceptului de RPC, sunt civa erpi care se ascund prin iarb. Unul mare
este utilizarea parametrilor pointer. n mod normal, transmiterea unui pointer ctre procedur nu
este o problem. Procedura apelat poate folosi pointer-ul n acelai mod n care poate s o
fac i cel care o apeleaz, deoarece ambele proceduri se gsesc n acelai spaiu de adrese
virtuale. Cu RPC-ul, transmiterea pointer-ilor este imposibil deoarece clientul i server-ul se
gsesc n spaii de adres diferite. n anumite cazuri, se pot folosi unele trucuri pentru a face
posibil transmiterea pointer-ilor. Se presupune c primul parametru este un pointer ctre un
ntreg, k. Stub-ul client poate mpacheta variabila k i s o trimit server-ului. Atunci, server stub
creeaz un pointer ctre k i-l transmite procedurii server, exact aa cum aceasta se ateapt.
Cnd procedura server cedeaz controlul server stub, acesta din urm trimite variabila k napoi
clientului, unde noul k este copiat peste cel vechi, n caz c serverul l-a schimbat. n fapt,
secvena standard de apelare apel-prin-referin a fost nlocuit de copiaz-restaureaz (eng.:
copy-restore). Din pcate, acest truc nu funcioneaz ntotdeauna, de exemplu dac un pointer
este ctre un grafic sau alt structur complex de date. Din acest motiv, trebuie puse anumite
restricii asupra parametrilor procedurilor apelate la distan.
O a doua problem este aceea c n limbajelor mai puin bazate pe tipuri, cum ar fi C-ul, este
perfect legal s scrii o procedur care calculeaz produsul scalar a doi vectori, fr a specifica
dimensiunea vreunuia dintre ei. Fiecare poate fi terminat printr-o valoare special cunoscut
doar de ctre procedura apelat i de cea apelant. n aceste condiii, n mod cert este
33
3.3.
RPC-ul client-server este un domeniu n care UDP este mult folosit. Un alt domeniu este acela
al aplicaiilor multimedia n timp real. n particular, avnd n vedere c radioul pe internet,
telefonia pe Internet, muzica la cerere, video-conferinele, video la cerere i alte aplicaii
multimedia au devenit mai rspndite, oamenii au descoperit c fiecare aplicaie a folosit, mai
mult sau mai puin, acelai protocol de transport n timp real. Treptat a devenit clar faptul c un
protocol generic de transport n timp real, pentru aplicaii multimedia, ar fi o idee bun. Aa a
luat natere RTP-ul (Real-time Transport Protocol, Protocol de transport n timp real). Este
descris n RFC 1889 i acum este folosit pe scar larg.
Poziia RTP-ului n stiva de protocoale este oarecum ciudat. S-a hotrt s se pun RTP-ul n
spaiul utilizator i s se ruleze (n mod normal) peste UDP. El funcioneaz dup cum urmeaz.
Aplicaiile multimedia constau n aplicaii audio, video, text i posibil alte fluxuri. Acestea sunt
trimise bibliotecii RTP, care se afl n spaiul utilizator mpreun cu aplicaia. Apoi, aceast
34
Ca o consecin a acestei proiectri, este cam dificil de spus n ce nivel este RTP-ul. Cum
ruleaz n spaiul utilizator i este legat la programul aplicaie, n mod cert arat ca un protocol
de aplicaie. Pe de alt parte, este un protocol generic independent de aplicaie, care doar
furnizeaz faciliti de transport, astfel nct arat totodat ca un protocol de transport. Probabil
c cea mai potrivit descriere este aceea c este un protocol de transport care este
implementat la nivelul aplicaie.
Funcia de baz a RTP-ului este multiplexarea mai multor fluxuri de date n timp real ntr-un
singur flux de pachete UDP. Fluxul UDP poate fi transmis ctre o singur destinaie (unicasting)
sau ctre destinaii multiple (multicasting). Deoarece RTP-ul folosete numai UDP normal,
pachetele sale nu sunt tratate n mod special de ctre rutere, dect dac sunt activate anumite
faciliti de calitate a serviciilor din IP. n particular, nu exist garanii speciale referitoare la
livrare, bruiaj etc.
Fiecrui pachet trimis n fluxul RTP i se d un numr cu unu mai mare dect al predecesorului
su. Aceast numerotare permite destinaiei s stabileasc dac lipsesc unele pachete. Dac
un pachet lipsete, cea mai bun decizie ce poate fi luat de ctre destinaie este de a
aproxima valoarea lips prin interpolare. Retransmiterea nu este o opiune practic avnd n
vedere c pachetul retransmis va ajunge probabil prea trziu pentru a fi util. Ca o consecin,
35
UDP-ul este un protocol simplu i are anumite nie de utilizare, cum ar fi interaciunile client-server i cele multimedia, dar pentru cele mai multe aplicaii de Internet este necesar un transport
de ncredere, secvenial al informaiei. UDP-ul nu poate oferi acest lucru, deci este nevoie de un
alt protocol. Acesta este TCP i este pionul principal de lucru al Internet-ului.
4.1.
Introducere n TCP
4.2.
Serviciul TCP este obinut prin crearea att de ctre emitor, ct i de ctre receptor, a unor
puncte finale, numite socluri (sockets). Fiecare soclu are un numr de soclu (adres) format din
adresa IP a mainii gazd i un numr de 16 bii, local gazdei respective, numit port. Port este
numele TCP pentru un TSAP. Pentru a obine o conexiune TCP, trebuie stabilit explicit o
conexiune ntre un soclu de pe maina emitoare i un soclu de pe maina receptoare.
Apelurile de soclu sunt prezentate n Figura 10-5.
Un soclu poate fi folosit la un moment dat pentru mai multe conexiuni. Altfel spus, dou sau mai
multe conexiuni se pot termina la acelai soclu. Conexiunile sunt identificate prin identificatorii
soclurilor de la ambele capete, adic (soclu 1, soclu 2). Nu este folosit nici un alt numr sau
identificator de circuit virtual.
Numerele de port mai mici dect 256 se numesc porturi general cunoscute i sunt rezervate
serviciilor standard. De exemplu, orice proces care dorete s stabileasc o conexiune cu o
main gazd pentru a transfera un fiier utiliznd FTP, se poate conecta la portul 21 al mainii
destinaie pentru a contacta demonul su FTP. Similar, portul 23 este folosit pentru a stabili o
sesiune de lucru la distan utiliznd TELNET. Lista porturilor general cunoscute se gsete la
www.iana.org. Cteva dintre cele foarte cunoscute sunt prezentate n Figura 10-22.
Port
21
23
25
Protocol
FTP
Telnet
SMTP
69
TFTP
79
Finger
80
110
119
HTTP
POP-3
NNTP
Utilitate
Transfer de fiiere
Login la distan
E-mail
Protocol de transfer de fiiere
trivial
Cutare de informaii despre un
utilizator
World Wide Web
Acces prin e-mail la distan
tiri USENET
Figura 10-23. (a) Patru segmente de 512 octei au fost trimise ca datagrame IP separate. (b)
Livrarea celor 2048 octei ctre aplicaie, printr-un singur apel read
n UNIX, aceeai proprietate o au i fiierele. Cititorul unui fiier nu poate spune dac fiierul a
fost scris bloc cu bloc, octet cu octet sau tot dintr-o dat. Ca i un fiier UNIX, programele TCP
nu au nici cea mai vag idee despre semnificaia octeilor i nici cel mai mic interes pentru a afla
acest lucru. Un octet este pur i simplu un octet.
Atunci cnd o aplicaie trimite date ctre TCP, TCP-ul le poate expedia imediat sau le poate reine ntr-un tampon (n scopul colectrii unei cantiti mai mari de informaie pe care s o
expedieze toat odat), dup bunul su plac. Cu toate acestea, cteodat, aplicaia dorete ca
informaia s fie expediat imediat. De exemplu, se presupune c un utilizator este conectat la
o main de la distan. Dup ce a fost terminat o linie de comand i s-a tastat Return, este
esenial ca linia s fie imediat expediat ctre maina de la distan i s nu fie memorat pn
la terminarea urmtoarei linii. Pentru a fora expedierea, aplicaia poate folosi indicatorul PUSH,
40
4.3.
Protocolul TCP
O caracteristic important a TCP, care domin structura protocolului, este aceea c fiecare
octet al unei conexiuni TCP are propriul su numr de secven, reprezentat pe 32 bii. Cnd a
luat fiin Internetul, liniile dintre rutere erau n cel mai bun caz linii nchiriate de 56 Kbps, deci
unei gazde funcionnd la vitez maxim i lua mai mult de o sptmn s utilizeze toate
numerele de secven. La vitezele reelelor moderne, numerele de secven pot fi consumate
intr-un ritm alarmant. Numerele de secven sunt utilizate att pentru confirmri ct i pentru
mecanismul de secveniere, acesta din urm utiliznd cmpuri separate de 32 de bii din antet.
Entitile TCP de transmisie i de recepie interschimb informaie sub form de segmente. Un
segment TCP const dintr-un antet de exact 20 de octei (plus o parte opional) urmat de zero
sau mai muli octei de date. Programul TCP este cel care decide ct de mari trebuie s fie
aceste segmente. El poate acumula informaie provenit din mai multe scrieri ntr-un singur
segment sau poate fragmenta informaia provenind dintr-o singur scriere n mai multe
41
4.4.
n Figura 10-24 este prezentat structura unui segment TCP. Fiecare segment ncepe cu un
antet format dintr-o structur fix de 20 de octei. Antetul fix poate fi urmat de un set de opiuni
asociate antetului. n continuarea opiunilor, dac ele exist, pot urma pn la 65.535 - 20 - 20 =
65.495 de octei de date, unde primul 20 reprezint antetul IP, iar al doilea antetul TCP.
Segmente care nu conin octei de date sunt nu numai permise, dar i utilizate n mod frecvent
pentru confirmri i mesaje de control.
42
Cmpurile Port surs i Port destinaie identific punctele finale ale conexiunii. Porturile general
cunoscute sunt definite la www.iana.org, dar fiecare gazd le poate aloca pe celelalte dup cum
dorete. Un port formeaz mpreun cu adresa IP a mainii sale un unic punct de capt (end
point) de 48 de bii. Conexiunea este identificat de punctele de capt ale sursei i destinaiei.
Cmpurile Numr de secven i Numr de confirmare au semnificaia funciilor lor uzuale. Trebuie observat c cel din urm indic octetul urmtor ateptat i nu ultimul octet recepionat n
mod corect. Ambele cmpuri au lungimea de 32 de bii, deoarece ntr-un flux TCP fiecare bit de
informaie este numerotat.
Lungimea antetului TCP indic numrul de cuvinte de 32 de bii care sunt coninute n antetul
TCP. Aceast informaie este util, deoarece cmpul Opiuni este de lungime variabil,
proprietate pe care o transmite astfel i antetului. Tehnic vorbind, acest cmp indic n realitate
nceputul date-lor din segment, msurat n cuvinte de 32 de bii, dar cum acest numr este
identic cu lungimea antetului n cuvinte, efectul este acelai.
Urmeaz un cmp de ase bii care este neutilizat. Faptul c acest cmp a supravieuit intact
mai mult de un sfert de secol este o mrturie despre ct de bine a fost proiectat TCP-ul.
Protocoale mai prost concepute ar fi avut nevoie de el pentru a corecta erori ale proiectrii
iniiale. Urmeaz acum ase indicatori de cte un bit. URG este poziionat pe 1 dac Indicatorul
Urgent este valid. Indicatorul Urgent este folosit pentru a indica deplasamentul n octei fa de
numrul curent de secven la care se gsete informaia urgent. O astfel de facilitate ine
locul mesajelor de ntrerupere. Aa cum am menionat deja anterior, aceast facilitate
reprezint esena modului n care emitorul poate transmite un semnal receptorului fr ca
TCP-ul n sine s fie cauza ntreruperii.
Bitul ACK este poziionat pe 1 pentru a indica faptul c Numrul de confirmare este valid. n cazul n care ACK este poziionat pe 0, segmentul n discuie nu conine o confirmare i cmpul
43
4.5.
n TCP conexiunile sunt stabilite utiliznd nelegerea n trei pai. Pentru a stabili o conexiune,
una din pri de exemplu serverul - ateapt n mod pasiv o cerere de conexiune prin execuia
primitivelor LISTEN i ACCEPT, putnd specifica o surs anume sau nici o surs n mod
particular.
Cealalt parte de exemplu clientul - execut o primitiv CONNECT, indicnd adresa IP i
numrul de port la care dorete s se conecteze, dimensiunea maxim a segmentului TCP pe
care este dispus s o accepte i, opional, o informaie utilizator (de exemplu o parol).
Primitiva CONNECT trimite un segment TCP avnd bitul SYN poziionat i bitul ACK
nepoziionat, dup care ateapt un rspuns.
Atunci cnd sosete la destinaie un segment, entitatea TCP receptoare verific dac nu cumva
exist un proces care a executat LISTEN pe numrul de port specificat n cmpul Port
destinaie. n caz contrar, trimite un rspuns cu bitul RST poziionat, pentru a refuza
conexiunea.
Dac exist vreun proces care ascult la acel port, segmentul TCP recepionat va fi dirijat ctre
procesul respectiv. Acesta poate accepta sau refuza conexiunea. Dac o accept, trimite napoi
expeditorului un segment de confirmare. n Figura 10-26(a) este reprezentat secvena de
segmente TCP transferate n caz de funcionare normal. De notat c un segment SYN
consum un octet din spaiul numerelor de secven, astfel nct confirmarea s poat fi fcut
fr ambiguiti.
46
Figura 10-26 (a) Stabilirea unei conexiuni TCP n cazul normal. (b) Coliziunea apelurilor.
Secvena de evenimente ilustrat n Figura 10-26(b) reprezint cazul n care dou maini
ncearc simultan s stabileasc o conexiune ntre aceleai dou porturi. Rezult c este
suficient s fie stabilit o singur conexiune i nu dou, deoarece conexiunile sunt identificate
prin punctele lor terminale. Dac prima iniializare conduce la crearea unei conexiuni identificat
prin (x, y) i acelai lucru l face i cea de-a doua iniializare, atunci este construit o singur
intrare de tabel, n spe pentru (x, y). Numrul iniial de secven asociat unei conexiuni nu
este 0, din motivele discutate anterior. Se utilizeaz o schem bazat pe un ceas cu o btaie la
fiecare 4 s. Pentru mai mult siguran , atunci cnd o main se defecteaz, este posibil ca
ea s nu fie reiniializat n timpul de via maxim al unui pachet, garantndu-se astfel c
pachetele unei conexiuni anterioare nu se plimb nc pe undeva prin Internet.
4.6.
Dei conexiunile TCP sunt bidirecionale, pentru a nelege cum sunt desfiinate conexiunile, cel
mai bine este s se imagineze sub forma unei perechi de legturi unidirecionale. Fiecare
legtur unidirecional este eliberat independent de perechea sa. Pentru eliberarea unei
conexiuni, orice partener poate expedia un segment TCP avnd bitul FIN setat, lucru care
indic faptul c nici o informaie nu mai urmeaz s fie transmis. Atunci cnd FIN-ul este
confirmat, sensul respectiv de comunicare este efectiv oprit pentru noi date. Cu toate acestea,
informaia poate fi transferat n continuare, pentru un timp nedefinit, n cellalt sens.
Conexiunea este desfiinat atunci cnd ambele direcii au fost oprite. n mod normal, pentru a
elibera o conexiune sunt necesare patru segmente TCP: cte un FIN i un ACK pentru fiecare
sens. Cu toate acestea, este posibil ca primul ACK i cel de-al doilea FIN s fie cuprinse n
acelai segment reducnd astfel numrul total la trei.
47
4.7.
Paii necesari stabilirii unei conexiuni pot fi reprezentai printr-un automat cu stri finite, cele 11
stri ale acestuia fiind prezentate n Figura 10-27. n fiecare stare pot aprea doar anumite
evenimente. Atunci cnd are loc un astfel de eveniment, este ndeplinit o aciune specific.
Atunci cnd se produce un eveniment a crui apariie nu este legal n starea curent, este
semnalat o eroare.
Stare
CLOSED (NCHIS)
LISTEN (ASCULTARE)
SYN RCVD (Recepie SYN)
SYN SENT (Transmisie SYN)
ESTABLISHED (STABILIT)
FIN WAIT 1 (Ateptare FIN 1)
FIN WAIT 2 (Ateptare FIN 2)
TIMED WAIT (Ateptare Temporizat)
CLOSING (n curs de INCHIDERE)
CLOSE WAIT (NCHIDE i ATEAPT)
LAST ACK (CONFIRMARE FINAL)
Descriere
Nici o conexiune nu este activ sau n ateptare
Serverul ateapt recepionarea unui apel
S-a recepionat o cerere de conexiune; atept ACK
Aplicaia a nceput deschiderea unei conexiuni
Starea normal de transfer a datelor
Aplicaia a anunat c termin
Partenerul este de acord cu eliberarea conexiunii
Se ateapt moartea tuturor pachetelor
Ambele pri ncearc simultan nchiderea
Partenerul a iniiat eliberarea conexiunii
Se ateapt moartea tuturor pachetelor
Figura 10-27 Strile utilizate n automatul cu stri finite pentru controlul conexiunii TCP
Fiecare conexiune ncepe n starea NCHIS. Aceast stare este prsit dac urmeaz s se
stabileasc o conexiune pasiv (LISTEN) sau activ (CONNECT). Dac partenerul stabilete o
conexiune de tipul opus, starea devine STABILIT. Desfiinarea conexiunii poate fi iniiat de
oricare din parteneri, o dat cu eliberarea conexiunii revenindu-se n starea NCHIS. Automatul
cu stri finite este reprezentat n Figura 10-28. Cazul cel mai comun, al unui client conectndu48
Figura 10-28 Automatul cu stri finite pentru controlul conexiunii TCP. Linia groas continu
este calea normal pentru client. Linia groas ntrerupt este calea normal pentru server.
Liniile subiri sunt evenimente neuzuale. Fiecare tranziie este etichetat de evenimentul care a
creat-o i aciunea care rezult din el, separate de slash.
Diagrama poate fi neleas cel mai bine urmrind de la bun nceput calea urmat de un client
(linia groas continu) i apoi calea urmat de un server (linia groas ntrerupt). Atunci cnd
49
4.8.
Cum s-a menionat anterior, administrarea ferestrei n TCP nu este direct legat de confirmri,
aa cum se ntmpl la cele mai multe protocoale de nivel legtur de date. De exemplu, se
presupune c receptorul are un tampon de 4096 octei, aa cum se vede n Figura 10-29. Dac
emitorul transmite un segment de 2048 de octei care este recepionat corect, receptorul va
confirma segmentul. Deoarece acum tamponul acestuia din urm mai are liberi doar 2048 octei
(pn cnd aplicaia terge nite date din acest tampon), receptorul va anuna o fereastr de
2048 octei ncepnd de la urmtorul octet ateptat.
Acum, emitorul transmite ali 2048 octei, care sunt confirmai, dar fereastra oferit este 0.
50
Atunci cnd fereastra este 0, n mod normal emitorul nu poate s transmit segmente, cu
dou excepii. n primul rnd, informaia urgent poate fi trimis, de exemplu pentru a permite
utilizatorului s opreasc procesele rulnd pe maina de la distan. n al doilea rnd, emitorul
poate trimite un segment de un octet pentru a determina receptorul s renune urmtorul octet
ateptat i dimensiunea ferestrei. Standardul TCP prevede n mod explicit aceast opiune
pentru a preveni interblocarea n cazul n care se ntmpl ca anunarea unei ferestre s fie
vreodat pierdut.
Emitorii nu transmit n mod obligatoriu date de ndat ce acest lucru este cerut de ctre
aplicaie. Nici receptorii nu trimit n mod obligatoriu confirmrile de ndat ce acest lucru este
posibil. De exemplu, n Figura 10-29, atunci cnd sunt disponibili primii 2K octei, TCP, tiind c
dispune de o fereastr de 4K octei, va memora informaia n tampon pn cnd ali 2K octei
devin disponibili i astfel se va putea transmite un segment cu o ncrcare util de 4K octei.
Aceast facilitate poate fi folosit pentru mbuntirea performanelor. Se consider o
51
Algoritmul lui Nagle i soluia lui Clark pentru sindromul ferestrei stupide sunt complementare.
Nagle a ncercat s rezolve problema furnizrii datelor ctre TCP octet cu octet, cauzat de
aplicaia emitoare. Clark a ncercat s rezolve problema extragerii datelor de la TCP octet cu
octet, cauzat de ctre aplicaia receptoare. Ambele soluii sunt valide i pot funciona
mpreun. Scopul este ca emitorul s nu trimit segmente mici, iar receptorul s nu cear
53
4.9.
Atunci cnd ncrcarea la care este supus o reea este mai mare dect poate aceasta s
suporte, apare congestia. Internet-ul nu face excepie. Dei nivelul reea ncearc de asemenea
s controleze congestia, cea mai mare parte a muncii este fcut de TCP, i aceasta deoarece
adevrata soluie a congestiei const n micorarea ratei de transfer a informaiei.
Teoretic, congestia poate fi controlat pe baza unui principiu mprumutat din fizic: legea conservrii pachetelor. Ideea de baz este de a nu injecta un nou pachet n reea pn cnd un
pachet mai vechi nu o prsete (de exemplu este furnizat receptorului). TCP ncearc s
ating acest scop prin manipularea dinamic a dimensiunii ferestrei.
Primul pas n controlul congestiei este detecia ei. Mai demult, detecia congestiei era dificil. O
depire de timp datorat pierderii unui pachet putea fi cauzat fie de (1) zgomotul de pe linia
de transmisie, fie de (2) eliminarea pachetului de ctre un ruter congestionat. Diferenierea celor
dou cazuri era dificil.
n ziua de azi, pierderea pachetului din pricina erorilor de transmisie este destul de rar, deoarece cele mai multe din trunchiurile principale de comunicaie sunt din fibr (dei reelele fr fir
sunt un subiect separat). n consecin, cele mai multe depiri ale timpilor de transmisie pe
Internet se datoreaz congestiilor. Toi algoritmii TCP din Internet presupun c depirile de
timp sunt cauzate de congestii i monitorizeaz aceste depiri pentru a detecta problemele.
54
Figura 10-31 (a) O reea rapid alimentnd un rezervor de capacitate mic. (b) O reea lent
alimentnd un receptor de mare capacitate.
n Figura 10-31, se poate vedea interpretarea hidraulic a acestei probleme. n Figura 10-31(a),
se observ o conduct groas care duce la un receptor de dimensiune mic. Atta timp ct
emitorul nu trimite mai mult ap dect poate conine gleata, apa nu se va pierde. n Figura
10-31(b), factorul de limitare nu mai este capacitatea gleii, ci capacitatea de transport a
reelei. Dac vine prea repede prea mult ap, ea se va revrsa i o anumit cantitate se va
pierde (n acest caz prin umplerea plniei).
Soluia din Internet este de a realiza posibilitatea existenei a dou probleme - capacitatea
reelei i capacitatea receptorului - i de a le trata pe fiecare separat. Pentru a face acest lucru,
fiecare emitor menine dou ferestre: fereastra acceptat de ctre receptor i o a doua
fereastr, fereastra de congestie. Fiecare reflect numrul de octei care pot fi trimii de ctre
emitor. Numrul octeilor care pot fi trimii este dat de minimul dintre cele dou ferestre.
Astfel, fereastra efectiv este minimul dintre ceea ce emitorul crede c este n regul i ceea
55
Transmisia 13 nu are noroc (este de la sine neles) i apare o depire de timp. Pragul este
stabilit la jumtate din fereastra curent (acum 40K octei, deci jumtate este 20K octei) i
startul lent este iniiat din nou. Atunci cnd confirmrile pentru transmisia 14 ncep s soseasc,
primele patru dubleaz fiecare fereastra de congestie, dar dup aceea creterea redevine
liniar.
Dac nu mai apar depiri de timp, fereastra de congestie va continua s creasc pn la
dimensiunea ferestrei receptorului. n acest punct, creterea ei va fi oprit i va rmne
constant atta timp ct nu mai apar depiri i fereastra receptorului nu i modific
dimensiunea. Ca un alt aspect, dac un pachet ICMP SOURCE QUENCH sosete i este
furnizat TCP-ului, acest eveniment este tratat la fel ca o depire de timp. O alternativ (i o
abordare mai recent) este descris n RFC 3168.
4.10.
TCP utilizeaz (cel puin conceptual) mai multe contoare pentru a face ceea ce are de fcut. Cel
mai important dintre acestea este contorul de retransmisie. Atunci cnd este trimis un
segment, se pornete un contor de retransmisie. Dac segmentul este confirmat nainte de
57
TCP trebuie s fac fa unui mediu radical diferit. Funcia de densitate a probabilitii pentru
timpul necesar ntoarcerii unei confirmri TCP arat mai degrab ca n Figura 10-33(b) dect ca
n Figura 10-33(a). Este dificil determinarea timpului n care se realizeaz circuitul dus-ntors
pn la destinaie. Chiar i cnd acesta este cunoscut, stabilirea intervalului de depire este
de asemenea dificil. Dac intervalul este prea scurt, s spunem T1 n Figura 10-33(b), vor
aprea retransmisii inutile, aglomernd Internet-ul cu pachete fr rost. Dac este prea lung,
(T2), performanele vor avea de suferit datorit ntrzierii retransmisiei de fiecare dat cnd se
pierde un pachet. Mai mult dect att, media i variana distribuiei sosirii confirmrilor se pot
schimba cu rapiditate pe parcursul a ctorva secunde atunci cnd apare sau se rezolv o
congestie.
Soluia este s se utilizeze un algoritm profund dinamic, care ajusteaz n mod constant
58
controversat, deoarece
suprancarc reeaua i poate termina o conexiune altfel sntoas datorit unei partiionri
tranzitorii a reelei.
Ultimul contor folosit la fiecare conexiune TCP este acela utilizat n strile de ATEPTARE
CONTORIZAT pe parcursul nchiderii conexiunilor. El funcioneaz pe durata a dou viei
maxime ale unui pachet, pentru a se asigura c, atunci cnd o conexiune este nchis, toate
pachetele create de aceasta au murit.
4.11.
61
TCP Tranzacional
Figura 10-35 (a) RPC folosind TCP clasic ; (b) RPC folosind T/TCP
63
A se reine c acesta este cazul ideal. n cazul cel mai ru, cererea clientului i FIN-ul sunt confirmate separat, precum sunt rspunsul server-ului i FIN-ul. ntrebarea care apare imediat este
dac exist vreo posibilitate de a combina eficiena RPC-ului folosind UDP (doar 2 mesaje) cu
fiabilitatea TCP-ului. Rspunsul este: aproape c da. Se poate realiza cu o variant
experimental de TCP numit T/TCP (Transactional TCP, TCP tranzacional), care este
descris n RFC 1379 i 1644.
Ideea principal este aceea de a modifica secvena standard de iniializare a conexiunii astfel
nct s permit, la nivel nalt, transferul de date n timpul iniializrii. Protocolul T/TCP este
prezentat n Figura 10-35(b). Primul pachet al clientului conine bitul SYN, cererea n sine i
FIN-ul. De fapt acesta spune: vreau s stabilesc o conexiune, aici sunt datele i am terminat
Cnd serverul primete cererea, caut sau calculeaz rspunsul i alege modul n care s
rspund. Dac rspunsul ncape ntr-un pachet, d rspunsul din Figura 10-35(b), care spune:
confirm FIN-ul tu, iat rspunsul, iar eu am terminat. Clientul confirm apoi FIN-ul server-ului i
protocolul ia sfrit n (dup) trei mesaje.
n orice caz, dac rezultatul este mai mare de 1 pachet, serverul are de asemenea i opiunea
de a nu seta bitul FIN, caz n care poate trimite pachete multiple nainte de a-i nchide direcia.
Merit probabil menionat faptul c T/TCP nu este singura mbuntire propus pentru TCP. O
alt propunere este SCTP (Stream Control Transmission Protocol, Protocolul de control al
transmisiei fluxului). Caracteristicile sale includ pstrarea legturilor dintre mesaje, modaliti
multiple de livrare.
64
Test autoevaluare
65
Termeni eseniali:
Protocolul UDP (User Datagram Protocol) modelul serviciului TCP, antetul UDP.
66
Bibliografie
1. Tanenbaum, A. , Wetherall D., Computer Networks (5rd Edition), Prentice Hall Software
Series, 2010.
2. Crainicu B., Reele de calculatoare: pentru uzul studenilor, Universitatea Petru Maior, 2005.
3. Peterson, L, Davie, B., Computer networks: A systems approach, Elsevier Publishing
Company; Morgan Kaufmann Publishers, Inc, 2007.
4. Kurose, J., Ross, K., Computer Networking: A Top-Down Approach (5th Edition), AddisonWesley, 2009
67
Test evaluare
a.
b.
c.
d.
e.
2.
a.
b.
c.
d.
e.
3.
a.
b.
c.
d.
e.
4.
5.
a.
b.
c.
d.
e.
a.
b.
c.
d.
e.
68