Sunteți pe pagina 1din 16

Radu Doru Alexandru , IT&C an IV

Protocoale de comunicatii

Cuprins
Nivelul transport ........................................................................................................................................... 3
Comparatie UDP cu TCP ................................................................................................................................ 4
Ce este UDP ? ................................................................................................................................................ 5
Structura pachetelor ................................................................................................................................. 5
Formatul datagramelor UDP ..................................................................................................................... 7
Interfata de programare pentru aplicatiile UDP ....................................................................................... 8
Ce este TCP ? ................................................................................................................................................. 9
Transfer de date in flux (Stream Data Transfer) ................................................................................. 10
Siguranta ............................................................................................................................................. 10
Controlul transmisiei (Flow Control)................................................................................................... 10
Multiplexarea ...................................................................................................................................... 10
Conexiunile logice ............................................................................................................................... 10
Full Duplex .......................................................................................................................................... 10
Principiul ferestrei glisante aplicat la TCP ............................................................................................... 11
Formatul segmentului TCP ...................................................................................................................... 12
Stabilirea unei conexiuni TCP .................................................................................................................. 14
Interfata de programare a aplicatiilor TCP ............................................................................................. 15
Interfata de programare a aplicatiilor TCP ......................................................................................... 15
Blibliografie ................................................................................................................................................. 16

Nivelul transport
[http://shannon.etc.upt.ro/laboratoare/rcd/rcd_laborator.pdf] Este proiectat astfel incat sa
permita dialogul intre entitatile pereche din gazdele sursa si destinatie, pentru aceasta fiind
definite doua protocoale
capat-la-capat:
TCP si UDP. Protocolul de control al transmisiei (TCP) permite ca un flux de octeti
emis de o masina sa fie receptionat fara erori pe orice alta masina din retea. TCP fragmenteaza
fluxul de octeti in mesaje discrete pe care le paseaza nivelului
internet. La destinatie, procesul TCP receptor reasambleaza mesajele primite, reconstituind
datele initiale. TCP realizeaza controlul fluxului de date pentru a evita situatia in care un
transmitator rapid inunda un receptor lent cu mai multe mesaje decat poate acesta sa prelucreze.
TCP este un protocol orientat pe conexiuneUDP (User Datagram Protocol- protocolul
atagramelor utilizator
) este un protocol nesigur, fara conexiuni, destinat aplicatiilor care doresc sa utilizeze propria
secventiere si control al fluxului si nu mecanismele asigurate de TCP. Este un protocol folosit in
aplicatii pentru care comunicarea rapida este mai importanta decat acuratetea transmisiei, asa
cum sunt aplicatiile de transmitere a sunetului si imaginilor video.

Comparatie UDP cu TCP


TCP (Transmission Control Protocol) este orientat pe conexiune. Se foloseste metoda de
tip handshake pentru iniializarea comunicarii ntre sisteme. Principalele caracteristici ale TCP
sunt urmtoarele:
Siguran:
- TCP gestioneaz confirmrile de primire, retransmisiile i momentele de time-out.
- Se fac mai multe incercri de livrare a mesajului.
- Dac se pierde ceva pe drum, serverul va cere din nou partea pierdut.
- Nu exist cale de mijloc: fie nu exist pachete lipsa, fie se ntrerupe conexiunea.
Ordine:
- dac se trimit dou mesaje succesiv, ele vor fi receptionate n ordinea n care au fost
trimse.
- n cazul n care pachetele ajung n alta ordine, TCP stocheaza datele dezordonate
pana ajung toate pachetele i apoi le reordoneaz i le livreaz aplicaiei.
Streaming: datele sunt citite ca stream de octeti; nu exist indicatori care s arate limitele
unui segment.
TCP trimite 3 pachete pentru a initializa o conexiune la un socket. Abia apoi poate
incepe s trimit date. TCP se ocup i de fiabilitate i controlul congestiei.
UDP este un protocol mai simplu, fr conexiune. Protocoalele fr conexiune nu
iniializeaz o conexiune dedicat ntre capete. Comunicarea se face prin transmiterea
informaiei intr-o singura directie, fr a verifica starea sau disponibilitatea receptorului.
Unputernic avantaj al UDP-ului este viteza, i este exploatat la maximum n cazul aplicaiilor
VoIP (Voice over IP).
Caracteristicile UDP-ului sunt urmtoarele:
Nesigur:
- cnd un mesaj este trimis, nu se tie dac va ajunge la destinaie, se poate pierde pe
drum.
- Nu se aplica conceptele de confirmare, retransmitere sau timeout.
Fr ordine: dac dou mesaje sunt trimise succesiv ctre acelai receptor, nu se poate
prezice ordinea n care vor ajunge.
Operarea bazat pe datagrame:
- pachetele sunt trimise individual i sunt verificate pentru integritate doar dac sosesc
la destinaie.
- Pachetele au frontiere bine definite.
4

Ce este UDP ?
Conform [1] UDP provine de la User Datagram Protocol i a fost proiectat n 1980 de
David P. Reed. UDP ofer numai un serviciu minimal de transport (livrare ne-garantat de
datagrame) i permite aplicaiilor acces direct la serviciul de datagrame al stratului de IP. UDP
este folosit de aplicaii care nu necesita servicii de nivelul TCP, sau care vor s foloseasc
servicii de comunicare care nu sunt disponibile n TCP (ca multicast).
Singurele servicii pe care le ofer sunt verificarea datelor prin checksum i multiplexarea
pe porturi. Deci o aplicaie care foloseste UDP trebuie s trateze direct problemele legate de
comunicaia E2E (end-to-end) pe care un protocol orientat pe conexiune le-ar fi soluionat, ca
retransmisia pentru asigurarea fiabilitii, segmentarea pe pachete i reasamblarea, controlul
debitului, evitrea congestiei etc).

