Sunteți pe pagina 1din 8

Protocoalele TCP/IP

Transmission Control Protocol (TCP) şi Internet Protocol (IP) se referă de fapt la un set de
protocoale şi servicii care împreună permit calculatoarelor legate în reţea să se interconecteze pentru a
realiza transferuri de fişiere, servicii de poştă electronică şi sesiuni de lucru interactiv la distanţă.
TCP este folosit pe scară largă în mediile academice şi inginereşti (şi, de exemplu, în cadrul reţelei
guvernamentale americane).
De asemenea, datorită marelui număr de programe apărute pe piaţă care folosesc TCP/IP, acest set
de protocoale a început să fie din ce în ce mai răspândit în mediul comercial, ca şi în cadrul reţelelor locale
de calculatoare.

Protocolul Internet (Internet Protocol - IP)

Între protocoalele de nivel 3 (nivelul REţEA) documentate de Departamentul de Apărare al Statelor


Unite (DoD - Department of Defense), Internet Protocol este cel mai important. Principalul său scop este
de a interconecta mai multe reţele bazate pe schimbul de pachete într-o supra-reţea (internet - în
continuare vom înţelege prin internet (scris cu litere mici) orice suprareţea (reţea globală). Atunci când
este nevoie să se specifice în mod explicit că este vorba despre reţeaua Internet iniţiată de către DoD,
cuvântul Internet se va scrie cu prima literă capitalizată). IP îşi oferă serviciile diferitelor protocoale de pe
nivelele superioare (Upper Layer Protocols - ULP) prin asistarea livrării datelor ULP prin internet în cadrul
unuia sau mai multor blocuri de date (datagrams).
Valoare Clasă
0127 A
128191 B
192223 C
224255 D

Singura diferenţă între reţele şi subreţele constă în modul în care sunt interpretate adresele IP şi depinde
de localizarea modulului IP specificat de adresă. În majoritatea cazurilor, subreţelele pot fi numite pentru
simplitate reţele. În general, termenul "subreţea" este folosit doar în cazul în care este necesar să se facă
distincţia între diferitele nivele ierarhice ale internet.
IP este limitat la funcţiile de bază necesare transmisiei unui bloc de date (datagram) prin internet.
Fiecare bloc de date este o entitate independentă, nefiind legată de alte "datagrame" (traducerea, poate
puţin forţată, a termenului "datagram" este preluată din cartea "Reţele de calculatoare", cu semnificaţia
"mesaj fără confirmare"). Nivelul IP al hostului asigură servicii protocoalelor de la nivelul transport şi
foloseşte serviciile nivelului legăturii de date pentru a transmite datagramele hostului destinaţie. IP nu
pretinde că ar oferi servicii sigure. Calculatoarele gazdă (hosts) vor ignora datagramele atunci când nu au
resurse suficiente pentru procesare şi nu vor detecta datagramele pierdute sau ignorate de către nivelul
legăturii de date.
IP izolează protocoalele de pe nivelele superioare de caracteristicile specifice reţelei. Serviciile
adiţionale furnizate de către IP includ diferite nivele de comportare a transmisiei, implicând caracteristici
ca: precedenţă, nivel de încredere, întârzieri. IP permite de asemenea etichetarea datelor, necesară în
medii sigure, pentru a asocia datelor informaţii de securitate.
Transmisia începe atunci când un protocol de pe nivelul superior transmite date către IP pentru
livrare. IP împachetează datele în format internet datagram şi le transmite protocolului de pe nivelul
legăturii de date pentru transmisie prin reţeaua locală. Dacă hostul destinaţie se află legat direct în reţeaua
locală, IP trimite pachetul direct acestui host. Dacă destinaţia se află într-o altă reţea, IP trimite pachetul
unui gateway IP local pentru transmisie. Acest gateway va trimite pachetul prin următoarea reţea hostului
destinaţie sau unui alt gateway. Astfel, datagrama se propagă prin setul de reţele interconectate de la un
modul IP la altul, până când aceasta ajunge la destinaţie.

