Cet article fournira des détails sur les connexions TCP signalant les états "CLOSE_WAIT". Les valeurs d'état possibles pour les sockets TCP sont les suivantes :
LIÉ | Lié, prêt à se connecter ou à écouter. |
---|---|
FERMÉ | Fermé. Le socket n'est pas utilisé. |
CLÔTURE | Fermé, puis arrêt à distance ; en attente d'accusé de réception. |
CLOSE_WAIT | Arrêt à distance ; en attendant que le socket se ferme. |
ÉTABLI | La connexion a été établie. |
FIN_WAIT_1 | Prise fermée ; fermeture de la connexion. |
FIN_WAIT_2 | Prise fermée ; en attente d'arrêt à distance. |
IDLE | Idle, ouvert mais non lié. |
LAST_ACK | Arrêt à distance, puis fermé ; en attente d'accusé de réception. |
ÉCOUTER | Écouter les connexions entrantes. |
SYN_RECEIVED | Activer/initier la synchronisation reçue et la connexion en cours |
SYN_SENT | Tentative active d'établir une connexion. |
TIME_WAIT | Attendez après la fermeture pour la retransmission de l'arrêt à distance. |
‘CLOSE_WAIT ' signifie que l'autre extrémité de la connexion a été fermée alors que l'extrémité locale attend toujours la fermeture de l'application.
Détails
L'état 'CLOSE_WAIT' sur les connexions tcp se produit si le système n'a pas reçu d'appel système de fermeture de l'application, après avoir reçu une notification (paquet 'FIN') de l'autre système qu'il a fermé son point de terminaison. En d'autres termes, cela signifie que l'extrémité locale de la connexion a reçu "FIN" de l'autre extrémité, mais que le système d'exploitation attend que le programme à l'extrémité locale ferme réellement sa connexion.
Le problème est qu'un programme exécuté sur la machine locale ne ferme pas le socket. Ce n'est pas un problème de réglage TCP. Une connexion peut rester en 'CLOSE_WAIT' indéfiniment pendant que le programme maintient la connexion ouverte. Donc, la plupart du temps, ce problème se produit en raison d'un bogue d'application. Cependant, si les paramètres TCP/IP ne sont pas correctement définis, les connexions TCP/IP fermées resteront pendant très longtemps dans divers états "CLOSE" qui prennent les descripteurs de fichiers du processus. Afin de résoudre ce problème, il est parfois nécessaire de régler les paramètres TCP/IP dans /etc/sysctl.conf (tels que ces paramètres net.ipv4.tcp_xxx), afin que les connexions TCP/IP soient fermées dans un court laps de temps .