Protocolul TCP/IP


Protocol in limbaj formal inseamna un set de reguli pentru comportament. Pentru a comunica intre ele calculatoarele au nevoie de un set de reguli dupa care sa decurga comunicatia. In comunicatia de date aceste reguli sunt denumite protocoale.

Denumirea TCP/IP defineste un set de protocoale. Aceasta demunire a fost data de doua dintre aceste protocoale: Transport Control Protocol si Internet Protocol (acestea sunt cele mai importante).

Caracteristici TCP/IP

Modelul de referinta OSI

Modelul de referinta OSI contine sapte nivele care definesc functiile pentru protocoale de transfer de date. Fiecare nivel reprezinta o functie care este efectuata in momentul transferarii de date printr-o retea. Un nivel OSI nu defineste un singur protocol - el defineste o funtie pentru comunicarea de date care poate fi efectuata de un numar nelimitat de protocoale. De aceea, fiecare nivel contine mai multe protocoale, fiecare protocol oferind un serviciu care se potriveste cu functia nivelului respectiv.

Fiecare protocol comunica cu perechea sa ("peer"). Aceasta este o implementare a aceluiasi protocol in nivelul echivalent pe sistemul cu care se comunica.

Fig. 1 - Modelul de referinta OSI

Nivelul Aplicatie - este nivelul care contine aplicatiile si procesele care utilizeaza reteaua.

Nivelul Prezentare - este nivelul care ofera rutine pentru reprezentarea informatiei (de exemplu: rutina pentru codificarea informatiei pentru a nu depinde de platforma de calcul si a reprezentarii informatiei in acel sistem)

Nivelul Sesiune - acest nivel creaza si distruge sesiuni (conexiuni) intre aplicatii. In TCP/IP, termenul sesiune ("session") nu este folosit. Pentru TCP/IP, termenii "socket" si "port" sunt folositi pentru a descrie calea prin care aplicatiile comunica.

Nivelul Transport - Acest nivel garanteaza ca receptorul va primi pachetele in aceiasi ordine in care au fost trimise. In TCP/IP aceasta functie este oferita de Transmission Control Protocol (TCP), dar mai exista un al doilea servici de transfer: User Datagram Protocol (UDP), acesta nu verifica daca mesajele ajung la destiantie.

Nivelul Retea - Acest nivel izoleaza protocoalele din nivele superioare de detaliile retelei fizice.

Nivelul Legaturi de Date - Transmiterea in siguranta a informatiei printr-un mediu nesigur (reteaua fizica) este efectuata de acest nivel. Protocolul TCP/IP implementeaza rar protocoale in acest nivel el folosind protocoalele existente.

Nivelul Fizic - Defineste caracteristicile hardware-ului necesar pentru a genera semnalul ce va transmite informatia. TCP/IP nu defineste standarde fizice, el se foloseste de standardele existente.

Arhitectura protocolului TCP/IP

Nu exista un model standard de descriere a arhitecturii protocolului TCP/IP. El nu respecta cu strictete modelul de referinta OSI. O reprezentare a arhitecturii protocolului este facuta in Fig. 2

Fig. 2 - Nivelele in arhitectura protocolului TCP/IP

Nivelul Aplicatie - este alcatuit din aplicatii si procese care folosesc reteaua (exemplu: protocoalele de nivel inalt: SMTP, POP3, HTTP, etc.)

Nivelul Transport Host-to-Host - acest nivel ofera servicii de livrare a pachetelor la destinatie in aceiasi ordine in care au fost transmise.

Nivelul Internet - defineste si ruteaza pachetele. Pachetul este unitatea cea mai mica a transferului prin internet.

Nivelul de Acces la Retea - contine rutine pentru accesarea retelelor fizice.

La fel ca si in modelul OSI, informatia care este trimisa in retea parcurge stiva de sus in jos, si invers in cazul informatiei receptionate din retea. Fig. 3 reprezinta fluxul informatiei prin cele patru nivele ale arhitecturii TCP/IP. Fiecare nivel adauga la informatia provenita de la nivelul imediat superior o informatie de control pentru a asigura siguranta livrarii pachetului. Aceasta informatie de control se numeste header. Pentru informatia provenita de la nivelul imediat inferior se trece la verificarea header-ului si se transmite informatia fara header-ul corespunzator nivelului curent catre nivelul imediat superior. Aceasta adaugare de informatii pentru controlul livrarii la fiecare nivel se numeste incapsulare. Fiecare nivel are propriul lui header cu structura aferenta si in principiu acesta nu cunoaste structura celorlalte headere din stiva.

Fig. 3 - Incapsularea informatiei

In Fig. 4 se observa termenii folositi de nivelele protocolui TCP/IP pentru a desemna informatia care urmeaza a fi transmisa. In nivelul aplicatie, aplicatiile care folosesc TCP denumesc structura de date stream, iar cele care folosesc UDP o denumesc message. In nivelul transport, TCP denumeste informatia segment, iar UDP o denumeste packet. Nivelul Internet vede informatia ca blocuri numite datagram, iar nivelul retea denumeste informatia frames sau packets (depinde de implementare).

Fig. 4 - Structurile de date

Fig. 5 reprezinta structura informatiei in nivelul Internet a protocolului TCP/IP. Aceasta structura se numeste datagram. Primele cinci-sase cuvinte pe 32 biti din datagram reprezinta informatia de control (header-ul). Header-ul are 5 cuvinte al sase-lea fiind obtional. Datorita faptului ca dimensiunea headerului este variabila el include un camp IHL (Lungimea Headerului Internet) care stocheaza lungimea headerului in cuvinte. Acest header contine toate informatiile necesare pentru a pachetul sa ajunga la destinatie.

