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ő.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük