Share via


NAT の互換性についての簡易ガイドライン

NAT の互換性についての簡易ガイドライン

以下のガイドラインに従うと、ネットワーク アドレス変換 (NAT) デバイス、プロキシ、ファイアウォールに対するアプリケーションの互換性を最大限保つことに役立つ。

  • 接続中はホストの列挙をアクティブに保つ。

    IDirectPlay8Peer::Connect または IDirectPlay8Client::Connect を呼び出す前に同じインターフェイスに対する EnumHosts の呼び出しを終了すると、NAT デバイスを使って確立された仮想接続が閉じることがある。そのため、Connect の呼び出しが失敗する場合がある。代わりに、EnumHosts を呼び出すとき、dwEnumCount パラメータに INFINITE を指定し、Connect の呼び出しが正常に完了したときに Microsoft® DirectPlay® に列挙を停止させる。

  • DPNSVR に依存しないようにする。

    DPNSVR を使うと、1 台のコンピュータ上にある複数のホストや移行されたホストを簡単に検出できる。しかし、DPNSVR ポートに送信されるパケットは、多くの NAT デバイスには異なる接続のように見える。このパケットは、ゲームのポートに直接送信されるパケットと同じようには転送されないことがある。DPNSVR を使う場合は、できるだけ DPNSVR ポートとゲーム ポートの両方を列挙すること。詳細については、「DirectPlay DPNSVR アプリケーションの使い方」を参照すること。

  • デフォルト ポートを使うが、ユーザーが必要に応じてオーバーライドできるようにする。

    デフォルトで使うローカル デバイス ポートは DirectPlay に選択させる。IDirectPlay8Peer::GetLocalHostAddressesIDirectPlay8Server::GetLocalHostAddresses が返すアドレスを使い、ホストに実際に選択されているポートを確認できる。ゲームでは、クライアントへのホストのアドレスを取得する方法として、DirectPlay ロビー マッチメイキングなどの外部手段を使える。しかし、アプリケーションは特定のポートを選択する方法もユーザーに提供すること。一部の NAT シナリオでは、ユーザーがポート転送を手動設定する必要があり、その場合、柔軟性は高い。詳細については、「ポートについて」を参照すること。

  • クライアント/サーバー トポロジを使う。

    ピアツーピア トポロジのすべてのプレーヤは他のすべてのプレーヤと直接通信できなければならない。この場合、1 つまたは複数の NAT デバイスのために特定のプレーヤがセッションに正しく参加できない可能性が高くなる。クライアントがホストに到達できる限り、必ずセッションに参加できるようにするには、IDirectPlay8Client および IDirectPlay8Server インターフェイスを使う。

  • できるだけ、ユニバーサル プラグ アンド プレイ (UPnP) と互換性のない NAT デバイスの背後ではホストしない。

    NAT のほとんどすべての問題は、NAT を介した受信接続の受け入れに関連している。IDirectPlay8Peer ホストまたは IDirectPlay8Server ホストは定義上受信接続を必要とするため、最も問題になりやすい。開かれたインターネット上または UPnP をサポートするデバイスの背後でのみホストすると、ユーザーに示される NAT の制限は単純になる。

  • マッチメイキング サービスを使い、ユーザーにアドレスの複雑さを見せないようにする。

    NAT デバイスが関係する場合、コンピュータには物理ネットワーク インターフェイスが 1 つしかなくても、プレーヤは複数のアドレスを持つことがある。ほとんどのユーザーには、特定の状況でどのアドレスが適しているかわからない。ユーザーの使い勝手を向上させるため、アプリケーションでマッチメイキング サービスを使い、IDirectPlay8Peer::GetLocalHostAddresses または IDirectPlay8Server::GetLocalHostAddresses が返す結合されたアドレスをクライアント アプリケーションに渡すこと。また、マッチメイキング サービスを使うと、高度な NAT トラバース技法を簡単にすることもできる。マッチメイキングの詳細については、「DirectPlay ロビー サポート」を参照すること。

以上のガイドラインと例の実装については、トポロジごとに詳しく説明している。