Procesul1

Port a

Procesul 2

Procesul n

Port b
............................
Demultiplexor de porturi

Port z

IP

Structura pachetelor
UDP transmite segmente formate dintr-un header de 8 Bytes, urmat de datele efective de
transmis.
32 Biti

Port Sursa
Lungime UDP

Port destinaie
UDP checksum

Cele dou porturi identific cele dou sisteme de calcul care comunica, sursa i
destinaia. Cand un pachet UDP soseste, incarcatura lui este preluat de procesul ataat
portului destinaie. Pe scurt, porturile asigur livrarea segmentelor aplicaiei corecte.
5

Portul sursa este necesar n cazul n care receptorul trebuie s raspund emitorului.
Copiind portul sursa din pachetul abia sosit n cmpul de destinaie al pachetului de rapuns,
procesul care trimite rapunsul poate specifica ce proces de pe emitor l primeste.
Cmpul Lungime UDP include headerul de 8 Bytes i datele. Lungimea minima este
de 8 Bytes (pentru header). Lungimea maxima este de 65.515 bytes (dimensiune mai mica
decat maximul reprezentabil pe 16 biti; limita este data de dimensiunea maxima a pachetelor
IP).
Suma de verificare este optionala i se foloseste pentru cresterea fiabilitii. Face
verificarea header-ului, a datelor i un pseudoheader IP conceptual. Cand se face calculul,
cmpul checksum este setat la 0 i cmpul de date este bordat cu un byte aditional de 0 dac
lungimea lui este un numr impar. Algoritmul de verificare consta n sumarea tuturor
cuvintelor de 16 biti n complement fa de 1 i scoaterea complementului lui 1 din rezultat.
Deci, cnd receptorul face calculul pe ntregul segment, inclusiv pe cmpul de checksum,
rezultatul ar trebui s dea 0. Dac checksum-ul nu se calculeaz, atunci se va stoca cu valoarea
0.

n cazul IPV4, pseudoheader-ul arata ca n figura urmatoare:

Adresa sursei (IPV4)


Adresa destinaiei (IPV4)
0 00 0 0 0 0 0

Protocol = 17

Lungime UDP

Contine adresele IPV4 pe 32 de biti ale emitorului i receptorului, numrul de protocil


