|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex Semenyaka 2:461/640.640 04 Mar 2006 17:30:52 To : Vadim Goncharov Subject : Форкающийся tcp-демон -------------------------------------------------------------------------------- 04 Mar 06 15:54, you wrote to Valentin Davydov: VD>>> Как известно, классический сабж вызывает сначала socket(2), потом VD>>> bind(2), затем listen(2), потом accept(2), затем может форкнуться VD>>> и передать потомку полученный в результате этого acceptа VD>>> дескриптор. Вопрос: к моменту возврата из acceptа какие пакеты, VD>>> относящиеся к этому соединению, прошли по сети? >>> Трехступенчатый handshake. VD>> То есть от клиента tcp-пакет с установленным SYN, обратно SYN,ACK, VD>> а по приходу следующего ACK от клиента вываливаемся из accept(), VD>> больше ничего ему не посылая, так? VG> Да. Hе так. По приходу ACK вываливаемся из listen. Более того, так как сторона, где выполнялся listen, уже послала ACK, завершающий handshake, то клиент мог (получив этот ACK) начать передачу данных. Которые могут поступить ещё даже до начала accept, если сетка быстрая, и/или сервер прогружен. Так что правильный ответ - как минимум 3 пакета установления соединения, но, возможно, и ещё сколько-то данных. VG> Вообще, дедушку Стивенса читать полезно. Вот именно. Том первый, стр. 258. Alex --- IMHO в последней инстанции * Origin: ...можжевеловых... (2:461/640.640) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/392944099889.html, оценка из 5, голосов 10
|