Gestiunea Pierderii de Segmente

Nu contează cât de bine este proiectată o rețea, pierderile de date apar ocazional; așadar, TCP furnizează metode de gestiune a acestor pierderi de segmente. Printre acestea există un mecanism de retransmisie a segmentelor cu date neconfirmate.

Un serviciu al destinatarului utilizând TCP confirmă de obicei datele secvențelor contigue de date. Dacă unul sau mai multe segmente lipsesc, doar datele din prima secvență apropiată de octeți sunt confirmate. De exemplu, dacă numerele de secvență de la 1500 la 3000 și de la 3400 la 3500 au fost primite, numărul ACK ar fi 3001. Asta se întâmplă deoarece sunt segmente cu numere de secvență de la 3001 și 3399 care nu au fost primite.

Când TCP-ul de la hostul sursă nu a primit o confirmare după un timp predeterminat, se returnează ultimul număr ACK primit și se retransmit datele începând cu acel punct. Procesul de retransmisie nu este specificat de RFC, dar este lăsat la latitudinea implementării de TCP.

Pentru o implementare tipică de TCP, un host poate transmite un segment, pune o copie a segmentului în coada de retransmisii și pornește un cronometru. Atunci când este primită confirmarea datelor, segmentul este șters din coadă. În cazul în care confirmarea nu este primită înainte să expire timpul, segmentul este retransmis.

Dați clic pe butonul Play din figură pentru a vedea animația care demonstrează retransmiterea segmentelor pierdute.

Hosturile din ziua de astăzi pot avea o opțiune denumită SACKs (selective acknowledgements - confirmări selective). Dacă ambele host-uri suportă SACK, este posibil ca destinatarul să confirme primirea octeților în segmente discontinue și host-ul ar trebui să retransmită doar datele care lipsesc.