Headerul IP
Pachetele (datagramele) IP au un antet (header) bine definit, header definit de standardele DoD
(U.S.A. Department of Defense). Acest header are structura prezentată în figura 3.
În continuare sunt prezentate câmpurile care compun acest header:
Version (Versiune) Lungimea câmpului: 4 biţi
Câmpul Version indică formatul headerului IP. Va fi prezentată în continuare versiunea 4, ultima
până la data apariţiei materialului bibliografic avut la dispoziţie (1988). Versiunile 13 nu mai erau deja
folosite încă la acea dată. Câmpul Version indică versiunea protocolului căreia îi aparţine pachetul.
Includerea versiunii protocolului în fiecare pachet face posibilă dezvoltarea de noi protocoale şi testarea
acestora fără a afecta buna funcţionare a reţelei.
Internet Header Length (Lungimea headerului Internet)
Abreviere: IHL
Lungimea câmpului: 4 biţi
Unitate: Grupe de câte 4 octeţi
Gamă: 515 (implicit 5)
Câmpul Internet Header Length indică lungimea headerului IP exprimată în multipli de unităţi de 32
biţi. Acest câmp este necesar deoarece headerul IP are o lungime variabilă datorită faptului că lungimea
câmpului Options nu este constantă.
Type of Service (Tipul de serviciu) Abreviere: TOS
Lungimea câmpului: 8 biţi
Câmpul Type of Service conţine parametrii IP care descriu calitatea serviciului dorită pentru
prezentul pachet transmis. Câmpul permite calculatorului gazdă să specifice reţelelor de tranzit tipul de
serviciu pe care îl doreşte. Câmpul permite specificarea precedenţei pachetului, nivelul dorit de încredere
şi nivelul presupus de consumare a resurselor, după cum se va arăta mai jos.
Tipul de serviciu se foloseşte pentru a specifica reţelelor de tranzit ce serviciu se doreşte de la
acestea. Reţelele de tranzit decid dacă pot sau doresc să se achite de serviciile cerute.

Total Length (Lungimea totală) Abreviere: TL


Lungimea câmpului: 16 biţi
Total Length este lungimea pachetului, măsurată în octeţi, incluzând headerul IP şi zonele de date
ale pachetului.
Se observă că lungimea câmpului Total Length permite o lungime totală maximă a pachetului de
65.536 octeţi.

Identification (Identificare) Abreviere: ID


Lungimea câmpului: 16 biţi
Câmpul reprezintă o valoare de identificare folosită pentru a asocia fragmentele unui pachet. ULP
(Upper Layer Protocol) care transmite de obicei generează această valoare ca pe un parametru al
interfeţei. Altfel, IP generează acest câmp în aşa fel încât el să fie unic pentru fiecare ULP care transmite.
Câmpul Identification indică numărul pachetului pentru a permite calculatorului gazdă destinaţie să
determine cărui pachet îi aparţine fragmentul care tocmai a sosit.

Flags (Indicatori)
Lungimea câmpului: 3 biţi
Acest câmp conţine indicatorii de control Don't Fragment (a nu se fragmenta, care inhibă
fragmentarea pachetului de către IP) şi More Fragments (care ajută la identificarea poziţiei unui fragment
în pachetul original).
Indicatorul Don't Fragment este destinat pentru folosirea cu calculatoare gazdă care nu sunt
capabile să reconstituie pachetul din fragmentele din care este format. De fapt, multe implementări ale
TCP/IP nu permit fragmentarea şi reconstituirea pachetelor.

Fragment Offset (Offsetul fragmentului) Abreviere: FO


Lungimea câmpului: 13 biţi
Unitate: Grupe de câte 8 octeţi
Gamă: 08191 (implicit 0)
Câmpul indică poziţia fragmentului relativ la începutul datelor în pachetul original. Atât un pachet
complet, cât şi primul fragment al unui pachet au acest câmp resetat.
Fragment Offset localizează poziţia fragmentului curent într-un pachet ca multiplu de 8 biţi. Pentru
aceasta, lungimea câmpului este de 13 biţi, deci sunt permise maximum 8.192 fragmente pentru fiecare
pachet, în acest caz extrem, primele 8.191 fragmente vor avea lungimea de un octet.

Time-to-Live (Timp de viaţă) Abreviere: TTL


Lungimea câmpului: 8 biţi
Unitate: secunde
Gamă: 0255 (255=4,25 minute)
Acest câmp indică timpul maxim cât poate să rămână pachetul în internet. Când valoarea acestui
câmp, după decrementare, ia valoarea zero, pachetul ar trebui distrus.
Unitatea de timp utilizată pentru măsurarea timpului de viaţă al pachetului este secunda, deci
timpul maxim de viaţă al unui pachet este 255 secunde (4,25 minute).
Valoarea câmpului este scăzută cu cel puţin 1 de către fiecare router prin care trece pachetul.

Protocol (Protocol) Abreviere: PROT


