2016-04-21 1 views
0

J'ai un agent, disons A, qui exécute et envoie des informations à mon serveur, disons S. A socket est configuré comme keepalive, et lorsque le réseau entre A et S est faible, A détecterait l'erreur de connexion et essayer de se reconnecter à S. Je peux observer parfois l'état de connexion TCP sur A est FIN_WAIT1, ce qui signifie A envoie un paquet FIN et attend. Mais ce paquet FIN semble perdu parce que sur S je peux voir beaucoup de ESTABLISHED connexions entre A et S, où normalement il devrait y avoir un seul.Que se passe-t-il si le premier paquet `FIN` est perdu dans les connexions TCP?

Le protocole TCP échoue-t-il dans cette situation, ou qu'est-ce qui me manque?

+0

Si tous les paquets sont perdus, le socket finira par expirer, se fermer et être retiré. Les délais d'attente peuvent cependant prendre beaucoup de temps, s'ils sont ajustés donc –

Répondre

0

Il est retransmis en l'absence d'ACK, comme tout autre segment TCP.

+0

Donc, je suppose que les «FIN» retransmis sont également perdus? –