Azt olvastam, hogy a TCP-kapcsolat megszakításához 3 kézfogás szükséges: FIN, FIN ACK és ACK. A kapcsolat lezárásakor azonban a Wireshark megjeleníti a FIN ACK, FIN ACK, ACK üzeneteket; önmagában soha nem jelenik meg a FIN.
A kapcsolat létrehozásakor azonban a Wireshark egyértelműen megjeleníti a három kézfogást: , ACK.
Tehát nem értem, hogy a kapcsolat lezárásakor miért nem jelenik meg a három kézfogás.
Válasz
A TCP-megvalósítás önálló FIN-t küldhet az első záró szegmensben. Helyette azonban is küldhet FIN ACK-t.
Ez utóbbi szigorúan jobb: a megvalósítás összekapcsolhatja a “szabad” ACK-t a FIN szegmenssel anélkül, hogy hosszabbá tenne. Ennek az az oka, hogy ha nem ACK, akkor a szegmensben még van hely az ACK számnak, amelyet figyelmen kívül hagynak, és hulladék sávszélességet. Ezért az utoljára elküldött ACK egyszerűen újraküldésre kerül, hátha a vevő elmulasztotta.
Ez minden TCP szegmensre igaz. Ezért, a legelső SYN szegmens kivételével, ahol a feladónak nincs információja az ACK számról, az összes többi szegmensben általában be van kapcsolva az ACK jelző.