Lungimea câmpului: 16 biţi
Acest câmp arată care ULP (Upper Level Protocol) trebuie să recepţioneze porţiunea de date a unui
pachet. Numerele asignate ULP-urilor uzuale sunt disponibile de la DoD Executive Agent for Protocols.
Unele vor fi arătate mai jos, în tabelul 3.
Câmpul Protocol specifică protocolul particular de la nivelul 4 căruia îi aparţine pachetul (de
exemplu, TCP sau alt protocol echivalent).

Număr Prescurtare Descriere


(zecimal)
0 Reserved
1 ICMP Internet Control Message
5 ST Stream
6 TCP Transmission Control Protocol
8 EGP Exterior Gateway Protocol
9 IGP Any private interior gateway protocol
11 NVP Network Voice Protocol
17 UDP User Datagram Protocol
20 HMP Host Monitoring Protocol
22 XNS-IDP Xerox Network Systems Internet Datagram
Protocol
27 RDP Reliable Data Protocol
28 IRTP Internet Reliable Transaction Protocol
29 ISO-TP4 ISO Transport Protocol Class 4
30 NETBLT Bulk Data Transfer Protocol
61 Any host internal protocol

Tabelul 3. Numere de protocol asignate în cadrul headerului IP.

Header Checksum (Suma de control a headerului)


Lungimea câmpului: 16 biţi
Acest câmp conţine o sumă de control aplicată doar headerului IP. Suma de control ajută la
detectarea unor eventuale erori apărute în timpul transmisiei. Algoritmul după care se generează această
sumă de control este: se adună complementele faţă de 1 ale tuturor entităţilor headerului (grupate pe câte
16 biţi) şi apoi se complementează suma faţă de 1.
Suma de control a headerului se foloseşte doar pentru a verifica validitatea datelor din cadrul
headerului. Ori de câte ori pachetul trece printr-un gateway, această sumă de control este recalculată
(deoarece de fiecare dată este modificat câmpul TTL).
Nivelul transport
Servicii specifice pentru nivelul transport

Nivelul transport este destinat să asigure unei maşini servicii de conexiune şi tranzacţie. Nivelele
inferioare ale modelului se ocupă de transmisia şi rutarea pachetelor între diferite maşini. Nivelul transport
are menirea de a oferi servicii de transmisie eficiente şi sigure între diferite procese şi nu între maşini.
Toate cele patru nivele conlucrează pentru a oferi un serviciu de transport complet, înlesnind o
comunicaţie robustă şi transparentă pe baza cărora se pot construi apoi protocoale la nivelele superioare.
Scopul acestui nivel este de a oferi o cale de comunicaţie între diferite procese care să simuleze o legătură
punct-la-punct, procesele nefiind interesate de modul cum se face de fapt comunicaţia. Un protocol de la
nivelul transport execută această sarcină prin împărţirea datelor în pachete şi transmisia (eventual
retransmisia) lor pentru a permite livrarea datelor în ordine, fără duplicate sau omisiuni. TCP/IP asigură
două protocoale principale la nivelul patru: TCP (Transmission Control Protocol) şi UDP (User Datagram
Protocol)

Protocolul de control al transmisiei (TCP)

TCP a fost proiectat să opereze în diferite reţele şi să ofere conexiuni virtuale între procese, prin
transmisii sigure şi în ordine ale datelor utilizatorilor. TCP reprezintă baza unui mecanism de comunicaţie
interprocese aşezat peste câteva nivele care oferă servicii nedemne de încredere, nivele în care pot să
apară pierderi, duplicări, întârzieri, erori sau dezordonări ale pachetelor. Este un protocol complex, care
trebuie să se ocupe, de exemplu, de detecţia pachetelor pierdute, retransmisia automată şi probleme
"patologice", cum ar fi apariţia unor pachete duplicat întârziate.
Potenţialul de a asigura robusteţe în faţa unui mediu de transmisie nesigur, fac din TCP un protocol
foarte dorit de o multitudine de aplicaţii care fac apel la intercomunicaţie. TCP poate lucra şi în medii
constituite din reţele interconectate. A fost special proiectat să lucreze deasupra protocolului IP, aflat la
nivelul trei din modelul ISO OSI (nivelul reţea)

