|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Lev Walkin 2:5020/400 29 Jun 2004 05:06:47 To : Igor Sysoev Subject : Re: CLOSE_WAIT --------------------------------------------------------------------------------
Igor Sysoev wrote:
> Lev Walkin <vlm@netli.com> wrote:
>
>
>>Victor Sudakov wrote:
>>
>>>Коллеги, что может означать следующая ситуация?
>>>
>>>Согласно netstat, TCP соединение бесконечно висит в состоянии CLOSE_WAIT,
>>>
>>>но при этом между его участниками идёт вот такой обмен (см. tcpdump на
>>>http://noc.tomsk.ru/strange3073.dmp ).
>>
>>
>>Это плохой клиент, который запросил данные, но не читает их из сокета.
>>POP3 сервер производит window probing раз в минуту, и у него нет
>>возможности послать FIN, так как клиент не принимает больше данных
>>из-за того, что его входной буфер забит.
>>
>>POP3 сервер находится на [Free]BSD машине. Клиент - из семейства NT.
>
>
> Правильно ли я понимаю, что если сервер перед close() выставит SO_LINGER
> в 0 секунд, то при close() туда вместо FIN пойдёт RST и сервер забудет
> об этом соединении ?
Да. Только вполне возможно, если сервер делает close() только после
того, как запихнет все данные в буфер сокета, что он будет пытаться
делать это бесконечно. Hапример, если буфер сокета - 64k, а сервер
пытается послать 65k. при этом он будет в основном висеть на ожидании
POLLIN или чего-то аналогичного.
Вывод: в серверах должны быть жесткие таймауты на соединения,
независимо от статуса их завершенности (сброшенности буферов
приложения в ядро).
--
Lev Walkin
vlm@netli.com
--- ifmail v.2.15dev5.3
* Origin: Netli, Inc. (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/65772fac2245.html, оценка из 5, голосов 10
|