web-dev-qa-db-fra.com

TCP: le serveur envoie [RST, ACK] immédiatement après avoir reçu [SYN] du client

Host_A essaie d'envoyer des données à Host_B via TCP. Host_B écoute sur le port 8181. Host_A et Host_B sont des boîtiers Linux (Red Hat Enterprise). La couche TCP est implémentée à l'aide de Java NIO API.

Quoi que Host_A envoie, Host_B ne peut pas recevoir. Renifler les données sur le fil à l'aide de WireShark a donné le journal suivant:

1) Host_A (33253)> Host_B (8181): [SYN] Seq = 0 Win = 5840 Len = 0 MSS = 1460 TSV = 513413781 TSER = 0 WS = 7
2) Host_B (8181)> Host_A (33253): [RST, ACK] Seq = 1 Ack = 1 Win = 0 Len = 0

Les journaux montrent que Host_A envoie un indicateur [SYN] à Host_B afin d'établir la connexion. Mais au lieu de [SYN, ACK] Host_B répond avec un [RST, ACK] qui réinitialise/ferme la connexion. Ce comportement est toujours observé.

Je me demande dans quelles circonstances un auditeur TCP envoie [RST, ACK] en réponse à un [SYN]?

21
Riyaz

RST, ACK signifie que le port est fermé. Vous êtes sûr que Host_B écoute sur la bonne IP/interface?

Vérifiez également votre pare-feu pour un -j REJECT --reject-with tcp-reset

33
Erik