In article <80m1ku$t2c@pccross.average.org>, crosser@average.org (Eugene
Crosser) wrote:
> > Имеем: с точки зрения процесса, сокет закрыт. Но в буфере сидит "до
> > свидания, Вася". FIN от клиента уже принят. Так что состояние
> > -┼CLOSE_WAIT.
>
> Ну как бы... Если локальный close сделан, то состояние, которое описано
> как "ожидание close у локального процесса" как бы не должно быть. Логично
> было бы видеть какой-нибудь другой ..._WAIT
Нет. Потому что ты смотришь с точки зрения программы, а netstat - с точки
зрения ядра. Меж вами - система внутренних буферов, и логическое состояния
TCP socket и твоего программного socket в общем случае вообще могут быть
всегда разными.
Вот, например, тот же уеб-сервер: он страничку откедо-та засосал, в сокет
выплюнул (она в буферах засела), и сокет закрыл. С твоей точки зрения
(если клиентский FIN уже пришел) - ты отлетел сразу, сокет закрылся, его
нету, как колбасы при коммунизме. А с точки зрения TCP стека - у тебя по
всему лицу ESTABLISHED, точнее тот же CLOSE_WAIT. Потому как реальный
CLOSE на сокет (то есть выдачу FIN) делаешь не ты (который уже три дня как
домой ушел), а унутренная система буферизации.
> Да он вываливается, только нескоро очень. Но я уже нашел параметр
> в ядре который это регулирует. Правда, не написано в каких единицах ;)
У секундах.
> Коммерческая система, едрёноть.
Прально - потому и вываливается по тайм-ауту, а не залипает навечно.
Никогда 2300 сокетов, залипших в CLOSE_WAIT во FreeBSD не видел? А я так
регулярно :-(. Правда, в 3.3, вроде, "опять подправили".
> > Все Унихи глюкавые.
> Ааа, чего говорить, все программы глюкавые. Юниксы еще не самые из.
Ну. Приходи, я тебе тут такое глюкало покажу - усмеисси. Сам написал... :-)
> А и зайду :)
А и давай. Только по 3320 звони - оно проще.
> Eugene
-- Vladimir Butenko Stalker Software, Inc. -- end of forwarded message --
-- С тем, что не помешает никогда, Kittle