TCP are sarcina de a asigura servicii de comunicaţie sigure între procese pereche aflate în cadrul
unor calculatoare gazdă distincte legate în aceeaşi reţea sau în cadrul unui set de reţele interconectate.
Oferă transferuri de date orientate pe conexiune la nivelul transport – aceleaşi servicii de bază ca şi
Sequenced Packet Protocol (SPP) realizat în cadrul XNS.
TCP acceptă o gamă largă de ULP care au nevoie să trimită date perechilor lor aflate pe alte
calculatoare gazdă. TCP nu încearcă să impună vreo structură a datelor trimise de către un protocol de la
nivel superior. TCP tratează datele primite ca pe un şir continuu, lăsând structurarea mesajelor pe seama
ULP, spre deosebire de SPP, care ajută propriii clienţi la demarcarea mesajelor. TCP încearcă, totuşi, să
segmenteze datele în unităţi distincte astfel încât ele să poată fi transmise şi recepţionate ca pachete
individuale. Fiecare astfel de unitate este numită segment.
Deoarece TCP a fost proiectat să fie independent de caracteristici particulare ale reţelelor în cadrul
cărora operează, este dată o definiţie generală a noţiunii de pachet (sau segment) care permite existenţa
unor pachete cu o lungime de până la 65KB. TCP pereche pot să-şi transmită pachete care au o lungime
până la lungimea maximă definită în standard (65KB). În realitate, dacă se în cearcă schimbul unor pachete
de o asemenea lungime, nivelele IP vor fi nevoite să împartă aceste pachete în multe pachete de nivel mai
coborât, pentru ca acestea să corespundă lungimii maxime a pachetelor în cadrul reţelei din care hostul
face parte. De obicei, diversele implementări ale TCP lucrează cu pachete care au lungimi adecvate reţelei
la care sunt ataşate.
TCP asignează câte un număr de ordine fiecărui octet al şirului infinit de date al clientului său.
Atunci când schimbă segmente cu perechea sa, TCP etichetează segmentul cu numărul de ordine al
primului octet al segmentului şi cu numărul de octeţi conţinuţi în pachet. Aceasta permite TCP să
reasambleze fluxul de date atunci când îl livrează nivelelor superioare.
Dacă este nevoit să retransmită o serie de segmente, TCP poate să reîmpacheteze datele,
combinând două segmente mai mici într-un segment mai mare, de exemplu. Acest mecanism, motivat de
dorinţa de a spori eficienţa transmisiei în cadrul unor reţele larg distribuite, unde se pune problema
minimizării raportului între numărul de biţi ai headerului şi numărul de biţi de date, face ca TCP să fie mai
complex decât alte protocoale de transport.

Source Port (Portul sursă) Lungimea câmpului: 16 biţi


În principiu, acest câmp conţine o adresă care identifică un proces sau un serviciu în cadrul host-ului
sursă. Portul sursă nu face parte din adresa IP; totuşi, combinaţia dintre adresa IP şi numărul portului
identifică în mod unic ceea ce se cheamă un soclu (socket) sau punct de acces într-un proces dat.

Destination Port (Portul destinaţie) Lungimea câmpului: 16 biţi


Acesta este un câmp care identifică procesul sau serviciul în cardul calculatorului gazdă receptor.
Câmpurile Source Port şi Destination Port sunt sub controlul calculatoarelor gazdă. Fiecare host
poate să decidă pentru sine cum să aloce porturile.

Sequence Number (Număr în cadrul secvenţei) Abreviere: SEQ


Lungimea câmpului: 32 biţi
Unitate: octeţi Gamă: 0232-1
Această valoare reprezintă poziţia în cadrul secvenţei de octeţi a primului octet al unui segment.
Totuşi, dacă este prezent un SYN, atunci valoarea acestui câmp reprezintă prima poziţie în cadrul secvenţei
(Initial Sequence Number - ISN) pentru acea conexiune; primul octet de date este numerotat ISN+1.
Câmpurile Sequence Number şi Acknowledgement au ambele lungimea de 32 biţi, permiţând astfel
specificarea unui spaţiu de secvenţiere foarte mare. (La o rată de transfer al datelor de 1000 octeţi pe
secundă, ar fi necesare aproximativ 50 de zile pentru a fi necesară reluarea numerotării cu numărul în
cadrul secvenţei zero. Dată fiind durata maximă de viaţă a unui pachet - 255 secunde - nu este posibil ca un
pachet vechi să aibă acelaşi număr de secvenţă ca şi unul nou şi să pară că ar fi un pachet duplicat sau să
fie recepţionat în locul unui pachet care nu a fost livrat din cauza unor erori).

Acknowledgement Number (Număr de confirmare) Abreviere: ACK


Lungimea câmpului: 32 biţi
Unitate: octeţi
Gamă: 0232-1
Dacă este setat bitul de control ACK, acest câmp conţine valoarea numărului de secvenţă al
următorului octet pe care receptorul se aşteaptă să-l primească.

Data Offset (Deplasamentul datelor) Lungimea câmpului: 4 biţi


