Tento příspěvek poskytne podrobnosti o připojeních TCP, která hlásí stavy „CLOSE_WAIT“. Možné hodnoty stavu pro sokety TCP jsou následující:
BOUND | Připojeno, připraveno k připojení nebo poslechu. |
---|---|
UZAVŘENO | Zavřeno. Zásuvka se nepoužívá. |
UZAVŘENÍ | Zavřeno, poté vzdálené vypnutí; čeká na potvrzení. |
CLOSE_WAIT | Vzdálené vypnutí; čekání na uzavření zásuvky. |
ZALOŽENO | Připojení bylo navázáno. |
FIN_WAIT_1 | Zásuvka uzavřena; vypnutí připojení. |
FIN_WAIT_2 | Zásuvka uzavřena; čekání na vypnutí z dálkového ovladače. |
NEČINNÁ | Nečinné, otevřené, ale nesvázané. |
LAST_ACK | Vzdálené vypnutí, poté zavřeno; čeká na potvrzení. |
POSLOUCHEJTE | Naslouchání příchozím připojením. |
SYN_RECEIVED | Aktivace/zahájení synchronizace přijata a připojení probíhá |
SYN_SENT | Aktivně se pokouší navázat spojení. |
TIME_WAIT | Po zavření počkejte na opětovné odeslání vzdáleného vypnutí. |
„CLOSE_WAIT ‘ stav znamená, že druhý konec připojení byl uzavřen, zatímco místní konec stále čeká na ukončení aplikace.
Podrobnosti
Stav „CLOSE_WAIT“ u připojení tcp nastane, pokud systém neobdržel systémové volání close z aplikace poté, co obdržel oznámení (paket „FIN“) od druhého systému, že uzavřel svůj koncový bod. Jinými slovy to znamená, že místní konec připojení přijal „FIN“ z druhého konce, ale OS čeká, až program na místním konci skutečně uzavře své připojení.
Problém je, že program spuštěný na místním počítači neuzavírá soket. Nejedná se o problém ladění TCP. Připojení může zůstat v „CLOSE_WAIT“ navždy, zatímco program udržuje připojení otevřené. Takže většinou k tomuto problému dochází kvůli chybě aplikace. Pokud však parametry TCP/IP nejsou správně nastaveny, uzavřená připojení TCP/IP zůstanou po velmi dlouhou dobu v různých stavech „ZAVŘENO“, které z procesu odebírají deskriptory souborů. K vyřešení tohoto problému je někdy nutné vyladit parametry TCP/IP v /etc/sysctl.conf (například parametry net.ipv4.tcp_xxx), aby se spojení TCP/IP uzavřela v krátkém čase. .