pentru UDP(17), i lungimea segmentului (inclusiv headerul). La IPV6 este similar, insa
cmpul de checksum nu mai este optional.
Includerea pseudoheader-ului n calculul checksum-ului ajuta la detectarea pachetelor
livrate gresit, da includerea lui violeaza ierarhia protocolului, pentru ca adresele IP din el
apartin stratului IP, nu celui UDP. TCP foloseste acelai pseudoheader pentru checksum-ul lui.
Trebuie tinut cont ca UDP nu are nici o metoda de control a congestiei i a debitului, i
nici nu retransmite n cazul primirii unui segment eronat. Totul ramane pe seama proceselor
user-ului. ns, ofer o interfa ctre protocolul IP i poate i demultiplexa mai multe procese
folosind porturi si, optional, detectie de erori la receptie. Este util n situatii de comunicare
client-server. Deseori, clientul trimite o cerere scurta ctre server i asteapta un rapuns rapid.
Dac fie rapunsul fie cererea s-au pierdut, clientul asteapta o perioada de time-out, i apoi
incearca din nou. Pe langa faptul ca programarea e mai usoara, sunt necesare i putine mesaje
(unul n fiecare directie) decat n cazul unui protocol care cere o setare initiala, ca TCP.
6

O aplicaie care foloseste UDP n acest fel este DNS (Domain Name Server). Pe scurt,
un program care trebuie s caute adresa IP a unui host oarecare poate trimite un pachet UDP
care contine numele host-ului ctre un server DNSS. Serverul raspunde cu un pachet UDP
care contine adresa IP a hostului. Nu este nevoie de nici o setare initiala i eliberare ulterioara
a conexiunii. [11]
UDP mai este folosit n aplicaii care pun viteza inaintea calitatii, n aplicaii de tip
FINGER (FINGER este un protocol simplu pentru schimbul de status-uri i informaii despre
utilizator), si, n general, acolo unde cererile sunt rapide i necesita un singur pachet de
rapuns (exemplu: SNMP Simple Network Management Protocol, RIP Routing
Information Protocol, DHCP Dynamic Host Configuration Protocol). [6]
Traficul video i audio este n general transmis folosind UDP. Protocoalele de streaming
audio-video au fost proiectate s suporte eventualele pierderi de pachete, deci va aparea doar o
scadere slaba a calitatii, n locul unor intarzieri deranjante care ar aparea n cazul retransmisiei
pachetelor pierdute. [7]
Nu exist controlul congestiei: UDP nu evit congestiile de unul singur, i este posibil ca
aplicatiile de viteza mare s duca la blocaj dac nu se implementeaz metode de control al
congestiei la nivelul aplicaiei. [14]

Formatul datagramelor UDP


In limbajul curent unitatile de transmisie a informatiei pentru UDP se numesc datagrame
UDP. Fiecare datagrama UDP este trimisa intr-o singura datagrama IP. Cu toate ca, datagrama IP
poate fi fragmentata in timpul transmisiei, implementarea IP a hostului destinatie o va
reasambla inainte de a prezenta-o stratului UDP. Toate implementarile IP trebuie sa accepte
datagrame de pana la 576 octeti, ceea ce inseamna ca, pentru un antet IP de 60 octeti maxim, o
datagrama UDP de 516 octeti va fi acceptata de toate implementarile. Multe implementari vor
accepta datagrame mai mari, dar acest lucru nu este garantat. Datagrama UDP are un antet de
numai 8 octeti care este descris in figura urmatoare.

Lungimea oricaruia dintre campurile antetului este de 2 octeti (16 biti).


Semnificatia campurilor este urmatoarea:

Portul sursa - Indica portul procesului emitent. Este portul catre care trebuie trimise
raspunsurile.
Portul destinatie - Precizeaza portul procesului destinatie de poe hostul destinatie.
Lungime - Este lungimea in octeti a datagramei utilizatorului inclusiv antetul.
Suma de control - Este un camp optional de 16 biti este complementul fata de unu al sumei in
complement fata de unu a antetului pseudo-IP , antetului UDP si datelor UDP. Antetul pseudo-IP
contine adresele IP sursa si destinatie, protocolul si lungimea UDP.

Antetul pseudo-IP extinde efectiv suma de control pentru a include datagrama IP originala
(nefragmentata).

Interfata de programare pentru aplicatiile UDP


Interfata de aplicatie oferita de UDP este descrisa in RFC 768. Ea asigura:

Crearea porturilor noi de receptie.


Operatie de receptie care intoarce datele si o indicatie a portului sursa si a adresei IP
sursa.
Operatie de emisie care are ca parametrii datele, proturile si adresele sursa si destinatie.

