Am citit că pentru a termina o conexiune TCP sunt necesare 3 strângeri de mână: FIN, FIN ACK și ACK. Cu toate acestea, la închiderea unei conexiuni, Wireshark afișează FIN ACK, FIN ACK, ACK; nu afișează niciodată FIN de la sine.

Cu toate acestea, la stabilirea unei conexiuni Wireshark afișează clar cele trei strângeri de mână: SYN, SIN ACK , ACK.

Deci, sunt cam confuz de ce atunci când închid conexiunea, cele trei strângeri de mână nu sunt afișate așa.

Răspuns

O implementare TCP ar putea trimite un FIN independent în primul segment de închidere. Cu toate acestea, poate și trimite un ACK FIN, în schimb.

Acesta din urmă este strict mai bună: implementarea poate grupa un ACK „gratuit” cu segmentul FIN fără a-l face mai lung. Acest lucru se datorează faptului că, dacă nu faceți ACK, există încă loc în segment pentru numărul ACK, care va fi ignorat, și lățimea de bandă uzată. Prin urmare, ultimul ACK trimis este pur și simplu retrimis, doar în cazul în care receptorul l-a ratat.

Acest lucru este valabil pentru toate segmentele TCP. Prin urmare, cu excepția primului segment SYN, unde expeditorul nu are informații despre numărul ACK, toate celelalte segmente vor avea de obicei semnalizatorul ACK activat.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *