En regardant dans Wireshark, je vois souvent que les flux TCP se terminent par un paquet RST, ACK au lieu d'un paquet RST. Quelqu'un sait pourquoi c'est?
Un exemple de ce que je vois:
SYN SYN, ACK ... données ... RST, ACK
Wireshark ne prélève pas de paquet RST avant le paquet RST, ACK.
Réponses:
Un RST / ACK n'est pas un accusé de réception d'un RST, de même qu'un SYN / ACK n'est pas exactement un accusé de réception d'un SYN. L'établissement de TCP est en fait un processus à quatre voies: l'hôte initiant envoie un SYN à l'hôte récepteur, qui envoie un ACK pour ce SYN. L'hôte récepteur envoie un SYN à l'hôte initiateur, qui renvoie un ACK. Ceci établit une communication avec état.
Pour que cela soit plus efficace, l'hôte récepteur peut accuser réception du SYN et envoyer son propre SYN dans le même paquet, créant ainsi le processus à trois voies que nous avons l'habitude de voir.
Dans le cas d'un RST / ACK, le périphérique accuse réception des données envoyées dans le ou les paquets précédents de la séquence avec un ACK, puis informe l'expéditeur que la connexion a été fermée avec le RST. Le périphérique combine simplement les deux paquets en un, comme un SYN / ACK. Un RST / ACK n’est généralement pas une réponse normale lors de la fermeture d’une session TCP, mais n’indique pas nécessairement un problème.
la source
RST ACK
réponses à l’adresse source fictive.Une fois la connexion établie, tous les paquets doivent avoir un ACK défini et correspondre au numéro de séquence des paquets reçus pour un transport / une sécurité fiable. La TVD sans ACK ne sera pas acceptée. Lorsqu'un côté envoie RST, le socket est immédiatement fermé et le côté destinataire le ferme immédiatement après avoir reçu un RST valide. Il n'a pas besoin d'être et ne peut pas être reconnu.
après le protocole TCP
A ---> B Syn = x, Ack = y, len = z, indicateur ACK
B ---> A Syn = y, Ack = x + z, len = o, indicateur ACK
A ---> B Syn = x + z, Ack = y + o, len = p, indicateur ACK
B ---> A Syn = y + o, ACK = x + z + p, len = q, RST, indicateur ACK
B ferme le socket après avoir envoyé le dernier paquet et A ferme le socket après l'avoir reçu.
(ne considère pas la fenêtre TCP ici, ou il pourrait y avoir plus de paquets d'une extrémité avant l'acknoledgement)
ACK Le drapeau, le numéro de l'accusé de réception et la procédure d'accusé de réception sont liés, mais pas la même chose.
Par RFC793
Numéro d'accusé de réception: 32 bits
Réinitialiser le traitement
Dans tous les états sauf SYN-SENT, tous les segments de réinitialisation (RST) sont validés en vérifiant leurs champs SEQ. Une réinitialisation est valide si son numéro de séquence est dans la fenêtre. Dans l'état SYN-SENT (un RST reçu en réponse à un SYN initial), le RST est acceptable si le champ ACK acquitte le SYN.
Le destinataire d'un RST le valide d'abord, puis change d'état. Si le récepteur était à l'état LISTEN, il l'ignore. Si le récepteur était à l'état SYN-RECEIVED et avait déjà été à l'état LISTEN, il revient alors à l'état LISTEN, sinon il abandonne la connexion et passe à l'état CLOSED. Si le récepteur était dans un autre état, la connexion est interrompue, elle est conseillée à l'utilisateur et passe à l'état FERMÉ.
la source