Modul in care acestea trebuie inplementate este lasat la discretia celui care realizeaza aplicatia
UDP.
Trebuie avut grija ca UDP si IP nu asigura siguranta livrarii, controlul transmisiei si
recuperarea erorilor, astfel incat acestea trebuie asigurate de catre aplicatie.
Dintre aplicatiile standard care utlilizeaza UPD enumeram:

Trivial File Transfer Protocol (TFTP)


Serverul de nume DNS (Domain Name System)
Remote Procedure Call (RPC), utilizat de catre NFS (Network File System)
Simple Network Management Protocol (SNMP)
Lightweight Directory Access Protocol (LDAP)
8

Ce este TCP ?
Conform [1] TCP este un protocol standard cu STD numarul 7. TCP este descris in RFC 793
Transmission Control Protocol. Statatul sau este de recomandat, dar in practica orice implementare a
TCP/IP care nu este folosita exclusiv pentru rutare va include TCP. TCP asigura considerabil mai multe
facilitati pentru aplicatii decat UDP, mai ales recuperarea erorilor, controlul transmisiei si siguranta. TCP
este un protocol orientat pe conexiune spre deosebire de UDP care este fara conexiune. Cele mai multe
aplicatii protocol, precum Telnet si FTP, utilizeaza TCP. Cele doua procese comunica unul cu celalalt
printr-o conexiune TCP (InterProcess Communication - IPC), asa cum se arata in figura urmatoare.

Principalul scop al TCP este de a asigura circuit logic sigur sau serviciu de conexiune intre doua
procese pereche. El nu se bazeaza pe siguranta altor protocoale de nivel inferior (cum este IP), asa ca TCP
trebuie sa garanteze el insusi siguranta transmisiei. TCP poate fi caracterizat prin urmatoarele facilitati pe
care le asigura pentru aplicatiile care il utilizeaza:

Transfer de date in flux (Stream Data Transfer)


Siguranta
Controlul transmisiei (Flow Control)
Multiplexarea
Conexiunile logice
Full Duplex
9

Transfer de date in flux (Stream Data Transfer)


TCP transfera un sir (stream) continuu de octeti prin retea. Aplicatia nu trebuie sa-si faca griji cu
segmentarea datelor in blocuri de baza sau datagrame. O face TCP prin gruparea octetilor in fragmente
TCP, care sunt transferati IP pentru a fi transmisi la destinatie.
Uneori, o aplicatie are nevoie sa fie sigura ca toate datele trasnsmise catre TCP au fost in realitate
transmise la destinatie. Pentru aceasta, o functie push este definita. Ea va forta transmiterea tuturor
segmentelor TCP ramase in memorie catre destinatie. Functia de inchidere (close) normala forteaza si ea
transmiterea datelor la destinatie.

Siguranta
TCP atribuie un numar de secventa fiecarui octet transmis si asteapta o confirmare
(acknowledgment - ACK) de la aplicatia care receptioneaza datele TCP. Daca confirmarea nu vine intr-un
interval de timp prestabilit, datele sunt transmise din nou. Deoarece datele sunt transmise in blocuri
(segmente TCP) numai numarul de secventa al primului octet este trimis calculatorului destinatie.
Aplicatia TCP destinatie foloseste numerele de secventa pentru a le ordona atunci cand sosesc neordonate
si sa elimine segmentele duplicate.

Controlul transmisiei (Flow Control)


Aplicatia TCP destinatie, cand trasmite o confirmare (ACK) catre emitent, indica de asemenea
numarul de octeti pe care ii poate receptiona pe langa ultimul segment TCP primit, fara sa se suprancarce
sau sa apara depasirea memoriilor tampon (internal buffers) ale sale.

Multiplexarea
Este realizata prin utilizarea porturilor, la fel ca si la UDP.

Conexiunile logice
Siguranta si mecanismele de control ale transmisiei descrise mai inainte necesita ca TCP sa
initializeze si mentina cateva informatii referitoare la starea fiecarui flux de date (data stream). Aceasta
informatie de stare ce include socketurile, numerele de secventa, dimensiunile ferestrelor se numeste
conexiune logica.

Full Duplex
TCP asigura doua fluxuri concurente de date in ambele sensuri.

10

