Dieser Beitrag enthält Details zu TCP-Verbindungen, die den Zustand „CLOSE_WAIT“ melden. Die möglichen Zustandswerte für TCP-Sockets sind wie folgt:
BOUND | Gebunden, bereit zum Verbinden oder Zuhören. |
---|---|
GESCHLOSSEN | Geschlossen. Der Socket wird nicht verwendet. |
SCHLUSS | Geschlossen, dann Fernabschaltung; wartet auf Bestätigung. |
CLOSE_WAIT | Fernabschaltung; warten, bis der Socket geschlossen wird. |
GERICHTET | Verbindung wurde hergestellt. |
FIN_WAIT_1 | Socket geschlossen; Verbindung beenden. |
FIN_WAIT_2 | Socket geschlossen; Warten auf Herunterfahren von der Fernbedienung. |
LEERLAUF | Idle, geöffnet, aber nicht gebunden. |
LAST_ACK | Fernabschaltung, dann geschlossen; wartet auf Bestätigung. |
HÖREN | Auf eingehende Verbindungen warten. |
SYN_RECEIVED | Aktive/initiierte Synchronisierung empfangen und Verbindung im Gange |
SYN_SENT | Aktiver Versuch, eine Verbindung herzustellen. |
TIME_WAIT | Warten Sie nach dem Schließen auf die erneute Übertragung der Fernabschaltung. |
„CLOSE_WAIT ‘Zustand bedeutet, dass das andere Ende der Verbindung geschlossen wurde, während das lokale Ende noch darauf wartet, dass die Anwendung geschlossen wird.
Einzelheiten
Der Zustand „CLOSE_WAIT“ bei TCP-Verbindungen tritt auf, wenn das System keinen Aufruf zum Schließen des Systems von der Anwendung erhalten hat, nachdem es vom anderen System eine Benachrichtigung („FIN“-Paket) erhalten hat, dass es seinen Endpunkt geschlossen hat. Mit anderen Worten bedeutet dies, dass das lokale Ende der Verbindung „FIN“ vom anderen Ende erhalten hat, das Betriebssystem jedoch darauf wartet, dass das Programm am lokalen Ende seine Verbindung tatsächlich schließt.
Das Problem besteht darin, dass ein Programm, das auf dem lokalen Computer ausgeführt wird, den Socket nicht schließt. Es handelt sich nicht um ein TCP-Tuning-Problem. Eine Verbindung kann für immer in „CLOSE_WAIT“ bleiben, während das Programm die Verbindung offen hält. Meistens tritt dieses Problem also aufgrund eines Anwendungsfehlers auf. Wenn die TCP/IP-Parameter jedoch nicht richtig eingestellt sind, bleiben geschlossene TCP/IP-Verbindungen sehr lange in verschiedenen „CLOSE“-Zuständen, die Dateideskriptoren aus dem Prozess nehmen. Um dieses Problem zu lösen, ist es manchmal notwendig, TCP/IP-Parameter in /etc/sysctl.conf einzustellen (wie etwa die net.ipv4.tcp_xxx-Parameter), damit TCP/IP-Verbindungen in kurzer Zeit geschlossen werden .