Jeg har lest at for å avslutte en TCP-tilkobling kreves 3 håndtrykk: FIN, FIN ACK og ACK. Men når du lukker en forbindelse, viser Wireshark FIN ACK, FIN ACK, ACK; det viser aldri FIN av seg selv.

Når du oppretter en forbindelse, viser Wireshark imidlertid tydelig de tre håndtrykk: SYN, SIN ACK , ACK.

Så jeg er ganske forvirret hvorfor når de stenger forbindelsen, vises de tre håndtrykkene ikke slik.

Svar

En TCP-implementering kan sende en frittstående FIN i det første avsluttende segmentet. Imidlertid kan den også sende en FIN ACK, i stedet.

Sistnevnte er strengt tatt bedre: implementeringen kan pakke et «gratis» ACK med FIN-segmentet uten å gjøre det lenger. Dette er fordi, hvis du ikke ACK, er det fortsatt plass i segmentet for ACK-nummeret, som vil bli ignorert, og avfall båndbredde. Derfor sendes den sist sendte ACK bare på nytt, bare i tilfelle mottakeren savnet den.

Dette gjelder for alle TCP-segmenter. Derfor, bortsett fra det aller første SYN-segmentet, der avsenderen ikke har informasjon om ACK-nummeret, vil alle de andre segmentene vanligvis ha ACK-flagget på.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *