Архитектура L2J: LoginServer и GameServer
Эмуляторы серверов Lineage II (в частности, семейство L2J) базируются на двухзвенной серверной архитектуре:
1. LoginServer (Авторизационный сервер)
- Порт по умолчанию: 2106 (TCP)
- Задачи: Прием клиентских подключений, валидация Blowfish / RSA ключей шифрования пакетов, проверка пары логин/пароль в БД accounts, выдача одноразового SessionKey для GameServer.
- Шифрование: Входящее RSA-шифрование с 1024-битным публичным ключом и динамический Blowfish ключ на сессию.
2. GameServer (Игровой мир)
- Порт по умолчанию: 7777 (TCP)
- Связь с LoginServer: Внутренний TCP-сокет (обычно порт 9014), по которому GameServer регистрируется в пуле серверов с уникальным HexID.
- Игровой цикл: Потокобезопасный пул селекторов NIO (Java New I/O), распределенный пул задач
ThreadPoolManager(General, Move, AI, Packet Dispatcher).
# loginserver.properties
LoginserverHostname = 0.0.0.0
LoginserverPort = 2106
LoginHostname = 127.0.0.1
LoginPort = 9014
AcceptNewGameServer = False