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