Princip fungování serveru (MaNGOS)

Z WoWResource Wiki
Přejít na: navigace, hledání

Principiální zapojení serveru a uživatele:

Mangos-princip-serverklient.png

ISP, ISP#2, Cloud - představuje poskytovatele internetu a internet jako takový, jeho činnost zde není rozebírána (slouže pouze pro naznačení) Server obsahuje pro klienta dvě podstatné části a to realm server (realmd) a world server (mangosd), princip připojení a komunikace: Značka "Arrow-up.gif" znamená odeslání dat, "Arrow-down.gif" znamená příjem dat od serveru

  • Klient se spustí, vyhledá v souboru realmlist.wtf adresu svého realm serveru a připojí se na něj (pokud není uveden port je bráno standardně 3724)
  • Arrow-up.gif AUTH_LOGON_CHALLENGE (obsahující jméno účtu, verzi klienta, ip adresu,...)
  • Server provádí kontrolu IP adresy, účtu (zda-li není zablokován) a odesíla údaje potřebné k autorizaci podle protokolu SRP6
  • Arrow-down.gif AUTH_LOGIN_CHALLENGE
  • Klient provádí kalkulace SRP6 login protokolu a odesílá
  • Arrow-up.gif AUTH_LOGON_PROOF
  • Server provádí kalkulace SRP6 a pokud je shoda uloží se do databáze `sessionkey` a je odesláno
  • Arrow-down.gif AUTH_LOGON_PROOF (success)
  • Po úspěšném přihlášení do realm serveru klient požádá o seznam world serverů (realmlist)
  • Arrow-up.gif REALM_LIST
  • Server vypracuje seznam realmů a odešle jej klientovi
  • Arrow-down.gif REALM_LIST
  • Uživatel si vybere realm nebo je vybrán poslední použitý a klient se odpojí od realm serveru, vytváří připojení k world serveru
  • Server přijme připojení a odesílá jako první data
  • Arrow-down.gif SMSG_AUTH_CHALLENGE
  • Došlý packet obsahuje server_seed, na jeho základě je ze sessionkey (domluveném při autorizaci s realm serverem) vytvořen hash a odeslán serveru
  • Arrow-up.gif CMSG_AUTH_SESSION
  • Server provede zbylé kontrolní součty a porovnává je s klientovými, pokud je vše v pořádku je odeslán packet SMSG_AUTH_RESPONSE a inicializováno kryptování hlaviček packetů (data kryptována nejsou, pouze hlavička obsahující Opcode a velikost dat)
  • Arrow-down.gif SMSG_AUTH_RESPONSE
  • Klient aktivuje kryptování a odesílá
  • Arrow-up.gif CMSG_CHAR_ENUM
  • Server vytvoří seznam hráčových postav na serveru a odešle jej
  • Arrow-down.gif CMSG_CHAR_ENUM
  • Hráč vybere postavu a přihlásí se s ní do hry, je odeslán packet obsahující GUID postavy
  • Arrow-up.gif CMSG_PLAYER_LOGIN

...

Klient jako takový nikdy nekomunikuje s MySQL serverem, není žádoucí nechávat jeho port odkrytý, pokud to neděláte úmyslně (vzdálená správa) Tyto informace se od jiných emulátorů mohou odlišovat způsobem komunikace world a realm serveru. MaNGOS komunikuje pouze skrz data v databázi. Ascent skrze speciální socket, WoWEmu mělo realm i world server v jednom.