Principiul ferestrei glisante aplicat la TCP


Principiul ferestrei glisante: Un protocol de comunicatie simplu ar putea folosi urmatorul
principiu: trimite un pachet si apoi asteapta confirmarea de primire de la destinatar inainte de a
trimite pachetul urmator.
Daca confirmarea (ACK) nu este primita intr-un interval de timp prestabilit, pachetul este trimis
din nou.
Principiul fertestrei glisant este folosit de catre TCP, insa cu cateva diferente:
Deoarece TCP asigura o conexiune de flux de octeti (byte-stream connection), numerele
de secventa sunt atribuite fiecarui bit din stream. TCP imparte acest flux continuu de biti
in segmente TCP pentru a le transmite. Principul ferestrei glisante este folosit la nivel de
octet; adica, segmentele trimise si confirmarile vor transporta numere de secventa pentru
octet si dimensiunea ferestrei va fi exprimata in numar de biti in loc de numar de pachete.
Dimensiunea ferestrei este determinata de catre receptor cand conexiunea este stabilita si
este variabila in timpul transferului de date. Fiecare mesaj ACK va include dimensiunea
ferestrei pe care receptorul este apt sa opereze in acest moment particular.
Fluxul de date al emitentului poate fi reprezent ca in figura urmatoare.

Octetii A sunt octetii transmisi despre care s-a receptionat confirmarea de primire.
Octetii B sunt octetii trimisi despre care nu s-a receptionat confirmarea de primire.
Octetii C pot fi trimisi fara a se astepta nici o confirmare.
Octetii D sunt octeti care nu pot fi inca transmisi.

11

Formatul segmentului TCP


Formatul segmentului TCP este prezentat in figura de mai jos.

Unde:
Portul sursa - Numarul portului sursa pe 16 biti folosit de receptor pentru a raspunde.
Portul destinatie - Numarul portului destinatie pe 16 biti.
Numarul de secventa - Numarul de secventa al primului octate de date din acest segment. Daca
bitul de control SYN este setat, numarul de secventa este numarul de secventa initial (n) si
primul octet de date este n+1.
Numarul de confirmare - Daca bitul de control ACK este setat, acest camo contine valoarea
urmatorului numar de secventa pe care receptorul se asteapta sa-l primeasca.
Data Offset - Numarul de cuvinte de 32 biti din antetul TCP. El indica unde incep datele.
Reserved - Sase biti rezervati pentru utilizare in viitor; trebuie sa fie zero.
URG - Precizeaza ca articolul pointer de urgenta are semnificatie in acest segment.
ACK - Precizeaza ca articolul de "Numar de secventa confirmat" are semnificatie in acest
segment.
PSH - Functia push.
RST - Reseteaza conexiunea.
SYN - Sincronizeaza numerele de secventa.
FIN - Nu mai sunt date de la emitent.
Fereastra - Folosit in segmenteleACK. El specifica numarul de octeti de date incepand cu acela
indicat in "numarul de secventa confirmat" pe care receptorul (adica emitentul acestui segment)
doreste (si poate) sa accepte.
12

Suma de control - Complementul fata de unu al sumei in complement fata de unu al tuturor
cuvintelor de 16 biti din pseudo- antet, antetul TCP si datele TCP. La calcularea sumei de
control, campul "Suma de control" este considerat zero.
Pseudo-antetul este acelasi ca cel folosit de catre UDP pentru calculul sumei sale de control. Este
un antet pseudo-IP folosit doar pentru calculul sumei de control cu formatul descris in figura
urmatoare.

Pointerul de urgenta - Indica primul octet de date ce urmeaza ce urmeaza datelor urgente. Are
semnificatie numai atunci cand bitul de control URG este setat.

13

Stabilirea unei conexiuni TCP


