web-dev-qa-db-fra.com

Que signifie "connexion réinitialisée par un pair"?

Quelle est la signification de l'erreur "connexion réinitialisée par un homologue" sur une connexion TCP? S'agit-il d'une erreur fatale ou simplement d'une notification ou liée à la défaillance du réseau?

578
Franck Freiburger

C'est fatal. Le serveur distant vous a envoyé un paquet RST, qui indique une interruption immédiate de la connexion, plutôt que la négociation habituelle. Cela contourne la transition d'état normale à demi fermée. J'aime cette description :

"Connexion réinitialisée par homologue" est l'équivalent TCP/IP de raccrocher le téléphone. C'est plus poli que de ne pas répondre, en laissant quelqu'un en suspens. Mais ce n'est pas le FIN-ACK attendu du converseur TCP/IP vraiment poli.

696
ire_and_curses

Cela signifie qu'un TCP RST a été reçu et que la connexion est maintenant fermée. Cela se produit lorsqu'un paquet est envoyé depuis votre extrémité de la connexion mais que l'autre extrémité ne reconnaît pas la connexion. il renverra un paquet avec le bit RST activé afin de forcer la connexion.

Cela peut se produire si l'autre partie se bloque, puis se rallume ou si elle appelle close() sur le socket alors que des données vous concernant sont en transit. Cela vous indique qu'une partie des données que vous avez précédemment envoyées peuvent pas été reçu.

C'est à vous de décider si c'est une erreur. Si les informations que vous avez envoyées étaient uniquement à l'avantage du client distant, la perte de données définitives n'a peut-être pas d'importance. Cependant, vous devez fermer le socket et libérer toutes les autres ressources associées à la connexion.

179
mark4o