= Сообщение: 844 из 3153 ================================== RU.LINUX.CHAINIK = От : Eric Pozharski 2:463/94.101 22 Apr 15 19:24:51 Кому : Serguei E Leontiev 22 Apr 15 19:24:51 Тема : Re: port FGHI : area://RU.LINUX.CHAINIK?msgid=2:463/94.101+fd153036 На : area://RU.LINUX.CHAINIK?msgid=<1187500739@ddt.demos.su>+0850581b = Кодировка сообщения определена как: CP866 ================================== ============================================================================== with <1187500739@ddt.demos.su> Serguei E Leontiev wrote:
*SKIP* SEL> Прошу прощения, сразу не отметил, что следует читать не RFC 761, а RFC SEL> 793, в деле TIME-WAIT они немного отличаются.
Я сам виноват -- поленился, думал там сразу в заголовке будут отсылки (я так привык). А RFC старый и в заголовке ни слова не сказано, ну я и пошел дальше. Будет уроком.
*SKIP* SEL> Строго говоря, если мне не изменяет память, это была ошибка в RFC SEL> 761, которую исправили в действующем RFC 793, т.е. в TIME-WAIT попадают, SEL> как из FIN-WAIT-2, так из CLOSING.
ACK
EP>> Далее: EP>> FIN-WAIT-2 - represents waiting for a connection termination EP>> request from the remote TCP. EP>> Теперь, сокет привязан к дескриптору, дескриптор к процессу. EP>> Положим процесс умер, и, действительно, ядро может доделать всю EP>> FIN-вакханалию. По идее, должен быть зомби. Иначе, получается EP>> что должен быть порт в состоянии отличном от CLOSED для EP>> которого нет процесса, пусть даже зомби. SEL> Всё правильно (с точностью до ошибки в RFC 761), только зачем процессу SEL> становится зомби? (Впрочем, во времена оные на каких-то системах SEL> вроде бы так бывало, у меня есть какие-то смутные, смутные воспоминания). SEL> Состояние TIME_WAIT - чисто "защитное" состояние протокола TCP, SEL> завершение которого практически никак не влияет на процесс (хотя SEL> смотри ниже, если подходить математически строго, то каждое TCP соединение SEL> должно закрываться 2MSL секунд).
Моя идея с зомби в том, что пока соединение не в CLOSED TCB не удален, а к TCB привязан дескриптор, а дескриптор привязан к процессу. И, как по мне это выглядит безопаснее, нельзя удалить процесс. Вместе с тем, если таких TIME-WAIT зомби будет много, то могут произойти разные неприятности. И что бы этих неприятностей избежать не CLOSED TCB отрывают от дескриптора. Вместе с тем, для remote что происходит с таблицей процессов не должно иметь значения.
SEL> Как легко видеть в предыдущих экспериментах с netcat на Linux и FreeBSD SEL> таки появляется порт в состоянии TIME_WAIT, для которого нет процесса. *SKIP*
(Я извиняюсь, что не подыгрываю в проведении экспериментов -- штурмовщина, а в не-рабочее время работаю над собой.) А что будет, если локально соединение в TIME-WAIT, и открывать с того же IP:port с той стороны?
*SKIP* SEL> Вообще-то, это Олег Редут убивает ява-приложения.
Да. Тут вот. Совершенно это упустил из виду. Приношу свои извинения -- упреки были совершенно не по адерсу.
*CUT*
-- Torvalds' goal for Linux is very simple: World Domination Stallman's goal for GNU is even simpler: Freedom --- slrn/pre1.0.0-18 (Linux) * Origin: orphan.zombinet (2:463/94.101)