Pourquoi vois-je un paquet RST, ACK au lieu d'un paquet RST?

42

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.

packetwrassler
la source
2
Pourquoi pensez-vous qu'il devrait y avoir un segment RST avant RST / ACK? Peut-être pourriez-vous donner un exemple d'une telle trace de paquet?
Gerben
L'ACK at-il superposé la TVD dans le même paquet?
generalnetworkerror
Est-ce qu'une réponse vous a aidé? Si tel est le cas, vous devez accepter la réponse afin que la question ne se répète pas pour toujours, à la recherche d'une réponse. Vous pouvez également fournir et accepter votre propre réponse.
Ron Maupin
J'accepte que vous envoyiez une demande \ fin de connexion de données Fin de connexion = RST
motoko

Réponses:

55

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.

SYN --> 
    <-- ACK
    <-- SYN
ACK -->

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.

SYN -->
    <-- SYN/ACK
ACK -->

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.

Santino
la source
4
Un exemple de scénario d'envoi de RST / ACK est le cas où l'hôte destinataire n'écoute pas sur le port TCP de destination.
Indika K
Oui en effet. Une fois, j'ai essayé de simuler une attaque DDoS (à des fins éducatives;)) d'une machine A à une machine B sur le port 80. Mais le port 80 de B n'est pas ouvert. Je peux donc voir que la machine B envoie beaucoup de RST ACKréponses à l’adresse source fictive.
smwikipedia
La réponse RST / ACK peut-elle dépendre du contenu du paquet? Le serveur reçoit le paquet et comme le contenu du paquet correspondait à une condition, la session a été fermée.
Skooog
1

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

RFC793

Numéro d'accusé de réception: 32 bits

If the ACK control bit is set this field contains the value of the
next sequence number the sender of the segment is expecting to
receive.  Once a connection is established this is always sent.

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

sdaffa23fdsf
la source