(57)【要約】ネットワーク構成の評価を行うための方法及び装置である。一実施形態において、ネットワーク構成の評価を行うための方法及び装置は、クライアントシステムのコンフィグレーションサーバで、当該クライアントシステムの第１アドレス情報と第２アドレス情報とを有するアドレスメッセージをネットワークを介して受信する過程と、前記コンフィグレーションサーバで、前記アドレスメッセージから前記第１アドレス情報と前記第２アドレス情報を抽出する過程と、コンフィグレーションサーバで、前記第１アドレス情報と前記第２アドレス情報との比較を含めて、前記アドレス情報を評価する過程と、を含む。
2005525751.tif 000002
【特許請求の範囲】
【請求項１】
クライアントシステムのコンフィグレーションサーバで、当該クライアントシステムの第１アドレス情報と第２アドレス情報とを有するアドレスメッセージをネットワークを介して受信する過程と、
前記コンフィグレーションサーバで、前記アドレスメッセージから前記第１アドレス情報と前記第２アドレス情報を抽出する過程と、
コンフィグレーションサーバで、前記第１アドレス情報と前記第２アドレス情報との比較を含めて、前記アドレス情報を評価する過程と、を含む、ネットワーク構成を評価する方法。
【請求項２】
前記第１アドレス情報は、前記アドレスメッセージのペイロード部に配され、前記第２アドレス情報は、前記アドレスメッセージのヘッダ部に配される、請求項１記載の方法。
【請求項３】
前記第１アドレス情報は、ローカルネットワークアドレスであり、前記第２アドレス情報は、公開ネットワークアドレスである、請求項１記載の方法。
【請求項４】
前記第１アドレス情報は、第１アドレス番号と第１ポート番号を含み、前記第２アドレス情報は、第２アドレス番号と第２ポート番号を含む、請求項１記載の方法。
【請求項５】
前記クライアントシステムは、第１アドレス情報と前記第２アドレス情報とを比較することに基づいて、ＮＡＴデバイスを介して前記ネットワークに接続されるか否かを判断する過程を含む、請求項１記載の方法。  
【請求項６】
前記第１アドレス情報と前記第２アドレス情報が異なる場合、前記クライアントシステムがＮＡＴデバイスを介して前記ネットワークに接続されたと判断する、請求項５記載の方法。  
【請求項７】
前記アドレス情報を評価する過程には、前記クライアントシステムが前記ネットワークに接続されているＮＡＴデバイスの形式によって評価を行うために前記第１アドレス情報とアドレス情報テーブルと比較する過程が含まれる、請求項１記載の方法。
【請求項８】
前記ＮＡＴデバイスの前記形式を評価する過程は、前記ＮＡＴデバイスの製造者を推定する過程を含む、請求項７記載の方法。  
【請求項９】
前記ＮＡＴデバイスの前記形式を評価する過程は、前記ＮＡＴデバイスのモデルを推定する過程を含む、請求項７記載の方法。  
【請求項１０】
前記ＮＡＴデバイスの前記形式を評価する過程は、前記ＮＡＴデバイスによって用いられるファームウエアのバージョンを推定する過程を含む、請求項７記載の方法。  
【請求項１１】
前記クライアントシステムを有するローカルネットワーク内にいくつのシステムが包含されているかを判断するために前記第１アドレス情報を評価する過程を含む、請求項１記載の方法。
【請求項１２】
前記コンフィグレーションサーバでマルチクライアントシステムのアドレス情報を収集して、前記マルチクライアントシステムのネットワーク構成の１以上のパターンを評価する過程を含む、請求項１記載の方法。
【請求項１３】
前記ネットワークを介して、評価サーバに前記コンフィグレーションサーバの前記評価を送信する過程を含む、請求項１記載の方法。
【請求項１４】
前記クライアントシステムで当該クライアントシステムのローカルネットワークアドレスを発見する過程と、
前記クライアントシステムで前記第１アドレス情報として前記ローカルネットワークアドレスを含む前記アドレスメッセージを生成する過程と、
前記第２アドレス情報として公開ネットワークアドレスを含めて、前記アドレスメッセージを前記クライアントシステムから前記コンフィグレーションサーバに送信する過程と、
前記第１アドレス情報と前記第２アドレス情報とが異なる場合に、前記クライアントシステムがＮＡＴデバイスを介して前記ネットワークに接続されていると推定する過程と、
前記第１アドレス情報と前記第２アドレス情報とが同じである場合に、前記クライアントシステムがＮＡＴデバイスを介して前記ネットワークに接続されていないと推定する過程と、を含む請求項１記載の方法。
【請求項１５】
前記ネットワークを介して前記クライアントシステムの第２コンフィグレーションサーバで第２アドレスメッセージを受信する過程を有し、前記第２アドレスメッセージは前記クライアントシステムの前記第１アドレス情報と第３アドレス情報を含むものであり、
前記第２コンフィグレーションサーバで前記第２アドレスメッセージの前記第１アドレス情報と第３アドレス情報を抽出する過程を有し、
前記第１アドレス情報と前記第３アドレス情報との比較を含めて、前記第２コンフィグレーションサーバにて前記第１アドレス情報と前記第３アドレス情報を評価する過程を有し、
前記第２コンフィグレーションサーバに前記第２アドレス情報を送信する過程を有し、
前記クライアントシステムが送信先依存ＮＡＴデバイスを介して前記ネットワークに接続されたか否かを判断するために、前記第２コンフィグレーションサーバで第２アドレス情報と前記第３アドレス情報を比較する過程を有する、請求項１記載の方法。
【請求項１６】
前記コンフィグレーションサーバで第２アドレス情報を記録する過程と、
前記ネットワークを介して、前記クライアントシステムのコンフィグレーションサーバにて定期的に新しいアドレスメッセージを受信する過程を有し、前記新しいアドレスメッセージの各々は、新しい第２アドレス情報を含むものであり、
各新しいメッセージの前記新しいアドレス情報を抽出する過程を有し、
前記第２アドレス情報が変更されたか否かを判断するために、前記新しい第２アドレス情報と前記記録された第２アドレス情報とを比較する過程を有する、請求項１記載の方法。
【請求項１７】
前記コンフィグレーションサーバで前記クライアントシステムからローカルネットワークを受信する過程を有し、前記ローカルネットワーク情報は、前記クライアントシステムを含むローカルネットワークに関する情報を有する、請求項１記載の方法。
【請求項１８】
前記ローカルネットワークは、前記ローカルネットワークにおけるシステムの数を示す情報を含む、請求項１７記載の方法。
【請求項１９】
前記ローカルネットワークは、ＵＰｎＰを用いて収集した情報を含む、請求項１７記載の方法。
【請求項２０】
前記クライアントシステムの第１ネットワークアドレスを発見する過程を有し、前記クライアントシステムは第１ＮＡＴデバイスに接続され、前記第１ネットワークアドレスは前記第２アドレス情報内に含まれるものであり、
第２ＮＡＴデバイスに接続された第２クライアントシステムの第２ネットワークを発見する過程を有し、
前記第１ネットワークアドレスを前記第２クライアントシステムと共有する過程を有し、
前記第２ネットワークアドレスを前記第１クライアントシステムと共有する過程を有し、
前記第１ネットワークアドレスと前記第２ネットワークアドレスを用いて、前記第１クライアントシステムと前記第２クライアントシステム間に通信を確立する過程を有する、請求項１記載の方法。
【請求項２１】
ネットワーク構成を評価する目的のために有形記録媒体に記録されたコンピュータプログラムであって、コンピュータに、
第１アドレス情報と第２アドレス情報とを含んだクライアントシステムのアドレス情報をネットワークを介して受信し、
前記アドレスメッセージの第１アドレス情報と第２アドレス情報を抽出し、
前記第１アドレス情報と前記第２アドレス情報との比較を含めて前記アドレス情報を評価する、
ことを行わせるための実行可能な命令を含む、プログラム。
【請求項２２】
前記第１アドレス情報は前記アドレスメッセージの前記ペイロード部分に含まれ、前記第２アドレス情報は前記アドレスメッセージの前記ヘッダ部分に含まれる、請求項２１記載のコンピュータプログラム。
【請求項２３】
前記第１アドレス情報は、ローカルネットワークアドレスであり、前記第２アドレス情報は、公開ネットワークアドレスである、請求項２１記載のコンピュータプログラム。
【請求項２４】
前記第１アドレス情報は、第１アドレス番号と第１ポート番号を含み、前記第２アドレス情報は、第２アドレス番号と第２ポート番号を含む、請求項２１記載のコンピュータプログラム。
【請求項２５】
第１アドレス情報と第２アドレス情報の比較に基づいて、前記クライアントシステムがＮＡＴデバイスを介してネットワークに接続されたか否かを判断することをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。  
【請求項２６】
前記第１アドレス情報と前記第２アドレス情報が異なる場合に、前記クライアントシステムはＮＡＴデバイスを介して前記ネットワークに接続されたと判断する、請求項２５記載のコンピュータプログラム。  
【請求項２７】
前記アドレス情報の評価では、前記クライアントシステムをネットワークに接続するＮＡＴデバイスの形式による評価を行うために前記第１アドレス情報とアドレス情報テーブルとが比較される、請求項２１記載のコンピュータプログラム。
【請求項２８】
前記ＮＡＴデバイスの形式による評価では、前記ＮＡＴデバイスの前記製造者を推定することが含まれる、請求項２７記載のコンピュータプログラム。
【請求項２９】
前記ＮＡＴデバイスの形式による評価では、前記ＮＡＴデバイスの前記モデルを推定する過程を含む、請求項２７記載のコンピュータプログラム。
【請求項３０】
前記ＮＡＴデバイスの形式による評価では、前記ＮＡＴデバイスによって用いられるファームウェアのバージョンが推定される、請求項２７記載のコンピュータプログラム。
【請求項３１】
前記クライアントシステムを含むローカルネットワーク内に包含されるシステムがいくつあるかを判断するために前記第１アドレス情報を評価することをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３２】
前記コンフィグレーションサーバでマルチクライアントシステムのアドレス情報を収集して、前記マルチクライアントシステムの前記ネットワーク構成における１以上のパターンを評価することをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３３】
前記コンフィグレーションサーバから評価サーバに前記ネットワークを介して前記評価を送信することをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３４】
前記クライアントシステムで前記クライアントシステムのローカルネットワークアドレスを発見し、
前記クライアントシステムで前記第１アドレス情報として前記ローカルネットワークアドレスを含む前記アドレスメッセージを生成し、
前記第２アドレス情報として公開ネットワークアドレスを含めて、前記アドレスメッセージを前記クライアントシステムから前記コンフィグレーションサーバに送信し、
前記第１アドレス情報と前記第２アドレス情報とが異なる場合に、前記クライアントシステムがＮＡＴデバイスを介して前記ネットワークに接続されていると推定し、
前記第１アドレス情報と前記第２アドレス情報とが同じである場合に、前記クライアントシステムがＮＡＴデバイスを介して前記ネットワークに接続されていないと推定することをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３５】
前記ネットワークを介して前記クライアントシステムの第２コンフィグレーションサーバで、前記クライアントシステムの第１アドレス情報と第３アドレス情報とを含む第２アドレスメッセージを受信し、
前記第２アドレスメッセージの第１アドレス情報と第３アドレス情報を第２コンフィグレーションサーバで抽出し、
前記第１アドレス情報と前記アドレス情報の比較を含めて、第２コンフィグレーションサーバで第１アドレス情報と第３アドレス情報を評価し、
前記第２アドレス情報を前記第２コンフィグレーションサーバに送信し、
前記クライアントシステムが送信先に依存するＮＡＴデバイスを介して前記ネットワークに接続されたか否かを判断するために、第２アドレス情報と第３アドレス情報とを第２コンフィグレーションサーバで比較する、
ことをコンピュータに行わせるための実行可能な命令を有する、請求項２１記載のコンピュータプログラム。
【請求項３６】
前記コンフィグレーションサーバで第２アドレス情報を記録し、
前記コンフィグレーションサーバで、それぞれが新しい第２アドレス情報を含むものである新しいアドレスメッセージを前記ネットワークを介して受信し、
前記新しいアドレスメッセージのそれぞれから前記新しいアドレス情報を抽出し、
前記第２アドレス情報が変わっているか否かを判断するために、前記新しい第２アドレス情報を前記記録された第２アドレス情報と比較する、
ことをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３７】
前記ローカルネットワーク情報が、
前記コンフィグレーションサーバで、前記クライアントシステムから、前記クライアントシステムを含むローカルネットワークに関する情報を含むものであるローカルネットワーク情報を受信する、
ことをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項３８】
前記ローカルネットワーク情報は、前記ローカルネットワークにおけるシステムの数を示す情報を含む、請求項３７記載のコンピュータプログラム。
【請求項３９】
前記ローカルネットワーク情報は、ＵＰｎＰを用いて収集した情報を含む、請求項３７記載のコンピュータプログラム。
【請求項４０】
前記クライアントシステムは第１ＮＡＴデバイスに接続され、前記第１ネットワークアドレスは第２アドレス情報内に含まれるものであり、かつ、前記クライアントシステムの第１ネットワークアドレスを発見し、
第２ＮＡＴデバイスに接続された第２クライアントシステムの第２ネットワークアドレスを発見し、
前記第１ネットワークアドレスを前記第２クライアントシステムと共有し、
前記第２ネットワークアドレスを前記第１クライアントシステムと共有し、
前記第１ネットワークアドレスと前記第２ネットワークアドレスを用いて、前記第１クライアントシステムと前記第２クライアントシステム間に通信を確立する、ことをコンピュータに行わせるための実行可能な命令を含む、請求項２１記載のコンピュータプログラム。
【請求項４１】
前記クライアントシステムの第１アドレス情報と第２アドレス情報を含むアドレスメッセージの受信を含めて、ネットワークを介してクライアントシステムからデータを受信する手段と、
前記アドレスメッセージから前記第１アドレス情報と前記第２アドレス情報とを抽出する手段と、
前記第１アドレス情報と前記第２アドレス情報との比較を含めて、前記アドレス情報を評価するための手段と、を有する、コンフィグレーションサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
〈関連出願の表示〉
本発明は、２００２年５月１３日に出願された米国仮出願６０／３８０３９６，及び２００２年８月８日に出願された米国出願１０／２１５８９９の一部継続出願に開示された主要部に基づいた出願であり、この出願は、参照として本願に包含される。
【背景技術】
【０００２】
ＮＡＴサーバ（ネットワークアドレス変換サーバ）の典型的なものの一つとして、ローカルネットワークとインターネットのような外部ネットワークとの間のゲートウェイとして動作するものがある。このＮＡＴサーバは、ローカルネットワークにおける１つ以上のマシン（例えば、複数のコンピュータ）間でインターネットアドレスのような公開ネットワークアドレス又は外部ネットワークアドレスを共有可能にするネットワークデバイスである。前述のＮＡＴサーバは、ローカルネットワークにおいてこれらのマシンに対して、マシンに固有のローカルネットワークアドレス又は内部ネットワークアドレスを１セット保持する。従って、ローカルネットワークにおける各マシンは、ローカルネットワークアドレスと公開ネットワークアドレスとを有する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＮＡＴサーバは、ローカルネットワークと外部ネットワーク間の通信を行うために、各マシンの公開ネットワークアドレスとローカルネットワークアドレス間で相互に変換を行う。一般的にこのネットワークアドレス変換は、ローカルネットワークにおける各マシンに対してはトランスパレントな処理であるので、これら各マシンは、ＮＡＴサーバによって使用される公開アドレスを認識することはない。
【課題を解決するための手段】
【０００４】
本開示は、ネットワーク構成を評価するための方法及び装置を用意するものである。一実施形態によると、ネットワーク構成を評価する方法は、クライアントシステムのコンフィグレーションサーバで、当該クライアントシステムの第１アドレス情報と第２アドレス情報とを有するアドレスメッセージをネットワークを介して受信する過程と、前記コンフィグレーションサーバで、前記アドレスメッセージから前記第１アドレス情報と前記第２アドレス情報を抽出する過程と、コンフィグレーションサーバで、前記第１アドレス情報と前記第２アドレス情報との比較を含めて、前記アドレス情報を評価する過程と、を有する。
【発明を実施するための最良の形態】
【０００５】
本発明は、ネットワーク構成を評価するための方法及び装置を用意するものである。本発明は、ＮＡＴデバイス（ネットワーク変換アドレス）がコンフィグレーションサーバとクライアントシステム間に位置するかどうかを判断する過程を含むネットワークに接続されたクライアントシステムのネットワーク構成の評価を行うことをコンフィグレーションサーバに可能にさせる。以下に記載するように一実施形態によると、コンフィグレーションサーバは、アドレスメッセージ内のクライアントシステムによって用意されたアドレスと、ネットワーク構成の評価を行うためにコンフィグレーションサーバにて受信したアドレスメッセージソースのアドレスを解析する。
以下の記載は、２つのセクションに分かれる。セクション１は、２つのクライアントシステム間のネットワーク通信に関して記載している。セクション２は、一実施例として、セクション１に記載されたネットワークアーキテクチャを用いてネットワーク構成の評価を行う過程を記載している。
［セクション１−通信］
【０００６】
このセクションは、２クライアントシステム間のネットワーク通信に関して記載している。
図１は、ネットワークシステムアーキテクチャ１００を示す。第１クライアントシステム１０５は、第１ＮＡＴデバイス（ネットワークアドレス変換デバイス）１１０に接続され、第１ローカル又は内部ネットワーク１１５を形成する。この第１クライアントシステム１０５は、ネットワークアダプタを備えたビデオゲームコンソールシステム又はコンピュータシステムのようなネットワークイネーブルシステム、つまりネットワークを使用可能なシステムである。ビデオゲームコンソールシステムとして、第１クライアントシステム１０５は、ビデオゲーム機能を提供するハードウェアおよび／もしくはソフトウェアと、以下に記載するネットワーク通信を形成するハードウェアおよび／もしくはソフトウェアを有する。一実施例によると、第１クライアントシステム１０５は、株式会社ソニー・コンピュータエンタテインメントによって製造された「プレイステーション２」のゲームコンソールである。第１ＮＡＴデバイス１１０は、一般的なＮＡＴボックス又はＮＡＴサーバであり、また、他の形態では、プロクシサーバ、ゲートウェイの一部、ルータ、ファイアウォールの一種である。コンピュータのようなシステム又はネットワークデバイスを一台、あるいは複数台、第１ＮＡＴデバイス１１０に接続するか、第１ローカルネットワーク１１５内に配置しても良い。第１ローカルネットワーク１１５における各システムは、第１ＮＡＴデバイス１１０によって割り当てられ且つ保持されるローカルネットワークアドレスを有する。一実施例において、第１ローカルネットワーク１１５におけるローカルネットワークアドレスには、アドレス番号およびポート番号が含まれ、例えばこれらの番号がＵＤＰ／ＩＰ（即ち、アドレス番号がＩＰ番号である）に準拠して与えられている。他の形態においては、第１ローカルネットワーク１１５は、異なる通信プロトコルを使用し、このローカルネットワークアドレスには、システムを認証するための異なる情報を有する。
【０００７】
第１ＮＡＴデバイス１１０は、インターネットのような外部ネットワーク又は公開ネットワーク１２０に接続される。外部ネットワーク１２０に接続された個々のアドレス指定可能システム又はデバイスは、公開ネットワークアドレスを有する。「公開」ネットワークアドレスは前述の外部ネットワーク１２０を介して使用され、「ローカル」ネットワークアドレスは、第１ローカルネットワーク１１５のようなローカルネットワーク内で使用される。一実施例によると、公開ネットワークアドレスは、ＵＤＰ／ＩＰに準拠したアドレス番号とポート番号を有する。他の形態によると、外部ネットワーク１２０は、異なる通信プロトコルを使用し、公開ネットワークアドレスはシステムを認証するための異なる情報を有する。一実施形態によると、第１ローカルネットワーク１１５のローカルネットワークアドレスは、外部ネットワーク１２０と互換性がない（例えば、ローカルネットワークアドレスは、外部ネットワーク１２０の通信プロトコルには認識されない）。
【０００８】
第１ＮＡＴデバイス１１０は、公開ネットワークアドレスを有する。第１クライアントシステム１０５は、直接的に外部ネットワークに接続されるわけではなく、第１ＮＡＴデバイス１１０を介してされ、また、公開ネットワークアドレスを有さない。この第１クライアントシステム１０５は、第１ＮＡＴデバイス１１０の公開ネットワークアドレスを第１ローカルネットワーク１１５における他のシステム（もし存在する場合）とともに共有する。第１ＮＡＴデバイス１１０は、第１ローカルネットワーク１１５内の各システムにローカルネットワークアドレスを割り当てる。第１ＮＡＴデバイス１１０は、外部ネットワーク１２０と第１ローカルネットワーク１１５間でデータをルーティングするために、公開ネットワークアドレスとローカルネットワークアドレスとの変換を行う。他実施形態においては、第１ＮＡＴデバイス１１０は、第１ローカルネットワーク１１５内のシステムと共有するための２以上の公開ネットワークアドレスを有する。
【０００９】
一実施形態によると、第１ＮＡＴデバイス１１０は、例えば、ＰＡＴ技術（ポートアドレス変換）を用いて第１ローカルネットワーク１１５内のシステムにポート番号をマッピングする。第１ＮＡＴデバイス１１０は、ローカルシステムが外部ネットワーク１２０を介して送信先にデータを送信すると、第１ローカルネットワーク１１５内のローカルシステムにポート番号を割り当てる。この第１ＮＡＴデバイス１１０は、ポート番号とローカルシステム間のポートマッピングとして、前述のポート番号を記録する。第１ＮＡＴデバイス１１０は、単一ローカルシステムの発信データのすべてに単一のポート番号を割り当て、記録する。第１ＮＡＴデバイス１１０は、発信データによって割り当てられたポート番号を有するので、受信者が応答するとき、このポート番号の使用が可能になる。第１ＮＡＴデバイス１１０は、入力データに添付された前述のポート番号と第１ＮＡＴデバイス１１０内に記録されたポートマッピングとを比較することによって、第１ローカルネットワーク１１５内のどのシステムが入力データの意図された受信先であるか否かを判断する。
【００１０】
第１ＮＡＴデバイス１１０は、マッピングを実行して送受信したデータに応じて動的にポートマッピングを確立し、調整する。もし第１ＮＡＴデバイス１１０が、ポート番号を有するローカルシステム又は外部ネットワーク１２０から一定期間、データを受信しない場合、第１ＮＡＴデバイス１１０は、当該ポート番号のポートマッッピングを解放する（タイムアウト）。第１クライアントシステム１０５は、以下に記載するように外部ネットワーク１２０に定期的にメッセージを送信することによって、このタイムアウトを防止可能である。
【００１１】
一実施例によると、第１ＮＡＴデバイス１１０は、ポート番号で指示されたローカルシステムによって送信されたデータの受信者アドレスと、入力データの送信者のネットワークアドレスを比較することによって入力データを（例えば、セキュリティ上の理由により）スクリーニングする。第１ＮＡＴデバイス１１０は、外部ネットワーク１２０を介してローカルシステムから受信者にデータを送信すると、ローカルシステムのポートマッピングとともに送信先アドレスを記録する。第１ＮＡＴデバイス１１０は、第１ローカルネットワーク１１５を介してローカルシステムへの入力データがあっても、ローカルシステムが入力データのアドレスと同じネットワークアドレスで受信者にデータを送信していないうちは、この入力データをローカルシステムには転送しない。第１ＮＡＴデバイス１１０は、入力データに包含されるポートを用いて、入力データの送信者のネットワークアドレスと、記録された発信データの送信先アドレスとを比較する。上述したように、第１ＮＡＴデバイス１１０は、ポートマッピングとともに送信先アドレスを記録する。そうすることでローカルシステムによって送信された送信先アドレスを見つけるためにポート番号をインデックスとして用いることができる。もしアドレスが一致しない場合、第１デバイス１１０は、第１ローカルネットワーク１１５内には入力データを転送しない。以下に記載するように、第１クライアントシステム１０５は、システムにデータを送信することによって、外部ネットワーク１２０を介してこのシステムを「認可」するためにこのセキュリティ機能を使用し、それにより第１ＮＡＴデバイス１１０が、前述の認可されたシステムから第１ローカルネットワーク１１５内にデータを送信させる。
【００１２】
例えば、第１クライアントシステム１０５が外部ネットワーク１２０を介してデータを受信者に送信すると、第１ＮＡＴデバイスは第１クライアントシステム１０５にポート番号をマップする。第１ＮＡＴデバイス１１０は、第１ＮＡＴデバイス１１０の公開ネットワークアドレスと、第１クライアントシステム１０５の発信データとともにマップされたポート番号を有する。第１ＮＡＴデバイス１１０は、受信者のアドレスも記録する。第１ＮＡＴデバイス１１０は、前述のポート番号を有するデータを受信すると、送信者のアドレスと予め送信された発信データの送信先が記録されたアドレスを比較する。これらのアドレスが一致した場合、第１ＮＡＴデバイス１１０は、第１クライアントシステム１０５のローカルネットワークアドレスを用いて第１クライアントシステム１０５にデータを送信する。
【００１３】
第２クライアントシステム１２５は、第２ＮＡＴデバイス１３０に接続され、第２ローカルネットワーク１３５を形成する。第１クライアントシステム１０５と同様、第２クライアントシステム１２５は、ネットワークアダプタを有するビデオゲームコンソールシステムのようなネットワーク使用可能なシステムである。第１ＮＡＴデバイス１１０と同様に第２ＮＡＴデバイス１３０は、一般的なＮＡＴボックス又はＮＡＴサーバであり、他の形態として、プロクシサーバ、ゲートウェイの一部、ルータの一種としてもよい。第２クライアントシステム１２５と第２ＮＡＴデバイス１３０は、第１クライアントシステム１０５と第１ＮＡＴデバイス１１０各々に対して（例えば、入力データをポートマッピングし、スクリーンすることに関して）同様に動作する。また、第２ＮＡＴデバイス１３０に、１以上の増設されたネットワークデバイスを接続して第２ローカルネットワーク１３５内に配置するようにしてもよい。第２ＮＡＴデバイス１３０内の各システム又は各デバイスは、第１ローカルネットワーク１１５と同様に第２ＮＡＴデバイス１３０によって割り当てられ、保持されたローカルネットワークアドレスを有する。一態様において、第１ローカルネットワーク１１５および第２ローカルネットワーク１３５は、同じ形式のネットワークであるので、同じ通信プロトコルを使用する。しかし、他の形態においては、ローカルネットワーク１１５と第１ローカルネットワーク１３５は、形式が異なる可能性がある。
【００１４】
第１ＮＡＴデバイス１１０と同様に第２ＮＡＴデバイス１３０は、外部ネットワーク１２０に接続される。従って、第２クライアントシステム１２５は、第２ＮＡＴデバイス１３０を介して間接的に外部ネットワーク１２０に接続される。ＮＡＴデバイス１１０とＮＡＴデバイス１３０は、外部ネットワーク１２０のプロトコルに従って外部ネットワーク１２０を介して相互にデータを送信することが可能である。
【００１５】
外部ネットワーク１２０には、３つのサーバシステム、具体的には、アドレスサーバ１４０、マッチングサーバ１４５及びマッピングメンテナンスサーバ１５０３もまた接続されている。サーバシステム１４０，１４５，１５０の各々は、コンピュータシステム又はメインフレームシステムのようなネットワークサーバシステムである。他の実施形態では、サーバシステム１４０，１４５，１５０のいくつか又は全部は、外部ネットワーク１２０に接続された単一システム内に含まれる。サーバシステム１４０，１４５，１５０の各々は、外部ネットワーク１３５上にそれぞれネットワークアドレスを有する。これらのネットワークアドレスは、クライアントシステム１０５，１２５において既に知られたものである。アドレスサーバ１４０は、アドレス発見に関してクライアントシステム１０５，１２５を補助する。マッピングメンテナンスサーバ１５０は、ＮＡＴデバイス１１０，１３０のアドレスマッピングを保持することに関してクライアントシステム１０５，１２５それぞれを補助する。他の実施例として、メンテナンスマッピングサーバを除外するようにしてもよい。
【００１６】
図２は、例えば図１に示す第１クライアントシステム１０５のようなクライアントシステム２００の一実施形態の構成図である。クライアントシステム２００は、ネットワークアドレスマネージャ２０５、ネットワーク登録マネージャ２１０、ネットワーク共有マネージャ２１５、ネットワークマッピングメンテナンスマネージャ２２０という４つのマネージャを有する。マネージャ２０５，２１０，２１５，２２０の各々は、クライアントシステム２００のソフトウェア構成要素として実装される。他の形態では、マネージャ２０５，２１０，２１５，２２０の若干又は全部がハードウェアに実装される。ネットワークアドレスマネージャ２０５は、例えば第１ＮＡＴデバイス１１０のような接続されたＮＡＴデバイスによってクライアントシステム２００と関連付けられる公開ネットワークアドレスを発見するために、クライアントシステム２００とアドレスサーバ１４０間の通信制御を行う。ネットワーク登録マネージャ２１０は、マッチングサーバ１４５にクライアントシステム２００を登録するためにクライアントシステム２００とマッチングサーバ１４５間の通信制御を行う。ネットワーク共有マネージャ２１５は、クライアントシステム２００との通信をリクエストした他のクライアントシステムの公開ネットワークアドレスとローカルネットワークアドレスを決定するためにマッチングサーバ１４５との通信制御を行う。マッピングメンテナンスマネージャ２２０は、クライアントシステム２００に接続されたＮＡＴデバイスが、クライアントシステム２００のために確立されたマッピングがタイムアウトすることを回避するためにマッピングメンテナンスサーバ１５０との通信制御を行う。他の形態として、クライアントシステム２００は、マッピングメンテナンスマネージャ２２０を有さないようにしてもよい。クライアントシステム２００は、クライアントシステム２００のローカルネットワークに接続し、通信を行うためのネットワークインターフェース２２５を有する。ネットワークインターフェース２２５は、ネットワークアダプタ又はモデムのようなネットワーク通信デバイスを有する。クライアントシステム２００もＣＰＵ２３０，メモリ２３５，Ｉ／Ｏインターフェース２４０のような総合操作をするためのコンポーネントを有する。ゲームコンソールクライアントシステムに関して、クライアントシステムは、増設したビデオ、サウンド、アプリケーション仕様のソフトウェアおよび／またはハードウェア（“ゲームコンポーネント”）を有する。一実施形態によると、クライアントシステム２００は、上述したようにネットワーク通信のハードウェアおよびソフトウェアを包含する、株式会社ソニー・コンピュータエンタテインメントによって製造された「プレイステーション２」である。  
【００１７】
図３は、図１に示す第１クライアント１０５と第２クライアントシステム１２５のように２つにクライアントシステム間のピアツーピアネットワーク通信を確立し、保持することを表すフローチャートである。個々のクライアントシステムは、それぞれのアドレス情報を発見する（ブロック３０５）。図１に示すクライアントシステム１０５，１２５のようなクライアントシステムは、公開ネットワークアドレスおよびローカルネットワークアドレスを含む、関連付けられたアドレス情報（associated address information)を有する。
図４に参照して以下に記載するように、クライアントシステムは、アドレスサーバと通信することによって公開ネットワークアドレスを発見する（図１に示すアドレスサーバ１４０を参照）。クライアントシステムは、ローカルに記録された情報にアクセスすることによって、または対応するＮＡＴデバイスに問い合わせすることによってローカルネットワークアドレスを発見する。クライアントシステム間では、前述の発見したアドレス情報が相互に共有される（ブロック３１０）。図５を参照して以下に記載するが、クライアントシステムの１つまたは両方は、マッチングサーバに登録する（図１に示すマッチングサーバ１４５を参照されたい）。クライアントシステムの１つが、他の登録されたクライアントシステムとの通信を行うことをリクエストすると、マッチングサーバが、これらのクライアントシステム間でアドレス情報を共有させる。クライアントシステムは、受信したアドレス情報を用いて相互に通信を確立する（ブロック３１５）。図６を参照して以下に記載するが、個々のクライアントシステムは対応するＮＡＴデバイスが入力メッセージを「認可された」ものとして認識するように、前述の共有アドレス情報を用いてメッセージを他のクライアントシステムに送信する。クライアントシステム同士が通信を行っている間、クライアントシステムは、対応するＮＡＴデバイスによって確立されたマッピングを保持する（ブロック３２０）。図８を参照して以下に記載するが、個々のクライアントシステムは、対応するＮＡＴデバイスがクライアントシステムの確立されたポートマッピングを変更またはタイムアウトしないよう、マッピングメンテナンスサーバに定期的にメッセージを送信する（図１に示すマッピングメンテナンスサーバを参照されたい）。マッピングメンテナンスサーバを有さない一実施形態によると、クライアントシステムは、マッピングメンテナンスサーバを用いたマッピング保持は行わない。
【００１８】
図４にローカルおよび公開ネットワークアドレス（図３のブロック３０５を参照）を発見するクライアントシステムのフローチャートを示す。上記したようにローカルネットワークは、ローカルネットワーク内のクライアントシステムのネットワークアドレスであり、このローカルネットワークに接続されるＮＡＴデバイスによって割り当てられる。公開ネットワークアドレスは、ＮＡＴデバイスに接続されるローカルネットワーク内のシステム間でＮＡＴデバイスによって共有される外部ネットワーク上のネットワークアドレスである。一実施形態によると、ローカルまたは公開ネットワークアドレスは、アドレス番号およびポート番号を有する。クライアントシステムは、公開およびローカルネットワークアドレスを発見するためにネットワークアドレスマネージャコンポーネントを用いる（図２のネットワークアドレスマネージャ２０５を参照）。  
【００１９】
クライアントシステムは、まず最初にローカルネットワークアドレスを発見する（ブロック４０５）。一実施形態によると、クライアントシステムは、ローカル記録へのアクセス、例えばクライアントシステムによって使用されるネットワークスタックソフトウェアに問合わせすることにより、ローカル公開アドレスを発見する。クライアントシステムは、ＮＡＴデバイスとの通信を開始すると、ローカルポート番号を確立し、それによってクライアントシステムは、ポート番号を認識する。他の形態として、クライアントシステムは、対応するＮＡＴデバイスにローカルネットワークアドレスをリクエストするようにしても良い。クライアントシステムは、前述の公開ネットワークアドレスを発見するためにアドレスサーバに対してアドレスリクエストを送信する（ブロック４１０）。クライアントシステムは、ＮＡＴデバイスを介してアドレスサーバにアドレスリクエストを送信する。ＮＡＴデバイスは、ＮＡＴデバイスのネットワークアドレス変換機能の一部として、アドレスリクエストに公開ネットワークアドレスを添付し、例えばアドレスリクエストのヘッダ情報に添付する。ＮＡＴデバイスがクライアントシステムにまだポート番号を割り当てていない場合、ポート番号を割り当て、公開ネットワークアドレスにおけるポート番号をアドレスリクエストに（例えばＵＤＰヘッダに）含める。このアドレスサーバは、アドレスリクエストから公開ネットワークアドレスを抽出する（ブロック４１５）。この公開ネットワークアドレスは、アドレスサーバが公開ネットワークアドレスを見つけられるようにアドレスリクエストにおける知られた場所（例えばヘッダ内）に配置される。他の形態では、アドレスサーバは、公開ネットワークアドレスを記録しない場合、一時的にネットワークアドレスのみ記録する。アドレスサーバは、アドレスレポートを生成することによって、またクライアントシステムにアドレスレポートを送信することによって、前述の公開ネットワークアドレスをクライアントシステムに戻す（ブロック４２０）。アドレスレポートは、メッセージのアドレス指定の一部（例えば、ヘッダ）におけるのと同様に、データの一部として抽出された公開ネットワークアドレスまたはメッセージのペイロードを有する。ＮＡＴデバイスは、ポート番号に従って公開ネットワークアドレスをクライアントシステムのローカルネットワークアドレスに変換し、クライアントシステムに前述のアドレスレポートを転送する。例えば、ＮＡＴデバイスは、公開ネットワークのアドレスポート番号に従って、クライアントシステムのポートマッピングにアクセスし、ローカルネットワークを検索する。それからＮＡＴデバイスは、メッセージのヘッダ情報における公開ネットワークアドレスとローカルネットワークを置き換える。従ってＮＡＴデバイスは、公開ネットワークアドレスを除外することによってヘッダを変更するが、メッセージのデータ部分は変更しない。クライアントシステムは、アドレスレポートを受信して、アドレスレポートに包含されている公開ネットワークアドレスを記録する（ブロック４２５）。クライアントシステムは、このようにしてローカルと公開ネットワークアドレスを発見する。
【００２０】
図５は、ローカルネットワークアドレスと公開ネットワークアドレスを共有する２つのクライアントシステムのフローチャートを表す（図３のブロック３１０を参照）。第１クライアントシステムは、マッチングサーバへの登録を行う（ブロック５０５）。クライアントシステムは、マッチングサーバへの登録を管理するためにネットワーク登録マネージャコンポーネントを用いる（図２に示すネットワークマネージャ２１０を参照）。第１クライアントシステムはマッチングサーバに登録リクエストを送信する。登録リクエストは、発見された第１クライアントシステムのローカルネットワークアドレスと公開ネットワークアドレスを有する。この登録リクエストは、送信したクライアントシステムが提供されたアドレス情報を用いて通信を行うことが可能であることをマッチングサーバに示す。マッチングサーバはレジストリテーブルに第１クライアントシステムを登録する（ブロック５１０）。マッチングサーバは、登録したシステムのアドレス情報を、記録するエントリとともにレジストリテーブルに保持する。マッチングサーバは、第１クライアントシステムのレジストリテーブル内にエントリを形成し、このエントリ内に、提供されたアドレス情報を記録する。第２クライアントシステムは、マッチングサーバにマッチングリクエストを送信する（ブロック５１５）。クライアントシステムは、以下に記載するようにマッチングサーバから他のクライアントシステムのアドレス情報の入手を管理するために、また登録したクライアントシステムを選択し、登録後のアドレス情報を受信するためにマネージャコンポーネントを共有するネットワークを用いる（図２に示すネットワーク共有マネージャ２１５を参照）。マッチングリクエストは、第２クライアントシステムが他のクライアントシステムとの通信を確立するための情報をリクエストしていることをマッチングサーバに示す。マッチングサーバは、レジストリ情報を第２クライアントシステムに送信する（ブロック５２０）。一実施形態によると、マッチングサーバは、レジストリテーブルを第２クライアントシステムに送信する。他の実施形態によると、マッチングサーバは、第２クライアントシステムが通信を行う登録したクライアントシステムを識別するために、レジストリテーブルにアクセス可能であるように例えば第２クライアントシステムからの検索問い合わせを受け入れることによって第２クライアントシステムとの通信を行う。第２クライアントシステムは登録したクライアントシステムのうちから第１クライアントシステムを選択する（ブロック５２５）。第２システムは、第１クライアントシステムのアドレス情報を記録する（ブロック５３０）。一態様によると、第２クライアントシステムに送信されたレジストリ情報は、登録されたクライアントシステムのアドレス情報を有する。他の実施形態によると、第２クライアントシステムは、マッチングサーバから選択されたクライアントシステムのアドレス情報を別個でリクエストする。第２クライアントシステムは、マッチングサーバにマッチング選択を送信する（ステップ５３５）。マッチング選択により、第２クライアントシステムが登録されたクライアントシステムのどれと通信を行うべきかが示される（この場合、第１クライアントシステム）。マッチング選択は、第２クライアントシステムのアドレス情報も有する。一実施形態によると、マッチング選択は、第１クライアントシステムのアドレスリクエストとしての役割も担う。マッチングサーバは、選択されたクライアントシステムとして第２クライアントシステムのアドレス情報を第１クライアントシステムに送信する（ブロック５４０）。第１クライアントシステムは、第２クライアントシステムのアドレス情報を受信し、記録する（ブロック５４５）。２つのクライアントシステムの各々は、こうしてマッチングサーバを介して他のクライアントシステムとアドレス情報を共有する。
【００２１】
図６に、第２クライアントシステムとの通信を確立する第１クライアントシステムのフローチャートを示す（図３のブロック３１５参照）。第１クライアントシステムは、１つ以上のメッセージを第２クライアントシステムに送信する（ブロック６０５）。第１クライアントシステムは、第２クライアントシステムの公開ネットワークアドレスを用いてテストメッセージ（発信公開アドレステストメッセージ）のいくつかを第２クライアントシステムに送信し、第２クライアントシステムに関してローカルネットワークアドレスを用いてテストメッセージ（発信ローカルアドレステストメッセージ）のいくつかを送信する。上記したように第１と第２のクライアントシステムがアドレス情報を共有したとき、第１クライアントシステムは、第２クライアントシステムの公開ネットワークアドレスおよびローカルネットワークアドレスを受信する（図５参照）。第２クライアントシステムのローカルネットワークアドレスが外部ネットワークと互換性がない形態においては（例えば、ローカルネットワークアドレスは、外部ネットワークの通信プロトコルには認識されないとき）、第１クライアントシステムは、ローカルネットワークアドレスを用いてテストメッセージを送信しない。第１クライアントシステムは、以下に記載するように第１クライアントシステムがブロック６３０における、クライアントシステムから確認メッセージを受信するまで第２クライアントシステムにテストメッセージを送信し続ける。
【００２２】
第１クライアントシステムに接続されたＮＡＴデバイスは、発信テストメッセージの送信先アドレスを記録する（ブロック６１０）。第１クライアントシステムに接続されたＮＡＴデバイス（例えば、図１に示す第１ＮＡＴデバイス）は、第１クライアントシステムのローカルネットワークと外部ネットワーク間のゲートウェイである。従って、発信テストメッセージは、ＮＡＴデバイスを通り抜ける。上述したように、ＮＡＴデバイスは、入力データのスクリーニングを行ない、当該入力データの送信先が入力データの送信者との通信を既に試みている場合を除き、データがＮＡＴデバイスのローカルネットワークに入らないようにする。ＮＡＴデバイスは、発信データの送信者の「認可された」アドレスとしてローカルネットワークを介してシステムからの発信データの送信先アドレスを記録する。ＮＡＴデバイスは、入力データのオリジナルアドレス（例えば、送信者のアドレス）とローカルネットワークを介して意図された受信者の記録された「認可された」アドレスとを比較する。ＮＡＴデバイスは、オリジナルアドレスが、ローカル受信者の「認可された」アドレスの１つと一致したとき、入力データのみをローカル受信者に転送する。
【００２３】
従って、ＮＡＴデバイスは、第１クライアントシステムが通信を試みようとしているシステムの「認可された」アドレスとして、発信テストメッセージの送信先アドレスを記録する。ＮＡＴデバイスは、第１クライアントシステムの発信テストメッセージの送信先アドレスと同じアドレスから発信されている第１クライアントシステムのデータを受信すると、入力データを第１クライアントシステムに転送する。第１クライアントシステムが、テストメッセージを第２クライアントシステムのアドレスに送信すると、ＮＡＴデバイスは、第２クライアントシステムから第１クライアントシステムにデータを転送する。
【００２４】
図７を参照して以下に記載するが、第１クライアントシステムがテストメッセージを第２クライアントシステムに送信する際、第２クライアントシステムは同様にテストメッセージを第１クライアントシステムに送信する。第１クライアントシステムに関して上述したように、第２クライアントシステムは第１クライアントシステムのアドレス情報を用いて発信公開アドレステストメッセージ（もし妥当であれば、発信ローカルアドレステストメッセージも）を送信する。第２クライアントシステムに接続されるＮＡＴデバイス（例えば、図１に示す第２ＮＡＴデバイス１３０）は、発信テストメッセージの送信先アドレスを記録し、第１クライアントシステムから受信した第２クライアントシステムの入力データを転送する。
【００２５】
第１クライアントシステムは、第２クライアントシステムのテストメッセージを受信する（ブロック６１５）。上述したように第１クライアントシステムに接続されたＮＡＴデバイスは、入力テストメッセージのオリジナルアドレス（元のアドレス）と記録済みの「認可された」アドレスとが一致することから、第２クライアントシステムからの入力データを第１クライアントシステムに転送する。第１クライアントシステムは受信したテストメッセージのオリジナルアドレスを記録する（ブロック６２０）。第１クライアントシステムは、記録されたオリジナルアドレスを用いて確認メッセージを第２クライアントシステムに送信する（ステップ６２５）。発信確認メッセージは、第１クライアントシステムが第２クライアントシステムのテストメッセージを受信したことを第２クライアントシステムに示す。同様に、第２クライアントシステムは、第１クライアントシステムのテストメッセージを受信し、このテストメッセージのオリジナルアドレスを用いて確認メッセージを第１クライアントシステムに送信する。第１クライアントシステムは、第２クライアントシステムの確認メッッセージを受信する（ブロック６３０）。第１クライアントシステムは、第２クライアントシステムの確認メッセージを受信すると、第２クライアントシステムにテストメッセージを送信することを中止する。第１クライアントシステムでは、こうして第２クライアントシステムとの通信が確立される。第２クライアントシステムが第１クライアントシステムの確認メッセージを受信した後で、第２クライアントシステムは第１クライアントシステムとの通信が確立ずみとなる。クライアントシステムは、個々のシステムがデータの送信が可能である送信先のアドレスを確認済みとなり、このデータは、受信者システムのＮＡＴデバイスを通り抜けられるようになる。
【００２６】
ＮＡＴデバイスは、最初に第２クライアントシステム宛にテストメッセージを送信して、第２クライアントシステムから第１クライアントシステムにメッセージを転送するようにすることで、第１クライアントシステムは、ＮＡＴデバイスのセキュリティ機能の「パンチングホール（punching holes）」になる。従って、この技術は、「ホールパンチング(hole punching)」と称される。第１および第２クライアントシステムは、「ホールパンチング」を用いてＮＡＴデバイスの操作を変更することなく通信を確立することが可能である。
【００２７】
図７に、第１クライアントシステムとの通信を構築する第２クライアントシステムのフローチャートを示す。図７の動作は、図６を参照して上記した動作と連動して起こる。第２クライアントシステムは、クライアントシステムがアドレス情報を共有したとき受信したアドレス情報を用いて第１クライアントシステムにテストメッセージを送信する（ブロック７０５）。上記したように第２クライアントシステムは、第１クライアントシステムの公開ネットワークアドレスを用いて発信公開アドレステストメッセージを送信し、ローカルネットワークアドレスが外部ネットワークと互換性がある場合は、発信ローカルアドレステストメッセージをも送信する。第２クライアントシステムは、以下に記載するブロック７３０における第１クライアントシステムから確認メッセージを受信するまで、第１クライアントシステムにテストメッセージを送信し続ける。第２クライアントシステムに接続されるＮＡＴデバイスは、「認可された」アドレスとして発信テストメッセージの送信先アドレスを記録する（ブロック７１０）。上記したように第１クライアントシステムも第２クライアントシステムにテストメッセージを送信し、第２クライアントシステムは、第１クライアントシステムからテストメッセージを受信する（ブロック７１５）。第２クライアントシステムは、受信したテストメッセージのオリジナルアドレスを記録し（ブロック７２０）、オリジナルメッセージを用いて第１クライアントシステムに確認メッセージを送信する（ブロック７２５）。上記したように第１クライアントシステムも第２クライアントシステムからテストメッセージを受信した後、第２クライアントシステムに確認メッセージを送信し、第２クライアントシステムは確認メッセージを受信する（ブロック７３０）。第２クライアントシステムが第１クライアントシステムから確認メッセージを受信すると、第１クライアントシステムにテストメッセージを送信することを中止する。第２クライアントシステムは、こうして第１クライアントシステムとの通信を確立する。
【００２８】
図８は接続されたＮＡＴデバイスによって割り当てられたマッピングを保持するクライアントシステムのフローチャートを表す（図３のブロック３１５参照）。クライアントシステムは、マッピングメンテナンスサーバに接続されたＮＡＴデバイスのアドレスマッピングを保持管理するために、ネットワークマッピングメンテナンスマネージャコンポーネントを用いる（図２に示すネットワークマッピングメンテナンスマネージャ２２０を参照）。上述したように一実施形態によると、ＮＡＴデバイスは、ＮＡＴデバイスのローカルネットワークを介してローカルネットワークアドレスをシステムに割り当てる。ＮＡＴデバイスもローカルシステムによって使用される公開ネットワークアドレスのポート番号を割り当てる。ローカルシステムが外部ネットワークにデータを送信すると、ＮＡＴデバイスは、ポート番号をローカルシステムに割り当て、そのポート番号を記録する。ＮＡＴデバイスが入力データを受信すると、ＮＡＴデバイスはどのローカルシステムが意図された受信者であるかを判断するために入力データの目的アドレスのポート番号チェックを（例えば、ヘッダ情報に対して）行う。上記したようにＮＡＴデバイスは、データをローカルシステムに転送する前に、入力データの送信者が「認可された」データであることを確認するためにポート番号をチェックする。ＮＡＴデバイスは、ポート番号をローカルシステムに割り当てるとすぐ、タイマーをカウントダウンし始める。ローカルシステムが、さらにデータを外部ネットワークに送信する場合、ＮＡＴデバイスは同じポート番号を使用し、タイマーをリセットする。同様にＮＡＴデバイスがポート番号を用いて入力データを受信する場合は、タイマーをリセットする。タイマーが０に達した場合、ポート番号が最近使用されていないことから、ＮＡＴデバイスはポート番号を解放する（タイムアウト）。クライアントシステムは、この「タイムアウト」を回避するために他のクライアントシステムと通信を行っている間、または通信を試みようとしている間、定期的にマッピングメンテナンスメッセージをマッピングメンテナンスサーバに送信する。上述したように、一実施形態によると、マッピングメンテナンスサーバは、アドレスサーバ内またはマッチングサーバ内に含まれ、従って、クライアントシステムは、マッピングメンテナンスメッセージを適切なサーバに送信する。マッピングメンテナンスサーバを有さない一実施形態においては、クライアントシステムはマッピングメンテナンスメッセージを送信しない。
【００２９】
クライアントシステムは、接続されたＮＡＴデバイスを介してマッピングメンテナンスメッセージを送信する（ブロック８０５）。図１を参照すると、第１クライアントシステム１０５は、第１ＮＡＴデバイス１１０を介してマッピングメンテナンスメッセージをマッピングメンテナスサーバ１５０に送信する。ＮＡＴデバイスは、マッピングメンテナンスメッセージを受信し、クライアントシステムに割り当てられたポート番号のタイマーをリセットする（ブロック８１０）。ＮＡＴデバイスは、マッピングメンテナンスメッセージをマッピングメンテンスサーバに送信する（ブロック８１５）。所定期間後、クライアントシステムは、カレントアドレスを保持するかどうかを判断する（ブロック８２０）。クライアントシステムが他のクライアントシステムとの通信の実行、または通信を試みようとしている場合、クライアントシステムは、別のマッピングメンテナンスをマッピングメンテナンスサーバに送信して、カレントポートマッピングを保存するようにする（ブロック８０５に戻る）。もしクライアントシステムが通信済みとなっている場合、クライアントシステムは、別のマッピングメッセージを送信することはなく、ポートマッピングをタイムアウト可能にする（ブロック８２５）。一実施形態によると、マッピングメンテナンスサーバは、クライアントシステムに応答しない。あるいは、マッピングメンテナンスサーバがマッピングメンテナンス確認メッセージをクライアントシステムに送信するようにしてもよい。  
【００３０】
以上、２つのクライアントシステムが各々のＮＡＴデバイスの背後に存在するネットワークの確立について記載したが、２つのクライアントシステムおよびサーバシステムの操作は、ＮＡＴデバイスの存在から独立したものである。図９のＡからＣまではネットワーク構成の他の実施形態を示す。図９Ａは、第１クライアントシステム９０５がＮＡＴデバイス９１０の背後に存在し、一方、第２クライアントシステム９１５はＮＡＴデバイスに接続されていないことを示す。図９Ｂは、クライアントシステム９３０と９３５の両方がＮＡＴデバイスに接続されていないことを示す。図９Ｃは、クライアントシステム９７０と９７５の両方が同一ローカルネットワーク９８５における同一ＮＡＴデバイス９８０の背後に存在することを示す。他の種々の態様と同様に他の形態における個々の構成において、クライアントシステムとサーバシステムは上述したものと同様の方法で実質的に互換可能である。
【００３１】
［セクション２−ネットワーク評価］
このセクションは、ネットワーク構成の評価に関するものである。
コンフィグレーションサーバは、クライアントシステムに接続されたネットワークを評価するためにクライアントシステムから受信したアドレス情報を解析する。一実施形態において、コンフィグレーションサーバは、ＮＡＴデバイスがクライアントシステムとコンフィグレーションサーバ間に位置するか否かを判断する。一実施形態では、コンフィグレーションサーバは、他の情報、例えば何れの形式のＮＡＴデバイスが存在するの評価や、あるいは、クライアントシステムのローカルネットワークにおける他のシステムに関する情報に関する評価を行う。
【００３２】
上述したようにクライアントシステムが、ＮＡＴデバイスを介して外部ネットワークに接続されると、クライアントシステムは、ローカルネットワークアドレスと公開ネットワークアドレスを有する。これら二つのアドレスは、一般には異なる。一実施形態では、ローカルネットワークアドレスと公開ネットワークアドレスは、アドレス番号とポート番号とを含む。ローカルネットワークアドレスは、ＮＡＴデバイスとクライアントシステム（あるいは増設されたシステム）によって形成されたローカルネットワークにおけるクライアントシステムのネットワークアドレスである。ローカルネットワークアドレスは、ＮＡＴデバイスによってクライアントシステムに割り当てられる。公開ネットワークアドレスは、ＮＡＴデバイスに接続されたローカルネットワーク内のシステム間でＮＡＴデバイスによって共有された外部ネットワーク上のネットワークアドレスである。他の形態において、ＮＡＴデバイスは、ローカルシステム間で共有するために公開ネットワークアドレスをプールしている。
【００３３】
ＮＡＴデバイスを介して外部ネットワークに接続されたクライアントシステムが、外部ネットワークにメッセージを送信すると、ＮＡＴデバイスは外部ネットワークにメッセージを発信する前にメッセージを変更する。クライアントシステムはメッセージのソースアドレスを示すヘッダ情報のように、メッセージ内にローカルネットワークアドレスを包含する。ＮＡＴデバイスは、ＮＡＴデバイスのネットワークアドレス変換機能の一部として、例えばヘッダにおけるローカルネットワークアドレスを公開ネットワークアドレスに置き換えることによって、アドレスメッセージに公開ネットワークアドレスを添付する。ポート番号を用いる際、ＮＡＴデバイスが、まだクライアントシステムにポート番号を割り当ててしまっていない場合、ポート番号を割り当て、公開ネットワークアドレス内のポート番号をアドレスメッセージ（例えば、ＵＤＰヘッダ）に包含する。
【００３４】
クライアントシステムは、ＮＡＴデバイスを通り抜けることなく外部ネットワークに接続されると、クライアントシステムのローカルアドレスと公開ネットワークアドレスは同じになる。ＮＡＴデバイスがないと、ローカルネットワークにおいてクライアントシステムによって用いられたネットワークアドレスは、外部ネットワークにおいてクライアントシステムによって用いられたネットワークと同じである。ＮＡＴデバイスを通り抜けることなく外部ネットワークに接続されたクライアントシステムが外部ネットワークにメッセージを送信すると、メッセージのソースアドレスを示すヘッダ情報は、クライアントシステムがソースアドレスにセットしたものから変更されない。
【００３５】
従って、コンフィグレーションサーバは、クライアントシステムのネットワークを評価するために、クライアントシステムから受信したアドレス情報を用いる。以下に記載するように、一実施形態では、コンフィグレーションサーバは、クライアントシステムのローカルネットワークアドレスと公開ネットワークアドレスを受信してから、アドレスを比較することも含めて、ＮＡＴデバイスが存在するか否かを判断、推定するためにアドレスを評価する。コンフィグレーションサーバは、マーケティング情報又は技術サポートのような種々の目的のために前述のアドレスとアドレス評価を記録する。
【００３６】
図１０は、クライアントシステムのネットワーク構成を評価するコンフィグレーションサーバのフローチャートである。図１０は、コンフィグレーションサーバに焦点を当てている。一実施形態において、まず最初にコンフィグレーションサーバは、クライアントシステムのアドレスを受信する（ブロック１００５）。このアドレスメッセージは、クライアントシステムのローカルネットワークアドレスと公開ネットワークアドレスのような、クライアントシステムのアドレス情報を含む。他の実施形態では、コンフィグレーションサーバは（例えば、クライアントシステムと通信を行った後）、クライアントシステムにアドレスメッセージ要求を送信し、クライアントシステムは前述の要求に応じてコンフィグレーションサーバにアドレスメッセージを送信する。コンフィグレーションサーバは、このアドレスメッセージのアドレス情報を抽出し、記録する（ブロック１０１０）。コンフィグレーションサーバは、前述の抽出されたアドレス情報を評価する（ブロック１０１５）。コンフィグレーションサーバは、クライアントシステムのネットワーク構成の特性を判断するためにアドレス情報を用いる。例えば、以下に記載するようにアドレスメッセージから抽出されたローカルネットワークアドレスと公開ネットワークアドレスが異なる場合、コンフィグレーションサーバは、前述クライアントシステムのメッセージがＮＡＴデバイスを通り抜けたと判断する。
他の実施例において、幾つのクライアントシステムがＮＡＴデバイスに接続されているかに関して多重クライアントシステムの情報を収集することによって、コンフィグレーションサーバは、例えばマーケティング目的のようなＮＡＴデバイス使用の情報を構築する。
マルチコンフィグレーションサーバは、共通の場所又はドメイン、例えば複数のクライアントシステムの評価情報を集めて評価するための評価サーバに対して、情報を共有可能であるか、または情報や評価を提供することが可能である。他の実施形態において、コンフィグレーションサーバは、クライアントシステムに評価情報を送り返す。
【００３７】
他の形態において、クライアントシステムは、アドレスメッセージに加えて、又はこれに代えて、コンフィグレーションサーバにローカルネットワーク情報を送信する。ローカルネットワーク情報は、クライアントシステムのローカルネットワークに関する情報を含む。例えば、クライアントシステムは、幾つのシステム又は何れの形式のシステムがローカルネットワークに接続されるかというようなローカルネットワークに接続された他のシステムに関する情報を（例えば、メッセージのブロードキャストを用いてネットワーク“クッキー”を調べる、システム管理ツールを用いる等により）集める。一実施形態において、ローカルネットワーク情報は、クライアントシステムの１以上のネットワーククッキーを含む。他の実施形態では、ローカルネットワーク情報は他のローカルシステム又はＮＡＴデバイスに問い合わせることによって、又はＵＰｎＰ（ユニバーサルプラグアンドプレイ）のようなプロトコルに従った要求を用いることによって、クライアントシステムによって集められた情報を含む。コンフィグレーションサーバは、クライアントシステムのネットワーク構成と操作の評価においてローカルネットワーク情報もまた使用可能である。
【００３８】
図１１は、ローカルネットワークアドレスと公開ネットワークアドレスを比較することによって、クライアントシステムのネットワーク構成を評価する一実施形態のフローチャートである。図１１は、システム全体にわたる操作の一覧図を示す。クライアントシステムは、最初にローカルネットワークアドレスを発見する（ブロック１１０５）。一実施形態では、クライアントシステムは、例えばクライアントシステムによって用いられたネットワークスタックソフトウェアに問い合わせするようにローカル記録にアクセスすることによってローカルネットワークアドレスを発見する。クライアントシステムは、ＮＡＴデバイス又はその他のネットワークゲートウェイとの通信の実行を始めると、ローカルポート番号を構築するので、クライアントシステムは、既にポート番号を認識する。他の形態において、クライアントシステムは、前述のローカルネットワークアドレスをリクエストすることも可能である。上述したようにローカルネットワークアドレスは、ＮＡＴデバイスが存在しない場合、公開ネットワークアドレスと同じとなり得る。
【００３９】
クライアントシステムは、クライアントシステムのローカルネットワークアドレスを含むアドレスメッセージを生成する（ブロック１１１０）。クライアントシステムは、ローカルネットワークアドレスをデータ、又はアドレスメッセージのペイロードの一部に記録する。一実施形態において、クライアントシステムは、クライアントシステムを識別するシリアル番号又はＭＡＣアドレスのような追加情報も含む。
【００４０】
クライアントシステムは、外部ネットワークを介して、コンフィグレーションサーバにアドレスメッセージを送信する（ブロック１１１５）。クライアントシステムがＮＡＴデバイスを介して外部ネットワークに接続されると、ＮＡＴデバイスは、外部ネットワークにアドレスメッセージを送信する前にアドレスメッセージを変更する。ＮＡＴデバイスは、ＮＡＴデバイスネットワーク変換機能特性の一部として、アドレスメッセージのソースアドレスを示すヘッダ情報のようなアドレスメッセージに公開ネットワークアドレスを添付する。ＮＡＴデバイスがまだクライアントシステムにポート番号を割り当ててしまっていない場合、ポート番号を割り当て、（例えば、ＵＤＰヘッダにおいて）アドレスメッセージに公開ネットワークアドレスにおけるポート番号を含む。
【００４１】
前述のコンフィグレーションサーバは、アドレスメッセージの公開ネットワークアドレスを抽出し、公開ネットワークアドレスを記録する（ブロック１１２０）。この公開ネットワークアドレスは、コンフィグレーションサーバがアドレスメッセージ内に公開アドレスを見つけられるように、既知の場所（例、ヘッダ内）におけるアドレスメッセージ内に配置される。一実施形態では、コンフィグレーションサーバは、アドレスメッセージのソースアドレスを抽出し、クライアントシステムの公開ネットワークアドレスとしてこのソースアドレスを記録する。一実施例では、コンフィグレーションサーバは、公開ネットワークアドレスを記録しないか、公開ネットワークアドレスをただ一時的に記録するかである。
【００４２】
コンフィグレーションサーバは、アドレスメッセージのローカルネットワークアドレスを抽出し、ローカルネットワークアドレスを記録する（ブロック１１２５）。ローカルネットワークアドレスは、コンフィグレーションサーバがアドレスメッセージ内にローカルネットワークアドレスを見つけられるように、知られている場所（例えば、ペイロード内）におけるアドレスメッセージ内に配置される。一実施例では、コンフィグレーションサーバは、ローカルネットワークアドレスを記録するか、ローカルネットワークアドレスをただ一時的に記録するである。
【００４３】
コンフィグレーションサーバは、抽出されたアドレスを比較する（ブロック１１３０）。上述したように、クライアントシステムとコンフィグレーションサーバ間のＮＡＴデバイスは、クライアントシステムからの発信メッセージのソースアドレスをＮＡＴデバイスの公開アドレスにセットする。この場合、公開ネットワークアドレスはローカルネットワークアドレスとは異なる。従って、前述の公開ネットワークアドレスとローカルネットワークアドレスが同じである場合、コンフィグレーションサーバは、クライアントシステムとコンフィグレーションサーバ間にはＮＡＴデバイスが存在しないと判断する（ブロック１１３５）。公開ネットワークアドレスとローカルネットワークアドレスが同じではない場合、コンフィグレーションサーバは、クライアントシステムとコンフィグレーションサーバ間にＮＡＴデバイスが存在すると判断する（ブロック１１４０）。しかし、前述の評価は、必ずしも決定的ではなく、ガイドラインを提供するか、又はただ推定するかである。例えば、ＮＡＴデバイスは、ある条件下においては、ローカルネットワークアドレスとして公開ネットアドレスをクライアントシステムに送信するため、ＮＡＴデバイスが介在したとしても、クライアントシステムのローカルネットワークアドレスと公開ネットワークアドレスは、（例えば、ＮＡＴデバイス内の“非武装地帯（demilitarized zone）”又は“ＤＭＺ”の若干の実装において）同じになる。
【００４４】
クライアントシステムがＮＡＴデバイスを介して外部ネットワークに接続されているか否かを判断することによって、コンフィグレーションサーバは、クライアントシステムによって用いられたＮＡＴデバイスの数を評価するためにマルチクライアントシステムの情報を集めることが可能である。この情報は、前述のクライアントシステム間におけるＮＡＴデバイスの普及度[ＮＡＴデバイスペネトレーション（NAT device penetration)]に関連した価値あるマーケティング概況を提供することも可能である。例えば、ＮＡＴデバイスの普及度は、頻繁にルータが使用されていること（例えば、ルータは、多くの場合ホームネットワークにＮＡＴ機能を提供する）、ローカルネットワークの普及度（例えば、ＮＡＴデバイスの存在は、多くの場合、一つ以上のデバイス又はシステムのローカルネットワークが構築されたことを示す）、ブロードバンドの普及度（例えば、ＮＡＴデバイスは、ＩＳＤＮ，ケーブルモデム、ＤＳＬモデム等のようなブロードバンド接続に通常、用いられてよい）の指針となる。
更に特定のクライアントシステムがＮＡＴデバイスに接続されているか否かによりカテゴライズすることは、有用なマーケティング情報をも同様に提供することを可能にする。例えば、ＮＡＴデバイスに接続されたクライアントシステムのユーザは、ホームネットワーク製品又はホームネットワークサービスの標的とされるマーケティングの所望する対象である。同様にＮＡＴデバイスを持たないユーザは、ＮＡＴデバイスを宣伝する所望の対象となる。
【００４５】
他の形態において、コンフィグレーションサーバは、アドレス情報の追加の評価を実行する。他の実施形態において、コンフィグレーションサーバは、上述したローカルネットワーク情報のようなクライアントシステムネットワークの構築に関する情報を追加して、あるいはこれらの情報を組み合わせて評価する。
【００４６】
一実施形態において、コンフィグレーションサーバは、ＮＡＴデバイスが存在すると判断した場合、ＮＡＴデバイスの何れの形式が使用されているかを推定する。ＮＡＴデバイスがクライアントシステムにローカルネットワークアドレスを割り当て、このローカルネットワークアドレスがＮＡＴデバイスに関する情報を送信するためである。アドレス割り当てパターンはデバイス形式情報を表す。例えば、ＮＡＴデバイスの若干の製造者、ブランド、モデルは固有のローカルネットワークアドレスを使用する。それに応じて、コンフィグレーションサーバは、１以上のＮＡＴデバイス製造者（又はブランド、モデル等）のローカルネットワークアドレスとして用いられたアドレスのＮＡＴデバイステーブルを含む。コンフィグレーションサーバは、ＮＡＴデバイスがエントリの１つと照合するか否かを判断するためにローカルネットワークアドレスとテーブルエントリを比較する。例えば、一つのＮＡＴデバイステーブルは、製造者Ａによって製造されたＮＡＴデバイスはローカルネットワークアドレスの１９２．１６８．１２８．ｘのＩＰアドレスを使用し（使用されるアドレスにおいて１９２，１６８，と０は、固定値であり、“ｘ”は可動値を示す）、一方、製造者Ｂによって製造されたＮＡＴデバイスは、ローカルネットワークアドレスの１９２．１６８．０．ｘのＩＰアドレスを用いる。アドレス割り当てパターンは、ブランドの他に公開ネットワークアドレスとポートマッピングに適用されてよい。デバイス形式情報もまた、ブランド又はモデルの互換性に従って、ブロードバンド使用の形式（例えば、ＤＳＬやケーブルモデム）に関する指標をも提供し得る。
【００４７】
デバイス形式情報の他の使用法は、テクニカルサポートである。例えば、テクニカルサポートサーバは、コンフィグレーションサーバを有し、クライアントシステムのデバイス形式情報を収集する。クライアントシステムのユーザがテクニカルサポートを要求すると、テクニカルサポートサーバは、クライアントシステムに接続されているＮＡＴデバイスは、何れの形式であるかを推定する。
【００４８】
他の実施形態では、コンフィグレーションサーバは、クライアントシステムのＮＡＴデバイスに接続されたローカルシステムの数を評価する（これは必ずしも決定的ではないが）。一実施例において、コンフィグレーションサーバは、公開ネットワークアドレス又はローカルネットワークアドレスを解析し、同じＮＡＴデバイスを使用する他デバイスの数がいくつであるかを推定する。例えば、クライアントシステムのローカルネットワークアドレスが１９２．１６８．１．５，であるとすると、コンフィグレーションサーバは、ローカルネットワークアドレス１９２．１６８．１．０から１９２．１６８．１．４までが他の何れかの場所に配置されていると思われるので、クライアントシステムが６番目のシステム又はＮＡＴデバイスに接続されたデバイスであると推定する。同様な実施例において、クライアントシステムの公開ネットワークアドレスが、「．３」で終わると、コンフィグレーションサーバは、ＮＡＴデバイスがクライアントシステムの公開ネットワークアドレスにおいてプールされた公開アドレスのうち４番目の公開ネットワークアドレスを用いたと推定し、４つのその他のシステムはＮＡＴデバイスが接続されたと推定する。コンフィグレーションサーバは、同様な方法でアドレス内のポート番号を評価可能である。
【００４９】
図１に示すネットワークアーキテクチャ１００の一実施形態において、セクション１に上述したアドレスサーバ１４０は、コンフィグレーションサーバであるか、セクション２に上述したようにコンフィグレーションサーバを含むのである。このアドレスコンフィグレーションサーバ１４０は、第１ローカルネットワークアドレス１１５又は第２ローカルネットワーク１３５のネットワーク構成を評価するために増設したハードウェア、ソフトウェア、又は両方の組み合わせのようなコンポーネントを含む。例えば、クライアントシステム１０５のアドレス要求もまた、アドレスサーバ１４０のアドレスメッセージとしての役割を担い、アドレスサーバ１４０は、上述したように第１ローカルネットワーク１１５のネットワーク構成を評価する。
【００５０】
図１２は、コンフィグレーションサーバを有するネットワークシステム１２００の他の実施形態を表す。このネットワークアーキテクチャ１２００は、図１を参照して上述したネットワークアーキテクチャ１００に類似するが、唯一のサーバがコンフィグレーションサーバ１２２５となっている。クライアントシステム１２０５は、ＮＡＴデバイス１２１０に接続されてから、ローカルネットワーク１２１５を形成する。ローカルネットワーク１２１５内のクライアントシステム１２０５は、ＮＡＴデバイス１２１０によって割り当てられ、保持されたローカルネットワークアドレスを有する。ＮＡＴデバイス１２１０は、インターネットのような外部ネットワーク又は公開ネットワーク１２２０に接続され、公開ネットワークアドレスを有する。コンフィグレーションサーバ１２２５もまた、外部ネットワーク１２２０に接続される。コンフィグレーションサーバ１２２５は、図１０及び図１１を参照して上述されたように動作する。それに応じて、クライアントシステム１２０５とコンフィグレーションサーバ１２２５は、外部ネットワーク１２２０とＮＡＴデバイス１２１０を介して通信を行い、コンフィグレーションサーバ１２２５は、クライアントシステム１２０５から受信したアドレス情報を用いてローカルネットワーク１２１５の構成を評価する。一実施形態では、コンフィグレーションサーバ１２２５は、（例えば、コンピュータを有し、ネットワーク構成評価を超えて追加された操作を実行する）ネットワークシステムであり、他の実施形態においては、特定用途ネットワークデバイスである。  
【００５１】
ＮＡＴデバイスの幾つかは、送信先依存のＮＡＴデバイスであり、クライアントシステムのデータのそれぞれ異なる送信先のクライアントシステムに別々の公開ネットワークアドレスをマッピングする。例えば、送信先依存ＮＡＴデバイスは、公開ネットワークアドレスをプール（又はポート番号をプール）している。送信先依存ＮＡＴデバイスに接続されたクライアントシステムは、外部ネットワーク上の第１送信先にメッセージを送信すると、送信先依存ＮＡＴデバイスは、第１ネットワークアドレスをクライアントシステムに割り当て、クライアントシステムと第１送信先間の通信を行う際にこの第１公開ネットワークアドレスを用いる。クライアントシステムが（第１送信先の公開ネットワークアドレスとは異なる公開アドレスネットワークを有する）第２送信先にメッセージを送信すると、送信先依存のＮＡＴデバイスは、第２公開ネットワークアドレスをクライアントシステムに割り当て、クライアントシステムと第２送信先間で通信を行う際、この第２公開ネットワークアドレスを用いる。ＮＡＴデバイスが送信先依存ＮＡＴアドレスであることを認識するのは、上述したようにマーケティング又はテクニカルサポート、クライアントシステムのソフトウェア又は他のサーバの機能との互換性において有効である。
【００５２】
図１３に２つのコンフィグレーションサーバを有するネットワークシステム１３００の他の実施形態を示す。このネットワークアーキテクチャ１３００は、図１２を参照して上述したネットワークアーキテクチャ１２００の構築と類似するが、２つのコンフィグレーションサーバ１３２５と１３３０が、外部ネットワーク１３２０に接続される。クライアントシステム１３０５は、ＮＡＴデバイス１３１０に接続されてから、ローカルネットワーク１３１５を形成する。ローカルネットワーク１３１５内のクライアントシステム１３０５は、ＮＡＴデバイス１３１０によって割り当てられ、保持されたローカルネットワークアドレスを有する。ＮＡＴデバイス１３１０は、インターネットのような外部ネットワーク又は公開ネットワーク１３２０に接続され、少なくとも１つの公開ネットワークアドレスを有する。第１コンフィグレーションサーバ１３２５と第２コンフィグレーションサーバ１３３０は、外部ネットワーク１３２０に接続される。第１コンフィグレーションサーバ１３２５と第２コンフィグレーションサーバは、それぞれ公開ネットワークアドレスを有する。他の形態では、２コンフィグレーションサーバ１３２５と１３３０は、同じサーバの一部（例えば、別々のコンポーネント又はサブシステム）であるが、一方のコンフィグレーションサーバは２公開ネットワークアドレスを有する。概して、クライアントシステム１３０５とコンフィグレーションサーバ１３２５，１３３０は、外部ネットワーク１３２０とＮＡＴデバイス１３１０を介して通信を行う。コンフィグレーションサーバ１３２５と１３３０は、ＮＡＴデバイス１３１０が送信先依存ＮＡＴデバイス１３１０であるか否かを判断する過程を含むクライアントシステム１３０５から受信したアドレス情報を用いて、ローカルネットワーク１３１５の構築を評価する。
【００５３】
図１４は、ＮＡＴデバイスが送信先依存ＮＡＴデバイス１３１０であるか否かを評価することにおいて、図１３を参照して上述したコンフィグレーションサーバ１３２５，１３３０を用いたように２つのコンフィグレーションサーバを用いるフローチャートを表す。第１コンフィグレーションサーバはクライアントシステムのローカルネットワークアドレスを評価する（ブロック１４０５）。この第１サーバは、図１０と図１１を参照して上述したようにクライアントシステムのローカルネットワークを評価する。例えば、コンフィグレーションサーバは、クライアントシステムのローカルネットワークアドレスと公開ネットワークアドレスを受信し、ＮＡＴデバイスが存在するか否かを判断する。第２コンフィグレーションサーバは、クライアントシステムのローカルネットワークを評価する（ブロック１４１０）。第２コンフィグレーションサーバは、第１コンフィグレーションサーバの評価の前後に、又は平行して前述の評価を実行する。この点でコンフィグレーションサーバの両方は、クライアントシステムの公開ネットワークアドレスを受信している。ＮＡＴデバイスが存在する場合、コンフィグレーションサーバは、受信した公開ネットワークアドレスを比較する（ブロック１４１５）。コンフィグレーションサーバの１つは、受信した公開ネットワークアドレスを外部のネットワークを介して他のコンフィグレーションサーバに送信する。他の実施形態によると、コンフィグレーションサーバは、直接的に接続されるか、ローカルネットワーク又はプライベートネットワークに接続される。例えば、図１３に示すように第１コンフィグレーションサーバは、クライアントシステム１３０５の公開ネットワークアドレスを外部ネットワーク１３２０を介して第２コンフィグレーションサーバ１３３０に送信する。第２コンフィグレーションサーバ１３３０は、第１コンフィグレーションサーバ１３２５から受信した公開ネットワークアドレスと、第２コンフィグレーションサーバ１３３０によって受信したクライアントシステム１３０５の公開ネットワークアドレスを比較する。
【００５４】
ＮＡＴデバイスが、送信先依存ＮＡＴデバイスである場合、クライアントシステムがアドレスメッセージを異なるコンフィグレーションサーバに送信すると、送信先依存ＮＡＴデバイスは発信アドレスメッセージに異なる公開ネットワークアドレスを挿入する。ＮＡＴデバイスが送信先依存ＮＡＴデバイスでない（即ち、「送信先依存ＮＡＴデバイス」である）場合、ＮＡＴデバイスは、異なるコンフィグレーションサーバに向けたアドレスメッセージを含むクライアントシステムの発信メッセージの同じ公開ネットワークアドレスを用いる。
【００５５】
従って、コンフィグレーションサーバが受信した公開ネットワークアドレスを比較して、前述の２つの公開ネットワークアドレスが同じである場合には、ＮＡＴデバイスは送信先依存ＮＡＴデバイスではない（ブロック１４２０）。２つの公開ネットワークアドレスが異なる場合、ＮＡＴデバイスは、送信先依存ＮＡＴデバイスである（ブロック１４２５）。コンフィグレーションサーバの一方又は両方は、ＮＡＴデバイスの評価の結果を記録する。上述したように送信先依存ＮＡＴデバイスの公開ネットワークアドレスを割り当てた結果とパターンは、ブランド又はモデルのようなＮＡＴデバイスの態様を、予想し、推定するためとマーケティング目的に用いることが可能である。なお、数多くの形式のＮＡＴデバイスが存在することから、この評価は、必ずしも決定的ではない。
【００５６】
他の実施形態において、コンフィグレーションサーバは、接続されたＮＡＴデバイスがクライアントシステムのマッピングを変更しているか否かを評価するために、クライアントシステムの通常のアドレスメッセージを受信する。上述したように若干のＮＡＴデバイスは、一定期間後マッピングを「タイムアウト」し、別の公開ネットワークアドレスをクライアントシステムに割り当てる。記録されている（例えば、クライアントシステムの第１アドレスメッセージにおいて受信した）公開ネットワークアドレスと通常のアドレスメッセージにおいて受信した公開ネットワークアドレスを定期的に比較することによって、コンフィグレーションサーバは、ＮＡＴデバイスによってクライアントシステムに割り当てられた公開ネットワークアドレスを変更したか、又はマッピングがどのくらいの頻度で変更したか否かを評価する。コンフィグレーションサーバは、またＮＡＴデバイスの形式を推定するために（例えば、他のモデルが、登録された期間でマッピングを変更する間、又は登録された「タイムアウト」期間を有する場合、マッピングを変更しない）この評価を用いることも可能である。
【００５７】
本発明の種々の実施形態は、電子ハードウェア、コンピュータソフトウェア、又はこれらのテクノロジーの組み合わせによって実現される。大部分の実施形態は、プログラム化されたコンピュータによって実現された１以上のコンピュータプログラムを含む。例えば、図１２を参照した一実施形態では、クライアントシステム１２０５とコンフィグレーションサーバシステム１２２５の各々は、上述したネットワークシステムのそれぞれの態様を実装する１以上のプログラム化されたコンピュータを含む。各コンピュータは概して、１以上のプロセッサと、１以上のデータ記録構成部分（例えば、揮発性又は不揮発性メモリモジュール、持続性光学記録デバイス、ハードディスクドライブやフロッピイディスクドライブやＣＤ−ＲＯＭドライブや磁気テープドライブのような磁気記録ドライブ）と、１以上の入力デバイス（例えば、マウスやキーボード）と、発信デバイス（ディスプレイコンソールやプリンタ）を含む。
【００５８】
コンピュータプログラムは、持続性記録媒体に通常記録され、実行時間でメモリ内にコピーされる実行可能コードを含む。プロセッサは、所定の順序でメモリのプログラム命令を検索することによってコードを実行する。プログラムコードを実行すると、コンピュータは、入力及び／又は記録デバイスのデータを受信し、データに関する操作を実行し、結果データを発信及び／記録デバイスに配信する。
【００５９】
本発明の種々の実施形態は、説明目的のために記載されたものである。しかし、当業者であれば、本発明の範囲以内でさらなる実施形態を追加することは可能である。従って、本発明は、上述した実施形態に限定されるものではない。
【００６０】
本発明の種々の実施形態は、電子ハードウェア、コンピュータ、ソフトウェア、またはこれらのテクノロジーの組み合わせにより実現される。殆どの実施形態は、プログラム可能であるコンピュータによって実行される１つ以上のコンピュータを有する。例えば図１２を参照すると、ある実施形態においては、クライアントシステム１２０５とコンフィグレーションサーバシステム１２２５との各々は、上述したネットワークシステムの各態様を１つ以上実装するプログラム可能なコンピュータを有する。一般に、個々のコンピュータは、１つ以上のプロセッサと、１つ以上のデータ記録コンポーネント（例えば、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ−ＲＯＭドライブ、磁気テープドライブのような、揮発性メモリモジュールまたは不揮発性メモリモジュール、永続的な光記録デバイスや磁気記録デバイス）と、１つ以上の入力デバイス（例えば、マウスやキーボード）と、１つ以上の出力デバイス（例えば、ディスプレイコンソールとプリンター）を有する。
【００６１】
コンピュータプログラムは、通常永続的記録媒体に記録されて、実行時にメモリにコピーされる、実行可能なコードを有する。プロセッサは、所定の順序でメモリからプログラム命令を検索することによって前述のコードを実行する。プログラムコードを実行すると、コンピュータは、入力および／もしくは記録デバイスからデータを受信し、データ上で操作を実行し、結果データを発信デバイスおよび／もしくは記録デバイスに配信する。
【００６２】
本発明の種々の実施形態が記載によって説明されたが、当業者にとってさらなる実施形態を追加することも可能であり、これらも本発明の範囲に含まれる。従って、本発明は、上述した実施形態のみに制限されるものではない。
【図面の簡単な説明】
【００６３】
【図１】ネットワークシステムアーキテクチャの説明図。
【図２】クライアントシステムの一実施形態のブロック図。
【図３】２つのクライアントシステム間におけるピアツーピアネットワーク通信の確立及び保持処理のフローチャート。
【図４】クライアントシステムにおいてローカルおよび公開ネットワークアドレスを発見する処理のフローチャート。
【図５】２つのクライアントシステムにおけるローカルおよび公開ネットワークアドレスの共有する処理のフローチャート。
【図６】第１クライアントシステムにおける第２クライアントシステムとの通信を確立する処理のフローチャート。
【図７】第２クライアントシステムにおける第１クライアントシステムとの通信の確立処理のフローチャート。
【図８】クライアントシステムにおける、接続されたＮＡＴデバイスに割り当てられたマッピングを保持する処理のフローチャート。
【図９Ａ】ネットワーク構成の他の実施形態の説明図。
【図９Ｂ】ネットワーク構成の他の実施形態の説明図。
【図９Ｃ】ネットワーク構成の他の実施形態の説明図。
【図１０】クライアントシステムのネットワーク構成を評価する構築サーバのフローチャート。
【図１１】ローカルネットワークアドレスと公開ネットワークアドレスを比較することによってクライアントシステムのネットワーク構成を評価するフローチャート。
【図１２】コンフィグレーションサーバを有するネットワークシステムを示す。
【図１３】二つのコンフィグレーションサーバを有するネットワークシステムを示す。
【図１４】ＮＡＴデバイスが送信先依存ＮＡＴデバイスか否かを評価する際に、二つのコンフィグレーションサーバを用いるフローチャートを示す。
【図１】
2005525751.tif 000003
【図２】
2005525751.tif 000004
【図３】
2005525751.tif 000005
【図４】
2005525751.tif 000006
【図５】
2005525751.tif 000007
【図６】
2005525751.tif 000008
【図７】
2005525751.tif 000009
【図８】
2005525751.tif 000010
【図９Ａ】
2005525751.tif 000011
【図９Ｂ】
2005525751.tif 000012
【図９Ｃ】
2005525751.tif 000013
【図１０】
2005525751.tif 000014
【図１１】
2005525751.tif 000015
【図１２】
2005525751.tif 000016
【図１３】
2005525751.tif 000017
【図１４】
2005525751.tif 000018
【国際調査報告】
2005525751.tif 000019
2005525751.tif 000020