Fig. 5 - Structura informatiei IP (Internet Protocol)

GATEWAY = calculator sau dispozitiv care schimba informatii intre doua protocoale diferite.
ROUTER = calculator sau dispozitiv care schimba informatii intre doua retele cu aceleasi protocoale.
Fig. 6 arata folosirea Gateway-urilor pentru interconectarea retelelor. Se poate observa ca la nivelul Gateway-urilor pachetele care traverseaza reteaua B, avand sursa reteaua A si destinatie reteaua C sau invers, ajung doar pana la nivelul Internet, deoarece la acest nivel are loc rutarea pachetelor in protocolul TCP/IP. In cazul Gateway-urilor (deoarece fac legatura intre doua protocoale ceea ce poate implica dimensiuni mai mici pentru pachete - retele fizice disimilare) se poate face impartirea unui datagram in bucati mai mici. Fiecare tip de retea are un MTU (utitate maxima transferabila) care indica dimensiunea maxima a pachetului care poate fi transferat prin acea retea. In cazul in care se face rutarea intre doua retele cu MTU diferit atunci bucatile de datagram care au rezultat in urma impartirii (fragmentarii) vor avea in noul header al datagramului activat bitul More Fragments si cuvantul Fragmentation Offset.

Fig. 6 - Rutarea pachetelor

Cand Nivelul Internet primeste un datagram care este adresat calculatorului local, et trebui sa trimita datagram-ul protocolului de transport corect. Aceasta este realizata prin folosirea numarului protocolului in cuvantul trei al headerului datagramului. Fiecare protocol de transport are un numar unic prin care se identifica la nivelul Internet.

ICMP (Internet Control Message Protocol)

ICMP eset parte integranta a Protocolului IP. El se foloseste de capacitatea IP de a trimite datagrame pentru a trimite propriile mesaje. ICMP trimite mesaje care au ca scop controlul, raportarea erorilor si mesaje de informare pentru TCP/IP.

Controlul Fluxului - Cand datagramele ajung preea repede si nu pot procesate. Calculatorul sau gateway-ul vor anunta printr-un mesaj ICMP Source Quench pe cel care trimite sa opreasca trimiterea de date pentru moment.

Verificare calculatoarelor de la distanta - Un calculator pot trimite un mesaj ICMP Echo pentru a vedea daca protocolul internet a unui calculator este operational. Cand un sistem primeste un astfel de mesaj, el raspunde trimitand informatia din packet inapoi. Comenzile ping si traceroute folosesc acest mesaj.

Detectarea destinatiilor care nu pot fi atinse - Cand o destinatie nu poate fi contactata, sistemul care detecteaza problema trimite un mesaj Destination Unreachable catre sursa datagramei. Daca destinatia este un host sau o retea raspunsul il va da unul din gateway-urile intermediare, altfel daca este un port mesajul il va da destinatia insasi.

User Datagram Protocol (UDP)

Acest protocol face parte din nivelul transport. El ofera aplicatiilor posibilitatea de a schimba mesaje prin intermediul retelei cu incarcarea minima a retelei. UDP-ul este un protocol fara conexiune, nu verifica daca mesajul a ajuns corect la destinatie. Formatul mesajului UDP este aratat in Fig. 7. El are doua campuri pentru portul sursa si destinatie, un camp pentru lungime, un camp pentru controlul corectitudinii mesajului si corpul mesajului. Acest protocol este util de folosit atunci cand dimensiunile informatilor transferate in retea sunt mici, iar in cazul in care nu se primeste raspuns sa fie posibil retransmiterea mesajului, deoarece nu incarca sistemul prin crearea unei conexiuni inainte de a trimite mesajul (exemplu: cererile de DNS se pot face folosind UDP).

Fig. 7 - Formatul mesajului UDP (User Datagram Protocol)

Transport Control Protocol (TCP)

Si acest protocol face parte din nivelul de transport. Este folosit de aplicatiile care au nevoie de un transort sigur. TCP este un protocol sigur, pentru ca verifica daca datele au ajuns la destinatie si sunt corecte, orientat pe conexiune (inainte de a trimite date verifica daca destiantia poate sa primeasca date - stabileste o conexiune).
Verificare corectitudinii datelor la destinatie se face prin calcularea sumei de control a datagramei si compararea ei cu ca din header-ul mesajului. Daca in urma verificarii pachetul este fara erori se trimite un pachet in care este setat bitul ACK (Positive Acknowledgment ) la sursa pentru a semnaliza receptionarea pachetului. Daca pachetul a avut erori se asteapta pana cand sursa va trimite din nou acelasi pachet pentru ca nu a primit confirmarea receptiei lui la destinatie.

Fig. 8 - Formatul segmentului TCP (Transmission Control Protocol)

Conexiunea intre doua calculatoare este realizata prin schimabarea unor informatii de control, aceasta operatie se numeste handshake. Aceasta are loc inainte de a se transmi te informatia. TCP-ul indica functia de contro a unui pachet prin setarea bitului dorit din campul de 4 fanioane (FIN,PSH,SYN,RESET). Handshake-ul pentru TCP este realizat in 3 faze. (Fig. 9)

Fig. 9 - Secventa "HANDSHAKE" pentru TCP