Documente Academic
Documente Profesional
Documente Cultură
Introducere
Rețelele de date și Internetul suportă rețeaua umană asigurând comunicație fiabilă între
oameni. Pe un singur echipament, oamenii pot utiliza mai multe aplicații și servicii cum ar fi
email, web și mesagerie instantă pentru a trimite mesaje sau pentru a obține informații.
Aplicații precum clienți de email, navigatoare web și clienți de mesagerie instantă permit
oamenilor să folosească rețele și calculatoare pentru a trimite mesaje și a găsi informații.
Transportul datelor
Layer-ul transport urmărește fiecare conversație individuală care călătorește între o aplicație
sursă și una de destinație, separat. Un host poate avea mai multe aplicații care comunică în rețea în mod
simultan. Fiecare din aceste aplicații comunică cu una sau mai multe aplicații pe unul sau mai multe
hosturi. Este responsabilitatea layer-ului transport să mențină și să urmărească aceste conversații
multiple.
Datele trebuie să fie pregătite pentru a fi trimise în mediu sub forma unor piese ce pot fi
gestionate. Majoritatea rețelelor au o cantitate de date limită ce poate fi inclusă într-un singur pachet.
Protocoalele layer-ului transport au servicii care segmentează datele aplicației în blocuri de date de
dimensiuni corespunzătoare (Fig.9. 3). Acest serviciu include încapsularea cerută pe fiecare piesă de
date. Este adăugat la fieacare bloc de date un header folosit pentru reasamblare. Acest header este
utilizat pentru a urmări stream-ul de date.
La destinație, layer-ul transport trebuie să poată reconstrui piesele de date într-un stream
complet de date care este util layer-ului aplicație. Protocoalele layer-ului transport descriu modul în
care informația din header-ul transport este utilizată pentru a reasambla datele în stream-uri ce vor fi
pasate layer-ului aplicație.
Fig.9.3. Segmentarea
Identificarea Aplicațiilor
Pot exista mai multe aplicații sau servicii care să se execute pe fiecare host din rețea. Pentru a
transmite stream-urile de date la aplicațiile corespunzătoare, layer-ul transport trebuie să identifice
aplicația țintă (Fig.9 4). Pentru a realiza asta, layer-ul transport alocă un identificator pentru fiecare
aplicație. Acest identificator este denumit număr de port. Fiecare proces software care are nevoie să
acceseze rețeaua primește un număr de port unic în acel host. Layer-ul transport folosește porturi pentru
a identifica aplicația sau serviciul.
Trimiterea unor tipuri de date (de exemplu, un streaming video) într-o rețea sub forma
unui stream de comunicare complet ar putea utiliza toată lățimea de bandă disponibilă și ar
putea împiedica apariția altor comunicații în același timp. De asemenea, efectuează și
recuperarea erorilor și retransmisia datelor deteriorate.
Figura 9.5 arată că segmentarea datelor în părți mai mici permite mai multor
comunicații diferite, de la mai mulți utilizatori diferiți, să fie intercalate în aceeași rețea.
Segmentarea datelor de către protocoalele layer-ului transport furnizează și mijloace pentru a
trimite și primi date atunci când mai multe aplicații concurează pe un calculator.
Fără segmentare, o singură aplicație ar putea primi date. Spre exemplu, un flux video
poate ocupa întregul mediu de comunicație în loc să îl partajeze. Nu ați mai putea primi email-
uri, discuta folosind mesageria instant sau vizualiza pagini web în timp ce urmăriți și un video.
TCP este considerat un protocol al layer-ului transport fiabil, cu opțiuni complete, care
se asigură că toate datele ajung la destinație. În schimb, UDP este un protocol al layer-ului
transport foarte simplu care nu asigură fiabilitate.
TCP împarte un mesaj în părți mai mici cunoscute ca segmente. Segmentele sunt
numerotate în secvență și pasate procesului IP pentru asamblarea în pachete. TCP păstrează
urma numărului de segmente care au fost trimise către un anumit host dintr-o anumită aplicație.
Dacă expeditorul nu primește o confirmare într-o anumită perioadă de timp, se presupune că
segmentele au fost pierdute și se retransmit. Doar porțiunea mesajului care este pierdut se
retrimite, nu întregul mesaj. La hostul receptor, TCP este responsabil cu reasamblarea
mesajului în segmente și pasarea lor la aplicație. FTP (File Transfer Protocol) și HTTP
(Hypertext Transfer Protocol) sunt exemple de aplicații care folosesc TCP pentru a asigura
livrarea datelor.
Dați clic pe butonul Play din figură pentru a vedea o animație a segmentelor TCP ce
sunt transmise de la expeditor la receptor.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.1.1.5/media/index.html
În timp ce funcțiile de fiabilitate ale TCP-ului asigură o comunicare mai robustă între
aplicații, realizează și supraîncărcare adițională și posibile întârzieri în transmisie. Este un
schimb între valoarea fiabilității și încărcătura pe care o plasează pe resursele rețelei. Impunerea
supraîncărcării pentru a asigura fiabilitatea pentru unele aplicații ar putea reduce caracterul util
al aplicației și ar putea fi chiar dezavantajoasă pentru aplicație. În asemenea cazuri, UDP este
un protocol de transport mai bun.
UDP asigură toate funcțiile de bază pentru livrarea segmentelor de date între aplicațiile
corespunzătoare, cu o supraîncărcare mică și cu verificare a datelor. UDP este cunoscut ca un
protocol de livrare best-effort. Din punct de vedere al rețelisticii, livrarea best-effort este
caracterizată ca nesigură, deoarece la destinație nu se primesc confirmări ale faptului că au fost
primite datele. Cu UDP, nu există procese ale layer-ului transport care informează expeditorul
dacă livrarea s-a realizat cu succes.
UDP este similar cu depunerea unei scrisori nesemnate la poștă. Expeditorul scrisorii
nu știe dacă destinatarul va primi scrisoare, nici dacă oficiul poștal este cel responsabil cu
urmărirea scrisorii sau cu informarea expeditorului în care în care scrisoare nu ajunge la
destinația finală.
Dați clic pe butonul Play din figură pentru a vedea o animație a segmentelor UDP ce
sunt transmise de la expeditor la receptor.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.1.1.6/media/index.html
Atât TCP, cât și UDP sunt protocoale de transport valide. În funcție de cerințele
aplicației, poate fi utilizat un protocol de transport, sau în unele situații chiar amândouă.
Dezvoltatorii de aplicații trebuie să aleagă ce tip de protocol de transport este corespunzător în
funcție de cerințele aplicației.
Pentru unele aplicații este necesar ca segmentele să sosească într-o anumită ordine
pentru a fi procesate cu succes. Alte aplicații au nevoie ca toate datele să fie primite complet
înainte de a fi considerate utile. În ambele cazuri, TCP este utilizat ca protocol de transport. De
exemplu, aplicațiile precum baze de date, navigatoare web și clienți de email necesită ca toate
datele trimise să sosească la destinație în starea originală. Datele lipsă pot determina o
comunicație coruptă care este incompletă sau nu poate fi citită. Așadar, aceste aplicații sunt
proiectate pentru a utiliza TCP. Traficul suplimentar este considerat necesar pentru aceste
aplicații.
În alte cazuri, o aplicație poate tolera anumite pierderi de date în timpul transmisiei în
rețea, dar întârzierile nu sunt acceptate. UDP este cea mai bună alegere pentru aceste aplicații
deoarece este nevoie de mai puțină încărcare a rețelei. UDP este preferat pentru aplicații cum
ar fi streaming audio, video și VoIP. Confirmările ar încetini livrarea iar retransmisiile nu sunt
de dorit.
De exemplu, în cazul în care unul din două segmente dintr-un stream video nu se
primesc, se realizează o întrerupere în stream. Acest lucru poate apărea ca o distorsiune în
imagine, dar poate să nu fie vizibilă pentru utilizator. Pe de cealaltă parte, imaginea din
streaming-ul video poate fi degradată dacă echipamentul de destinație trebuie să țină cont de
datele pierdute sau de întârzierea stream-ului în timp ce se așteaptă retransmisia. În acest caz,
este mai bine să afișăm clipul video la calitatea maximă posibilă, utilizând segmentele
recepționate, în detrimentul fiabilității.
Radio pe Internet este un alt exemplu de aplicație care folosește UDP. Dacă o parte din
mesaj este pierdută în rețea, nu este retransmisibilă. Dacă lipsesc câteva pachete, auditorul
poate auzi o pauză scurtă în sunet. Dacă TCP era utilizat și pachetele pierdute erau retrimise,
transmisia s-ar fi întrerupt pentru a primi aceste pachete iar întreruperea ar fi mai evidentă.
Pentru a înțelege cu adevărat diferențele între TCP și UDP, este important să înțelegem
modul în care fiecare protocol implementează funcțiile specifice de fiabilitate și modul în care
urmăresc comunicațiile.
TCP a fost descris inițial în RFC 793. Pentru a suporta funcțiile de bază ale segmentării
și reasamblării datelor, așa cum se arată în figură, TCP asigură și:
Livrare Fiabilă
TCP poate implementa o metodă pentru a asigura livrarea fiabilă a datelor. În termeni
de rețelistică, fiabilitatea se referă la faptul că fiecare piesă de date pe care o trimite sursa ajunge
la destinație. Din mai multe motive, este posibil ca o parte din date să fie corupte sau pierdute
complet, pe măsură ce sunt transmise în rețea. TCP se poate asigura că toate piesele ajung la
destinație, punând echipamentul sursă să retransmită datele pierdute sau corupte.
Deoarece rețelele pot furniza mai multe rute care pot avea rate de transmisie diferite,
datele pot sosi în ordinea greșită. Prin numerotarea și secvențierea segmentelor, TCP se poate
asigura că aceste segmente sunt asamblate în ordinea corectă.
Controlul Fluxului
Hosturile din rețea au resurse limitate, cum ar fi memoria sau lățimea de bandă. Atunci
când TCP este conștient că aceste resurse sunt suprataxate, poate solicita aplicației expeditoare
să reducă rata fluxului de date. Acest lucru se realizează de TCP care reglează cantitatea de
date transmise de sursă. Controlul fluxului poate împiedica pierderea de segmente în rețea și
poate evita nevoia de retransmisie.
După ce TCP stabilește o sesiune, poate urmări conversația din acea sesiune. Datorită
acestei abilități a TCP-ului, aceste este considerat un protocol dinamic. Un protocol dinamic
este un protocol care urmărește starea sesiunii de comunicare. De exemplu, atunci când datele
sunt transmise folosind TCP, expeditorul se așteaptă ca destinatarul să confirme că a primit
datele. TCP urmărește ce informații au fost trimise și ce informații au fost confirmate. Dacă
datele nu sunt confirmate, expeditorul presupune că datele nu au ajuns la destinație și le
retrimite. Sesiunea dinamică începe cu stabilirea sesiunii și se oprește cu terminarea sesiunii.
Notă:Păstrarea acestor informații de stare necesită resurse care nu sunt necesare pentru un
protocol cum ar fi UDP.
TCP realizează supraîncărcarea pentru a obține aceste funcții. Așa cum se arată în
figură, fiecare segment TCP are 20 octeți de supraîncărcare în header-ul care încapsulează
datele layer-ului aplicație. Asta înseamnă mai mult decât un segment UDP, care are doar 8
octeți. Traficul suplimentar include:
UDP este considerat un protocol de transport best-effort, descris în RFC 768. UDP este
un protocol de transport de categorie ușoară care oferă aceeași reasamblare și segmentare a
datelor, dar nu include și fiabilitatea și controlul fluxului de la TCP. UDP este un protocol atât
de simplu, încât de obicei spunem ce nu poate face în comparație cu TCP.
UDP este un protocol stateless, ceea ce înseamnă că nici clientul, nici server-ul nu sunt
obligate să monitorizeze starea sesiunii de transmisiune. Așa cum se arată în figură, UDP nu
se preocupă cu fiabilitatea și controlul fluxului. Datele pot fi pierdute sau primite într-o altă
secvență fără nici un mecanism UDP care să recupereze sau să reordoneze datele. În cazul în
care este necesară fiabilitatea atunci când UPD-ul este folosit ca protocol de transport, acesta
trebuie gestionat de către aplicație.
Layer-ul transport trebuie să poată separa și gestiona mai multe comunicații care au
cerințe de transport diferite. De exemplu, luați în considerare un utilizator conectat la o rețea
de pe un echipament final. Utilizatorul primește și trimite email-uri și mesaje instant în același
timp în care vizitează și site-uri web sau participă la un apel telefonic VoIP. Fiecare aplicație
primește și trimite date prin rețea în același timp, în ciuda cerințelor diferite de fiabilitate. În
plus, datele de la apelul telefonic nu sunt direcționate către navigatorul web, iar textul de la
mesajele instant nu apar în email.
În schimb, părți mici ce pot lipsi dintr-o conversație telefonică pot fi considerate
acceptabile. Chiar dacă unele părți mici sau câteva cuvinte lipsesc, acestea se pot deduce din
contextul conversației sau putem ruga interlocutorul să repete. Acest lucru este de preferat
pentru întârzierile apărute în cazul în care rețeaua trebuie să gestioneze și să retrimită
segmentele lipsă. În acest exemplu, utilizatorul, nu rețeaua gestionează retransmiterea sau
înlocuirea informației lipsă.
Așa cum se arată în Fig.9.13, pentru ca TCP și UDP să gestioneze aceste conversații
simultan având cerințe diferite, TCP și serviciile bazate pe UDP trebuie să urmărească
comunicarea diferitelor aplicații. Pentru a diferenția segmentele și datagramele pentru fiecare
aplicație, TCP și UDP au câmpuri în header ce pot identifica în mod unic acestea aplicații.
Acești identificatori unici sunt numere de port.
În header-ul fiecărui segment sau datagramă, există un port sursă și unul de destinație.
Numărul portului sursă este numărul pentru această comunicație asociată cu aplicația originală
din hostul local. Așa cum se arată în figură, numărul portului de destinație este numărul pentru
această comunicație asociată cu aplicația de destinație de pe hostul remote.
Atunci când un mesaj este livrat folosind TCP sau UDP, protocoalele și serviciile
solicitate sunt identificate de un număr de port. Un port este un identificator numeric din cadrul
fiecărui segment utilizat pentru a urmări anumite conversații și servicii de destinație solicitate.
Fiecare mesaj pe care îl trimite o gazdă conține sursa, dar și portul destinație.
Portul de destinație
Port sursă
Porturile sursă și destinație sunt plasate în cadrul segmentului. Segmentele sunt apoi
încapsulate în cadrul unui pachet IP. Pachetul IP conține adresa IP a sursei și a destinației.
Combinația dintre adresele IP sursă și de destinație și numerele portului sursă și de destinație
este cunoscută ca socket. Socket-ul este utilizat pentru a identifica serverul și serviciul solicitat
de client. În fiecare zi, mii de hosturi comunică cu milioane de servere diferite. Aceste
comunicații sunt identificare de socket-uri.
Un socket client poate arăta astfel, cu 1099 care reprezintă numărul portului sursă:
192.168.1.5:1099
Socket-ul de pe un server de web poate fi: 192.168.1.7:80
Crearea socket-urilor permite cunoșterea capetelor comunicațiilor, iar datele pot merge
de la o aplicație ce rulează pe un host către o aplicație care rulează pe un alt host. Socket-urile
permit mai multor procese ale unui client să se recunoască între ele, iar conexiunile multiple la
un server să se distingă între ele.
Portul sursă al unei interogări de client este generat aleator. Acest număr de port se
comportă ca o adresă returnată pentru aplicația solicitată. Layer-ul transport urmărește acest
port și aplicația care a inițiat interogarea pentru ca atunci când este primit un răspuns, acesta să
poată fi trimis la aplicația corectă. Este utilizat numărul portului al aplicației care cere
informații ca port destinație în răspunsul venind dinspre server.
Uneori este necesar să știm ce conexiuni TCP active sunt deschise și funcționează pe
un host dintr-o rețea. Netstat este un utilitar de rețea important ce poate fi utilizat pentru a
verifica acele conexiuni. Netstat afișează protocoalele aflat în uz, adresa locală și numărul
portului, numărul portului și adresa exterioare și starea conexiunii.
Există mai multe opțiuni utile pentru comanda netstat . Dați clic pe butoanele din Figura
1-5 pentru a vedea rezultatul diferit al comenzii netstat .
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.1.2.9/media/index.html
În cadrul nivelului Rețea s-a explicat modul în care PDU-urile (protocol data units) sunt
construite prin transmiterea datelor de la o aplicație către layere diferite, pentru a realiza un
PDU care este apoi transmis în mediu. La hostul de destinație acest proces este inversat până
când datele pot fi pasate aplicației.
Unele aplicații transmit cantități mari de date, în unele cazuri chiar mai mulți gigabytes.
Nu ar fi practică trimiterea datelor într-o singură tranșă foarte mare. Nici un alt trafic de rețea
nu ar putea fi transmis în timp ce datele erau salvate. O parte mare de date ar putea să se
transmită chiar și în câteva ore. În plus, dacă au existat erori, întregul fișier de date se va pierde
sau va trebui retrimis. Echipamentele de rețea nu ar avea memorii tampon suficient de mari
pentru a stoca o cantitate așa de mare de date în timpul transmiterii sau primirii. Limita variază
în funcție de tehnologia de rețea și de mediul fizic utilizat.
Așa cum se arată în figură, fiecare header al segmentului TCP conține un număr de
secvență ce permite funcțiilor layer-ului transport de pe hostul de destinație să reasambleze
segmentele în ordinea în care au fost transmise. Astfel, se asigură faptul că aplicația de
destinație are datele în forma exactă pe care a intenționat-o expeditorul.
Deși serviciile care folosesc UDP urmăresc și conversațiile între aplicații; acestea nu
sunt preocupate de ordinea în care a fost transmisă informația sau cu menținerea unei
conexiuni. Nu există nici un număr de secvență în header-ul UDP. UDP este un design simplu
care generează mai puțină încărcare decât TCP, ceea ce duce la un rezultat rapid al datelor.
Informația poate sosi într-o ordine diferită decât cea în care a fost transmisă, deoarece
pachetele diferite pot urma căi diferite în rețea. O aplicație care folosește UDP trebuie să
tolereze faptul că datele pot să nu sosească în ordinea în care au fost trimise.
Nivelul Transport împarte datele în piese și adaugă un header pentru transportul în
rețea. (Fig.9.20).
Diferența cheie între TCP și UDP este fiabilitatea. Fiabilitatea unei comunicații TCP
este obținută prin utilizarea sesiunilor orientate pe conexiune. Înainte ca un host care folosește
TCP să trimită datele către un alt host, TCP inițiază procesul de realizare a conexiunii cu
destinația. Conexiunea dinamică permite urmărirea unei sesiuni sau existența stream-ului de
comunicare între hosturi. Acest proces se asigură că fiecare host este conștient și pregătit pentru
stream-ul de comunicare. O conversație TCP necesită stabilirea unei sesiuni între hosturi în
ambele direcții, așa cum se arată în animație.
După ce a fost stabilită o sesiune, iar transferul de date a început, destinația trimite
confirmări către sursă pentru segmentele pe care le-a primit. Aceste confirmări formează baza
de fiabilitate pentru sesiunea TCP. Atunci când sursa primește o confirmare, știe că datele au
fost livrate cu succes și pot renunța la urmărirea datelor. Dacă sursa nu primește confirmare
într-o anumită perioadă de timp, se retransmit datele către destinație.
O parte din traficul adițional generat utilizând TCP este cel generat de confirmări de primire și
retransmiteri. Stabilirea sesiunilor realizează supraîncărcarea sub forma unor segmente adiționale ce
sunt interschimbate. Există și supraîncărcare adițională pe hosturi individuale create din nevoia de a
urmări ce segmente așteaptă confirmarea și de procesul de retransmisie.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.2.1.1/media/index.html
Procesele aplicațiilor se execută pe servere. Un singur server poate executa mai multe
aplicații de procese în același timp. Aceste procese așteaptă până când un client inițializează
comunicația cu o solicitare pentru informații sau de alte servicii.
Consultați Figurile 1-5 din link-ul următor, pentru a vedea alocarea tipică a porturilor
sursă și de destinație în operațiunile client/server din TCP.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.2.1.2/media/index.html
În unele culturi, atunci când două persoane se întâlnesc, se salută prin faptul că dau
mâna. Acest act este privit de ambele părți ca un semnal pentru o întâmpinare prietenească.
Conexiunile din rețea sunt similare. Primul handshake (strângere de mână) necesită
sincronizarea. Al doilea handshake confirmă interogarea de sincronizare inițială și
sincronizează parametrii de conexiuni din direcția opusă. Al treilea segment de handshake este
o confirmare utilizată pentru a informa destinația că ambele părți sunt de acord cu faptul că s-
a stabilit o conexiune,
Atunci când două hosturi comunică folosind TCP, este stabilită o conexiune înainte ca
datele să fie interschimbate. După ce comunicarea este completă, sesiunile sunt închise și
conexiunea este terminată. Mecanismele de conexiune și sesiune activează funcția de fiabilitate
a TCP-ului. Vizualizați figura pentru a vedea pașii necesari la stabilirea și terminarea unei
conexiuni TCP.
Three-way Handshake:
În conexiunile TCP, clientul hostului stabilește conexiunea cu serverul. Cei trei pași din
stabilirea conexiunii TCP sunt:
Dați clic în figura din următorul link pe butoanele 1-3 pentru a vedea stabilirea de
conexiune TCP.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.2.1.3/media/index.html
Pentru a înțelege procesul three-way handshake, uitați-vă la valorile diferite pe care le
interschimbă cele două hosturi. În cadrul header-ului segmentului TCP, există șase câmpuri de
1 bit care conțin informația de control utilizată pentru a gestiona procesele TCP. Aceste
câmpuri sunt:
Pentru a închide o conexiune, flag-ul de control FIN (Finish) trebuie setat în header-ul
segmentului. Pentru a termina fiecare sesiune TCP dintr-o singură direcție, este utilizat un two-
way handshake, care constă într-un segment FIN și un segment ACK. Așadar, pentru a termina
o singură conversație suportată de TCP, sunt necesare patru interschimbări care termină ambele
sesiuni, așa cum se arată în Figura din link-ul următor.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.2.1.7/media/index.html
Obs.În această explicație, termenii client și server sunt utilizați ca referință pentru simplitate,
dar procesul de terminarea poate fi inițiat de oricare două hosturi care au o sesiune deschisă.
Pasul 1: Când clientul nu mai are date de trimis, va trimite un segment cu indicatorul FIN setat.
Pasul 2: Serverul trimite un ACK pentru a confirma primirea FIN-ului și pentru a termina
sesiunea de la client la server.
Pasul 3: Serverul trimite un FIN la client pentru a termina sesiunea dintre server și client.
Atunci când clientul nu mai are date de transferat, setează flag-ul FIN în header-ul unui
segment. Apoi, serverul trimite un segment normal ce conține date cu indicatorul ACK setat
cu numărul confirmării de primire pentru a confirma că toți biții au fost recepționați. Când toate
segmentele au fost confirmate, sesiunea este închisă.
Sesiunea în cealaltă direcție este închisă folosind același proces. Destinatarul indică
faptul că nu mai sunt date de trimis setând indicatorul FIN în antetul unui segment trimis către
sursă. O confirmare returnată arată că toți octeții de date au fost primiți și sesiunea este închisă.
Priviți figurile 2 și 3 pentru a vedea indicatorii de control FIN și ACK setați în antetul
segmentului pentru a închide o sesiune HTTP.
Puteți termina conexiunea și printr-un 3-way handshake. Atunci când clientul nu are
mai multe date de trimis, trimite un FIN la server. Dacă nici serverul nu mai are date de trimis,
poate răspunde cu flag-urile FIN și ACK, combinând doi pași în unul. Apoi clientul răspunde
cu un ACK.
Comunicarea UDP
UDP este un protocol simplu care asigură funcțiile de bază ale layer-ului transport. Are
o încărcare mult mai mică decât TCP, deoarece nu este orientat pe conexiune și nu oferă
retransmisiuni sofisticate, secvențieri și mecanisme de control al fluxului care asigură
fiabilitate.
Asta nu înseamnă că aplicațiile care folosesc UDP sunt mereu nesigure, nici că UDP
este un protocol inferior. Înseamnă doar că aceste funcții nu sunt asigurate de protocolul layer-
ului transport și trebuie implementate în altă parte, dacă este necesar.
Deși cantitatea totală de trafic UDP aflat într-o rețea tipică este de obicei scăzută,
protocoalele cheie ale layer-ului aplicație care folosesc UDP includ:
Unele aplicații cum ar fi jocurile online sau VoIP pot tolera unele pierderi de date. Dacă
aceste aplicații foloseau TCP, ar putea întâmpina întârzieri mari în timp ce TCP detectează
pierderea de date și le retransmite. Aceste întârzieri ar fi mai dăunătoare performanței aplicației
decât pierderile mici de date. Unele aplicații, cum ar fi DNS, reîncearcă solicitarea dacă nu au
primit un răspuns; așadar, nu au nevoie de TCP pentru a garanta livrarea mesajului.
Deoarece UDP nu este orientat pe conexiune, sesiunile nu sunt stabilite înainte să aibă
loc comunicarea, așa cum se întâmplă la TCP. Se spune că UDP se bazează pe tranzacție; asta
înseamnă că, atunci când o aplicație are date de transmis, transmite efectiv datele.
Mai multe aplicații care folosesc UDP trimit cantități mici de date care pot încăpea într-
un segment. În orice caz, unele aplicații trimit cantități mari de date ce trebuie împărțite în mai
multe segmente. PDU-ul UDP-ului este denumit datagramă, deși uneori termenii de segment
și datagramă sunt similari pentru a descrie un PDU al layer-ului transport.
Atunci când sunt trimise mai multe datagrame la o destinație, pot urma căi diferite și
ajunge într-o ordine greșită. UDP nu urmărește numerele de secvență așa cum face TCP. UDP
nu dispunde de nici o modalitate pentru a reordona datagramele în ordinea de transmisie, așa
cum se arată și în figură.
Așadar, UDP doar reasamblează datele în ordinea în care au fost primite și le trimite
către aplicație. Dacă secvența de date este importantă pentru aplicație, aplicația trebuie să
identifice secvența corectă și să determine modul în care datele ar trebui procesate.
Atunci când aceste aplicații și procese sunt executate pe un server, acceptă datele
potrivite cu numărul de port alocat. Când UDP primește o datagramă alocată pentru unul din
aceste porturi, acesta trimite datele aplicației la o aplicație corespunzătoare bazată pe numărul
portului său.
Fig.9.23. Serverul UDP așteaptă solicitări
Și numerele de port sursă aleatoare pot ajuta la menținerea securității. Dacă există un
model predictibil pentru alegerea portului de destinație, un intrus poate simula ușor accesul la
un client încercând să se conecteze la numărul portului cel mai probabil de deschis.
Deoarece nu există sesiune care trebuie creată cu UDP, pe măsură ce datele sunt
pregătite pentru a fi trimise și porturile identificate, UDP poate forma pachetele numite
datagrame și le poate trimite nivelului rețea pentru a fi adresate și trimise pe rețea.
http://cisco.ctcnvk.ro/RS1Romana/course/module7/7.2.3.4/media/index.html
Mai multe aplicații necesită fiabilitate și alte servicii furnizate de TCP. Aceste aplicații
pot tolera întârzieri sau pierderi ale performanței din cauza supraîncărcării impuse de TCP.
Din acest motiv, TCP este mai potrivit pentru aplicații care au nevoie de transport fiabil
și pot tolera unele întârzieri. TCP este un exemplu pentru a arăta rolurile diferite ale layer-elor
din suita TCP/IP. Deoarece protocolul TCP al nivelului transport se ocupă de toate sarcinile
asociate cu segmentarea fluxurilor de date, fiabilitate, controlul fluxului și organizarea
segmentelor, eliberează aplicația de aceste sarcini. Aplicația poate trimite efectiv stream-ul de
date la layer-ul de transport și poate folosi serviciile TCP-ului.
Așa cum se arată în Fig.9.24, unele exemple de aplicații cunoscute care folosesc TCP
includ:
Mai multe aplicații multimedia sau video, precum VoIP sau IPTV (Internet Protocol
Television) folosesc UDP. Aceste aplicații pot tolera unele pierderi de date care au efect minim
sau neobservabil. Mecanismele de fiabilitate ale TCP-ului introduc unele întârzieri ce pot fi
observabile în calitatea sunetului sau a imaginii primite.
Alte tipuri de aplicații potrivite pentru UDP sunt acelea care folosesc interogări simple
și tranzacții de răspuns. Acest lucru se întâmplă atunci când un host trimite o interogare și poate
să primească sau nu un răspuns. Aceste tipuri de aplicații includ:
- DHCP
- DNS - Poate folosi și TCP
- SNMP
- TFTP