Jeg har læst, at for at afslutte en TCP-forbindelse kræves 3 håndtryk: FIN, FIN ACK og ACK. Når Wireshark imidlertid lukker en forbindelse, viser FIN ACK, FIN ACK, ACK; det viser aldrig FIN i sig selv.

Når der oprettes en forbindelse, viser Wireshark imidlertid tydeligt de tre håndtryk: SYN, SIN ACK , ACK.

Så jeg er lidt forvirret over, at når de lukker forbindelsen, vises de tre håndtryk ikke sådan.

Svar

En TCP-implementering sender muligvis en enkeltstående FIN i det første lukkesegment. Det kan dog også sende en FIN ACK i stedet.

Sidstnævnte er strengt bedre: implementeringen kan samle et “gratis” ACK med FIN-segmentet uden at gøre det længere. Dette skyldes, at hvis du ikke ACK, er der stadig plads i segmentet til ACK-nummeret, som vil blive ignoreret, og affaldsbåndbredde. Derfor sendes den sidst sendte ACK simpelthen igen, bare hvis modtageren savnede den.

Dette gælder for alle TCP-segmenter. Derfor undtagen det allerførste SYN-segment, hvor afsenderen ikke har nogen oplysninger om ACK-nummeret, vil alle de andre segmenter normalt have ACK-flag på.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *