От ЛАА Ответить на сообщение
К mk Ответить по почте
Дата 12.03.2008 16:44:03 Найти в дереве
Рубрики Прочее; Версия для печати

работа над ошибками

>> В случае HTTP и NNTP именно так и есть - тип протокола можно определить по первой строке запроса и дальше работать с ним по этому протоколу - что и реализовано в движке форума.
>
> Дело в том, что стандартный NNTP клиент не посылает запроса до того, как увидит приглашение сервера.
> http://nvs.rpf.ru/nvs/forum/2/archive/90/90851.htm

Мда, я поторопился с определениями. Виноват! И тем не менее.

Как показало небольшое расследование, в действительности разделение протоколов в нашем движке происходит несколько иначе. Еще до начала обмена на уровне высоких протоколов HTTP и NNTP, клиент и сервер обмениваются тремя пакетами нижнего протокола TCP для установления сеанса связи. Затем - если клиент инициировал сеанс по протоколу HTTP (другими словами зашел на форум в веб-браузере) - он сразу же вслед за этим посылает запрос "GET /nvs/forum/", инициируя тем самым сеанс HTTP. Если же клиент использует протокол NNTP (нажал кнопочку в почтовой программе), то вслед за установлением сеанса клиент ждет (чувствуете разницу?) строку идентификатора от сервера.

Для различения этих ситуаций движок сервера после установления сеанса ожидает действий клиента в течение 5 секунд. Если за это время от клиента не поступает запрос GET, сервер отправляет ему идентификатор "200 Novik http/news gate ready - posting ok", и это служит началом обмена уже по протоколу NNTP.

Что, в общем, сути дела не меняет.

>>> Теоретически это можно сделать, практически - не видел ни одного примера.
>>
>> Отчего же! Далеко ходить не надо.
>
> Я говорил о реализации HTTP и NNTP с пределах одного приложения и одного порта.
>
>> Посему... покорнейше прошу отменить вынесенный мне выше приговор!
>
> Если увижу где-нибудь работающий http-cервер, отвечающий при этом на nntp-запросы - готов отменить.

Вот, пожалуйста:

http://vif2ne.ru

Там работает почти такой же замечательный движок того же замечательного автора. Вы можете зайти на него по протоколу HTTP через стандартный порт 80, а можете через нестандартный 2003 (тамошние настройки NNTP описаны здесь - http://vif2ne.ru/nvk/forum/0/nntp.htm - соответственно этому документу и используется такой номер порта):

http://vif2ne.ru:80
http://vif2ne.ru:2003

Результат будет (визуально) одинаковый... м-м-м... кроме динамической части страницы.

А потом попробуйте зайти телнетом:

telnet vif2ne.ru 2003

И подождите пять секунд.

...А вот 119 порт там не работает.

С уважением!




Рейтинг@Mail.ru Rambler's Top100