Confirmarea Primirilor de Segmente

Una din funcțiile TCP-ului este că se asigure că fiecare segment ajunge la destinație. Serviciile TCP de pe hostul de destinație confirmă că datele au fost primite de aplicația sursă.

Numărul de secvență (SEQ) și cel de confirmare (ACK) sunt utilizate împreună pentru a confirma primirea octeților de date aflați în segmentele transmise. Numărul de secvență SEQ indică numărul relativ de octeți care au fost transmiși în sesiune, inclusiv octeții din segmentul curent. TCP folosește numărul ACK trimis înapoi la sursă pentru a indica următorul octet pe care receptorul se așteaptă să îl primească. Acest lucru se numește confirmare așteptată.

Sursa este informată că destinatarul a primit toți biții din acest flux de date, dar neincluzând octetul indicat de către numărul ACK. Hostul transmițător se așteaptă să trimită un segment care folosește un număr de secvență care este egal cu numărul ACK.

Țineți minte, fiecare conexiune este reprezentată de două sesiuni cu sens unic. Numerele SEQ și ACK sunt interschimbate în ambele direcții.

În exemplul din figură, hostul din stânga trimite date către hostul din dreapta. Acesta trimite un segment care conține 10 octeți de date pentru această sesiune și un număr de secvență egal cu 1 în header.

Hostul receptor primește segmentul la Layer-ul 4 și determină că numărul de secvență este 1 și că are 10 octeți de date. Apoi, hostul trimite înapoi un segment la hostul din stânga pentru a confirma primirea datelor. În acest segment, hostul setează numărul ACK la 11 pentru a indica faptul că următorul octet de date pe care se așteaptă să îl primească în această sesiune este cel cu numărul 11. Când hostul transmițător primește această confirmare, poate trimite următorul segment cu date pentru această sesiune care începe cu numărul 11.

Luând în considerare acest exemplu, dacă hostul transmițător a trebuit să aștepte pentru confirmarea că s-au primit fiecare 10 octeți, rețeaua ar fi avut o supraîncărcare mare. Pentru a reduce supraîncărcarea acestor confirmări, mai multe segmente de date pot fi trimise și confirmate cu un singur mesaj TCP în direcția opusă. Această confirmare conține un număr ACK bazat pe numărul total de octeți primit în sesiune. De exemplu, pornind cu un număr de secvență de 2000, dacă 10 segmente fiecare de 1000 octeți au fost primiți, un număr ACK de 12001 ar fi returnat la sursă.

Cantitatea de date pe care o sursă o poate trimite până trebuie să primească o confirmare de primire este numită dimensiunea unei ferestre, care este un câmp în antetul TCP ce facilitează gestionarea datelor pierdute și controlul fluxului.