Conform [1] inainte ca orice data sa fie transmisa, trebuie stabilita intre cele doua procese. Unul
dintre procese (de regula serverul) lanseaza un apel OPEN pasiv, celalalt un apel OPEN activ.
Apelul OPEN pasiv asteapta pana cand un alt proces incearca sa se conecteze la el printr-un apel
OPEN activ.
Prin retea, sunt schimbate trei segmente:
process 1
process 2
Apelul OPEN pasiv,
asteapta cereri active
Apelul OPEN activ trimite SYN,
secv = n
Receptioneaza SYN
trimite SYN, secv = m, ACK n+1
Receptioneaza SYN + ACK.
Trimite ACK m+1
Conexiunea este acum stabilita si doua fluxuri (streamuri) de date (cate unul pentru fiecare sens)
au fost initializate (numerele de seventa).
Intregul proces este cunoscut ca un "three-way handshake".
Segmentele TCP schimbate includ numere de secevnta initiale de la ambele parti pentru a
fi folosite la transferurile de date ulterioare. Inchiderea conexiunii este facuata implicit prin
trimiterea unui segment TCP cu bitul FIN setat (cu semnificatia nu mai sunt date). deoarece
conexiunea este full-duplex (adica, exista doua fluxuri de date, cate unul pentru fiecare
sens),segmentul FIN inchide transferul numai intr-o directie. Celalat proces va trimite acum
restul de date pe care-l mai are de transmis si termina si el cu un segment in care bitul FIN este
setat. Conexiunea este stearsa (informatiile despre stare ale ambelor parti) odata ce fluxul de date
este inchis in ambele directii.

14

Interfata de programare a aplicatiilor TCP


Ca si in cazul UDP, interfata de programare a aplicatiilor TCP nu este complet definita. Numai
cateva functii de baza pe care trebuie sa le asigure sunt descrise in RFC 793 - Transmission Control
Protocol. Asa cum este cazul cu cele mai multe RFC-uri din suita de protocoale TCP/IP, un mare grad de
libertate este lasat implementatorilor, Permitand de aceea unor implementari optimale (ce depind de
sitemul de operare), ceea ce conduce la o mai buna eficienta (o viteza mai mare de comunicare).

Interfata de programare a aplicatiilor TCP


Ca si in cazul UDP, interfata de programare a aplicatiilor TCP nu este complet definita.
Numai cateva functii de baza pe care trebuie sa le asigure sunt descrise in RFC 793 Transmission Control Protocol. Asa cum este cazul cu cele mai multe RFC-uri din suita de
protocoale TCP/IP, un mare grad de libertate este lasat implementatorilor, Permitand de aceea
unor implementari optimale (ce depind de sitemul de operare), ceea ce conduce la o mai buna
eficienta (o viteza mai mare de comunicare).
Urmatoarele apeluri de functii sunt descrise in acest RFC:
Open

Pentru a stabili o conexiune sunt necesari cativa parametrii precum:


activ/pasiv
socketul distant (al serverului)
un numar de port local
o valoare de timp maximala pentru asteptarea confirmarii (optionala)

Aceasta intoarce un nume de conexiune local care este folosit pentru


referirea acestei conexiuni particulare in toate celelalte functii.
Send
Receive
Close
Status

Abort

Determina ca datele dintr-un buffer utilizator precizat sa fie trimise prin


conexiune. Poate in mod optional sa seteze fanionul URGENT sau PUSH.
Copiaza datele TCP intr-un buffer utilizator.
Inchide conexiunea; determina fortarea transmiterii tuturor datelor care au mai
ramas (push) si un segment cu fanionul FIN setat.
Este un apel dependent de implementare care poate intoarce informatii precum:
socketul local si socketul ce descrie celalalt capat al conexiunii
dimensiuniel ferestrelor de emisie si receptie
starea conexiunii
numele local al conexiunii
Face ca toate operatiile Send si Receive in desfasurare sa fie terminate si un
RESET sa fie trimis corespondentului TCP.

15

Blibliografie
http://www.unibuc.ro/prof/niculae_c_m/telecom/cuprins.htm
http://www.kulituranauka.com/wp-content/uploads/2012/02/lectia7.pdf
http://profs.info.uaic.ro/~busaco/teach/courses/net/presentations/net5.pdf
http://shannon.etc.upt.ro/laboratoare/rcd/rcd_laborator.pdf
http://carment.ase.ro/rc/curs/cap7.pdf
http://vega.unitbv.ro/~zaharia/tdrcii/TDRC_II-10-TCP.pdf
http://stst.elia.pub.ro/news/RC/Teme_RC_IVA_2011_12/Lecu%20tica%20vidrascu%20442A%20Algorit
mi%20de%20control%20al%20congestiei%20.pdf

16

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