hAuthD и неправильный сокет - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 07.02.2019, 13:14   #1
Пользователь

Автор темы (Топик Стартер) hAuthD и неправильный сокет

вопрос закрыт, причина была в банальной невнимательности и к сокетам никакого отношения не имела

Есть сервер аутентификации 'hAuthD', который, почему-то, не очень дружит с .NET-сокетами. Хотя, скорее, я просто не учитываю какую-то специфику и потому нуждаюсь в помощи коллективного разума.

Т.е. этот auth-сервер корректно обрабатывает запросы от нативного клиента, от тестового модуля на Pascal, от тестового модуля на Java. Но тот же самый код, реализованный на .NET, провоцирует странное поведение.

Дабы исключитль некоторые варианты:
1. Инициализирующий пакет от сервера обрабатывается корректно, т.е. получается в полном объёме (186 байт), раскодируется по blowfish константным ключом, разксоривается, после чего из него извлекается ID-сессии, RSA и bf-ключ для последующего шифрования. Ответный пакет для сервера (42 байта) также формируется корректно (делал дампы пакетов от других клиентов и прогонял через "свою" реализацию для сравнения).
2. Тестовое окружение полностью идетнично. Файрвол ничего не режет. Антивирусы выключены.
3. Опенсурсный .NET-бот, который есть на GIT-е, демонстрирует аналогичное ошибочное поведение.

Типовой проблемный сценарий:
1. Открыть подключение.
2. Получить 186 байт инит-пакета.
3. Отправить пакет на сервер.
4. Попытаться считать ответ сервера.

На п.4. сокет задумывается на несколько секунд и возвращает '0', сигнализирующий, что сервер закрыл подключение.

При этом, если в п.3, вместо корректного пакета, отправить какой-нибудь хлам, то сервер рвёт соединение мгновенно.

В попытках разобраться, установил на сервер сниффер и обнаружил, что когда идёт работа через .NET-сокеты, на сервер улетают какие-то дополнительные системные TCP-пакеты, которые я сам явно не отправляю и, вроде бы, установкой никаких опций в коде не провоцирую.

На приложенном скрине пример такого пакета. При работе через другие клиенты этот пакет отсутствует. Хотя, вероятно, проблема и не в нём, но пока это единственное отличие, которое мне удалось выявить.

Ещё была мысль, что .NET-сокет вовсе не отправляет маленький пакет, т.к. он маленький и система ждёт ещё немного данных, чтобы отправить их одним общим пакетом. Однако, сниффер на стороне сервера показывает получение пакета размером 42 байта. И опция сокета "NoDelay", которая, судя по документации, имеет к этому прямое отношение, на результате никак не сказывается.
Изображения
Тип файла: jpg packet.jpg (65.1 Кб, 9 просмотров)

Последний раз редактировалось kotelok; 07.02.2019 в 19:41.
kotelok вне форума Ответить с цитированием
Непрочитано 07.02.2019, 19:26   #2
Пользователь

Автор темы (Топик Стартер) Re: hAuthD и неправильный сокет

В общем, сокет правильный, программист неправильный. В тестах на дампах использовался исправленный код, а при реальных коннектах предыдущая багнутая версия. Вопрос более не актуален, сорь кому пришлось эту простыню читать.
kotelok вне форума Ответить с цитированием
Непрочитано 07.02.2019, 19:53   #3
Аватар для Zubastic
ZG troll squad

По умолчанию Re: hAuthD и неправильный сокет

Ну чудес не бывает и в опенсорсном боте есть ошибки, которые приводили с ошибкам при коннекте в некоторых случаях.
__________________
Zubastic на форуме Ответить с цитированием
Непрочитано 07.02.2019, 19:55   #4
Пользователь

Автор темы (Топик Стартер) Re: hAuthD и неправильный сокет

Цитата:
Сообщение от Zubastic Посмотреть сообщение
Ну чудес не бывает и в опенсорсном боте есть ошибки, которые приводили с ошибкам при коннекте в некоторых случаях.
Дабы не наговаривать, я не до конца разобрался, почему он не работает. Скорее всего там всё ок, просто версия протокола отличается, потому и поведение было так похоже на то, когда я кривые пакеты слал.
kotelok вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
hAuthD Hett Lineage II 2 21.02.2019 20:06
hAuthD HeyYo Lineage II 5 21.02.2019 10:00
Соединение с PTS hAuthD Krasavella Lineage II 6 31.05.2013 10:29


© 2007–2019 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 04:12. Часовой пояс GMT +3.

Вверх