Сообщение прислал : Vlad on September 28, 2004 at 19:14:45:
In Reply to: Re: BUG в TCP/IP стеке nsg-300 posted byPlatonov on September 28, 2004 at 15:20:24:
: : : : Давеча обнаружил BUG в tcp/ip стеке nsg:
: : : : Запускаем tcp ping на cisco и на nsg
: : : : x.x.x.5 - рабочая станция
: : : : x.x.x.1 - cisco
: : : : y.y.y.18 - nsg
: : : : 16:50:33.261701 IP x.x.x.5.47386 > x.x.x.1.65535: SWE 3005154410:3005154410(0) win 5840 : : : : : : : : Ошибка в том что nsg не увеличила "sequence number" на единицу, так этого требует стандарт : : : : : Как это в чем проблема? : : PS: Привет Инфокому : Так я и говорю, что подвисают до истечения таймаута только "левые" connect(). Т.е. те, : Если желаете, могу выслать Вам версии с данным исправлением.
: : : : 16:50:33.263380 IP x.x.x.1.65535 > x.x.x.5.47386: R 0:0(0) ack 3005154411 win 0
: : : : 16:50:37.044750 IP x.x.x.5.49469 > y.y.y.18.65535: SWE 3004479167:3004479167(0) win 5840
: : : : 16:50:37.968871 IP y.y.y.18.65535 > x.x.x.5.49469: R 0:0(0) ack 3004479167 win 0
: : : : Тоже самое происходит, когда подключаемся к порту, на котором не висит ни один сервис.
: : : Спасибо, за внимательность, только, наверное, не "sequence number", а "acknowledgment number".
: : : Учтем в следующем релизе.
: : : Просто, при посылке RST в ответ на SYN без ACK
: : : забыл прибавить единичку, а вот в ответ на FIN без ACK незабыл.
: : : Но в чем проблема-то? Все равно по RST попытка соединения отвергается невзирая на "acknowledgment number".
: : Правильно работающий TCP/IP стек отвергает пакеты с неверным ack номером (Иначе была бы возможность рвать любые соединения).
: : Поэтому connect() подвисает до истечения таймаута. В следствии чего не работает TCP ping (и др)
: на которые принципиально не желают отвечать.
: А нормально устанавливаемых соединений(которые нужно и можно принять) это не касается.
: Впрочем, я уже писал, что учтем в следующем релизе. Если желаете, могу выслать Вам версии с данным исправлением. А что касается TCP ping,
: то я , честно говоря, не понял, в чем выражается его неработа. Опишите, пожалуйста, подробнее.
Принцип работы tcp ping'а заключается в соединении с некоторым портом (закрытым на удаленной стороне (как правило это 65535))
и вычисления промежутка времени с начала самого connect()'а до того момента как прийдет "отбой" (порт на удаленной стороне закрыт)
В нашем случае отбой приходит по таймауту (OS проигнорировала неправильный R пакет ), из-за чего tcp ping считает что удаленный хост недоступен.
Да если можно на "nsgforum [at] vlad тчк org тчк ua"
Спасибо.