Unitate: 32 biţi
Gamă: 515, implicit 5
Acest câmp indică numărul de cuvinte de 32 de biţi conţinute în cadrul headerului TCP. Folosind
această valoare, poate fi calculat deplasamentul datelor în cadrul pachetului. Această informaţie este
necesară datorită lungimii variabile a câmpului Options. Headerul TCP, chiar dacă include un câmp Options,
are o lungime care este un multiplu de 32 biţi.

Reserved (Rezervat) Lungimea câmpului: 6 biţi Acest câmp este rezervat pentru extensii ulterioare.
Trebuie să aibă toţi biţii zero.

Control Flags (Indicatori de control) Lungimea câmpului: 6 biţi


Acest câmp conţine un număr de indicatori de câte un bit fiecare, folosiţi pentru stabilirea,
terminarea şi menţinerea unei conexiuni:
- URG - Urgent Pointer. URG=1 indică faptul că este folosit câmpul Urgent Pointer pentru a localiza
date urgente, prin intermediul unui offset exprimat în octeţi faţă de numărul de secvenţă curent. Acest
pointer poate fi necesar în cazul apariţiei unei întreruperi. Dacă indicatorul URG nu este setat, atunci
câmpul Urgent Pointer trebuie ignorat.
- SYN - Este folosit pentru a stabili o conexiune. SYN=1 semnifică cererea de stabilire a unei
conexiuni.
- ACK – Indică faptul că are semnificaţie câmpul Acknowlwdgement.
- RST - Poate reseta o conexiune în cazul apariţiei unor pachete întârziate cu bitul SYN setat, în cazul
căderii calculatorului gazdă sau în alte cazuri. RST=1 înseamnă că trebuie resetată conexiunea.
- PSH - PSH=1 transmite TCP-ului receptor să transmită imediat datele din cadrul segmentului către
ULP receptor. Acest bit poate fi folosit pentru a indica faptul că nu vor apărea date de la ULP sursă imediat.
- FIN - Este folosit pentru a termina o conexiune. FIN=1 înseamnă că sursa nu va mai transmite date
către ULP receptor.
Window (Fereastră) Abreviere: WNDW
Lungimea câmpului: 16 biţi
Unitate: octeţi Gamă: 0216-1
Această valoare reprezintă numărul octeţilor de date, începând cu cel indicat în cadrul câmpului
Acknowledgement, pe care hostul sursă este dispus sâ îi accepte. Window este parametrul care permite
controlul fluxului în cadrul TCP. Window este un câmp relativ lung deoarece numără octeţii care vor
putea fi recepţionaţi după octetul confirmat, în loc să numere pachetele care ar putea fi trimise (cum se
face în cazul SPP-XNS).

Checksum (Sumă de control) Lungimea câmpului: 16 biţi


Acest câmp se aplică tuturor cuvintelor de 16 biţi din cadrul headerului şi datelor. El de asemenea
acoperă un pseudo-header de 96 biţi care conceptual precede headerul TCP. Acest pseudoheader conţine
adresa sursei, adresa destinaţiei, identificatorul de protocol şi lungimea segmentului TCP. Checksum
conţine complementul faţă de 1 al sumei complementelor faţă de 1 ale tuturor cuvintelor de 16 biţi din
header şi din cadrul câmpului de date.

Urgent Pointer (Pointer urgent) Abreviere: URGPTR


Lungimea câmpului: 16 biţi Unitate: octeţi Gamă: 0216-1
Acest câmp specifică ultimul octet de date urgente. Valoarea câmpului este un deplasament pozitiv
faţă de numărul de secvenţă în cadrul segmentului. Adunând URGPTR la SEQ se poate afla numărul din
cadrul secvenţei al ultimului octet de date urgent. Acest câmp are semnificaţie doar dacă este setat bitul
de control URG.

Options (Opţiuni) Abreviere: OPT Lungimea câmpului: variabilă


Dacă este prezent, acest câmp ocupă spaţiu la sfârşitul headerului TCP. Toate opţiunile sunt incluse
în Checksum. Orice opţiune ocupă un număr întreg de octeţi. Options este rezervat pentru diferite
lucruri. Singura opţiune oficială interesantă definită până în prezent comunică lungimea maximă a unui
segment şi este trimisă în timpul stabilirii conexiunii.

User Datagram Protocol (UDP)

UDP oferă servicii de transport de încărcare redusă pentru a permite ULP să transfere datagrame
între ele. Ca şi TCP, UDP foloseşte câmpuri port pentru a specifica procesul sursă şi destinaţie al fiecărei
tranzacţii. Se poate folosi, opţional, şi o sumă de control.