LINUX.ORG.RU

LISTEN together with SYN_SENT


0

0

Просветите, пожалуйста, откуда может взяться
такая ситуация

/tmp >netstat -an | grep 1350
tcp        0      0 0.0.0.0:1350            0.0.0.0:*               LISTEN      
tcp        0      1 10.1.0.120:59443        1.0.0.127:1350          SYN_SENT    

Мне казалось, что если клиент шлет SYN сокету, находящемуся
в LISTEN, то сама OS тут же ответит ACKом все зависимости
от того, чем занят серверный процесс. Или ACK случается уже 
после accept и наблюдаемая мною картина означает, что серверу
недосуг сделать этот accept?

Спасибо.
anonymous

Не совсем верно. Установление TCP соединения выглядит следующим образом Client SYN -> Server

Client <- SYN, ACK Server

Client ACK -> Server

Таким образом, сервер блокируется в вызове accept() до тех пор, пока не пройдет этот 3-way handshake. Соответственно, клиент блокируется в connect().

Motl
()
Ответ на: комментарий от Motl

Отлично. Хотелось бы связать эту диаграммку с моей ситуацией. Мы прошли только первую стадию. Можно ли предположить, что сервер просто не сделал accept, или имеется какое-то другое обяснение? Вот при listen можно указать длину некоторой очереди. Что это за очередь?

anonymous
()

вы правы, accept() не обязательно делать для того,
чтобы connect() завершился успехом, достаточно
listen(). peer после этого вполне даже может успешно
посылать данные.

> 1.0.0.127:1350

странный какой-то адрес? может, имелось в виду 127.0.0.1 ?

idle ★★★★★
()

может на какая нибудь фильтрация установлена и SYN не достиг сервера.

anonymous
()
Ответ на: комментарий от idle

Это ОНО. Явная беда с сетевым/хостовым порядком байт. А я _порядочный_ тормоз ... ;((

Большое спасибо.

anonymous
()
Ответ на: комментарий от anonymous

>может на какая нибудь фильтрация установлена и SYN не достиг сервера.

Там все дело происходит на локальной машине. Поскольку я точно знал, что коннекчусь к 127.0.0.1, то мое точное знание доминировало над тем, что на самом деле говорил netstat. Так что еще раз спасибо idle'у

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.