Četl jsem, že k ukončení připojení TCP jsou vyžadována 3 navázání spojení: FIN, FIN ACK a ACK. Při ukončení připojení však Wireshark zobrazí FIN ACK, FIN ACK, ACK; nikdy nezobrazí FIN sám od sebe.
Při navazování spojení však Wireshark jasně zobrazí tři potřesení rukou: SYN, SIN ACK , ACK.
Takže jsem trochu zmatený, proč se při ukončení spojení taková tři podání ruky nezobrazí.
Odpovědět
Implementace TCP může poslat samostatný FIN v prvním uzavíracím segmentu. Může však také poslat FIN ACK.
Druhý je přísně lepší: implementace může spojit „bezplatný“ ACK se segmentem FIN, aniž by jej prodlužoval. Důvodem je, že pokud ACK neprovedete, v segmentu stále existuje prostor pro číslo ACK, které bude ignorováno, a plýtvání šířkou pásma. Proto je naposledy odeslaná ACK jednoduše znovu odeslána, pro případ, že by ji příjemce vynechal.
To platí pro všechny segmenty TCP. Proto, s výjimkou úplně prvního segmentu SYN, kde odesílatel nemá žádné informace o čísle ACK, budou všechny ostatní segmenty obvykle mít příznak ACK.