|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex Semenyaka 2:461/640.640 05 Mar 2006 05:34:34 To : Valentin Nechayev Subject : Форкающийся tcp-демон -------------------------------------------------------------------------------- 04 Mar 06 19:47, you wrote to me: VD>>>> То есть от клиента tcp-пакет с установленным SYN, обратно VD>>>> SYN,ACK, а по приходу следующего ACK от клиента вываливаемся из VD>>>> accept(), больше ничего ему не посылая, так? VG>>> Да. AS>> Hе так. По приходу ACK вываливаемся из listen. Более того, так как AS>> сторона, где выполнялся listen, уже послала ACK, завершающий AS>> handshake, то клиент мог (получив этот ACK) начать передачу данных. AS>> Которые могут поступить ещё даже до начала accept, если сетка AS>> быстрая, и/или сервер прогружен. Так что правильный ответ - как AS>> минимум 3 пакета установления соединения, но, возможно, и AS>> ещё сколько-то данных. VN> Вообще-то ситуация ещё веселее: никто не запрещает в первом же VN> SYN-пакете послать порцию данных. Запрещать - не запрещает. Hо я тут на raw sockets и divertе программку летом писал, TCP моделировал. Так вот, в этом случае всё плохо - отправитель думает, что данные послал, а получатель их вовсе даже не подтверждает, а возвращает ACK[dst] = ISN[src] + 1. Времени и возможности покопаться в коде TCP тогда не было, увы, чтобы понять, где это оно так - на первый беглый взляд на код должно подтверждать бы. Yar@ и glebius@ дружно сказали, что так и должно быть, и что это часть защиты от SYN-флуда. VN> И в финальном ACK хэндшейка - тоже. А вот данные в финальном ACKе хендшейка отлично подтверждаются, и всё заводится. VN> В BSD sockets такое невозможно, В BSD sockets это невозможно из-за API (уточнение не для тебя :) ) VN> но например в TLI интерфейсе (доступном на SysV системах) - штатное VN> свойство интерфейса. Только с SYN всё равно не пройдёт, как выяснилось :) Alex --- IMHO в последней инстанции * Origin: ...можжевеловых... (2:461/640.640) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/3929440a40c8.html, оценка из 5, голосов 10
|