1

現在、私のゲームはこのように動作します。

ユーザーは、TCP を使用してサーバーに接続します。この時点では、サーバーはプレイヤー オブジェクトを割り当てておらず、それを TCP クライアント オブジェクトに割り当てていません。

ユーザーがユーザー名とパスワードのハッシュを含む LOGIN メッセージを送信すると、サーバーはデータベースをチェックして、すべてが一致するかどうかを確認し、一致する場合は、真の LOGIN_ATTEMPT_RESULT メッセージを送信します。次に、サーバーはプレーヤーを割り当て、プレーヤーにロビーの状態を送信します。それ以降、サーバーがそのユーザーからメッセージを取得すると、それを処理して通信します。

セッションIDなどは必要ないと思われるため、保持していません。

これは基本的に、このようなゲームが認証と通信を行う方法ですか、それとも重要な何かが欠けていますか?

ありがとう

4

1 に答える 1

4

セッションIDを保持すると、TCPパケットインジェクション攻撃(シーケンスの推測)が困難になり、何らかの理由でTCP接続が失われた場合でもログインを継続できるため便利です。このように、「セッション」と「接続」は区別され、後者は必要に応じて再確立できます。また、複数のマシンに拡張する場合、セッションIDは、ホスト間を通過する手段として使用できます(接続は再作成されますが、セッションは保持されます)。最後に、セッションIDをデータベースキーとして使用できます(ここでも、サーバー間を通過するため)。

これが必要ない場合は、セッション層を破棄できます。ただし、それほど節約にはならないようです。

于 2012-06-01T03:21:56.597 に答える