(57)【特許請求の範囲】
【請求項１】
インターネットを備えるネットワークに接続可能な通信装置であって、
前記ネットワーク上のサーバと通信して、自装置に割り当てられている前記インターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、
自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、
自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、
Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、前記ネットワーク上のサーバを介して、前記第１のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、および前記第１のローカルアドレス情報を通知するアドレス情報通知手段と、
前記ネットワーク上のサーバを介して、前記通信相手の通信装置に割り当てられている前記インターネット上のアドレスに関する情報である第２のグローバルアドレス情報、前記通信相手の通信装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および前記通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、
前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記ＷＡＮ側アドレス情報、ならびに前記ローカルアドレス情報に基づいて、前記通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する、通信装置。
【請求項２】
さらに、自装置に直接接続されたルータに対して、アドレス変換ルールを設定させるＮＡＴ設定要求手段を備え、
前記ＷＡＮ側アドレス情報取得手段は、前記ルータに設定された前記アドレス変換ルールに基づいて、自装置に割り当てられている前記第１のＷＡＮ側アドレス情報を取得する、請求項１に記載の通信装置。
【請求項３】
さらに、前記ＮＡＴ設定要求手段が前記アドレス変換ルールを設定すべきか否かを判断するＮＡＴ設定判断手段を備え、
前記ＮＡＴ設定判断手段によって前記アドレス変換ルールを設定すべきと判断されなかった場合、前記ＮＡＴ設定要求手段に前記アドレス変換ルールを設定させずに、前記通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する、請求項１に記載の通信装置。
【請求項４】
さらに、前記アドレス情報取得手段によって取得された前記第２のグローバルアドレス情報、前記第２のＷＡＮ側アドレス情報、および前記第２のローカルアドレス情報の内、いずれか一つのアドレス情報を使用して前記通信相手の通信装置とＰ２Ｐ通信を開始するか否かを判断する使用アドレス情報判断手段と、
前記使用アドレス情報判断手段によって前記いずれか一つのアドレス情報を使用してＰ２Ｐ通信を開始すると判断された場合、当該アドレス情報を使用して、前記通信相手の通信装置とＰ２Ｐ通信を開始するＰ２Ｐ通信処理手段とを備える、請求項１に記載の通信装置。
【請求項５】
前記使用アドレス情報判断手段は、前記第２のグローバルアドレス情報、前記第２のＷＡＮ側アドレス情報、および前記第２のローカルアドレス情報の内、いずれか一つのアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、前記通信相手の通信装置から応答が返ってきたら、前記宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する、請求項４に記載の通信装置。
【請求項６】
前記使用アドレス情報判断手段は、前記通信相手の通信装置からのＰ２Ｐ接続要求を受信したら、当該Ｐ２Ｐ接続要求の送信元アドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断し、
前記Ｐ２Ｐ通信処理手段は、前記使用アドレス情報判断手段によって前記送信元アドレス情報を使用してＰ２Ｐ通信を開始すると判断された場合、当該送信元アドレス情報を使用して、前記通信相手の通信装置とＰ２Ｐ通信を開始する、請求項５に記載の通信装置。
【請求項７】
前記使用アドレス情報判断手段によって前記いずれか一つのアドレス情報を使用してＰ２Ｐ通信を開始すると判断されず、かつ前記送信元アドレス情報を使用してＰ２Ｐ通信を開始すると判断されなかった場合、前記Ｐ２Ｐ通信処理手段は、前記サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断する、請求項６に記載の通信装置。
【請求項８】
前記使用アドレス情報判断手段は、前記第１のグローバルアドレス情報に含まれる第１のグローバルＩＰアドレスと前記第２のグローバルアドレス情報に含まれる第２のグローバルＩＰアドレスとが等しいか否かを判断し、
前記第１のグローバルＩＰアドレスと前記第２のグローバルＩＰアドレスとが等しくない場合、当該第２のグローバルＩＰアドレスに対応するアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、前記通信相手の通信装置から応答が返ってきたら、前記宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断し、
前記第１のグローバルＩＰアドレスと前記第２のグローバルＩＰアドレスとが等しい場合、前記第２のＷＡＮ側アドレス情報および前記第２のローカルアドレス情報の内、いずれか一つのアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、前記通信相手の通信装置から応答が返ってきたら、前記宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する、請求項５に記載の通信装置。
【請求項９】
前記使用アドレス情報判断手段は、
前記第１および第２のグローバルアドレス情報ならびに前記第１および第２のＷＡＮ側アドレス情報が、予め定められたタイプの内、如何なるタイプに属するか否かを判断し、
前記第１および第２のグローバルアドレス情報ならびに前記第１および第２のＷＡＮ側アドレス情報が属するタイプに応じて、宛先として使用するアドレス情報を、前記第２のグローバルアドレス情報、前記第２のＷＡＮ側アドレス情報、および前記第２のローカルアドレス情報の中から予め決めておき、
前記第１および第２のグローバルアドレス情報ならびに前記第１および第２のＷＡＮ側アドレス情報が属するタイプに応じたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する、請求項４に記載の通信装置。
【請求項１０】
前記予め定められたタイプは、
前記通信相手の通信装置と前記インターネットを介して接続されていることを示す第１のタイプと、
前記通信相手の通信装置と前記インターネットを介して接続されていないことを示す第２のタイプと、
前記通信相手の通信装置に直接接続されたルータが静的ＮＡＴ設定されていることを示す第３のタイプと、
前記通信相手の通信装置に直接接続されたルータが静的ＮＡＴ設定されていないことを示す第４のタイプと、
前記通信相手の通信装置から前記インターネットまでの間にルータが一つしか存在しないことを示す第５のタイプと、
前記通信相手の通信装置から前記インターネットまでの間にルータが少なくとも２つ存在することを示す第６のタイプと、
前記第１のＷＡＮ側アドレス情報に含まれる第１のＷＡＮ側ＩＰアドレスと前記第２のＷＡＮ側アドレス情報に含まれる第２のＷＡＮ側ＩＰアドレスとが一致することを示す第７のタイプと、
前記第１のＷＡＮ側アドレス情報に含まれる第１のＷＡＮ側ＩＰアドレスと前記第２のＷＡＮ側アドレス情報に含まれる第２のＷＡＮ側ＩＰアドレスとが一致しないことを示す第８のタイプと、
自装置に直接接続されたルータが静的ＮＡＴ設定されていることを示す第９のタイプと、
自装置に直接接続されたルータが静的ＮＡＴ設定されていないことを示す第１０のタイプと、
自装置から前記インターネットまでの間にルータが一つしか存在しないことを示す第１１のタイプと、
自装置から前記インターネットまでの間にルータが少なくとも２つ存在することを示す第１２のタイプとであり、
前記使用アドレス情報判断手段は、前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、ならびに前記第２のＷＡＮ側アドレス情報が属するタイプに応じて、前記第２のＷＡＮ側アドレス情報、前記第２のローカルアドレス情報、及び前記通信相手の通信端末からの通信路接続要求における送信元アドレス情報のいずれか一つのアドレス情報を用いてＰ２Ｐ通信を開始するか、Ｐ２Ｐ通信方式を切り替えてＰ２Ｐ通信を開始するかを決定する、請求項９に記載の通信装置。
【請求項１１】
前記Ｐ２Ｐ通信処理手段は、前記通信相手の通信装置とのＰ２Ｐ通信のための通信路が確立されていない場合、前記サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断する、請求項１０に記載の通信装置。
【請求項１２】
前記使用アドレス情報判断手段は、前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、前記第２のＷＡＮ側アドレス情報、前記第１のローカルアドレス情報、および前記第２のローカルアドレス情報のいずれか一つのアドレス情報を用いて前記通信相手の通信装置とのＰ２Ｐ通信が可能であるか否かを判断し、
前記Ｐ２Ｐ通信処理手段は、前記使用アドレス情報判断手段によって前記通信相手の通信装置とのＰ２Ｐ通信が不可能であると判断された場合、前記サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断する、請求項４に記載の通信装置。
【請求項１３】
前記ルータに設定されている不要なアドレス変換ルールを削除するＮＡＴ設定変更要求手段をさらに備える、請求項２に記載の通信装置。
【請求項１４】
Ｐ２Ｐ通信開始の後、前記ルータに設定されている前記アドレス変換ルールを、通信相手を限定する相手限定型に変更するＮＡＴ設定変更要求手段をさらに備える、請求項２に記載の通信装置。
【請求項１５】
インターネットを備えるネットワークに接続可能な通信装置が他の通信装置との間でＰ２Ｐ通信するための方法であって、
前記ネットワーク上のサーバと通信して、自装置に割り当てられている前記インターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するステップと、
自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するステップと、
自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するステップと、
前記他の通信装置に対して、前記ネットワーク上のサーバを介して、前記第１のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、および前記第１のローカルアドレス情報を通知するステップと、
前記ネットワーク上のサーバを介して、前記他の通信装置に割り当てられている前記インターネット上でのアドレスに関する情報である第２のグローバルアドレス情報、前記他の通信装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および前記他の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するステップと、
前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記ＷＡＮ側アドレス情報、ならびに前記ローカルアドレス情報に基づいて、前記他の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断するステップとを含む、方法。
【請求項１６】
インターネットを備えるネットワークに接続可能なコンピュータ装置が他のコンピュータ装置との間でＰ２Ｐ通信するように、前記コンピュータ装置を動作させるプログラムであって、
前記コンピュータ装置に、
前記ネットワーク上のサーバと通信して、自装置に割り当てられている前記インターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するステップと、
自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するステップと、
自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するステップと、
前記他のコンピュータ装置に対して、前記ネットワーク上のサーバを介して、前記第１のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、および前記第１のローカルアドレス情報を通知するステップと、
前記ネットワーク上のサーバを介して、前記他のコンピュータ装置に割り当てられている前記インターネット上でのアドレスに関する情報である第２のグローバルアドレス情報、前記他のコンピュータ装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および前記他のコンピュータ装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するステップと、
前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記ＷＡＮ側アドレス情報、ならびに前記ローカルアドレス情報に基づいて、前記他のコンピュータ装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断するステップとを実行させる、プログラム。
【請求項１７】
ネットワークに接続可能な通信装置であって、
前記ネットワーク上のサーバと通信して、前記サーバが属するサブネットワーク上で、自装置に割り当てられているアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、
自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、
自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、
Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、前記ネットワーク上のサーバを介して、前記第１のグローバルアドレス情報、前記第１のＷＡＮ側アドレス情報、および前記第１のローカルアドレス情報を通知するアドレス情報通知手段と、
前記ネットワーク上のサーバを介して、前記通信相手の通信装置に割り当てられている前記サブネットワーク上のアドレスに関する情報である第２のグローバルアドレス情報、前記通信相手の通信装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および前記通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、
前記第１のグローバルアドレス情報、前記第２のグローバルアドレス情報、前記ＷＡＮ側アドレス情報、ならびに前記ローカルアドレス情報に基づいて、前記通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する、通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークで用いられる通信装置、方法、およびプログラムに関し、より特定的には、ピア・ツー・ピア通信（以下、Ｐ２Ｐ通信と呼ぶ）を実現するための通信装置、方法、およびプログラムに関する。
【背景技術】
【０００２】
１つのグローバルアドレスを用いて宅内の複数のユーザ端末をインターネットに接続可能とするための技術として、アドレス変換ルールによるＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ：ＮＡＴは、Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ（ＮＡＰＴ）を含む概念である）技術が使用されている。ＮＡＴ技術において、ルータは、電文をＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）側からＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）側にルーティングする場合、送信元アドレス情報をＷＡＮ側アドレス情報に変換する。ＷＡＮ側からＬＡＮ側にルーティングする場合、ルータは、アドレス変換ルール、すなわち、ＮＡＴ変換表に従って、宛先アドレス情報をＷＡＮ側アドレス情報からＬＡＮ側アドレス情報に変換する。
【０００３】
しかし、ＮＡＴ技術を使用しているネットワーク環境において、相手方のユーザ端末とＰ２Ｐ通信するためには、以下の（１）、（２）の条件が必要である。
（１）Ｐ２Ｐ通信を行うユーザ端末間の通信経路上のルータアドレス変換ルールが適切に設定されていること。
（２）Ｐ２Ｐ通信相手の適切なアクセス先アドレス情報を入手していること。
【０００４】
（２）の適切なアクセス先アドレス情報は、ユーザ端末間がインターネットのようなグローバルアドレスを使用するネットワークで接続されている場合、グローバルアドレスの情報（ＩＰアドレス、ポート番号）となる。このグローバルアドレス情報は、たとえば、ユーザ端末とインターネットとの間のルータに設定されたアドレス変換ルールの内、インターネットに接続しているルータに設定されたアドレス変換ルールのＷＡＮ側アドレスとポート番号である。
【０００５】
一方、ユーザ端末間がプライベートネットワーク内のルータで接続されている場合、アクセス先のアドレス情報は、ユーザ端末間が共通に接続しているセグメントのアドレス情報である必要がある。たとえば、図１のユーザ端末１ａとユーザ端末１ｂとにおいて、ルータ２ＡのＬＡＮ側セグメントが共通のセグメントとなる。また、ユーザ端末１ａとユーザ端末１ｃ又は１ｄでは、ルータ２ＣのＬＡＮ側セグメントが共通のセグメントとなる。
【０００６】
このように、ユーザ端末間がプライベートネットワーク内のルータで接続されている場合、適切なアクセス先アドレス情報は、通信先ユーザ端末により変化する。その具体的なアドレス情報は、通信相手のアドレス情報であったり、通信相手が接続しているルータに設定されたアドレス変換ルールのＷＡＮ側アドレスとポート番号とであったりする。
【０００７】
このような条件が常に満たれていることは、保障されていない。したがって、一般的に、Ｐ２Ｐ通信は、非常に困難である。
【０００８】
ユーザ端末間がインターネットで接続され、ユーザ端末とインターネットとの間に１台のルータだけが存在する限定された条件で、上記（１）および（２）の条件を満たす技術として、ユーザ端末から動的に上位ルータのＮＡＴ変換表を設定するＵＰｎＰ  Ｉｎｔｅｒｎｅｔ  Ｇａｔｅｗａｙ  Ｄｅｖｉｃｅ  （ＩＧＤ）  Ｄｅｖｉｃｅ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ（以下、ＵＰｎＰ・ＩＧＤと記述）を用いる方法が知られている。
【０００９】
また、各ネットワーク内にＮＡＴ越え用に設定されているコミュニケータを設置しておき、各ユーザ端末は、当該コミュニケータを介して通信する方式が提案されている（例えば、特許文献１を参照）。
【特許文献１】特開２００３−８７２８８号公報（第２頁〜第４頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従来のＵＰｎＰ・ＩＧＤを用いる方法では、ユーザ端末が上位ルータに対してＮＡＴ変換表を設定する方法と、ユーザ端末が上位ルータのＷＡＮ側アドレスを取得する方法とが提案されている。しかし、ＵＰｎＰ・ＩＧＤだけでは、複雑なネットワーク内で、Ｐ２Ｐ通信を実現することはできない。
【００１１】
また、特許文献１に提案されている方法では、ユーザ端末間のネットワークが動的に変化する場合には、Ｐ２Ｐ通信を実現することができない。
【００１２】
それゆえ、本発明の目的は、複雑にネットワークが構成されている通信環境においても、Ｐ２Ｐ通信を実現することができる通信装置、方法、およびプログラムを提供することである。本発明の更なる目的は、ネットワーク構成が動的に変化する場合にもＰ２Ｐ通信を実現することができる通信装置、方法、およびプログラムを提供することである。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、以下のような特徴を有する。本発明は、インターネットを備えるネットワークに接続可能な通信装置であって、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するアドレス情報通知手段と、ネットワーク上のサーバを介して、通信相手の通信装置に割り当てられているインターネット上のアドレスに関する情報である第２のグローバルアドレス情報、通信相手の通信装置に直接接続されたルータに割り当てられているＷＡＮ側のアドレスに関する情報である第２のＷＡＮ側アドレス情報、および通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、第１のグローバルアドレス情報、第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する。
【００１４】
本発明によれば、ネットワークが複雑に構成されている場合であっても、Ｐ２Ｐ通信を所望する通信装置同士は、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を得ることができる。通信装置は、第１のグローバルアドレス情報、第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する。したがって、複雑にネットワークが構成されている通信環境においても、Ｐ２Ｐ通信を実現することができる通信装置が提供されることとなる。グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報は、ネットワーク構成が動的に変化したとしても、当該変化に応じて、新たに取得することができる。よって、ネットワーク構成が動的に変化する場合にもＰ２Ｐ通信を実現することができる通信装置が提供される。
【００１５】
好ましくは、さらに、自装置に直接接続されたルータに対して、アドレス変換ルールを設定させるＮＡＴ設定要求手段を備え、ＷＡＮ側アドレス情報取得手段は、ルータに設定されたアドレス変換ルールに基づいて、自装置に割り当てられている第１のＷＡＮ側アドレス情報を取得するとよい。
【００１６】
好ましくは、さらに、ＮＡＴ設定要求手段がアドレス変換ルールを設定すべきか否かを判断するＮＡＴ設定判断手段を備え、ＮＡＴ設定判断手段によってアドレス変換ルールを設定すべきと判断されなかった場合、ＮＡＴ設定要求手段にアドレス変換ルールを設定させずに、通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断するとよい。
【００１７】
これにより、不必要なＮＡＴ設定が行われなくなるので、セキュリティの向上、処理の高速化が期待できる。
【００１８】
好ましくは、本発明は、さらに、アドレス情報取得手段によって取得された第２のグローバルアドレス情報、第２のＷＡＮ側アドレス情報、および第２のローカルアドレス情報の内、いずれか一つのアドレス情報を使用して通信相手の通信装置とＰ２Ｐ通信を開始するか否かを判断する使用アドレス情報判断手段と、使用アドレス情報判断手段によっていずれか一つのアドレス情報を使用してＰ２Ｐ通信を開始すると判断された場合、当該アドレス情報を使用して、通信相手の通信装置とＰ２Ｐ通信を開始するＰ２Ｐ通信処理手段とを備える。
【００１９】
これにより、通信装置は、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報の内、いずれか一つのアドレス情報を使用して、Ｐ２Ｐ通信を開始することができる。
【００２０】
好ましくは、使用アドレス情報判断手段は、第２のグローバルアドレス情報、第２のＷＡＮ側アドレス情報、および第２のローカルアドレス情報の内、いずれか一つのアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、通信相手の通信装置から応答が返ってきたら、宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断するとよい。
【００２１】
これにより、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を用いたＰ２Ｐ接続要求が試されることとなる。Ｐ２Ｐ接続要求が試された結果、通信相手からの応答が返ってくるということは、Ｐ２Ｐ接続要求を試した際に用いられたアドレス情報を用いて、Ｐ２Ｐ通信が可能であること意味する。したがって、このような場合、通信装置は、当該アドレス情報を用いて、Ｐ２Ｐ通信を開始することができる。
【００２２】
好ましくは、使用アドレス情報判断手段は、通信相手の通信装置からのＰ２Ｐ接続要求を受信したら、当該Ｐ２Ｐ接続要求の送信元アドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断し、Ｐ２Ｐ通信処理手段は、使用アドレス情報判断手段によって送信元アドレス情報を使用してＰ２Ｐ通信を開始すると判断された場合、当該送信元アドレス情報を使用して、通信相手の通信装置とＰ２Ｐ通信を開始するとよい。
【００２３】
これにより、通信装置は、通信相手からのＰ２Ｐ接続要求の送信元アドレスを逆に辿るようにして、当該通信相手とＰ２Ｐ通信することができる。したがって、通信相手のアドレス情報を用いてＰ２Ｐ接続ができなかったとしても、通信装置は、通信相手からのＰ２Ｐ接続要求の送信元アドレス情報を用いて、Ｐ２Ｐ通信することができる。
【００２４】
好ましくは、使用アドレス情報判断手段によっていずれか一つのアドレス情報を使用してＰ２Ｐ通信を開始すると判断されず、かつ送信元アドレス情報を使用してＰ２Ｐ通信を開始すると判断されなかった場合、Ｐ２Ｐ通信処理手段は、サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断するとよい。
【００２５】
このように、Ｐ２Ｐ通信方式を切り替えることによって、Ｐ２Ｐ通信が可能となる。したがって、ネットワーク構成がいかに複雑であったとしても、Ｐ２Ｐ通信が可能となることが期待される。
【００２６】
好ましくは、使用アドレス情報判断手段は、第１のグローバルアドレス情報に含まれる第１のグローバルＩＰアドレスと第２のグローバルアドレス情報に含まれる第２のグローバルＩＰアドレスとが等しいか否かを判断し、第１のグローバルＩＰアドレスと第２のグローバルＩＰアドレスとが等しくない場合、当該グローバルＩＰアドレスに対応するアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、通信相手の通信装置から応答が返ってきたら、宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断し、第１のグローバルＩＰアドレスと第２のグローバルＩＰアドレスとが等しい場合、第２のＷＡＮ側アドレス情報および第２のローカルアドレス情報の内、いずれか一つのアドレス情報を宛先としてＰ２Ｐ接続要求を送信し、通信相手の通信装置から応答が返ってきたら、宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断するとよい。
【００２７】
これにより、通信装置は、通信相手との通信がインターネットを介した通信であるか、それとも、宅内ネットワーク内での通信であるかを判断した上で、適切なアドレス情報を用いてＰ２Ｐ通信を試みることとなる。したがって、無駄な処理が省かれることとなる。
【００２８】
好ましくは、使用アドレス情報判断手段は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が、予め定められたタイプの内、如何なるタイプに属するか否かを判断し、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じて、宛先として使用するアドレス情報を、第２のグローバルアドレス情報、第２のＷＡＮ側アドレス情報、および第２のローカルアドレス情報の中から予め決めておき、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断するとよい。
【００２９】
ネットワークの構成によって、用いるべき適切なアドレス情報は、決まっている。したがって、このように、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が、いかなるタイプに属するか判断し、当該タイプに応じて、用いるアドレス情報を予め定義しておくことによっても、Ｐ２Ｐ通信が可能となる。これにより、通信装置は、Ｐ２Ｐ接続要求の試行回数を減らすことができる。よって、Ｐ２Ｐ通信路確立のための時間が短縮される。
【００３０】
好ましくは、予め定められたタイプは、通信相手の通信装置とインターネットを介して接続されていることを示す第１のタイプと、通信相手の通信装置とインターネットを介して接続されていないことを示す第２のタイプと、通信相手の通信装置に直接接続されたルータが静的ＮＡＴ設定されていることを示す第３のタイプと、通信相手の通信装置に直接接続されたルータが静的ＮＡＴ設定されていないことを示す第４のタイプと、通信相手の通信装置からインターネットまでの間にルータが一つしか存在しないことを示す第５のタイプと、通信相手の通信装置からインターネットまでの間にルータが少なくとも２つ存在することを示す第６のタイプと、第１のＷＡＮ側アドレス情報に含まれる第１のＷＡＮ側ＩＰアドレスと第２のＷＡＮ側アドレス情報に含まれる第２のＷＡＮ側ＩＰアドレスとが一致することを示す第７のタイプと、第１のＷＡＮ側アドレス情報に含まれる第１のＷＡＮ側ＩＰアドレスと第２のＷＡＮ側アドレス情報に含まれる第２のＷＡＮ側ＩＰアドレスとが一致しないことを示す第８のタイプと、自装置に直接接続されたルータが静的ＮＡＴ設定されていることを示す第９のタイプと、自装置に直接接続されたルータが静的ＮＡＴ設定されていないことを示す第１０のタイプと、自装置からインターネットまでの間にルータが一つしか存在しないことを示す第１１のタイプと、自装置からインターネットまでの間にルータが少なくとも２つ存在することを示す第１２のタイプとであり、使用アドレス情報判断手段は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じて、第２のＷＡＮ側アドレス情報、第２のローカルアドレス情報、または通信相手の通信端末からの通信路接続要求における送信元アドレス情報のいずれか一つのアドレス情報を用いてＰ２Ｐ通信を開始するか、Ｐ２Ｐ通信方式を切り替えてＰ２Ｐ通信を開始するかを決定するとよい。
【００３１】
これにより、インターネットとユーザ端末との間に存在するルータが二つ以下である場合、ほぼ確実にＰ２Ｐ通信が実現されることが期待できる。
【００３２】
好ましくは、Ｐ２Ｐ通信処理手段は、通信相手の通信装置とのＰ２Ｐ通信のための通信路が確立されていない場合、サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断するとよい。
【００３３】
これにより、インターネットとユーザ端末との間に存在するルータが三つ以上である場合も、ほぼ確実にＰ２Ｐ通信が実現されることが期待できる。
【００３４】
好ましくは、使用アドレス情報判断手段は、第１のグローバルアドレス情報、第２のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、第２のＷＡＮ側アドレス情報、第１のローカルアドレス情報、および第２のローカルアドレス情報のいずれか一つのアドレス情報を用いて通信相手の通信装置とのＰ２Ｐ通信が可能であるか否かを判断し、Ｐ２Ｐ通信処理手段は、使用アドレス情報判断手段によって通信相手の通信装置とのＰ２Ｐ通信が不可能であると判断された場合、サーバを介したＰ２Ｐ通信方式またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始すると判断するとよい。
【００３５】
これにより、交換したアドレス情報を用いてＰ２Ｐ通信が可能か否かが判断され、不可能である場合、Ｐ２Ｐ通信方式が切り替えられることとなる。したがって、無駄な試行や処理が省かれ、Ｐ２Ｐ通信をより迅速に実現することができる。
【００３６】
好ましくは、ルータに設定されている不要なアドレス変換ルールを削除するＮＡＴ設定変更要求手段をさらに備えるとよい。
【００３７】
これにより、無駄なアドレス変換ルールの設定が削除され、ルータの処理負担を軽減することができる。
【００３８】
好ましくは、Ｐ２Ｐ通信開始の後、ルータに設定されているアドレス変換ルールを、通信相手を限定する相手限定型に変更するＮＡＴ設定変更要求手段をさらに備えるとよい。
【００３９】
これにより、セキュリティを高めることができる。
【００４０】
また、本発明は、インターネットを備えるネットワークに接続可能な通信装置が他の通信装置との間でＰ２Ｐ通信するための方法であって、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するステップと、自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するステップと、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するステップと、他の通信装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するステップと、ネットワーク上のサーバを介して、他の通信装置に割り当てられているインターネット上でのアドレスに関する情報である第２のグローバルアドレス情報、他の通信装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および他の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するステップと、第１のグローバルアドレス情報、第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、他の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断するステップとを備える。
【００４１】
また、本発明は、インターネットを備えるネットワークに接続可能なコンピュータ装置が他のコンピュータ装置との間でＰ２Ｐ通信するように、コンピュータ装置を動作させるプログラムであって、コンピュータ装置に、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するステップと、自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するステップと、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するステップと、他のコンピュータ装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するステップと、ネットワーク上のサーバを介して、他のコンピュータ装置に割り当てられているインターネット上でのアドレスに関する情報である第２のグローバルアドレス情報、他のコンピュータ装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および他のコンピュータ装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するステップと、第１のグローバルアドレス情報、第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、他のコンピュータ装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断するステップとを実行させる。
【００４２】
また、本発明は、インターネットを備えるネットワーク上に形成されたシステムであって、ネットワークに接続可能な第１の通信装置と第２の通信装置とを備え、第１および第２の通信装置は、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、自装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するアドレス情報通知手段と、ネットワーク上のサーバを介して、通信相手の通信装置に割り当てられているインターネット上のアドレスに関する情報である第２のグローバルアドレス情報、通信相手の通信装置の直上に存在するルータに割り当てられているＷＡＮ側のアドレスに関する情報である第２のＷＡＮ側アドレス情報、および通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断する。
【００４３】
また、本発明は、インターネットを備えるネットワークに接続可能な通信装置に内蔵される集積回路であって、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、自装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するアドレス情報通知手段と、ネットワーク上のサーバを介して、通信相手の通信装置に割り当てられているインターネット上のアドレスに関する情報である第２のグローバルアドレス情報、通信相手の通信装置の直上に存在するルータに割り当てられているＷＡＮ側のアドレスに関する情報である第２のＷＡＮ側アドレス情報、および通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断する。
【００４４】
また、本発明は、インターネットを備えるネットワークに接続可能なコンピュータ装置が他のコンピュータ装置との間でＰ２Ｐ通信するように、コンピュータ装置を動作させるプログラムを記録したコンピュータ読み取り可能な記録媒体であって、プログラムは、コンピュータ装置に、ネットワーク上のサーバと通信して、自装置に割り当てられているインターネット上でのアドレスに関する情報を第１のグローバルアドレス情報として取得するステップと、自装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するステップと、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するステップと、他のコンピュータ装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するステップと、ネットワーク上のサーバを介して、他のコンピュータ装置に割り当てられているインターネット上でのアドレスに関する情報である第２のグローバルアドレス情報、他のコンピュータ装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および他のコンピュータ装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するステップと、第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断するステップとを実行させる。
【００４５】
また、本発明は、ネットワークに接続可能な通信装置であって、ネットワーク上のサーバと通信して、サーバが属するサブネットワーク上で、自装置に割り当てられているアドレスに関する情報を第１のグローバルアドレス情報として取得するグローバルアドレス情報取得手段と、自装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得するＷＡＮ側アドレス情報取得手段と、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得するローカルアドレス情報取得手段と、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、ネットワーク上のサーバを介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知するアドレス情報通知手段と、ネットワーク上のサーバを介して、通信相手の通信装置に割り当てられているサブネットワーク上のアドレスに関する情報である第２のグローバルアドレス情報、通信相手の通信装置に直接接続されたルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報、および通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報を取得するアドレス情報取得手段とを備え、第１のグローバルアドレス情報、第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、通信相手の通信装置とＰ２Ｐ通信するためのアクセス先アドレス情報又は通信手順を判断する。
【発明の効果】
【００４６】
以上、本発明によれば、複雑にネットワークが構成されている通信環境においても、Ｐ２Ｐ通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。さらに、ネットワーク構成が動的に変化する場合にもＰ２Ｐ通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。
【００４７】
本発明のこれらおよび他の目的、特徴、局面、効果は、添付図面と照合して、以下の詳細な説明から一層明らかになるであろう。
【発明を実施するための最良の形態】
【００４８】
以下、本発明の実施形態について、図面を参照しながら説明する。以下の説明において、アドレスは、ＩＰアドレスを指す。アドレス情報は、ＩＰアドレスおよびポート番号を含む。アドレス情報は、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報に分類される。ＩＰアドレスは、グローバルＩＰアドレス、ＷＡＮ側ＩＰアドレス、およびローカルＩＰアドレスに分類させる。したがって、グローバルアドレス情報は、グローバルＩＰアドレスおよびポート番号を含む。ＷＡＮ側アドレス情報は、ＷＡＮ側ＩＰアドレスおよびポート番号を含む。ローカルアドレス情報は、ローカルＩＰアドレスおよびポート番号を含む。
【００４９】
（第１の実施形態）
図１Ａは、本発明の第１の実施形態におけるＰ２Ｐ通信制御が実行されるネットワークの構成の一例を示す図である。図１Ａにおいて、ネットワーク全体は、宅内ネットワーク１と、宅内ネットワーク２と、Ｐ２Ｐサーバ３と、インターネット４とを備える。なお、宅内ネットワークの数およびＰ２Ｐサーバの数は、図１Ａに示した例に限られない。
【００５０】
宅内ネットワーク１は、複数のルータ２Ａ，２Ｂ，２Ｃと、複数のユーザ端末１ａ，１ｂ，１ｃ，１ｄとを備える。なお、宅内ネットワーク１におけるルータの数やユーザ端末の数は、図１Ａに示した例に限られない。ルータ２Ａ，２Ｂ，２Ｃは、下位のネットワークのアドレス情報を上位のネットワークのアドレス情報に変換するためのアドレス変換ルールを設定するＮＡＴ機能部２１を備える。ルータ２Ａ，２Ｂ，２Ｃは、インターネット４と宅内のネットワーク（以下、サブネットという）との接続、又は、宅内の複数のサブネット間の接続を可能とする。なお、本発明において、ＮＡＴとは、アドレスを１対１に変換する狭義のＮＡＴに加え、ポート番号を用いてアドレスを１対Ｎに変換するＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）をも含む概念である。
【００５１】
宅内ネットワーク２は、ルータ２Ｄと、ユーザ端末１ｅとを備える。ルータ２Ｄは、ＮＡＴ機能部２１を備える。ルータ２Ｄは、ユーザ端末１ｅとインターネット４との接続を可能とする。なお、宅内ネットワーク２におけるルータの数やユーザ端末の数は、図１Ａに示した例に限られない。
【００５２】
Ｐ２Ｐサーバ３は、ユーザ端末１ａ〜１ｅとの間の通信路を持つ。Ｐ２Ｐサーバ３は、ユーザ端末１ａ〜１ｅの識別情報を管理して、ユーザ端末間の通信の中継する機能と、インターネットを介した通信を行うときに、ルータ２Ｃによって各ユーザ端末用に割り当てられるグローバルアドレス情報を各ユーザ端末に通知する機能とを有するサーバである。なお、Ｐ２Ｐサーバは、上記機能を有しさえすればよい。したがって、上記機能を有するサーバであれば、Ｐ２Ｐサーバの変わりとなり得る。また、ここでは、Ｐ２Ｐサーバ３は、インターネットに接続されていることとしたが、上記機能を実現することができるのであれば、Ｐ２Ｐサーバは、宅内ネットワーク内に存在してもよい。Ｐ２Ｐサーバが宅内ネットワークに存在する場合、Ｐ２Ｐサーバの機能がルータに組み込まれていてもよい。
【００５３】
インターネット４は、グローバルアドレス情報を用いて、通信を行う。
【００５４】
図２は、通信装置であるユーザ端末１ａ〜１ｅのハードウエア的構成を示すブロック図である。ユーザ端末１ａ〜１ｅは同様のハードウエア的構成を有しているので、以下、代表して、ユーザ端末１ａのハードウエア的構成について説明する。
【００５５】
図２において、ユーザ端末１ａは、中央処理装置１０と、主記憶装置１１と、補助記憶装置１２と、通信装置１３と、入出力装置１４とを備える。中央処理装置１０は、補助記憶装置１２または主記憶装置１１に記憶されているプログラムを、主記憶装置１１に読み込ませて、当該プログラムを実行し、ユーザ端末１ａ全体の動作を制御する。主記憶装置１１は、中央処理装置１０の動作に必要な情報を記憶する。補助記憶装置１２は、中央処理装置１０の動作に必要な情報を記憶すると共に、中央処理装置１０で実行されるプログラムを予め記憶している。ここでは、Ｐ２Ｐ通信を実現するためのプログラム（以下、Ｐ２Ｐ通信プログラムという）が、補助記憶装置１２に記憶されているとする。通信装置１３は、外部の装置との間の通信を実現するための装置である。入出力装置１４は、ユーザによる入力を受け付けるための装置および中央処理装置１０による処理結果を出力する装置である。ユーザ端末１ａは、Ｐ２Ｐ通信プログラムを実行することによって、他のユーザ端末との間のＰ２Ｐ通信を実現する。
【００５６】
図３Ａは、ユーザ端末１ａ〜１ｅおよびＰ２Ｐサーバ３に割り当てられているＩＰアドレスの一例を示す図である。図３Ａに示すように、ルータ２Ａの配下にあるユーザ端末１ａ，１ｂには、それぞれ、“１９２．１６８．０．Ｘ”系統のＩＰアドレスである“１９２．１６８．０．１００”および“１９２．１６８．０．１０１”が割り当てられている。ルータ２Ｃの配下にあるユーザ端末１ｃには、“１９２．１６８．１０．Ｘ”系統のＩＰアドレスである“１９２．１６８．１０．２”が割り当てられている。ルータ２Ｂの配下にあるユーザ端末１ｄには、“１９２．１６８．１．Ｘ”系統のＩＰアドレスである“１９２．１６８．１．１０”が割り当てられている。ルータ２Ｄの配下にあるユーザ端末１ｅには、“１９２．１６８．０．Ｘ”系統のＩＰアドレスである“１９２．１６８．０．３０”が割り当てられている。Ｐ２Ｐサーバ３には、“１３２．１８６．９．１０”が割り当てられている。Ｐ２Ｐサーバ３は、直接インターネットに接続されているので、Ｐ２Ｐサーバ３に割り当てられているＩＰアドレスは、グローバルＩＰアドレスである。
【００５７】
図３Ｂは、ルータに割り当てられているＷＡＮ側ＩＰアドレスおよびＬＡＮ側ＩＰアドレスの一例を示す図である。図３Ｂに示すように、ルータ２Ａには、ＷＡＮ側ＩＰアドレスとして“１９２．１６８．１０．５”が、ＬＡＮ側ＩＰアドレスとして“１９２．１６８．０．１”が割り当てられている。ルータ２Ａの配下のＩＰアドレスは、“１９２．１６８．０．Ｘ”系統であるので、ルータ２ＡのＬＡＮ側ＩＰアドレスは、“１９２．１６８．０．１”となっている。ルータ２Ｂには、ＷＡＮ側ＩＰアドレスとして“１９２．１６８．１０．４”が、ＬＡＮ側ＩＰアドレスとして“１９２．１６８．１．２５５”が割り当てられている。ルータ２Ｂの配下のＩＰアドレスは、“１９２．１６８．１．Ｘ”系統であるので、ルータ２ＢのＬＡＮ側ＩＰアドレスは、“１９２．１６８．１．２５５”となっている。ルータ２Ｃには、ＷＡＮ側ＩＰアドレスとして“１３３．１５２．６．５０”が、ＬＡＮ側ＩＰアドレスとして“１９２．１６８．１０．１”が割り当てられている。ルータ２Ｃの配下のＩＰアドレスは、“１９２．１６８．１０．Ｘ”系統であるので、ルータ２ＣのＬＡＮ側ＩＰアドレスは、“１９２．１６８．１０．１”となっている。また、ルータ２Ａはルータ２Ｃの配下であるので、ルータ２ＡのＷＡＮ側ＩＰアドレスは、“１９２．１６８．１０．Ｘ”系統である“１９２．１６８．１０．５”となっている。同様に、ルータ２Ｂはルータ２Ｃの配下であるので、ルータ２ＢのＷＡＮ側ＩＰアドレスは、“１９２．１６８．１０．Ｘ”系統である“１９２．１６８．１０．４”となっている。ルータ２Ｃはインターネット４に直接接続されているので、ルータ２ＣのＷＡＮ側ＩＰアドレスは、グローバルＩＰアドレスとなっている。ルータ２Ｄには、ＷＡＮ側ＩＰアドレスとして“１３３．１２１．２．１５”が、ＬＡＮ側ＩＰアドレスとして“１９２．１６８．０．１”が割り当てられている。ルータ２Ｄはインターネット４に直接接続されているので、ルータ２ＤのＷＡＮ側ＩＰアドレスは、グローバルＩＰアドレスとなっている。ルータ２Ａとルータ２Ｄとは、別の宅内ネットワーク内に存在するので、ルータ２Ａおよび２Ｄに割り当てられているＬＡＮ側ＩＰアドレスが重複しているが、問題ない。
【００５８】
図４は、Ｐ２Ｐ通信プログラムを実行したときの通信装置であるユーザ端末の機能的構成を示すブロック図である。図４において、ユーザ端末は、グローバルアドレス情報取得部１０１と、ＮＡＴ設定要求部１０２と、ＷＡＮ側アドレス情報取得部１０３と、ローカルアドレス情報取得部１０４と、アドレス情報通知部１０５と、アドレス情報取得部１０６と、使用アドレス情報判断部１０７と、Ｐ２Ｐ通信処理部１０８とを含む。
【００５９】
グローバルアドレス情報取得部１０１は、Ｐ２Ｐサーバ３と通信して、自装置に割り当てられているグローバルアドレス情報を取得する。グローバルアドレス情報取得部１０１は、取得したグローバルアドレス情報を記憶装置（図示せず）に記憶させる。
【００６０】
ＮＡＴ設定要求部１０２は、自装置の直上に存在する（自装置に直接接続されている）ルータに対して、アドレス変換ルールを設定するように要求し、アドレス変換ルールを設定させる。
【００６１】
ＷＡＮ側アドレス情報取得部１０３は、当該ルータと通信して、設定されているアドレス変換ルールに基づいて、自装置に割り当てられているＷＡＮ側アドレス情報を取得する。ＷＡＮ側アドレス情報取得部１０３は、取得したＷＡＮ側アドレス情報を記憶装置（図示せず）に記憶させる。
【００６２】
ローカルアドレス情報取得部１０４は、自装置に割り当てられているローカルアドレス情報を取得する。たとえば、ローカルアドレス情報取得部１０４は、記憶装置（図示せず）に記憶されている自装置に割り当てられているローカルアドレス情報を取得する。以下、自装置に割り当てられているグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報という。
【００６３】
アドレス情報通知部１０５は、グローバルアドレス情報取得部１０１が取得した第１のグローバルアドレス情報、ＷＡＮ側アドレス情報取得部１０３が取得した第１のＷＡＮ側アドレス情報、およびローカルアドレス情報取得部１０４が取得した第１のローカルアドレス情報を、Ｐ２Ｐサーバ３を介して、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、通知する。なお、アドレス情報を通知する際に、ユーザ端末が介するサーバは、Ｐ２Ｐサーバ３以外であってもよい。
【００６４】
アドレス情報取得部１０６は、Ｐ２Ｐサーバ３を介して、通信相手の通信装置に割り当てられているグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を取得する。以下、通信相手の通信装置に割り当てられているグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を、第２のグローバルアドレス情報、第２のＷＡＮ側アドレス情報、および第２のローカルアドレス情報という。なお、アドレス情報取得部１０６は、通信相手の通信機器に割り当てられているアドレス情報を、Ｐ２Ｐサーバ３以外のサーバを介して取得してもよい。
【００６５】
使用アドレス情報判断部１０７は、アドレス情報取得部１０６によって取得された第２のグローバルアドレス情報、第２のＷＡＮ側アドレス情報、第２のローカルアドレス情報の内、いずれか一つのアドレス情報を使用して、通信相手の通信装置とＰ２Ｐ通信を開始するか否かを判断する。当該いずれか一つのアドレス情報を使用して、通信相手の通信装置とＰ２Ｐ通信を開始すると判断した場合、使用アドレス情報判断部１０７は、Ｐ２Ｐ通信処理部１０８に使用するアドレス情報を送る。一方、いずれのアドレス情報も使用せずに、通信相手の通信装置とＰ２Ｐ通信を開始すると判断した場合、使用アドレス情報判断部１０７は、Ｐ２Ｐ通信処理部１０８に対して、通信相手の通信装置からのＰ２Ｐ通信要求を待つように指示するか、あるいは、Ｐ２Ｐ通信方式を切り替えるように指示する。
【００６６】
Ｐ２Ｐ通信処理部１０８は、使用アドレス情報判断部１０７から、当該いずれか一つのアドレス情報を使用してＰ２Ｐ通信を開始するように指示された場合、当該アドレス情報を使用して、通信相手の通信装置とＰ２Ｐ通信を開始する。Ｐ２Ｐ通信処理部１０８は、使用アドレス情報判断部１０７から、通信相手の通信装置からのＰ２Ｐ通信要求を待つように指示された場合、当該通信相手の通信装置からのＰ２Ｐ通信要求が送られてくれば、当該要求の送信元アドレス情報を使用して、当該通信相手の通信装置に応答し、Ｐ２Ｐ通信を開始する。Ｐ２Ｐ通信処理部１０８は、使用アドレス情報判断部１０７から、Ｐ２Ｐ通信方式を切り替えてＰ２Ｐ通信を開始するように指示された場合、Ｐ２Ｐ通信方式を、Ｐ２Ｐサーバ３を介したＰ２Ｐ通信方式、またはＳＴＵＮ通信方式を用いて、Ｐ２Ｐ通信を開始する。ここで、ＳＴＵＮ通信方式とは、ＲＦＣ  ３４８９  −  ＳＴＵＮ  −  Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  Ｏｆ  Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  （ＵＤＰ）  Ｔｈｒｏｕｇｈ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒｓ  （ＮＡＴｓ）で開示されている通信方式のことをいう。
【００６７】
以下、Ｐ２Ｐ通信を行うときのユーザ端末およびＰ２Ｐサーバ３の動作について説明する。以下では、随時、図１Ａに示すネットワーク上のユーザ端末を例示しながら、動作説明を行うが、本発明のＰ２Ｐ通信の方法は、図１Ａに示すネットワークのみに適用されるものではない。また、動作が分かりやすくなるように、ＩＰアドレスを例示しながら、動作が説明されるが、本発明のＰ２Ｐ通信の方法は、例示したＩＰアドレスのみに適用されるものではない。ユーザ端末の動作は、Ｐ２Ｐ通信プログラムが実行されることによって実現される。
【００６８】
まず、各ユーザ端末は、Ｐ２Ｐ通信を開始する前に、Ｐ２Ｐサーバ３に対して、識別情報を登録する処理（識別情報登録処理）を実行する。以下、ユーザ端末１ａが識別情報登録処理を実行すると仮定して説明するが、他のユーザ端末も同様に動作する。
【００６９】
図５は、識別情報登録処理を実行するときのユーザ端末１ａおよびＰ２Ｐサーバ３の動作を示すフローチャートである。以下、図５を参照しながら、識別情報登録処理を実行するときのユーザ端末１ａおよびＰ２Ｐサーバ３の動作について説明する。なお、図５において、ユーザ端末１ａの動作は、一重線の枠で示されている。Ｐ２Ｐサーバ３の動作は、二重線の枠で示されている。
【００７０】
まず、ユーザ端末１ａは、Ｐ２Ｐサーバ３との間に通信路を確立する（ステップＳ３０１）。通信路の確立は、周知の方法によって実現可能である。ユーザ端末１ａからＰ２Ｐサーバ３への通信は、通常のＷｅｂアクセスと同様に、ルータのＬＡＮ側からＷＡＮ側への通信となる。したがって、周知の動的ＮＡＴによって、自動的に通信路が確保される。動的ＮＡＴによって、ユーザ端末１ａからＰ２Ｐサーバ３への往路に対応して、Ｐ２Ｐサーバ３からユーザ端末１ａへの返信通信路が、途中の経路も含めて自動的に確保される。すなわち、通信路上のルータにおいて、動的ＮＡＴ設定によって、動的ＮＡＴのアドレス変換ルールに従ったＮＡＴ変換表が作成される。ここで、ＮＡＴ設定毎に、アドレス変換ルールが変化するＮＡＴを動的ＮＡＴという。
【００７１】
次に、ユーザ端末１ａは、Ｐ２Ｐサーバ３に対して、自身の識別情報を送信する（ステップＳ３０２）。たとえば、識別情報は、ユーザ端末１ａのメールアドレス等、ユーザ端末を識別するための情報である。
【００７２】
次に、Ｐ２Ｐサーバ３は、ユーザ端末１ａとの間の通信路に関する情報（以下、通信路情報という）と、ユーザ端末１ａの識別情報とを対応付けて、識別情報管理テーブルとして管理する（ステップＳ３０３）。なお、ここで通信路情報とは、ユーザ端末１ａへメッセージを送信するための宛先アドレス、ポート番号の情報を含む概念である。
【００７３】
図６は、識別情報管理テーブルの一例を示す図である。図６に示すように、たとえば、識別情報管理テーブルは、識別情報と対応付けて、通信路情報と、付加情報とを含む。
【００７４】
以上のように、識別情報登録処理が実行されることによって、Ｐ２Ｐサーバ３内に、各ユーザ端末の識別情報が、通信路情報と共に登録される。
【００７５】
第１のユーザ端末と第２のユーザ端末との間でＰ２Ｐ通信を開始する場合、第１および第２のユーザ端末は、必要な情報を交換する処理を実行する。必要な情報を交換するために発信側のユーザ端末（たとえば、第１のユーザ端末）が実行する処理を発信側情報交換処理という。必要な情報を交換するために着信側のユーザ端末（たとえば、第２のユーザ端末）が実行する処理を着信側情報交換処理という。
【００７６】
図７は、発信側情報交換処理を実行する発信側のユーザ端末の動作およびＰ２Ｐサーバ３の動作を示すフローチャートである。以下、図７を参照しながら、発信側情報交換処理を実行する発信側のユーザ端末の動作およびＰ２Ｐサーバの動作について説明する。なお、図７において、発信側ユーザ端末の動作は、一重線の枠で示されている。Ｐ２Ｐサーバの動作は、二重線の枠で示されている。
【００７７】
まず、通信開始を要望する発信側ユーザ端末は、Ｐ２Ｐサーバ３に対して、アドレス情報通知要求メッセージを送信し、Ｐ２Ｐサーバ３からのアドレス情報通知応答メッセージを受信して、アドレス情報通知応答メッセージからグローバルアドレス情報を取得する（ステップＳ５０１）。ステップＳ５０１の動作は、グローバルアドレス情報取得部１０１によって実現される。なお、ステップＳ５０１において、発信側ユーザ端末は、グローバルアドレス情報として、グローバルＩＰアドレスのみを取得してもよい。
【００７８】
図８Ａは、アドレス情報通知要求メッセージのフォーマットの一例を示す図である。図８Ｂは、アドレス情報通知応答メッセージのフォーマットの一例を示す図である。
【００７９】
図８Ａに示すように、アドレス情報通知要求メッセージには、通信ヘッダと、メッセージ識別情報と、付加情報とが含まれる。発信側ユーザ端末は、通信ヘッダに、送信元アドレス情報として発信側ユーザ端末自身のアドレス情報を記載し、宛先アドレス情報としてＰ２Ｐサーバ３のグローバルアドレス情報を記載する。このアドレス情報通知要求メッセージは、ルータを経由するたびに、通信ヘッダ内の送信元アドレス情報が、経由したルータのＷＡＮ側アドレス情報、すなわち、ＷＡＮ側ＩＰアドレスとポート番号との組に置き換えられる。したがって、アドレス情報通知要求メッセージがＰ２Ｐサーバ３に到達した段階では、当該通信ヘッダ内の送信元アドレス情報は、最後に通過したルータのＷＡＮ側ＩＰアドレスとポート番号との組（グローバルＩＰアドレスとポート番号との組）に置き換えられている。メッセージ識別情報には、アドレス情報の通知を要求するメッセージであることを示す情報が記載される。付加情報には、認証情報等が記載される。
【００８０】
なお、前述の例では、Ｐ２Ｐサーバがインターネットに接続されている場合について説明したが、通信を行うユーザ端末が同一のプライベートネットワークに接続されている場合、Ｐ２Ｐサーバはインターネット上ではなく、当該プライベートネットワーク内に存在していても良い。このとき、Ｐ２Ｐサーバは、Ｐ２Ｐ通信を行う両ユーザ端末にとって、同一ルータ（ＮＡＴ機能付き）に接続しているか、又は、より上位（ＷＡＮ側）のルータ（ＮＡＴ機能付き）に接続されていなければならない（図１Ｂ参照）。
【００８１】
この場合、グローバルアドレス情報は、Ｐ２Ｐサーバが接続されているルータのＬＡＮ側セグメントのアドレス空間の情報となる。すなわち、グローバルアドレス情報は、Ｐ２Ｐサーバが属するサブネットワーク上で、ユーザ端末に割り当てられているアドレスに関する情報である。そのため、グローバルアドレス情報は、実際には、プライベートアドレス空間のアドレス情報となる。ただし、接続に用いる手順は、Ｐ２Ｐサーバがインターネットに接続されている場合と同様である。
【００８２】
すなわち、ユーザ端末は、ネットワーク上のＰ２Ｐサーバ３と通信して、Ｐ２Ｐサーバ３が属するサブネットワーク（たとえば、１９２．１６８．１０．Ｘ系列）上で、自装置に割り当てられているアドレスに関する情報を第１のグローバルアドレス情報として取得する。また、ユーザ端末は、自装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報を第１のＷＡＮ側アドレス情報として取得する。さらに、ユーザ端末は、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第１のローカルアドレス情報として取得する。そして、ユーザ端末は、Ｐ２Ｐ通信を所望する通信相手の通信装置に対して、Ｐ２Ｐサーバ３を介して、第１のグローバルアドレス情報、第１のＷＡＮ側アドレス情報、および第１のローカルアドレス情報を通知する。その後、ユーザ端末は、Ｐ２Ｐサーバ３を介して、Ｐ２Ｐサーバ３が属するサブネットワーク上で、通信相手の通信装置に割り当てられているアドレスに関する情報である第２のグローバルアドレス情報と、通信相手の通信装置の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報である第２のＷＡＮ側アドレス情報と、通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第２のローカルアドレス情報とを取得する。ユーザ端末は、取得した第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断する。
【００８３】
図８Ｂに示すように、アドレス情報通知応答メッセージには、通信ヘッダと、メッセージ識別情報と、アドレス情報と、付加情報とが含まれる。Ｐ２Ｐサーバ３は、通信ヘッダに、送信元アドレス情報および宛先アドレス情報を記載する。メッセージ識別情報には、アドレス情報の通知要求に応答するメッセージであることを示す情報が記載される。付加情報には、認証情報等が記載される。Ｐ２Ｐサーバ３は、アドレス情報通知要求メッセージを受信すると、アドレス情報通知要求メッセージの通信ヘッダに記載されている送信元アドレス情報を取り出す。上述のように、当該送信元アドレス情報は、最後に通過したルータのＷＡＮ側ＩＰアドレス（グローバルＩＰアドレス）とポート番号との組となっている。Ｐ２Ｐサーバ３は、取り出した送信元アドレス情報（グローバルＩＰアドレスおよびポート番号）をアドレス情報の欄に記載する。Ｐ２Ｐサーバ３は、作成したアドレス情報通知応答メッセージを、通信路情報（図６参照）に従って、送信する。Ｐ２Ｐサーバ３から送信されたアドレス情報通知応答メッセージは、ルータを逆にたどって、発信側ユーザ端末に届く。この際、動的ＮＡＴ設定によるアドレス変換ルールに従ったＮＡＴ変換表が利用される。
【００８４】
先述のように、Ｐ２Ｐサーバ３が取り出したアドレス情報通知要求メッセージの通信ヘッダ内の送信元アドレス情報は、最後に通過したルータによって動的ＮＡＴを用いて変換されたアドレス情報、すなわち、ユーザ端末専用のポート番号が割り振られたアドレス情報でありかつユーザ端末に割り当てられたグローバルアドレス情報を示している。たとえば、ユーザ端末１ａがアドレス情報通知要求メッセージを送信した場合、送信元アドレス情報は、ルータ２ＣのグローバルＩＰアドレスと、ユーザ端末１ａに向けてルータ２Ｃによって設定されたポート番号とで構成される。ただし、動的ＮＡＴ設定が用いられているので、一般的には、このグローバルアドレス情報は、Ｐ２Ｐサーバ３からの通信だけを受け付けるものとなっている。
【００８５】
次に、発信側ユーザ端末は、自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとを比較し、ＩＰアドレスが異なる場合、ＵＰｎＰ・ＩＧＤプロトコル等を用いて、上位ルータのＷＡＮ側ＩＰアドレスを取得する（ステップＳ５０２）。本明細書において、上位ルータ（Ｕｐｓｔｒｅａｍ  Ｒｏｕｔｅｒ）とは、ユーザ端末から見たとき、インターネット側に存在するルータのことをいう。自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとが異なる場合、発信側ユーザ端末は、ルータを介して、インターネット４に接続されていることを意味する。したがって、自身に割り当てられているＩＰアドレスは、ローカルＩＰアドレスとなっている。たとえば、ＵＰｎＰ・ＩＧＤプロトコルを利用する場合、発信ユーザ端末は、上位ルータに対して、ＧｅｔＥｘｔｅｒｎａｌＩＰＡｄｄｒｅｓｓアクションメッセージを送信することによって、上位ルータのＷＡＮ側ＩＰアドレスを取得することができる。なお、ここでは、ＩＰアドレスは得られるが、ポート番号は得られない。
【００８６】
自身に割り当てられているＩＰアドレスがグローバルＩＰアドレスと異なる場合、発信側ユーザ端末は、ＵＰｎＰ・ＩＧＤプロトコル等を用いて、上位ルータにＮＡＴ設定を行い、当該上位ルータに設定されたＷＡＮ側アドレス情報を記憶する（ステップＳ５０３）。ステップＳ５０３の動作は、ＮＡＴ設定要求部１０２およびＷＡＮ側アドレス情報取得部１０３によって実現される。
【００８７】
たとえば、ＵＰｎＰ・ＩＧＤプロトコルを利用する場合、発信側ユーザ端末は、上位ルータに対してＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージを送信することによって、上位ルータにＮＡＴ設定を行うことが可能である。発信側ユーザ端末は、ＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージを送信することによって、設定したいポート番号を上位ルータに知らせて、当該ポート番号でのＮＡＴ設定を要請する。ステップＳ５０３でのＮＡＴ設定は、通信の開始および終了とは無関係に設定が維持されていなければならない。このように、通信の開始および終了とは無関係に設定が維持されているＮＡＴ設定を、静的ＮＡＴ設定と呼ぶ。動的ＮＡＴ設定は、通信の開始に伴って自動的に設定され、通信の終了と共に解除される。一方、静的ＮＡＴ設定は、通信の開始および終了とは無関係に設定可能である。静的ＮＡＴ設定は、通信を開始する以前にでも設定することができる。静的ＮＡＴ設定は、解除されるまで、維持される。
【００８８】
なお、ＷＡＮ側アドレス情報を記憶する際、発信側ユーザ端末は、ステップＳ５０２においてＷＡＮ側アドレス情報を取得済みであるので、ステップＳ５０３ではＷＡＮ側アドレス情報を取得しなくてもよい。発信側ユーザ端末におけるステップＳ５０３の動作に対して、上位ルータは、静的ＮＡＴ設定を行い、静的ＮＡＴのアドレス変換ルールに従ったＮＡＴ変換表を作成する。
【００８９】
当然のことながら、発信側ユーザ端末は、通信を希望する相手の識別情報を、知っている、あるいは事前に与えられている。発信側ユーザ端末は、通信相手先の識別情報を指定し、Ｐ２Ｐサーバ３に通信開始要求メッセージを送信する。このとき、発信側ユーザ端末は、自身の識別情報、自身のグローバルアドレス情報（第１のグローバルアドレス情報）、自身のローカルアドレス情報（第１のローカルアドレス情報）、および、上位ルータのＷＡＮ側アドレス情報（第１のＷＡＮ側アドレス情報）を送信する（ステップＳ５０４）。ステップＳ５０４の動作は、アドレス情報通知部１０５によって実現される。
【００９０】
図９Ａは、通信開始要求メッセージのフォーマットの一例を示す図である。図９Ａに示すように、通信開始要求メッセージは、通信ヘッダと、メッセージ識別情報と、送信元ユーザ端末識別情報と、送信先ユーザ端末識別情報と、グローバルアドレス情報（第１のグローバルアドレス情報）と、上位ルータのＷＡＮ側アドレス情報（第１のＷＡＮ側アドレス情報）と、自身のローカルアドレス情報（第１のローカルアドレス情報）と、付加情報とを含む。
【００９１】
メッセージ識別情報は、通信開始要求であることを示す情報である。送信元ユーザ端末識別情報は、発信側ユーザ端末の識別情報である。送信先ユーザ端末識別情報は、通信相手のユーザ端末の識別情報である。グローバルアドレス情報は、ステップＳ５０１で取得したグローバルアドレス情報（グローバルＩＰアドレスおよびポート番号）である。上位ルータのＷＡＮ側アドレス情報は、ステップＳ５０３で記憶したＷＡＮ側アドレス情報（ＷＡＮ側ＩＰアドレスおよびポート番号）である。自身のローカルアドレス情報は、予め自身に設定されているローカルＩＰアドレスおよび自身が用いているポート番号である。なお、自身のローカルアドレス情報には、ネットマスクが含まれている。なお、ネットマスクがなくてもＩＰアドレスの変数部分が認識されるのであれば、ネットマスクは含まれていなくてもよい。付加情報は、認証情報等である。
【００９２】
なお、上記ステップＳ５０２において、自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとが一致する場合、発信側ユーザ端末は、ルータを介さずに、直接インターネット４に接続されていることを意味する。すなわち、自身のローカルＩＰアドレスは、グローバルＩＰアドレスとなっている。このような場合、発信側ユーザ端末は、グローバルアドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号とし、ＷＡＮ側アドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号とし、ローカルアドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号として、通信開始要求メッセージをＰ２Ｐサーバ３に送信する。
【００９３】
Ｐ２Ｐサーバ３は、ユーザ端末からのメッセージを受信し、メッセージ識別情報を参照し、受信したメッセージが通信開始要求であることを認識する。通信開始要求であることを認識したＰ２Ｐサーバ３は、送信先ユーザ端末識別情報を参照して、送信先のユーザ端末の識別情報を認識する。そして、Ｐ２Ｐサーバ３は、識別情報管理テーブルを参照し、認識した識別情報に対応する通信路情報に基づいて、送信先ユーザ端末までの通信経路を決定する。Ｐ２Ｐサーバ３は、決定した送信先ユーザ端末までの通信路を経由するように、発信側ユーザ端末から受信した通信開始要求メッセージを、送信先のユーザ端末に送信する（ステップＳ５０５）。これによって、発信側ユーザ端末からの通信開始要求メッセージは、通信相手である着信先ユーザ端末に転送される。
【００９４】
なお、アドレス情報通知要求メッセージおよび通信開始要求メッセージには、認証用の情報が付加されているのが好ましい。Ｐ２Ｐサーバ３は、識別情報管理テーブルで管理するユーザ端末毎の認証用情報を用いて、正当なユーザ端末からの通信であるか否かを確認し、セキュリティを高めるようにするのが好ましい。また、Ｐ２Ｐサーバ３は、アドレス情報通知応答メッセージや通信開始要求メッセージを転送するとき、Ｐ２Ｐサーバ３の正当性を示す認証用情報をメッセージに添付することによって、セキュリティを高めるようにしてもよい。
【００９５】
図１０は、着信側情報交換処理を実行する着信側のユーザ端末の動作およびＰ２Ｐサーバ３の動作を示すフローチャートである。以下、図１０を参照しながら、着信側情報交換処理を実行する着信側のユーザ端末の動作およびＰ２Ｐサーバ３の動作について説明する。なお、図１０において、着信側ユーザ端末の動作は、一重線の枠で示されている。Ｐ２Ｐサーバの動作は、二重線の枠で示されている。
【００９６】
まず、着信側ユーザ端末は、Ｐ２Ｐサーバ３から転送された通信開始要求メッセージを受信し、送信元（発信側ユーザ端末）の識別情報を取り出すと共に、通信開始要求メッセージに記載されたグローバルアドレス情報（第１のグローバルアドレス情報）、ＷＡＮ側アドレス情報（第１のＷＡＮ側アドレス情報）、およびローカルアドレス情報（第１のローカルアドレス情報）を送信元のアドレス情報として取り出す。着信側ユーザ端末は、取り出した送信元の識別情報とアドレス情報とを対応付けて、記憶する（ステップＳ６０１）。ステップＳ６０１の動作は、アドレス情報取得部１０６によって実現される。
【００９７】
次に、着信側ユーザ端末は、Ｐ２Ｐサーバ３に対してアドレス情報通知要求メッセージを送信し、Ｐ２Ｐサーバ３から返信されてくるアドレス情報通知応答メッセージから自身のグローバルアドレス情報（第２のグローバルアドレス情報）を取得する（ステップＳ６０２）。ステップＳ６０２における処理は、発信側ユーザ端末がグローバルアドレス情報を取得した処理（ステップＳ５０１）と、基本的には同様である。ステップＳ６０２の動作は、グローバルアドレス情報取得部１０１によって実現される。なお、ステップＳ６０２において、着信側ユーザ端末は、グローバルアドレス情報として、グローバルＩＰアドレスのみを取得してもよい。
【００９８】
次に、着信側ユーザ端末は、自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとを比較し、ＩＰアドレスが異なる場合、ＵＰｎＰ・ＩＧＤプロトコル等を用いて、上位ルータのＷＡＮ側アドレス情報を取得する（ステップＳ６０３）。自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとが異なる場合、発信側ユーザ端末は、ルータを介して、インターネット４に接続されていることを意味する。したがって、自身に割り当てられているＩＰアドレスは、ローカルＩＰアドレスとなっている。たとえば、ＵＰｎＰ・ＩＧＤプロトコルを利用する場合、着信側ユーザ端末は、上位ルータに対して、ＧｅｔＥｘｔｅｒｎａｌＩＰＡｄｄｒｅｓｓアクションメッセージを送信することによって、上位ルータのＷＡＮ側ＩＰアドレス情報を取得することが可能である。ここでは、ＩＰアドレスは得られるが、ポート番号は得られない。
【００９９】
自身に割り当てられているＩＰアドレスがグローバルＩＰアドレスと異なる場合、着信側ユーザ端末は、ＵＰｎＰ・ＩＧＤプロトコル等を用いて、上位ルータに静的ＮＡＴ設定を行い、当該上位ルータに設定されたＷＡＮ側アドレス情報を記憶する（ステップＳ６０４）。たとえば、ＵＰｎＰ・ＩＧＤプロトコルを利用する場合、着信側ユーザ端末は、上位ルータに対してＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージを送信することによって、上位ルータにＮＡＴ設定を行うことが可能である。ステップＳ６０３およびＳ６０４の動作は、ＮＡＴ設定要求部１０２およびＷＡＮ側アドレス情報取得部１０３によって実現される。
【０１００】
次に、着信側ユーザ端末は、発信側ユーザ端末の識別情報を指定し、Ｐ２Ｐサーバ３に通信開始応答メッセージを送信する。このとき、着信側ユーザ端末は、自身の識別情報、自身のグローバルアドレス情報（第２のグローバルアドレス情報）、上位ルータのＷＡＮ側アドレス情報（第２のＷＡＮ側アドレス情報）、および自身のローカルアドレス情報（第２のローカルアドレス情報）を送信する（ステップＳ６０５）。ステップＳ６０５の動作は、アドレス情報通知部１０５によって実現される。
【０１０１】
図９Ｂは、通信開始応答メッセージのフォーマットの一例を示す図である。図９Ｂに示すように、通信開始要求メッセージは、通信ヘッダと、メッセージ識別情報と、送信元ユーザ端末識別情報と、送信先ユーザ端末識別情報と、グローバルアドレス情報（第２のグローバルアドレス情報）と、上位ルータのＷＡＮ側アドレス情報（第２のＷＡＮ側アドレス情報）と、自身のローカルアドレス情報（第２のローカルアドレス情報）と、付加情報とを含む。
【０１０２】
メッセージ識別情報は、通信開始要求に応答する旨のメッセージであることを示す情報である。送信元ユーザ端末識別情報は、着信側ユーザ端末の識別情報である。送信先ユーザ端末識別情報は、通信相手の発信側ユーザ端末の識別情報である。グローバルアドレス情報は、ステップＳ６０２で取得したグローバルアドレス情報（グローバルＩＰアドレスおよびポート番号）である。上位ルータのＷＡＮ側アドレス情報は、ステップＳ６０４で記憶したＷＡＮ側アドレス情報（ＷＡＮ側ＩＰアドレスおよびポート番号）である。自身のローカルアドレス情報は、予め自身に設定されているローカルＩＰアドレスおよび自身が用いているポート番号である。なお、自身のローカルアドレス情報には、ネットマスクが含まれている。なお、ネットマスクがなくてもＩＰアドレスの変数部分が認識されるのであれば、ネットマスクは含まれていなくてもよい。付加情報は、認証情報等である。
【０１０３】
なお、上記ステップＳ６０３において、自身に割り当てられているＩＰアドレスとアドレス情報通知応答メッセージに含まれるグローバルＩＰアドレスとが一致する場合、着信側ユーザ端末は、ルータを介さずに、インターネット４に直接接続されていることを意味する。すなわち、自身のローカルＩＰアドレスは、グローバルＩＰアドレスとなっている。このような場合、着信側ユーザ端末は、グローバルアドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号とし、ＷＡＮ側アドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号とし、ローカルアドレス情報を自身に割り当てられているＩＰアドレスおよびポート番号として、通信開始応答メッセージをＰ２Ｐサーバ３に送信する。
【０１０４】
Ｐ２Ｐサーバ３は、ユーザ端末からのメッセージを受信し、メッセージ識別情報を調べ、通信開始応答メッセージであることを認識する。通信開始応答メッセージであることを認識したＰ２Ｐサーバ３は、送信先ユーザ端末識別情報を参照して、送信先のユーザ端末の識別情報を認識する。そして、Ｐ２Ｐサーバ３は、識別情報管理テーブルを参照し、送信先ユーザ端末識別情報に対応する通信経路に基づいて、送信先ユーザ端末までの通信経路を決定する。Ｐ２Ｐサーバ３は、送信先ユーザ端末までの通信路を経由するように、着信側ユーザ端末から受信した通信開始応答メッセージを送信する（ステップＳ６０６）。これによって、着信側ユーザ端末からの通信開始応答メッセージは、通信相手である発信側ユーザ端末に転送される。
【０１０５】
着信側ユーザ端末の通信開始応答メッセージを受信した発信側のユーザ端末は、当該通信開始応答メッセージから、着信側ユーザ端末に割り当てられているグローバルアドレス情報（第２のグローバルアドレス情報）、ＷＡＮ側アドレス情報（第２のＷＡＮ側アドレス情報）、およびローカルアドレス情報（第２のローカルアドレス情報）を取得する。この動作は、アドレス情報取得部１０６によって実現される。
【０１０６】
なお、通信開始要求メッセージおよび通信開始応答メッセージの送受信は、Ｐ２Ｐサーバ３以外のサーバを介して行われてもよい。
【０１０７】
以上のような発信側情報交換処理および着信側情報交換処理によって、ユーザ端末間で、Ｐ２Ｐ通信を行いたい旨のイベントがＰ２Ｐサーバ３を介して通知され、お互いのアドレス情報として、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報が交換される。ユーザ端末は、取得した、グローバルアドレス情報、ＷＡＮ側アドレス情報、ローカルアドレス情報に基づいて、Ｐ２Ｐ通信を開始する。
【０１０８】
次に、アドレス情報を交換し合ったユーザ端末間で、実際にＰ２Ｐ通信を開始する手順について説明する。
【０１０９】
図１１Ａおよび図１１Ｂは、アドレス情報を交換したユーザ端末が実際にＰ２Ｐ通信するときの動作を示すフローチャートである。図１１Ａおよび図１１Ｂに示す動作は、発信側のユーザ端末が行ってもよいし、着信側のユーザ端末が行ってもよし、発信側および着信側のユーザ端末が行ってもよい。いずれのユーザ端末が図１１Ａおよび図１１Ｂに示す動作を行うかは予め決められていてもよいし、通信開始要求メッセージまたは通信開始応答メッセージで決められてもよい。なお、図１１Ａおよび図１１Ｂに示す動作は、使用アドレス情報判断部１０７およびＰ２Ｐ通信処理部１０８によって実現される。
【０１１０】
まず、発信側情報交換処理および着信側情報交換処理によって通信相手となるユーザ端末のアドレス情報を取得したユーザ端末は、通信相手のアドレス情報と自身のアドレス情報とに基づいて、通信相手のユーザ端末とＰ２Ｐ通信が可能であるか、すなわち、Ｐ２Ｐ通信用の通信路を確保することができるか否かを判断する（ステップＳ９００）。Ｐ２Ｐ通信用の通信路を確保することができると判断した場合、ユーザ端末は、ステップＳ９０１の動作に進む。一方、Ｐ２Ｐ通信用の通信路を確保することができないと判断した場合、ユーザ端末は、通信開始要求メッセージの送受信や通信開始応答メッセージの送受信と同様に、Ｐ２Ｐサーバを介して、ユーザデータを交換する通信に切り替える等、接続方式の切り替えを実行する。なお、ユーザ端末は、グローバルＩＰアドレスが異なる場合のみ、ステップＳ９００の判断を行うものとする。
【０１１１】
図１２Ａおよび図１２Ｂは、Ｐ２Ｐ通信用の通信路を確保できない場合のアドレス情報の一例を示す図である。図１２Ａは、ユーザ端末１ａからの通信開始要求メッセージの一例を示す。図１２Ｂは、ユーザ端末１ｄからの通信開始応答メッセージの一例を示す。ここでは、ユーザ端末１ａおよび１ｂについて、共に、ＷＡＮ側アドレス情報が「ＷＡＮ＿ＩＰ：−（取得不能）」となっている。すなわち、ユーザ端末１ａおよび１ｂは、共に、上位ルータのアドレス情報が取得できていない。このようになるのは、一般に、上位ルータがＵＰｎＰ・ＩＧＤプロトコルに非対応等の理由等による。また、ユーザ端末１ａおよび１ｄは、共に、グローバルＩＰアドレスとローカルＩＰアドレスとが異なる。したがって、ユーザ端末１ａおよび１ｄは、共に、上位ルータの配下に存在しているといえる。さらに、ユーザ端末１ａのグローバルＩＰアドレスとユーザ端末１ｂのグローバルＩＰアドレスとが一致しており、ポート番号が異なっている。したがって、ユーザ端末１ａおよび１ｄは、共に、共通のルータの配下に存在することがわかる。したがって、ユーザ端末１ａおよび１ｄは、インターネットを経由したルートで通信する必要がないことがわかる。通信経路にルータが存在する場合、ルータのＷＡＮ側からＬＡＮ側への通信は、ＮＡＴ設定が行われていないと、実現不可能である。図１２Ａおよび図１２Ｂに示す例では、ユーザ端末１ａおよび１ｄの直上のルータ２Ａおよび２Ｂは、ＮＡＴ設定が行われていない。また、当該ルータは、新たにＮＡＴ設定することができない。ゆえに、結果的に、図１２Ａおよび図１２Ｂに示す例では、ユーザ端末１ａおよび１ｄは、ステップＳ９０８の判断によって、Ｐ２Ｐ通信が不可能であると判断される。言い換えると、この例のように、グローバルＩＰアドレスが一致している場合、発信側情報交換処理および着信側情報交換処理が行われた結果によって得られた情報だけを用いて、Ｐ２Ｐ通信が不可能であるか否かを判断することはできない。そのため、ユーザ端末は、ローカルアドレス情報、およびＷＡＮ側アドレス情報を用いてＰ２Ｐ通信を試み、Ｐ２Ｐ接続できないことを確認して、Ｐ２Ｐ通信不能であると判断する。そのため、図１２Ａおよび図１２Ｂに示すアドレス情報がユーザ端末１ａとユーザ端末１ｄとの間でのアドレス情報である場合、Ｐ２Ｐ通信が不可能であると判断される。なぜなら、相手側の上位に位置するルータにＮＡＴ設定されていないものがあるので、ユーザ端末１ａおよび１ｄから送信した電文は、ルータが正しい相手に転送することができず、相手側に受信されないからである。なお、たとえば、電文は、要求メッセージや応答メッセージといったＰ２Ｐ通信路の接続用の制御パケット全体のことである。なお、図１２Ａおよび図１２Ｂに示すアドレス情報が、ユーザ端末１ａとユーザ端末１ｃとの間でのアドレス情報である場合、ルータ２Ａおよびルータ２ＣがＵＰｎＰに対応していないために、ＷＡＮ側アドレスの取得ができなくなっているといえる。しかし、この場合は、ユーザ端末１ａから通信要求を開始すると動的ＮＡＴによりＰ２Ｐ通信が可能となる。
【０１１２】
図１３Ａおよび図１３Ｂは、Ｐ２Ｐ通信用の通信路を確保できない場合のアドレス情報の他の例を示す図である。図１３Ａは、ユーザ端末１ａからの通信開始要求メッセージの一例である。図１３Ｂは、ユーザ端末ｅからの通信開始要求メッセージの一例である。図１３Ｂの例では、ユーザ端末１ｅは、上位にルータが存在するが、直上のルータ２ＤにはＮＡＴ設定が行われていないことが示されている。一方、図１３Ａの例では、ユーザ端末１ａは、上位ルータのＮＡＴは設定されている。しかし、図１３Ａの例では、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが異なっている。したがって、直上のルータのさらに上位にルータが存在していることがわかる。なお、最上位のルータにおいて、ユーザ端末１ａとユーザ端末１ｅとの通信に対応できるＮＡＴ設定は、行われていない。なぜなら、通常、ユーザ端末は、あるルータを介して更に上位に位置するルータに静的ＮＡＴ設定を行うことはできないからである。また、ユーザ端末１ａのグローバルＩＰアドレスとユーザ端末１ｅのグローバルＩＰアドレスとが異なるので、ユーザ端末１ａとユーザ端末１ｅとは、通信経路にルータが存在するインターネットを経由したルートで通信する必要がある。しかし、ユーザ端末１ｅの直上のルータには、静的ＮＡＴ設定が行われていないので、Ｐ２Ｐ通信が不能であると判断される。この判断は、発信側情報交換処理および着信側情報交換処理が行われた結果によって得られた情報だけで可能である。したがって、ユーザ端末は、ステップＳ９００の段階でＰ２Ｐ通信不能であると判断できる。
【０１１３】
このように、静的ＮＡＴ設定が行われていないルータが存在する場合、ユーザ端末は、Ｐ２Ｐ通信が不能であると判断する。
【０１１４】
ステップＳ９００において、Ｐ２Ｐ通信用の通信路を確保することができないと判断した場合、ユーザ端末は、Ｐ２Ｐサーバ３を介してユーザデータを交換する通信に切り替えるものとした。しかし、Ｐ２Ｐ通信用の通信路を確保することができないと判断した場合、ユーザ端末は、グローバルアドレス情報を利用し、ＳＴＵＮ通信方式を用いて、通信相手のグローバルアドレス情報にＵＤＰパケットを送信して通信を試みてもよい。すなわち、Ｐ２Ｐ通信用の通信路を確保することができないと判断した場合、ユーザ端末は、ＳＴＵＮ方式によって、Ｐ２Ｐ通信を試みてもよい。通信方式の切り替えは、Ｐ２Ｐ通信処理部１０８によって実現される。
【０１１５】
ステップＳ９０１において、ユーザ端末は、通信相手のグローバルアドレス情報を参照して、通信相手のグローバルＩＰアドレスと自身のグローバルＩＰアドレスとが一致するか否かを判断する。
【０１１６】
グローバルＩＰアドレスが一致する場合、Ｐ２Ｐ通信を試みている二つのユーザ端末は、同一ルータの配下に位置するユーザ端末である。したがって、当該二つのユーザ端末は、インターネットを介さずに通信が可能である。グローバルＩＰアドレスが一致する場合、ユーザ端末は、ステップＳ９０２の動作に進む。
【０１１７】
一方、グローバルＩＰアドレスが一致しない場合、Ｐ２Ｐ通信を試みている二つのユーザ端末は、同一ルータの配下に位置しないユーザ端末である。したがって、当該二つのユーザ端末は、インターネットを介して通信することとなる。グローバルＩＰアドレスが一致しない場合、ユーザ端末は、ステップＳ９１０の動作に進む。
【０１１８】
ステップＳ９０２において、ユーザ端末は、通信相手のローカルアドレス情報宛に、Ｐ２Ｐ接続要求を送信する。
【０１１９】
ステップＳ９０２の後、ユーザ端末は、Ｐ２Ｐ接続要求の送信先である通信相手から、応答を受信するか否かを判断する（ステップＳ９０３）。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、通信相手のローカルアドレス情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９１５）。
【０１２０】
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する（ステップＳ９０４）。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、Ｐ２Ｐ接続ができた旨の応答を送信する（ステップＳ９０５）。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９１６）。
【０１２１】
ステップＳ９０４において、通信相手からの要求を受信できなかった場合、ユーザ端末は、通信相手のＷＡＮ側アドレス情報宛（すなわち、通信相手の直上のルータ宛）に、Ｐ２Ｐ接続要求を送信する（ステップＳ９０６）。次に、ユーザ端末は、通信相手からの応答を受信するか否かを判断する（ステップＳ９０７）。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、通信相手のＷＡＮ側アドレス情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９１７）。
【０１２２】
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する（ステップＳ９０８）。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、Ｐ２Ｐ接続ができた旨の応答を送信する（ステップＳ９０９）。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９１８）。
【０１２３】
ステップＳ９０８において、通信相手からの要求を受信できなかった場合、ユーザ端末は、ステップＳ９１４の動作に進む。ステップＳ９１４において、ユーザ端末は、Ｐ２Ｐ通信方式を、Ｐ２Ｐサーバ経由方式またはＳＴＵＮ方式に切り替える。
【０１２４】
ステップＳ９１０以降のＰ２Ｐ通信では、グローバルＩＰアドレスが必要となる。ステップＳ９１０において、ユーザ端末は、グローバルＩＰアドレスを、ローカルアドレス情報、ＷＡＮ側アドレス情報、グローバルアドレス情報の順に探索し、グローバルＩＰアドレスが見つかったら、当該グローバルＩＰアドレスに対応するアドレス情報宛（当該グローバルＩＰアドレスおよびポート番号宛）にＰ２Ｐ接続要求を送信する。
【０１２５】
なお、ローカルＩＰアドレスがグローバルＩＰアドレスと一致する場合は、ユーザ端末がインターネット網にルータを介さず直接接続されている場合である。
【０１２６】
ステップＳ９１０の後、ユーザ端末は、Ｐ２Ｐ接続要求の送信先である通信相手から、応答を受信するか否かを判断する（ステップＳ９１１）。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該グローバルＩＰアドレスに対応するアドレス情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９１９）。
【０１２７】
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する（ステップＳ９１２）。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、Ｐ２Ｐ接続ができた旨の応答を送信する（ステップＳ９１３）。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、Ｐ２Ｐ通信のためのデータを送信する（ステップＳ９２０）。
【０１２８】
ステップＳ９１２において、通信相手からの要求を受信できなかった場合、ユーザ端末は、ステップＳ９１４の動作に進み、Ｐ２Ｐ通信方式を切り替える。
【０１２９】
図１１Ａおよび図１１Ｂに示す手順では、通信相手のローカルアドレス情報、ＷＡＮ側アドレス情報の順に通信路接続要求を試みるようにした（ステップＳ９０２、Ｓ９０６参照）。一般的に、サブネットワーク識別アドレス情報およびユーザ端末のローカルアドレス情報は、個々のルータが割り振る。したがって、相異なるサブネットワーク間において、ＩＰアドレスだけでなくポート番号までもが同じローカルアドレス情報を有する複数のユーザ端末が存在する可能性がある。ステップＳ９０２において、ローカルアドレス情報を宛先とした場合、所望の通信相手以外のユーザ端末に通信路接続要求電文が届くことが起こりうる。しかし、所望の通信相手以外のユーザ端末は、事前に、アドレス情報の交換を行っていない。したがって、所望の通信相手以外のユーザ端末は、誤って届いた電文であると認識できる。よって、所望の通信相手以外のユーザ端末は、通信路接続応答電文を返信しない。従って、誤った通信路接続が起きることはない。
【０１３０】
このように、図１１に示す動作において、ユーザ端末は、通信相手のグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報の内、いずれか一つのアドレス情報を宛先として、Ｐ２Ｐ接続要求を送信し、通信を試み（ステップＳ９０２、Ｓ９０６、またはＳ９１０参照）、当該アドレス情報を用いてＰ２Ｐ通信を開始するか否かを判断する。通信相手のユーザ端末から応答が返ってきたら（ステップＳ９０３、Ｓ９０７、Ｓ９１１のＹＥＳ参照）、ユーザ端末は、宛先として使用したアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する（ステップＳ９１５、Ｓ９１７、Ｓ９１９参照）。
【０１３１】
特徴的には、ユーザ端末は、グローバルＩＰアドレスの一致を判断し（ステップＳ９０１参照）、グローバルＩＰアドレスが一致する場合、当該グローバルＩＰアドレスに対応するアドレス情報宛にＰ２Ｐ接続要求を送信し（ステップＳ９１０参照）、通信相手からの応答が返ってきたら（ステップＳ９１１のＹＥＳ参照）、宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する。一方、グローバルＩＰアドレスが一致しない場合、通信相手のＷＡＮ側アドレス情報およびローカルアドレス情報の内、いずれか一つのアドレス情報を宛先として、Ｐ２Ｐ接続要求を送信し（ステップＳ９０２、Ｓ９０６参照）、通信相手からの応答が返ってきたら（ステップＳ９０３、Ｓ９０７のＹＥＳ参照）、宛先として用いたアドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する。
【０１３２】
また、ユーザ端末は、通信相手のユーザ端末からのＰ２Ｐ接続要求を受信したら（ステップＳ９０４、Ｓ９０８、Ｓ９１２のＹＥＳ参照）、当該Ｐ２Ｐ接続要求の送信元アドレス情報を使用して、Ｐ２Ｐ通信を開始すると判断する。そして、ユーザ端末は、当該送信元アドレス情報を使用して、Ｐ２Ｐ通信を開始する（ステップＳ９０５、Ｓ９０９、Ｓ９１３、Ｓ９１６、Ｓ９１８、Ｓ９２０）。
【０１３３】
さらに、ユーザ端末は、上記のような判断の結果、いずれか一つのアドレス情報または送信元アドレス情報を使用してＰ２Ｐ通信を開始しないと判断した場合、Ｐ２Ｐ通信方式を切り替える。
【０１３４】
次に、図１に示すユーザ端末１ａ〜１ｅ間でＰ２Ｐ通信する際の流れについて、アドレス情報を例示しながら説明する。
【０１３５】
図１４Ａは、ユーザ端末１ａからユーザ端末１ｄに送信される通信開始要求メッセージの内容の一例を示す図である。図１４Ｂは、ユーザ端末１ｄからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図である。
【０１３６】
ユーザ端末１ａとユーザ端末１ｄとは、ルータ２Ｃの配下に存在するので、グローバルＩＰアドレスは一致している。したがって、ユーザ端末１ａは、ステップＳ９０２において、ユーザ端末１ｄのローカルアドレス情報宛（ローカルＩＰアドレスが“１９２．１６８．１．１０”、ポート番号が“３００１”）に、Ｐ２Ｐ接続要求を送信する（ステップＳ９０２参照）。図１Ａに示すように、ユーザ端末１ｄは、ルータ２Ａの配下に位置していない。したがって、ローカルアドレス情報を用いたユーザ端末１ａの当該要求は、ユーザ端末１ｄには、到達しない。したがって、ユーザ端末１ａは、ユーザ端末１ｄからの応答を受信しない（ステップＳ９０３のＮＯ参照）ので、ステップＳ９０４の動作に進む。
【０１３７】
ここで、ユーザ端末１ｄからの要求がユーザ端末１ａに送信されなかったとする（ステップＳ９０４のＮＯ参照）。この場合、ユーザ端末１ａは、ユーザ端末１ｄのＷＡＮ側アドレス情報宛（ＷＡＮ側ＩＰアドレスが“１９２．１６８．１０．４”、ポート番号が“４００１”）に、Ｐ２Ｐ接続要求を送信する（ステップＳ９０６参照）。当該要求は、ルータ２Ａを通過し、ルータ２Ｂに届く。ルータ２Ｂは、設定されている静的ＮＡＴに従って、当該要求をユーザ端末１ｄに送信する。よって、ユーザ端末１ｄは、当該要求に対する応答をユーザ端末１ａに返信することができる。その後、ユーザ端末１ａは、ユーザ端末１ｄからの応答を受信する（ステップＳ９０７のＹＥＳ参照）ので、当該ＷＡＮ側アドレス情報を用いて、ユーザ端末１ｄとＰ２Ｐ通信を開始する（ステップＳ９１７参照）。
【０１３８】
この場合、ユーザ端末１ｄは、ユーザ端末１ａからのＰ２Ｐ接続要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末１ａとの間でのＰ２Ｐ通信を開始する。なお、ユーザ端末１ｄが発信側である場合も、ユーザ端末１ｄとユーザ端末１ａとは、同様にＰ２Ｐ通信することができる。
【０１３９】
図１５Ａは、ユーザ端末１ａからユーザ端末１ｂに送信される通信開始要求メッセージの内容の一例を示す図である。図１５Ｂは、ユーザ端末１ｂからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図である。
【０１４０】
ユーザ端末１ａとユーザ端末１ｂとは、ルータ２Ｃの配下に存在するので、グローバルＩＰアドレスは一致している。したがって、ユーザ端末１ａは、ステップＳ９０２において、ユーザ端末１ｂのローカルアドレス情報宛（ローカルＩＰアドレスが“１９２．１６８．０．１０１”、ポート番号が“３０２１”）に、Ｐ２Ｐ接続要求を送信する。図１Ａに示すように、ユーザ端末１ｂは、ルータ２Ａの配下に位置している。したがって、ローカルアドレス情報を用いたユーザ端末１ａの当該要求は、ユーザ端末１ｂには、到達する。よって、ユーザ端末１ａは、ユーザ端末１ｂと、ローカルアドレス情報を用いてＰ２Ｐ通信する（ステップＳ９１５参照）。この場合、ユーザ端末１ｂは、当該要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末１ａとの間でのＰ２Ｐ通信を開始する。なお、ユーザ端末１ｂが発信側である場合も、ユーザ端末１ｂとユーザ端末１ａとは、同様にＰ２Ｐ通信することができる。
【０１４１】
図１６Ａは、ユーザ端末１ａからユーザ端末１ｃに送信される通信開始要求メッセージの内容の一例を示す図である。図１６Ｂは、ユーザ端末１ｃからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図である。
【０１４２】
ユーザ端末１ａとユーザ端末１ｃとは、ルータ２Ｃの配下に存在するので、グローバルＩＰアドレスは一致している。したがって、ユーザ端末１ａは、ステップＳ９０２において、ユーザ端末１ｃのローカルアドレス情報宛（ローカルＩＰアドレスが“１９２．１６８．１０．２”、ポート番号が“３０３１”）に、Ｐ２Ｐ接続要求を送信する。図１Ａに示すように、ユーザ端末１ｃは、ユーザ端末１ａが接続されているルータ２Ａの上位側（ＷＡＮ側）ルータ２Ｃに接続されている。したがって、ローカルアドレス情報を用いたユーザ端末１ａのＰ２Ｐ接続要求は、ユーザ端末１ｃに到達する。よって、ユーザ端末１ｃは、この要求を受信して、Ｐ２Ｐ通信を開始することが可能となる。
【０１４３】
なお、この例では、ユーザ端末１ａの上位ルータにＮＡＴ設定が行われているので、ユーザ端末１ｃがユーザ端末１ａのＷＡＮ側アドレス情報を用いたＰ２Ｐ接続要求を送信した場合でも、当該Ｐ２Ｐ要求は、ユーザ端末１ａに到達する。よって、ユーザ端末１ｃ側からＰ２Ｐ接続要求を送信して、Ｐ２Ｐ通信を行うことも可能である。
【０１４４】
図１７Ａは、ユーザ端末１ａからユーザ端末１ｅに送信される通信開始要求メッセージの内容の一例を示す図である。図１７Ｂは、ユーザ端末１ｅからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図である。
【０１４５】
ユーザ端末１ａはルータ２Ｃの配下に位置し、ユーザ端末１ｅはルータ２Ｄの配下に位置する。したがって、グローバルＩＰアドレスは一致しない。ゆえに、ユーザ端末１ａは、ステップＳ９１０の処理において、グローバルＩＰアドレスに対応するアドレス情報宛に、Ｐ２Ｐ接続要求を送信する。ここでは、ユーザ端末１ａは、ユーザ端末１ｅのＷＡＮ側アドレス情報（ＷＡＮ側ＩＰアドレス“１３３．１２１．２．１５”およびポート番号“４０２１”）宛に、当該要求を送信する。その後、ユーザ端末１ｅからの応答が返ってきたら（ステップＳ９１１のＹＥＳ参照）、ユーザ端末１ａは、当該アドレス情報を用いて、ユーザ端末１ｅとの間でＰ２Ｐ通信を開始する（ステップＳ９１９参照）。ユーザ端末１ｅは、当該要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末１ａとの間でＰ２Ｐ通信する。なお、ユーザ端末１ｅが発信側である場合、ユーザ端末１ｅは、ユーザ端末１ａのグローバルアドレス情報に対応するアドレス情報として、ユーザ端末１ａのグローバルアドレス情報を用いて、ユーザ端末１ａとＰ２Ｐ通信する。
【０１４６】
なお、ユーザ端末１ｅは、ユーザ端末１ａから受信したアドレス情報を調べて、ＷＡＮ側ＩＰアドレスとグローバルＩＰアドレスとが不一致であるか否かを判断してもよい。不一致である場合、ユーザ端末１ｅは、ＮＡＴ設定されていないルータが存在するとして、Ｐ２Ｐ接続要求をユーザ端末１ａに送信しても、応答されない判断する。この場合、ユーザ端末１ｅは、一定時間、ユーザ端末１ａからのＰ２Ｐ接続要求を待ち、自らは、Ｐ２Ｐ接続要求を送信しないようにしてもよい。図１７Ａおよび図１７Ｂの例では、上記のように制御された場合においても、ユーザ端末１ａからユーザ端末１ｅへのＰ２Ｐ接続要求が送信可能であるので、ユーザ端末１ａとユーザ端末１ｅ間に通信路が確立される。
【０１４７】
以下、二つのユーザ端末間でＰ２Ｐ通信が実現されるまでの具体的な処理の流れを説明する。
【０１４８】
図１８Ａおよび図１８Ｂは、ユーザ端末１ａとユーザ端末１ｄとの間でＰ２Ｐ通信を行うための具体的な通信シーケンスを示す図である。この例では、ルータＢがＵＰｎＰ非対応であるとし、ルータＢは静的ＮＡＴ設定ができないものとする。ユーザ端末１ａ、ルータ２Ａ、ルータ２Ｃ、ルータ２Ｂ、およびユーザ端末１ｄに設定されているＩＰアドレスは、図３Ａおよび図３Ｂに示されている例と同様であるとする。
【０１４９】
まず、ユーザ端末１ａとユーザ端末１ｄとは、それぞれ、Ｐ２Ｐサーバ３と通信して、識別情報を登録する（Ｐ０、図５参照）。このために、たとえば、ユーザ端末１ａ，１ｄとＰ２Ｐサーバ３とは、ＴＣＰセッションを実行する。
【０１５０】
次に、ユーザ端末１ａは、アドレス情報通知要求メッセージＭ１１（図８Ａ参照）およびアドレス情報通知応答メッセージＭ１２（図８Ｂ参照）の送受信によって、Ｐ２Ｐサーバ３から、自身のグローバルアドレス情報（１３２．１５２．６．５０：６００１）を取得する（Ｐ１、図７のステップＳ５０１参照）。この過程において、Ｐ２Ｐサーバ３とユーザ端末１ａとの間のルータ２Ａおよび２Ｃは、動的ＮＡＴ設定を行う。
【０１５１】
次に、ユーザ端末１ａは、直上のルータ２Ａに、静的ＮＡＴ設定を行う（Ｐ２、図７のステップＳ５０２参照）。ここでは、（１６２．１６８．０．１００：２７０１）が（１９２．１６８．１０．５：５００１）に変換され、（１９２．１６８．１０．５：５００１）が（１６２．１６８．０．１００：２７０１）に変換される静的ＮＡＴ設定が行われるとする。
【０１５２】
次に、ユーザ端末１ａは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ｄに対して、通信開始要求メッセージ（図９Ａ参照）を送信する（Ｐ３、図７のステップＳ５０４参照）。この際、ユーザ端末１ａは、自身に関するアドレス情報であるグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を、アドレス情報開始要求メッセージに含めて、通知する。
【０１５３】
次に、Ｐ２Ｐサーバ３は、ユーザ端末１ａからの通信開始要求メッセージをユーザ端末１ｄに転送する（Ｐ４、図７のステップＳ５０５参照）。
【０１５４】
次に、ユーザ端末１ｄは、通信開始要求メッセージを受信すると、アドレス情報通知要求メッセージＭ５１（図８Ａ参照）およびアドレス情報通知応答メッセージＭ５２（図８Ｂ参照）の送受信によって、自身のグローバルアドレス情報（１３３．１５２．６．５０：６００３）を、Ｐ２Ｐサーバ３から取得する（Ｐ５、図１０のステップＳ６０３参照）。
【０１５５】
その後、ユーザ端末１ｄは、直上のルータ２Ｂに対して、ＵＰｎＰによる静的ＮＡＴ設定を試みる（Ｐ６、図１０のステップＳ６０３参照）。しかし、ルータ２ＢはＵＰｎＰ非対応であるので、静的ＮＡＴ設定ができない。したがって、ユーザ端末１ｄは、図１０のステップＳ６０３およびＳ６０４の処理を適切に実行できず、ＷＡＮ側アドレス情報を取得できない。
【０１５６】
続いて、図１８Ｂの説明に進む。ユーザ端末１ｄは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ａに通信開始応答メッセージ（図９Ｂ参照）を送信する（Ｐ７、図１０のステップＳ６０５参照）。この際、ユーザ端末１ｄは、自身に関するアドレス情報であるグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を、アドレス情報開始要求メッセージに含めて、通知する。ただし、静的ＮＡＴ設定ができていないので、ＷＡＮ側アドレス情報は、空欄となる。
【０１５７】
次に、Ｐ２Ｐサーバ３は、ユーザ端末１ｄからの通信開始応答メッセージをユーザ端末１ａに転送する（Ｐ８、図１０のステップＳ６０６参照）。
【０１５８】
Ｐ８までの処理によって、ユーザ端末１ａとユーザ端末１ｄとは、お互いのアドレス情報を入手したこととなる。
【０１５９】
次に、ユーザ端末１ａは、ユーザ端末１ｄのローカルアドレス情報（１９２．１６８．１．１０：３００１）宛にＰ２Ｐ接続要求を送信する（Ｐ９、図１１ＡのステップＳ９０２参照）。しかし、送信先経路情報がない、送信先がない等の理由によりパケットは破棄される。
【０１６０】
合わせて、ユーザ端末１ｄは、ユーザ端末１ａのローカルアドレス情報（１９２．１６８．０．１００：２７０１）宛にＰ２Ｐ接続要求を送信する（Ｐ１０、図１１ＡのステップＳ９０２）。しかし、こちらも、送信先経路情報がない、送信先がない等の理由によりパケットは破棄される。
【０１６１】
そこで、ユーザ端末１ｄは、ユーザ端末１ａ側のＷＡＮ側アドレス情報（１９２．１６８．１０．５：５００１）へ接続要求を送信する（Ｐ１１、図１１ＡのステップＳ９０６参照）。この際、ルータ２Ｂは、（１９２．１６８．１０．４：６５５１）から（１９２．１６８．１．１０：３００１）へ、（１９２．１６８．１．１０：３００１）から（１９２．１６８．１０．４：６５５１）への変換処理を実行する。このときの動的ＮＡＴ２は、Ｐ５における動的ＮＡＴ１とは異なる。
【０１６２】
ユーザ端末１ｄからの接続要求は、ルータ２ＣのＷＡＮ側に出ないので、ルータ２ＣのＮＡＴは実行されず、ルータ２Ａに到達する（Ｐ１２）。
【０１６３】
ルータ２Ａは、Ｐ２において設定した静的ＮＡＴによる経路を使用して、ユーザ端末１ｄからの接続要求電文をユーザ端末１ａに転送する（Ｐ１３）。したがって、ユーザ端末１ａは、ポート番号“２７０１”でユーザ端末１ｄからの接続要求を受信する（Ｐ１４、図１１ＡのステップＳ９０４参照）。
【０１６４】
次に、ユーザ端末１ａは、受信した接続要求の送信元アドレス情報（１９２．１６８．１０．４：６５５１）宛に接続応答電文を送信する（Ｐ１５、図１１ＡのステップＳ９０５）。当該電文は、接続要求電文が到着した経路であるルータＡの静的ＮＡＴとルータＢの動的ＮＡＴ２とを経由して、ユーザ端末１ｄに届く（Ｐ１６）。ユーザ端末１ｄは、ポート番号３００１で、接続応答を受信する（Ｐ１７）。以降、ユーザ端末１ａとユーザ端末１ｄとは、当該静的ＮＡＴと当該動的ＮＡＴ２とを経由して、相互にＰ２Ｐ通信を行うこととなる。
【０１６５】
このように、第１の実施形態によれば、ユーザ端末間でグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報が交換され、適宜、いずれか一つのアドレス情報を用いてＰ２Ｐ通信が開始され、また、通信相手からの要求があった場合には当該要求に記述されている送信元アドレス情報を用いてＰ２Ｐ通信が開始される。したがって、複雑にネットワークが構成されている通信環境においても、Ｐ２Ｐ通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。さらに、ネットワークの構成が動的に変化したとしても、新たに交換されたグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報に基づいて、Ｐ２Ｐ通信が行われる。したがって、ネットワーク構成が動的に変化する場合にもＰ２Ｐ通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。また、いずれのアドレス情報を用いてもＰ２Ｐ通信が不可能である場合、ユーザ端末は、Ｐ２Ｐサーバを介したＰ２Ｐ通信またはＳＴＵＮ通信方式によるＰ２Ｐ通信に通信方式を切り替える。
【０１６６】
本発明のユーザ端末は、二つのユーザ端末間で交換される第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断する。当該方式としては、ローカルアドレス情報を用いてＰ２Ｐ通信を開始する方式（図１１ＡのＳ９１５参照）、ＷＡＮ側アドレス情報を用いてＰ２Ｐ通信を開始する方式（図１１ＡのＳ９１７参照）、送信元アドレス情報を用いてＰ２Ｐ通信を開始する方式（図１１ＡのＳ９１６、Ｓ９１８、および図１１ＢのＳ９２０参照）、グローバルＩＰアドレスに対応するアドレス情報でＰ２Ｐ通信を開始する方式（図１１ＢのＳ９１９参照）、Ｐ２Ｐサーバを用いてＰ２Ｐ通信を開始する方式（図１１ＢのＳ９１４参照）、およびＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始する方式（図１１ＢのＳ９１４参照）がある。
【０１６７】
なお、ユーザ端末は、ステップＳ９０１の判断を実行せずに、ステップＳ９０８の後、ステップＳ９１０の動作を実行してもよい。すなわち、グローバルＩＰアドレスが一致するか否かの判断は、必須ではない。本発明は、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を用いて、Ｐ２Ｐ通信が試みられるのであれば、Ｐ２Ｐ通信可能か否かの判断順序は、図１１の順序に限定されるものではない。
【０１６８】
なお、グローバルアドレス情報はＩＰアドレスのみであってもよい。グローバルアドレス情報がＩＰアドレスのみである場合、ユーザ端末は、グローバルアドレス情報を指定したＰ２Ｐ接続を行わないようにするとよい。
【０１６９】
なお、グローバルアドレス情報は、インターネット上でのアドレスに関する情報であれば、グローバルＩＰアドレスおよびポート番号に限定されるものではない。
【０１７０】
なお、ＷＡＮ側アドレス情報は、ユーザ端末の直上に存在するルータに割り当てられているＷＡＮ側でのアドレスに関する情報であれば、ＷＡＮ側ＩＰアドレスおよびポート番号に限定されるものではない。
【０１７１】
なお、ローカルアドレス情報は、ユーザ端末に割り当てられているローカルネットワーク上でのアドレスに関する情報であれば、ローカルＩＰアドレスおよびポート番号に限定されるものではない。
【０１７２】
（第２の実施形態）
第２の実施形態において、ユーザ端末は、自身のアドレス情報および通信相手のアドレス情報に基づいて、自身および通信相手がどのようなネットワーク構成で接続されているか、あるいは、どのような経路で通信が可能か、を予め判断した後、Ｐ２Ｐ通信を実行する。ユーザ端末からインターネットまでの間に２以下のルータしかない存在しなければ、どのような宛先アドレスを用いて通信を行うとＰ２Ｐ通信が可能を、第２の実施形態ではほぼ判定できる。ネットワークの構成、識別情報登録手順、通信情報交換手順は、第１の実施形態と同様であるので、説明を省く。なお、図中、（ｘ−ｙ）という表記が用いられている。ここで、“ｘ”は、自身の上位に存在するルータの数（ルータの階層数）を示す。“ｙ”は、通信相手のユーザ端末の上位に存在するルータの数（ルータの階層数）を示す。“？”の記号は、１階層であるか２階層であるかいずれか決定できない場合、または、階層不明である場合を示す。なお、第２の実施形態においても、ユーザ端末は、Ｐ２Ｐ通信プログラムを実行することによって、下記に説明する動作を実現する。
【０１７３】
図１９Ａおよび図１９Ｂは、第２の実施形態におけるユーザ端末の動作を示すフローチャートである。以下、図１９Ａおよび図１９Ｂを参照しながら、第２の実施形態におけるユーザ端末の動作について説明する。図１９Ａおよび図１９Ｂの動作は、使用アドレス情報判断部１０７およびＰ２Ｐ通信処理部１０８によって実現される。なお、図１９Ａおよび図１９Ｂを用いて、ユーザ端末の動作を説明するにあたり、ユーザ端末からインターネットまでの間に２以下のルータしかない存在しないとして想定して説明する。ただし、後述のように、第２の実施形態は、ユーザ端末からインターネットまでの間に３以上のルータが存在する場合にも転用可能である。
【０１７４】
ユーザ端末は、自身から通信相手に送った通信開始要求メッセージと、通信相手からＰ２Ｐサーバ３経由で入手した通信開始応答メッセージとを比較し、次のような手順を実行する。
【０１７５】
まず、ユーザ端末は、自身のグローバルＩＰアドレスと通信相手のグローバルＩＰアドレスとが一致するか否かを判断する（ステップＳ１０００）。グローバルＩＰアドレスが一致しない場合、自身と通信相手とはインターネット網を経由した通信であるので、ユーザ端末は、図１９Ｂに示す処理に進む。一方、グローバルＩＰアドレスが一致する場合、自身と通信相手とは同一のルータの配下での通信であり、ステップＳ１００１の動作に進む。ここで、グローバルＩＰアドレスが一致しない場合とは、自身と通信相手とがインターネットを介して接続されていることを示す。これを、第１のタイプという。一方、グローバルＩＰアドレスが一致しない場合を第２のタイプという。なお、図中には、タイプ番号が示されている。
【０１７６】
ステップＳ１００１において、ユーザ端末は、通信相手の直上のルータに静的ＮＡＴ設定が行われているか否かを判断する。具体的には、ユーザ端末は、通信相手のアドレス情報を参照して、ＷＡＮ側アドレス情報が設定されている場合、静的ＮＡＴ設定が行われていると判断する。静的ＮＡＴ設定が行われている場合、ユーザ端末は、ステップＳ１００２の動作に進む。一方、静的ＮＡＴ設定が行われていない場合、ユーザ端末は、通信相手の上に、ルータがいくつ存在しているか判断できない。この場合、ユーザ端末は、ステップＳ１００６の動作に進む。ここで、通信相手のユーザ端末の直上に存在するルータが静的ＮＡＴが設定可能である場合を第３のタイプという。通信相手のユーザ端末の直上に存在するルータが静的ＮＡＴが設定不可能である場合を第４のタイプという。
【０１７７】
ステップＳ１００２において、ユーザ端末は、通信相手の上にルータが２層存在するか否かを判断する。具体的には、ユーザ端末は、通信相手のアドレス情報を参照して、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとを比較する。グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが一致する場合、ユーザ端末は、通信相手の上にルータが１層存在すると判断する。一方、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが一致しない場合、ユーザ端末は、通信相手の上にルータが２層存在すると判断する。通信相手の上にルータが２層存在する場合、ユーザ端末は、ステップＳ１００３の動作に進む。一方、通信相手の上にルータが１層だけ存在する場合、ユーザ端末は、ステップＳ１００５の動作に進む。ここで、通信相手のユーザ端末からインターネットまでにルータが一つしか存在しない場合を第５のタイプという。通信相手のユーザ端末からインターネットまでにルータが二つ存在する場合を第６のタイプという。
【０１７８】
ステップＳ１００３において、ユーザ端末は、自身のアドレス情報に含まれるＷＡＮ側ＩＰアドレスと通信相手のアドレス情報に含まれるＷＡＮ側ＩＰアドレスとが一致するか否かを判断する。ＷＡＮ側ＩＰアドレスが一致する場合、自身の直上のルータと通信相手の直上のルータとは同一であることを意味している。したがって、自身の上に２層のルータが存在することとなる。ＷＡＮ側ＩＰアドレスが一致する場合、ユーザ端末は、ステップＳ１００５の動作に進む。一方、ＷＡＮ側ＩＰアドレスが一致しない場合、自身の直上のルータと通信相手の直上のルータとは同一でないことを意味している。したがって、自身の上に何層のルータが存在するかは不明である。ＷＡＮ側ＩＰアドレスが一致しない場合、ユーザ端末は、ステップＳ１００４の動作に進む。ここで、ＷＡＮ側ＩＰアドレスが一致する場合を第７のタイプという。ＷＡＮ側ＩＰアドレスが一致しない場合を第８のタイプという。
【０１７９】
ステップＳ１００４において、すなわち、アドレス情報が第２、第３、第６、および第８のタイプに属する場合、ユーザ端末は、通信相手のＷＡＮ側アドレス情報（ＩＰアドレスとポート番号）へ通信路接続を要求する。通信路接続要求電文は周知のものでよい。通信相手は、受信した通信路接続要求電文のヘッダに記述された送信元アドレス情報に応答を送信する。もし、自身の上のルータで静的ＮＡＴが設定されていなくとも、自身から通信相手へ向けた通信により、動的ＮＡＴが設定される。したがって、当該通信相手から返信される通信路接続応答電文は、当該動的ＮＡＴによる通信経路を逆にたどってユーザ端末自身に届く。したがって、自身と通信相手との間でＰ２Ｐ通信が実現できる。
【０１８０】
ステップＳ１００４に示すＰ２Ｐ通信が行われるケースは、たとえば、図１４Ａに示すユーザ端末１ａと図１４Ｂに示すユーザ端末１ｄとの間において、ユーザ端末１ａからユーザ端末１ｄへの通信路接続の場合である。その他、図１６Ｂに示すユーザ端末１ｃから図１６Ａに示すユーザ端末１ａへの通信路接続や、図１に示すユーザ端末１ｃから図１に示すユーザ端末１ｄへの通信路接続、このケースに相当する。
【０１８１】
ステップＳ１００５において、すなわち、アドレス情報が第２、第３、および第５のタイプに属する場合、または、アドレス情報が第２、第３、第６、および第７のタイプに属する場合、ユーザ端末は、通信相手のローカルアドレス情報へ通信路接続を要求する。これに応じて、通信相手は、受信した通信路接続要求電文のヘッダに記述された送信元アドレス情報に応答を送信する。これによって、自身と通信相手との間のＰ２Ｐ通信が実現される。通信路接続要求電文は、同じサブネットワーク内の通信であるか、または、通信相手が自身の上位（ＷＡＮ側）のルータに接続されているので、直接通信又は動的ＮＡＴ設定によって、通信相手からの返信を受信することができる。ただし、ステップＳ１００５において、２層を越えるルータが存在する場合には、自身と通信相手とは、同一ルータ配下でない場合が起こり得る。この場合、ステップＳ１００５の手順では、Ｐ２Ｐ通信が失敗する。この場合、Ｐ２Ｐ通信接続方式を切り替えて、Ｐ２Ｐサーバで通信データを中継する等の方法でユーザ端末間を接続する。
【０１８２】
ステップＳ１００５に示すＰ２Ｐ通信が行われるケースは、たとえば、図１６Ａに示すユーザ端末１ａから図１６Ｂに示すユーザ端末１ｃへの通信路接続に相当する。その他、図１Ａに示すユーザ端末ｂから図１Ａに示すユーザ端末ｃへの通信路接続や、図１Ａに示すユーザ端末ｄから図１Ａに示すユーザ端末ｃへの通信路接続もこのケースに相当する。
【０１８３】
ステップＳ１００６において、ユーザ端末は、自装置の直上のルータに静的ＮＡＴ設定が行われているか否かを判断する。具体的には、ユーザ端末は、アドレス情報にＷＡＮ側ＩＰアドレスが記載されていれば、静的ＮＡＴ設定が行われていると判断する。ここで、自装置の直上に存在するルータが静的ＮＡＴ設定可能である場合を第９のタイプという。一方、自装置の直上に存在するルータが静的ＮＡＴ設定不可能である場合を第１０のタイプという。
【０１８４】
ステップＳ１００６において、静的ＮＡＴ設定が行われていると判断した場合、自装置である第１のユーザ端末（以下、単に、第１のユーザ端末という）から送信された電文を、通信相手である第２のユーザ端末（以下、単に、第２のユーザ端末という）は、受信できないが、第２のユーザ端末からの電文を、第１のユーザ端末は、受信可能である。したがって、第１のユーザ端末は、ステップＳ１００７の動作に進み、第２のユーザ端末からの通信路接続の要求を待つ。第２のユーザ端末は、第１のユーザ端末の直上のルータは、静的ＮＡＴ設定を行っていると判断するので、ステップＳ１００４またはステップＳ１００５の動作を行う。したがって、第２のユーザ端末は、第１のユーザ端末への通信路接続要求を行う。よって、Ｐ２Ｐ通信が可能となる。ステップＳ１００７の動作が行われるのは、アドレス情報が、第２、第４、および第９のタイプに属する場合である。
【０１８５】
ステップＳ１００６において、静的ＮＡＴ設定が行われていないと判断した場合、第１および第２のユーザ端末共に、上位のルータの数が一つであるのか二つであるのか分からない。しかし、第１のユーザ端末と第２のユーザ端末とが、同じサブネットワーク内に位置する場合もある。したがって、第１のユーザ端末は、第２のユーザ端末のローカルアドレス情報へ通信路接続を要求する（ステップＳ１００８）。ステップＳ１００８の動作が行われるのは、アドレス情報が、第２、第４、および第１０のタイプに属する場合である。
【０１８６】
第１および第２のユーザ端末が同じサブネットワーク内に位置する場合、または、第１のユーザ端末が接続しているルータの上位（ＷＡＮ側）が接続しているルータに第２のユーザ端末が接続されている場合（たとえば、ユーザ端末１ａとユーザ端末１ｃとの関係）には、第１のユーザ端末からの電文は、動的ＮＡＴ設定によって、第２のユーザ端末に届く。
【０１８７】
なお、上記のような場合でも、各ルータに静的ＮＡＴが設定されていない場合（ＵＰｎＰ非対応の場合）、両者の関係がどのような接続関係になっているか判断できないため、ユーザ端末は、ステップＳ１００１でＮＯと判定し、ステップＳ１００７の動作を実行するのではなく、ステップＳ１００８の動作を実行することとなる。
【０１８８】
また、ステップＳ１００８で通信できない場合、逆に、第２のユーザ端末は、第１のユーザ端末のローカルアドレス情報へＰ２Ｐ接続を要求してもよい。このように制御することで、第２のユーザ端末が接続しているルータの上位（ＷＡＮ側）に接続されているルータに第１のユーザ端末が接続されているならば、Ｐ２Ｐ通信が可能となる。
【０１８９】
ステップＳ１００８の後、第１のユーザ端末は、通信路が確立されたか否かを判断する（ステップＳ１００９）。通信路が確立された場合、第１および第２のユーザ端末は、確立された通信路を用いて、以後、Ｐ２Ｐ通信する。一方、通信路が確立されていない場合、ユーザ端末１ａおよび１ｄのように上流に２つのルータがあり、共に直上のルータ２Ａおよび２Ｂにおいて静的ＮＡＴが設定されていない場合である。この場合、第１のユーザ端末は、Ｐ２Ｐ通信方式を、Ｐ２Ｐサーバ経由方式、ＳＴＵＮ方式の一方又は両方に切り替えて、第２のユーザ端末との間のＰ２Ｐ通信を実行する（ステップＳ１０１０）。
【０１９０】
なお、ステップＳ１００６において第１のユーザ端末に静的ＮＡＴ設定が行われている場合でも、ユーザ端末１ｃのように通信相手の上位のルータが１つのみである場合がある。したがって、第１のユーザ端末は、ステップＳ１００８およびステップＳ１００９のように、自身からの通信開始要求を試みた後、通信路が確立できない場合にステップＳ１００７に進むようにしてもよい。
【０１９１】
図１９ＢのステップＳ１１００において、第１のユーザ端末は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われているか否かを判断する。判断基準は、ステップＳ１００１と同様である。第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われている場合、第１のユーザ端末は、ステップＳ１１０１の動作に進む。一方、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われていない場合、第１のユーザ端末は、ステップＳ１１０８の動作に進む。
【０１９２】
ステップＳ１１０１において、第１のユーザ端末は、直上のルータに静的ＮＡＴ設定が行われているか否かを判断する。具体的には、第１のユーザ端末は、自装置のアドレス情報を参照して、ＷＡＮ側アドレス情報が設定されている場合、静的ＮＡＴ設定が行われていると判断する。静的ＮＡＴ設定が行われていない場合、第１のユーザ端末は、ステップＳ１１０３の動作に進む。一方、静的ＮＡＴ設定が行われている場合、第１のユーザ端末は、ステップＳ１１０２の動作に進む。ここで、自装置の直上に存在するルータが静的ＮＡＴ可能な場合を第９のタイプという。一方、自装置の直上に存在するルータが静的ＮＡＴ設定不可能な場合を第１０のタイプという。
【０１９３】
ステップＳ１１０２において、第１のユーザ端末は、自装置の上のルータが２層であるか否かを判断する。具体的には、第１のユーザ端末は、自装置のアドレス情報を参照して、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとを比較する。グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが一致する場合、ユーザ端末は、自装置の上にルータが１層存在すると判断する。一方、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが一致しない場合、ユーザ端末は、通信相手の上にルータが２層存在すると判断する。ルータが２層である場合、第１のユーザ端末は、ステップＳ１１０３の動作に進む。一方、ルータが２層でない場合、すなわち、ルータが１層である場合、第１のユーザ端末は、ステップＳ１１０４の動作に進む。ここで、自装置からインターネットまでにルータが一つしか存在しない場合を第１１のタイプという。自装置からインターネットまでにルータが二つ存在する場合を第１２のタイプという。
【０１９４】
ステップＳ１１０４において、第１のユーザ端末は、第２のユーザ端末の上のルータが２層であるか否かを判断する。第２のユーザ端末の上のルータが２層である場合、第１のユーザ端末は、ステップＳ１１０５の動作に進む。一方、第２のユーザ端末の上のルータが２層でない場合、すなわち、１層である場合、第１のユーザ端末は、ステップＳ１１０６の動作に進む。
【０１９５】
ステップＳ１１０３において、第１のユーザ端末は、第２のユーザ端末の上のルータが２層であるか否かを判断する。第２のユーザ端末の上のルータが２層でない場合、第１のユーザ端末は、ステップＳ１１０６に進む。一方、第２のユーザ端末の上のルータが２層である場合、第１のユーザ端末は、ステップＳ１１０７の動作に進む。
【０１９６】
ステップＳ１１０５の動作が実行される条件は、第１および第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３および第９のタイプであり）、第１のユーザ端末の上のルータが１層であり（第１１のタイプであり）、かつ、第２のユーザ端末の上のルータが２層である（第６のタイである）場合である。たとえば、図１Ａの例では、第１のユーザ端末がユーザ端末１ｅであり、第２のユーザ端末がユーザ端末１ａである場合である。第２のユーザ端末の上に２層のルータが存在する場合、第２のユーザ端末は、直上のルータよりも上のルータの静的ＮＡＴ設定を行うことができない。したがって、第１のユーザ端末から第２のユーザ端末への通信路接続要求電文は届かない。一方、第１のユーザ端末の上のルータは１層であり、かつ当該ルータには静的ＮＡＴ設定が行われているので、第２のユーザ端末から第１のユーザ端末への通信路接続要求電文は、第１のユーザ端末に届く。したがって、第１のユーザ端末は、第２のユーザ端末からの通信路接続の要求を待つ（ステップＳ１１０５）。このような条件の場合、第２のユーザ端末は、後述のステップＳ１１０６の動作を実行することとなる。ステップＳ１１０６において、第２のユーザ端末は、第１のユーザ端末のＷＡＮ側アドレス情報に基づいて、通信路接続要求を送信する。なお、ステップＳ１１０６の動作では、第２のユーザ端末の上に存在するルータが１層であるので、ＷＡＮ側アドレス情報のＩＰアドレスとグローバルアドレス情報のＩＰアドレスとは一致する。
【０１９７】
ステップＳ１１０６の動作が実行される条件は、三つある。第１は、第１および第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３および第９のタイプ）、かつ第１のユーザ端末の上にルータが１層だけ存在し（第１１のタイプ）、第２のユーザ端末の上にルータが１層だけ存在する（第５のタイプ）場合である。第２は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３のタイプ）、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われておらず（第１０のタイプ）、第２のユーザ端末の上にルータが１層だけ存在する（第５のタイプ）場合である。第３は、第１および第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３および第９のタイプ）、かつ第１のユーザ端末の上にルータが２層存在し（第１２のタイプ）、第２のユーザ端末の上にルータが１層だけ存在する（第５のタイプ）場合である。この場合、第１のユーザ端末は、第２のユーザ端末のＷＡＮ側アドレス情報を用いて、第２のユーザ端末に対して通信路接続要求を送信する（ステップＳ１１０６）。なお、ステップＳ１１０６では、第２のユーザ端末の上にルータが１層しかないので、ＷＡＮ側アドレス情報のＩＰアドレスとグローバルアドレス情報のＩＰアドレスとは一致している。これに応じて、第２のユーザ端末は、当該要求の送信元情報に基づいて応答することができるので、第１のユーザ端末と第２のユーザ端末との間でのＰ２Ｐ通信のための通信路が確立する。
【０１９８】
ステップＳ１１０８において、第１のユーザ端末は、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われているか否かを判断する。静的ＮＡＴ設定が行われている場合、第１のユーザ端末は、ステップＳ１１０９の動作に進む。一方、静的ＮＡＴ設定が行われていない場合、第１のユーザ端末は、ステップＳ１１０７の動作に進む。
【０１９９】
ステップＳ１１０９において、第１のユーザ端末は、第１のユーザ端末の上に存在するルータが２層であるか否かを判断する。２層である場合、第１のユーザ端末は、ステップＳ１１０７の動作に進む。一方、２層でない場合、第１のユーザ端末は、ステップＳ１１１０の動作に進む。
【０２００】
ステップＳ１１０７の動作が実行される条件は、４つ存在する。
【０２０１】
第１は、第１および第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３および第９のタイプ）、第１のユーザ端末の上に存在するルータが２層であり（第１２のタイプ）、第２のユーザ端末の上に存在するルータが２層（第６のタイプ）の場合である。第１の場合、第１および第２のユーザ端末の上に、静的ＮＡＴを設定できないルータが１層存在することとなる。したがって、第１のユーザ端末からの通信路接続要求電文も第２のユーザ端末からの通信路接続要求電文も、お互いに届かない。ゆえに、第１のユーザ端末は、ステップＳ１１０７の動作を実行する。
【０２０２】
第２は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第３のタイプ）、第１のユーザ端末の直上のルータには静的ＮＡＴ設定が行われておらず（第１０のタイプ）、第２のユーザ端末の上に存在するルータが２層である（第６のタイプ）場合である。第２の場合、第２のユーザ端末の上に静的ＮＡＴ設定されていないルータが存在するので、第１のユーザ端末からの通信路接続要求電文は、第２のユーザ端末に届かない。また、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われていないので、第２のユーザ端末からの通信路接続要求電文は第１のユーザ端末に届かない。したがって、第１のユーザ端末は、ステップＳ１１０７の動作を実行する。
【０２０３】
第３は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われておらず（第４のタイプ）、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われておらない（第１０のタイプ）場合である。第３の場合、第１および第２の直上のルータに静的ＮＡＴ設定が行われていないので、第１および第２のユーザ端末からの通信路接続要求電文は、お互いに受信できない。したがって、第１のユーザ端末は、ステップＳ１１０７の動作に進む。第３の条件は、たとえば、図１２Ａ，Ｂのような場合を指している。
【０２０４】
第４は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われておらず（第４のタイプ）、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第９のタイプ）、第１のユーザ端末の上に存在するルータが２層である（第１２のタイプ）場合である。第４の場合、第１のユーザ端末の上に、静的ＮＡＴ設定を行うことができないルータが存在することとなるので、第２のユーザ端末からの通信路接続要求電文は、第１のユーザ端末に届かない。また、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われていないので、第１のユーザ端末からの通信路接続要求電文は、第２のユーザ端末には届かない。したがって、第１のユーザ端末は、ステップＳ１１０７の動作を実行する。
【０２０５】
上記第１〜第４の場合のように、静的ＮＡＴが設定できていないルータが存在する場合、動的ＮＡＴ設定によって通信路を確立するしかないが、動的ＮＡＴ設定によって通信路を確立するためには、一方からの電文が他方に届かなければならない。第１〜第４の場合では、双方からの電文をお互いに受信することができないので、動的ＮＡＴ設定によっても、通信路を確立することができない。そこで、ステップＳ１１０７において、第１の通信端末は、Ｐ２Ｐサーバ経由方式、ＳＴＵＮ方式の一方、又は両方に切り替えて、第２のユーザ端末との間でＰ２Ｐ通信を行う。
【０２０６】
ステップＳ１１００の動作が実行される条件は、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われておらず（第４のタイプ）、第１のユーザ端末の直上のルータに静的ＮＡＴ設定が行われており（第９のタイプ）、かつ第１のユーザ端末の上に存在するルータが１層だけである（第１１のタイプ）場合である。この場合、第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われていないので、第１のユーザ端末からの通信路接続要求電文は、第２のユーザ端末に届かない。しかし、第１のユーザ端末の上に存在するルータが１層で、当該ルータに静的ＮＡＴ設定が行われているので、第２のユーザ端末は、ステップＳ１１０６の動作を実行することによって、通信路接続要求電文を第１のユーザ端末に届かせることができる。よって、第１のユーザ端末は、第２のユーザ端末からの通信路接続要求電文を待つ（ステップＳ１１００）。これによって、Ｐ２Ｐ通信が実現される。
【０２０７】
上記説明では、第１および第２のユーザ端末は、共に、図１９Ａおよび図１９Ｂに示す手順を備えたユーザ端末であるとした。第２のユーザ端末が図１９Ａおよび図１９Ｂに示す手順を備えていない場合、第１のユーザ端末から送信した通信路接続要求電文を第２のユーザ端末が受信できない場合がある。この場合、第２のユーザ端末は、通信路接続応答電文を送信しない。また、第２のユーザ端末が、通信路接続要求電文を送信してこない場合もあり得る。このような場合に備えて、図１９Ａおよび図１９Ｂのエンドの直前に、第１のユーザ端末は、たとえば、ステップＳ１００９のようにして第２のユーザ端末との間で通信路を確立できたか否かを判断し、確立できていない場合、たとえば、ステップＳ１０１０のようにＰ２Ｐサーバ経由方式、ＳＴＵＮ方式の一方、又は両方に切り替える動作を実行できるようにしておくとよい。
【０２０８】
図１９ＡのステップＳ１００５およびステップＳ１００８において、第１のユーザ端末は、第２のユーザ端末のローカルアドレス情報に通信路接続要求を試みるようにした。ユーザ端末のローカルＩＰアドレス情報は、個々のルータが割り振る。したがって、異なるサブネットワークにおいて、ローカルＩＰアドレス情報が同じ値になっているユーザ端末が複数存在することがある。ゆえに、ローカルアドレス情報を宛先とした場合、所望の通信相手以外のユーザ端末に通信路接続要求電文が届くことがある。しかし、所望の通信相手以外のユーザ端末は、事前の通信情報の交換を行っていないので、誤って届いた電文であることがわかる。よって、所望の通信相手以外のユーザ端末は、通信路接続応答電文を返信しない。従って、誤った通信路接続が起きることはない。
【０２０９】
ユーザ端末がインターネット網に直接接続されている場合、すなわち、グローバルＩＰアドレスがローカルＩＰアドレスと一致する場合、上位ルータのＷＡＮ側アドレス情報欄にローカルアドレス情報が記載されている。したがって、ステップＳ１１０４またはステップＳ１１０３を経た場合、第１のユーザ端末は、あたかも上位ルータが１層であるかのように判断する。この場合、第１のユーザ端末は、ステップＳ１１０６の動作に進み、相手のＷＡＮ側アドレス情報を宛先とする通信路接続要求を行う。しかし、実質的には、この場合のステップＳ１１０６の動作は、相手のローカルアドレス情報を直接の宛先として適用する動作と同様になる。
【０２１０】
このように、第２の実施形態によれば、ユーザ端末は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が予め定められたタイプの内、いかなるタイプに属するか否かを判断する。ユーザ端末は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じて、宛先となるアドレス情報を第２のグローバルアドレス情報にするか、第２のＷＡＮ側アドレス情報にするか、それとも第２のローカルアドレス情報にするかを予め決めておく。さらに、ユーザ端末は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じて、通信相手のユーザ端末からの接続要求を待つか、それとも、通信方式を切り替えるかを予め決めておく。そして、ユーザ端末は、第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプに応じたアドレス情報を使用して、Ｐ２Ｐ通信を開始する。第２の実施形態で示した第１〜第１２のタイプの組み合わせは、ユーザ端末の上に存在するルータの数が２つ以下の場合を全て網羅している。したがって、第２の実施形態に示す手順によれば、ユーザ端末は、通信相手との間の通信経路を予測して、どのようなアドレス情報を用いてＰ２Ｐ通信を開始すればよいか、予め判別することができる。したがって、第２の実施形態に係るユーザ端末は、通信路接続要求電文を送信する試行回数を減らすことができ、無駄な通信路接続要求電文の送信を減らすことができる。結果、通信路の確立を速めることができる。
【０２１１】
第２の実施形態においても、第１の実施形態と同様、ユーザ端末は、第１および第２のグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報に基づいて、Ｐ２Ｐ通信が可能な方式を判断する。当該方式としては、ローカルアドレス情報を用いてＰ２Ｐ通信を開始する方式（図１９ＡのＳ１００５およびＳ１００８参照）、ＷＡＮ側アドレス情報を用いてＰ２Ｐ通信を開始する方式（図１９ＡのＳ１００４、および図１９ＢのＳ１１０６参照）、送信元アドレス情報を用いてＰ２Ｐ通信を開始する方式（図１９ＡのＳ１００７、図１９ＢのＳ１１０５、およびＳ１１１０参照）、グローバルＩＰアドレスに対応するアドレス情報でＰ２Ｐ通信を開始する方式（図１９ＢのＳ１１０６参照）、Ｐ２Ｐサーバを用いてＰ２Ｐ通信を開始する方式（図１９ＡのＳ１０１０、およびＳ１１０７参照）、およびＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始する方式（図１９ＡのＳ１０１０、および図１４ＢのＳ１１０７参照）がある。
【０２１２】
本発明は、いずれかのユーザ端末からインターネットまでの間に存在するルータが３つ以上の場合にも適用できる。以下、いずれかのユーザ端末からインターネットまでの間にルータが３つ以上あるネットワークを考える。
【０２１３】
ユーザ端末からインターネットまでの間にルータが３つ以上ある場合も、第１および第２のユーザ端末は、図１９Ａおよび図１９Ｂに示す手順で動作したとする。
【０２１４】
まず、第１および第２のユーザ端末が、当該ネットワーク内の任意のルータから、二つ下のルータまでに位置していると想定する。この場合、二つのグローバルＩＰアドレスは一致するので、図１９Ａの手順にしたがって、第１および第２のユーザ端末は、Ｐ２Ｐ通信を試みる。当該任意のルータは、ユーザ端末からインターネットまでの間にルータが２つ以下しか存在しなかった場合の最上位のルータに相当する。したがって、この場合、第１および第２のユーザ端末は、図１９Ａに示す手順にしたがって動作することで、Ｐ２Ｐ通信を開始することができる。
【０２１５】
次に、第１および第２のユーザ端末のいずれか一方のユーザ端末からインターネットまでの間にルータが３つ以上存在し、他方のユーザ端末からインターネットまでの間に存在するルータが２つ以下であったと想定する。この場合、二つのグローバルＩＰアドレスは一致しないので、図１９Ｂの手順にしたがって、第１および第２のユーザ端末は、Ｐ２Ｐ通信を試みる。当該他方のユーザ端末が第２のユーザ端末であったとする。第２のユーザ端末の直上のルータに静的ＮＡＴ設定が行われている場合、第１のユーザ端末は、ステップＳ１１０３の動作に進むこととなる。第２のユーザ端末の上にルータが一つしかない場合、第１のユーザ端末は、ステップＳ１１０６の動作に進んで、第２のユーザ端末のグローバルアドレス情報を用いて、Ｐ２Ｐ通信を開始する。一方、第２のユーザ端末の上に、ルータが二つある場合、第１のユーザ端末は、ステップＳ１１０７の動作に進んで通信方式を切り替える。したがって、第１および第２のユーザ端末は、Ｐ２Ｐ通信を開始することができる。
【０２１６】
第１および第２のユーザ端末のいずれか一方のユーザ端末からインターネットまでの間にルータが３つ以上存在する場合、想定される接続関係は、他にも存在する。したがって、図１９Ａおよび図１９Ｂに示す手順に従った場合、Ｐ２Ｐ通信が不可能である場合も存在するかもしれない。そこで、ユーザ端末は、図１９Ａおよび図１９Ｂのエンドの前に、通信相手との通信路が確立されたか否かを判断し、確立されていない場合、Ｐ２Ｐ通信方式をＰ２Ｐサーバ経由方式またはＳＴＵＮ方式に切り替えるようにするとよい。これによって、ユーザ端末からインターネットまでの間にルータが３つ以上存在する場合であっても、Ｐ２Ｐ通信が可能となる。
【０２１７】
上述のように、２つのユーザ端末が４つ以下のルータを介して結合されている場合、一方のユーザ端末の直上のルータがＵＰｎＰ対応で静的ＮＡＴ設定を行うことができれば、他方のユーザ端末からＰ２Ｐ通信の開始が可能である。
【０２１８】
上述のように、２つのユーザ端末が５つ以上の多数のルータを介して隔てられている場合、静的ＮＡＴ設定ができないルータがあったり、静的ＮＡＴ設定を試みても静的ＮＡＴ設定できないルータが途中に存在したりなどの理由によって、通信相手からの電文が届かないか、あるいは、自身宛でない電文が届く場合がある。したがって、ユーザ端末が属するネットワークが大規模なネットワークである可能性を考慮して、ユーザ端末は、所定の時間以内に通信ができたか否かを判断するステップと、通信できなかった場合にステップＳ１０１０、ステップＳ１１０７のようにＰ２Ｐサーバ経由方式および／またはＳＴＵＮ方式を試みるステップを、図１９Ａおよび図１９Ｂのエンドの前に設けるとよい。
【０２１９】
なお、図１９Ａおよび図１９Ｂのフローチャートの判定手順は、あくまでも一例である。第１および第２のグローバルアドレス情報ならびに第１および第２のＷＡＮ側アドレス情報が属するタイプの定義の仕方も、一例でしかない。自装置と通信相手との接続状態を知ることができるのであれば、ユーザ端末は、図１９Ａおよび図１９Ｂに示す判定手順以外の手順で、いかなるアドレス情報を用いて、Ｐ２Ｐ通信を開始したらよいのか判断してもよい。そのための判定手順は、ネットワークの接続状態を完全に、又は部分的に推測できる手順であれば、本実施形態に適用できる。
【０２２０】
以上説明したように、第１および第２の実施形態は、ステップＳ５０１、ステップＳ６０２のような、インターネット上のサーバを利用してユーザ端末に割り当てられるグローバルアドレス情報を取得するステップと、ステップＳ５０３、ステップＳ６０４のような、ユーザ端末から直上のルータのアドレス変換ルールを設定するステップと、ステップＳ５０２、ステップＳ６０３のような、ユーザ端末から直上のルータのＷＡＮ側アドレスを取得するステップと、ステップＳ５０４、ステップＳ５０５や、ステップＳ６０５、ステップＳ６０６のような、通信相手に対して、直上のルータに設定したアドレス変換ルールに基づくＷＡＮ側アドレス情報、サーバから取得するグローバルアドレス情報、およびローカルアドレス情報を通知するステップと、図１１、１９Ａ、１９Ｂにおいて説明したような、通知された情報を用いてＰ２Ｐ通信するステップと、を備えたことを特徴とするＰ２Ｐ通信方法である。また、第１および第２の実施形態において説明した各ステップを実行する手段を設けることにより、ユーザ端末間で直接通信するＰ２Ｐ通信を可能にするシステムを構成することができる。
【０２２１】
ユーザ端末は、通信相手のユーザ端末に、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を通知し、グローバルアドレス情報が等しい場合、ローカルアドレス情報またはＷＡＮ側アドレス情報を用いて、Ｐ２Ｐ通信を開始する。また、ユーザ端末は、通知された通信相手のアドレス情報と自身のアドレス情報とを比較して、通信相手のアドレス情報を利用してＰ２Ｐ通信可能であるか否かを判断し、不可能と判断した場合、通信方式を切り替えて通信を行うことを特徴とする。
【０２２２】
（第３の実施形態）
図２０は、本発明のＰ２Ｐ通信方式を実行することができるユーザ端末である通信装置の詳細な機能的構成を示すブロック図である。図２０に示すように、通信装置は、識別情報記録部２０１と、自他アドレス情報記憶部２０２と、アドレス情報比較判断部２０３、通信路確立判定部２０４と、制御部２０５と、通信方式切替部２０６と、アプリケーション処理部２０７と、識別情報登録送信部２０８と、アドレス情報通知要求送信・応答受信部２０９と、静的ＮＡＴ設定要求部２１０と、通信開始要求送信・応答受信部２１１と、通信路接続要求送信・応答受信部２１２と、Ｐ２Ｐ通信処理部２１３と、Ｐ２Ｐサーバ経由方式処理部２１４と、ＳＴＵＮ方式処理部２１５と、ネットワークインタフェース２１６とを備える。各機能ブロックは、図２０の矢印のようにそれぞれ結合されている。
【０２２３】
識別情報記録部２０１は、ユーザ端末である通信装置自身の識別情報を記憶しているメモリである。自他アドレス情報記憶部２０２は、図１４Ａおよび図１４Ｂで示されるような、自身のアドレス情報と通信相手のアドレス情報とを記憶するメモリである。アドレス情報比較判断部２０３、通信路確立判定部２０４、通信方式切替部２０６、アプリケーション処理部２０７、識別情報登録送信部２０８、アドレス情報通知要求送信・応答受信部２０９、静的ＮＡＴ設定要求部２１０、通信開始要求送信・応答受信部２１１、通信路接続要求送信・応答受信部２１２、Ｐ２Ｐ通信処理部２１３、Ｐ２Ｐサーバ経由方式処理部２１４、ＳＴＵＮ方式処理部２１５、およびネットワークインタフェース２１６は、上記第１および第２の実施形態で説明した処理を担当する機能ブロックであり、制御部２０５の指示によって、所定の処理を実行する。ネットワークインタフェース２１６は、物理層、データリンク層の処理を行い、宅内のネットワークやインターネット網との間でのデータの送受信を行う。
【０２２４】
識別情報登録送信部２０８は、ステップＳ３０１およびＳ３０２の処理のために、Ｐ２Ｐサーバ３との間の通信路を確立し、識別情報記録部２０１内の自身の識別情報をＰ２Ｐサーバに送信して、Ｐ２Ｐサーバ３に登録する。
【０２２５】
アドレス情報通知要求送信・応答受信部２０９は、ステップＳ５０１で説明したように、アドレス情報通知要求メッセージを作成、送信し、アドレス情報通知応答メッセージを受信し、入手したアドレス情報を自他アドレス情報記憶部２０２のグローバルアドレス情報欄に記載する。
【０２２６】
アドレス情報比較判断部２０３は、ステップＳ５０２のように、アドレス情報の比較を行い、比較結果を制御部２０５に渡す。比較結果に基づき、制御部２０５は、必要な場合、静的ＮＡＴ設定要求部２１０に直上のルータに対して静的ＮＡＴ設定を行わせる。静的ＮＡＴ設定要求部２１０は、設定結果を自他アドレス情報記憶部２０２のＷＡＮ側アドレス情報欄に記載する。静的ＮＡＴ設定要求部２１０の処理は、ステップＳ５０２、およびステップＳ５０３で説明した処理である。
【０２２７】
通信開始要求送信・応答受信部２１１は、ステップＳ５０４に従って、Ｐ２Ｐサーバ３宛に通信開始要求メッセージを送信する。また、通信開始要求送信・応答受信部２１１は、通信開始要求メッセージに対する返信である通信開始応答メッセージを待ち、受信したら、通信開始応答メッセージに記載された通信相手のアドレス情報を自他アドレス情報記憶部２０２の通信相手欄に記憶する。これらの動作状態は、制御部２０５が監視する。
【０２２８】
本通信装置が他の通信装置の通信相手である場合、ステップＳ６０１〜ステップＳ６０５において説明した処理を、識別情報登録送信部２０８、アドレス情報通知要求送信・応答受信部２０９、アドレス情報比較判断部２０３、静的ＮＡＴ設定要求部２１０、通信開始要求送信・応答受信部２１１が、制御部２０５の指示の元に行う。
【０２２９】
図１４Ａおよび図１４Ｂに示したような、自他のアドレス情報が入手できたら、通信装置は、図１１、または、図１９Ａおよび図１９Ｂで説明したＰ２Ｐ通信路接続の動作に移る。
【０２３０】
アドレス情報比較判断部２０３は、制御部２０５の指示に従い、自他アドレス情報記憶部２０２内の所定のアドレス情報を比較し、インターネット網を介した通信であるか、同一ルータ配下の通信であるか、Ｐ２Ｐ通信の可能な宛先か否かを判断し、判断結果を制御部２０５に通知する。
【０２３１】
制御部２０５は、通信路接続要求送信・応答受信部２１２に指示して、選択されたアドレス情報宛に通信路接続要求電文を送信させ、通信相手からの通信路接続応答電文を待たせる。自身からの通信路接続要求電文を通信相手に届ける経路がないとの判断結果の場合は、制御部２０５は、通信路接続要求送信・応答受信部２１２に指示して、通信相手からの通信路接続要求電文の受信を待たせる。
【０２３２】
通信路確立判定部２０４は、制御部２０５の指示の下に、通信路接続要求送信・応答受信部２１２による通信路接続要求電文の送信、および対応する通信路接続応答電文の受信、ならびに、通信路接続要求電文の受信、および対応する通信路接続応答電文の送信を監視し、通信路が確立されたか否かを判断し、判断結果を制御部２０５に通知する。通信路接続要求電文の送信および対応する通信路接続応答電文の受信、または、通信路接続要求電文の受信および対応する通信路接続応答電文の送信が成功した場合、通信路確立判定部２０４は、制御部２０５にその結果を知らせる。制御部２０５は、Ｐ２Ｐ通信処理部２１３を起動し、以降、アプリケーション処理部２０７が、Ｐ２Ｐ通信処理部２１３を介して、通信相手との間でＰ２Ｐ通信を行う。
【０２３３】
通信路接続要求電文が送信できず、かつ、通信路接続要求電文を受信していない場合、通信方式切替部２０６は、Ｐ２Ｐ通信ができないと判断し、制御部２０５に通知する。
【０２３４】
制御部２０５は、その通知を受けて、通信方式切替部２０６に指示して、Ｐ２Ｐサーバ経由方式処理部２１４、または、ＳＴＵＮ方式処理部２１５を起動し、通信経路を確立させる。
【０２３５】
図１１ＡおよびＢにおけるステップＳ９０１における処理およびステップＳ９１０におけるアドレス情報探索処理は、アドレス情報比較判断部２０３が行う処理である。ステップＳ９０２、ステップＳ９０５、ステップＳ９０９、ステップＳ９１０の一部、ステップＳ９１３の処理は、通信路接続要求送信・応答受信部２１２が行う処理である。ステップＳ９０３、ステップＳ９０４、ステップＳ９０７、ステップＳ９０８、ステップＳ９１１、ステップＳ９１２の処理は、通信路確立判定部２０４が行う処理である。
【０２３６】
図１９ＡにおけるステップＳ１０００〜ステップＳ１００３、ステップＳ１００６、ステップＳ１００８、図１９ＢにおけるステップＳ１１００〜ステップＳ１００４、ステップＳ１１０８、ステップＳ１１０９の処理は、アドレス情報比較判断部２０３において行う処理である。図１９ＡにおけるステップＳ１００４、ステップＳ１００５、ステップＳ１００７、ステップＳ１００８、図１９ＡにおけるステップＳ１１０５、ステップＳ１１０６、ステップＳ１１１０の処理は、通信路接続要求送信・応答受信部２１２が行う処理である。ステップＳ１００９の処理は、通信路確立判定部２０４が行う処理である。ステップＳ１０１０、ステップＳ１１０７の処理は、通信方式切替部２０６が行う処理である。
【０２３７】
以上の説明における各ブロックの機能について整理すると次のようになる。
【０２３８】
アドレス情報通知要求送信・応答受信部２０９は、ユーザ端末がＰ２Ｐサーバ３を利用してユーザ端末自身に割り当てられるグローバルアドレス情報を取得する。
【０２３９】
静的ＮＡＴ設定要求部２１０は、上位ルータにアドレス変換ルールを設定させ、上位ルータのＷＡＮ側アドレス情報を取得する。
【０２４０】
通信開始要求送信・応答受信部２１１は、Ｐ２Ｐサーバ３から取得したグローバルアドレス情報、上位ルータに設定されたアドレス変換ルールのＷＡＮ側アドレス情報、およびローカルアドレス情報を、Ｐ２Ｐサーバ３を介して通信相手に対して送信する。
【０２４１】
Ｐ２Ｐ通信処理部２１３は、通知されたアドレス情報を用いてＰ２Ｐ通信する。
【０２４２】
アドレス情報比較判断部２０３は、通知されたグローバルアドレス情報、ＷＡＮ側アドレス情報、ローカルアドレス情報について、グローバルアドレス情報が自身と通信相手において等しいか否かを比較する。比較結果に基づき、通信路接続要求送信・応答受信部２１２は、ローカルアドレス情報及びＷＡＮ側アドレス情報、又はいずれか一方を用いて接続又は通信する。また、アドレス情報比較判断部２０３は、自身の直上のルータのＮＡＴ設定検査のステップ、通信相手の直上のルータのＮＡＴ設定検査、通信相手の上位ルータ２層の有無の検査、自身と通信相手の上位ルータのＷＡＮ側ＩＰアドレスの一致検査、の少なくとも何れかを行い、直接通信可能か否かを判断する。
【０２４３】
通信路接続要求送信・応答受信部２１２は、通信相手のローカルアドレス情報、ＷＡＮ側アドレス情報、グローバルアドレス情報の順序で接続又は通信を試みる。試みが非成功の場合、通信路接続要求送信・応答受信部２１２は、通信相手からの接続を待つ。交換したグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報について、グローバルアドレス情報が自身と通信相手との間で等しく、通知された通信相手のアドレス情報と自身のアドレス情報とに基づいて、当該アドレス情報を利用して直接通信可能かであるか否かをアドレス情報比較判断部２０３が判断し、可能と判断した場合に、通信路接続要求送信・応答受信部２１２は、ローカルアドレス情報及びＷＡＮ側アドレス情報、又はいずれか一方を用いて接続又は通信する。
【０２４４】
通信開始要求送信・応答受信部２１１は、グローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報を通信相手に通知する。アドレス情報比較判断部２０３によってグローバルアドレス情報が自身と通信相手との間で等しくないと判断された場合、通信路接続要求送信・応答受信部２１２は、グローバルアドレス情報を用いて接続又は通信する。
【０２４５】
アドレス情報比較判断部２０３は、通信相手のグローバルＩＰアドレスを、ローカルアドレス情報、ＷＡＮ側アドレス情報、グローバルアドレス情報の順序に調べる。その結果に基づいて、通信路接続要求送信・応答受信部２１２は、グローバルＩＰアドレスに該当するアドレス情報宛に接続又は通信を試み、試みが非成功の場合は、通信相手からの接続を待つ。
【０２４６】
また、アドレス情報比較判断部２０３は、交換したグローバルアドレス情報、ＷＡＮ側アドレス情報、およびローカルアドレス情報について、グローバルアドレス情報が自身と通信相手において等しくなく、通知された通信相手のアドレス情報と自身のアドレス情報とをよって、当該アドレス情報を利用して直接通信可能であるか否かを判断する。直接通信可能である場合、通信路接続要求送信・応答受信部２１２は、グローバルアドレス情報を用いて接続又は通信するようにする。
【０２４７】
また、アドレス情報比較判断部２０３は、自身の直上のルータのＮＡＴ設定検査のステップ、通信相手の直上のルータのＮＡＴ設定検査、通信相手の上位ルータ２層の有無の検査、自身と通信相手の上位ルータのＷＡＮ側ＩＰアドレスの一致検査、の少なくとも何れかを行う。
【０２４８】
通信方式切替部２０６は、アドレス情報比較判断部２０３が、通知された通信相手のアドレス情報と自身のアドレス情報に基づいて、当該アドレス情報を利用して直接通信可能であるか否かを判断し、不可能であると判断した場合、通信方式を切り替えて通信を行う。
【０２４９】
ＮＡＴ設定変更要求部２１７は、交換したアドレス情報に基づいて、直上のルータに設定されている不要なアドレス変換ルールを削除する。たとえば、ＮＡＴ設定変更要求部２１７は、静的ＮＡＴ設定によってＰ２Ｐ通信が不可能と判断された場合、静的ＮＡＴ設定を削除するとよい。
【０２５０】
ＮＡＴ設定変更要求部２１７は、Ｐ２Ｐ通信を開始したら、上位ルータに設定されたアドレス変換ルールが通信相手を限定しない相手非限定型の場合、通信相手を限定する相手限定型のアドレス変換ルールに変更する。ここで、相手非限定型ＮＡＴとは、Ｆｕｌｌ−Ｃｏｎｅ  ＮＡＴ以外のＮＡＴのことをいう。
【０２５１】
図２０における、アドレス情報比較判断部２０３、通信路確立判定部２０４、制御部２０５、通信方式切替部２０６、アプリケーション処理部２０７、識別情報登録送信部２０８、アドレス情報通知要求送信・応答受信部２０９、静的ＮＡＴ設定要求部２１０、通信開始要求送信・応答受信部２１１、通信路接続要求送信・応答受信部２１２、Ｐ２Ｐ通信処理部２１３、Ｐ２Ｐサーバ経由方式処理部２１４、ＳＴＵＮ方式処理部２１５は、個別のハードウエアによって構成することが可能である。一般的には、これらの機能ブロックは、第１および第２の実施形態に示したように、コンピュータ装置でプログラム（Ｐ２Ｐ通信プログラム）が実行されることによって、実現可能である。従って、各機能ブロックは、周知のコンピュータシステム上のＣＰＵ、ＲＡＭやＲＯＭなどのメモリ、ＨＤＤ上に実現される。すなわち、各機能ブロックは、物理的にはハードウエアを共有していてもよい。また、各機能ブロックは、完全に独立していている個々のプログラムによって実現されてもよいし、部分的に共有しているプログラムによって実現されてもよい。
【０２５２】
（第４の実施形態）
上記各実施形態では、動的ＮＡＴ設定は、ユーザ端末からの送信に際してルータが自動的に行うこととした。
【０２５３】
動的ＮＡＴ設定には、通信相手からの返信があった場合のみアドレス情報変換を行う動的ＮＡＴ設定と、データの送信元に関わらずアドレス変換ルールに基づいたＮＡＴ変換表に従ってアドレス情報変換を行う動的ＮＡＴ設定とが存在する。
【０２５４】
前者の場合、データの送信元が限定されている相手限定型ＮＡＴ設定である。ユーザ端末からＰ２Ｐサーバ３への送信に際して設定された動的ＮＡＴ設定が相手限定型ＮＡＴ設定である場合、送信元がＰ２Ｐサーバ３でない限り、データは、ユーザ端末へ届かない。したがって、ユーザ端末からＰ２Ｐサーバ３への送信に際して設定された相手限定型の動的ＮＡＴ設定は、ユーザ端末間の通信に使用できない。よって、上記各実施形態において、ユーザ端末は、直上のルータに静的ＮＡＴ設定を行わせることとした。しかし、図５のステップＳ５０３のように、ユーザ端末間で通信を行う前に静的ＮＡＴ設定が行われる場合、通信相手であるユーザ端末からの返信が特定できない。したがって、上記各実施形態での静的ＮＡＴ設定は、送信元を問わずＮＡＴ変換を行うモードでなければならず、すなわち、相手非限定型の静的ＮＡＴ設定でなければならない。
【０２５５】
第４の実施形態では、相手非限定型の静的ＮＡＴ設定を、相手限定型の静的ＮＡＴ設定に切り替えることができるユーザ端末を提案する。
【０２５６】
図１４Ａおよび図１４Ｂに示すように、ユーザ端末は、アドレス情報を交換した段階で、通信相手のローカルＩＰアドレスおよびポート番号が分かる。したがって、ユーザ端末は、通信相手のアドレス情報が送信元の場合にのみ、静的ＮＡＴ設定に基づくＮＡＴ変換を行うように、ルータの設定を切り替えさせる。すなわち、ユーザ端末は、通信相手のアドレス情報が分かった段階で、ルータの設定を相手限定型の静的ＮＡＴ設定に切り替えさせる。
【０２５７】
たとえば、ユーザ端末は、ＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージに通信相手のアドレス情報を追加記載して、直上のルータに送信し、アドレス情報変換相手を限定するように指示する。静的ＮＡＴ設定のＷＡＮ側ＩＰアドレスおよびポート番号が通信相手に既に通知されている。したがって、アドレス情報変換相手を限定するように指示する際、ユーザ端末は、ＷＡＮ側ＩＰアドレスおよびポート番号を変更せずに、受信先の宛先アドレス情報だけを限定すればよい。
【０２５８】
このように、Ｐ２Ｐ通信が開始し、通信相手に関するアドレス情報を入手した後、ユーザ端末は、通信相手を限定するように静的ＮＡＴ設定を変更することによって、通信を希望するユーザ端末以外からの悪意による通信を受信することを避けることができる。したがって、セキュリティが向上する。
【０２５９】
なお、現在知られているＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージで通信相手を限定することができない場合、ユーザ端末は、通信相手のアドレス情報を記載できるエリアを追加した新たなＡｄｄＰｏｒｔＭａｐｐｉｎｇアクションメッセージを定義して使用すればよい。
【０２６０】
なお、図１０のステップＳ６０４では、ユーザ端末は、既に相手のアドレス情報を分かっているので、最初から、相手限定型の静的ＮＡＴ設定をルータに行うとよい。
【０２６１】
（第５の実施形態）
上記のように、ルータは、ユーザ端末による通信の際、相手限定型または相手非限定型の動的ＮＡＴ設定を行う。
【０２６２】
上記実施形態では、図７のステップＳ５０３において、ユーザ端末は、ルータに静的ＮＡＴ設定を行うこととした。
【０２６３】
しかし、第５の実施形態では、図７のステップＳ５０３において、ユーザ端末は、静的ＮＡＴ設定をルータに行わずに、相手非限定型の動的ＮＡＴ設定をルータに行うこととする。そして、ユーザ端末は、ステップＳ５０３において、相手非限定型の動的ＮＡＴ設定でのＷＡＮ側ＩＰアドレスとポート番号とをルータから取得して、上位ルータＷＡＮ側アドレス情報として記憶し、当該ＷＡＮ側アドレス情報を通信相手のユーザ端末にＰ２Ｐサーバ３経由で送信する。また、通信相手のユーザ端末は、図１０のステップＳ６０４において、同様に、相手非限定型の動的ＮＡＴ設定をルータに行ってもよい。
【０２６４】
第５の実施形態を実現するために、ユーザ端末は、相手非限定型のＮＡＴ変換を行うモードをルータに指示する機能を備えている必要がある。また、ルータは、上記指示に応じて、相手非限定型のＮＡＴ変換モードを設定する機能を備えている必要がある。また、ユーザ端末とルータとは、ルータに設定されているアドレス情報としてのＷＡＮ側ＩＰアドレスおよびポート番号を送受信するための電文および返信電文を通信する機能を備えている必要がある。これにより、ルータは、静的ＮＡＴ設定を行わなくてもよい。
【０２６５】
例えば、ユーザ端末である通信装置は、制御部２０５とＮＡＴ設定変更要求部２１７とを備える。制御部２０５は、上位ルータに設定された動的ＮＡＴ設定のアドレス変換ルールが相手限定型であるか相手非限定型であるかを、上位ルータに問い合わせる。相手限定型のアドレス変換ルールが上位ルータに設定されている場合、ＮＡＴ設定変更要求部２１７は、既に設定されている動的ＮＡＴ設定のアドレス変換ルールを相手非限定型に変更するように上位ルータに要求する。要求電文として、静的ＮＡＴ設定において説明した電文を変形した形式が利用できる。ＮＡＴ設定変更要求部２１７は、静的ＮＡＴ設定要求部２１０と並列的に設けられていればよい。制御部２０５は、上位ルータのＮＡＴ設定状況やＷＡＮ側アドレス情報の管理、ＮＡＴ設定変更要求部の動作管理、動作指示を行う。
【０２６６】
（第６の実施形態）
上記第４および第５の実施形態では、Ｐ２Ｐサーバ３経由のアドレス情報交換まで処理における動的ＮＡＴ設定および静的ＮＡＴ設定で、通信相手を限定する制御について説明した。第６の実施形態は、ユーザ端末間の通信開始において、ＮＡＴ変換の送信元の相手を限定する実施形態である。
【０２６７】
送信開始側のユーザ端末から通信相手のユーザ端末に送信する際、自動的に動的ＮＡＴ設定が行われる。ユーザ端末は、この動的ＮＡＴ設定を、通信相手からの返信に対してのみＮＡＴ変換する相手限定型に設定して使用するようにしてもよい。このためには、一旦静的ＮＡＴ設定によって開始した通信の後、送信開始側のユーザ端末は、自身の上位ルータの動的ＮＡＴ設定のＷＡＮ側ＩＰアドレスとポート番号を入手し、これを通信相手に通知する。以降、通信相手のユーザ端末は、返信の宛先に、新たな動的ＮＡＴ設定のＷＡＮ側ＩＰアドレスとポート番号を用いるようにすればよい。送信開始側のユーザ端末の上位ルータは、前に設定した静的ＮＡＴ設定が不要になる。したがって、当該上位ルータは、後述する第８の実施形態のように、不要になったＮＡＴ設定を削除すればよい。
【０２６８】
動的ＮＡＴ設定を相手限定型にするために、ユーザ端末である通信装置は、制御部２０５とＮＡＴ設定変更要求部２１７とを備えるとよい。制御部２０５は、上位ルータに設定された動的ＮＡＴ設定のアドレス変換ルールが相手限定型であるかそれとも相手非限定型であるかを上位ルータに問い合わせて検査する。相手非限定型である場合、ＮＡＴ設定変更要求部２１７は、アドレス変換ルールを相手限定型に変更するように上位ルータに要求する。要求電文には、静的ＮＡＴ設定において説明した形式の電文が利用できる。ＮＡＴ設定変更要求部２１７は、静的ＮＡＴ設定要求部２１０と並列的に設けておけばよい。制御部２０５は、上位ルータのＮＡＴ設定状況やＷＡＮ側アドレス情報の管理、ＮＡＴ設定変更要求部の動作管理、動作指示を行う。
【０２６９】
（第７の実施形態）
上記第６の実施形態は、送信開始側のユーザ端末の上位ルータについて、相手非限定型の静的ＮＡＴ設定の後、相手限定型の動的ＮＡＴ設定に切り替える例であった。静的ＮＡＴ設定を使用し続ける場合、ユーザ端末は、相手非限定型の静的ＮＡＴ設定の後、相手限定型の静的ＮＡＴ設定に切り替えるようにしてもよい。通信相手のユーザ端末も、相手非限定型の静的ＮＡＴ設定の後、相手限定型の動的ＮＡＴ設定に切り替えてもよい。あるいは、通信相手のユーザ端末は、相手非限定型の静的ＮＡＴ設定の後、相手限定型の静的ＮＡＴ設定に切り替えるようにしてもよい。
【０２７０】
この機能を実現するために、ユーザ端末は、制御部２０５とＮＡＴ設定変更要求部２１７とを備えるとよい。制御部２０５は、上位ルータに設定されたアドレス変換ルールが相手限定型であるかそれとも相手非限定型であるかを、上位ルータに問い合わせて検査する。ＮＡＴ設定変更要求部２１７は、所望のＮＡＴ設定に対して所望のアドレス変換ルールに変更するように、上位ルータに要求する。要求電文には、静的ＮＡＴ設定において説明した形式の電文が利用できる。ＮＡＴ設定変更要求部２１７は、静的ＮＡＴ設定要求部２１０と並列的に設けておけばよい。制御部２０５は、上位ルータのＮＡＴ設定状況やＷＡＮ側アドレス情報の管理、ＮＡＴ設定変更要求部の動作管理、動作指示を行う。
【０２７１】
（第８の実施形態）
第８の実施形態では、上記各実施形態の変形として、通信が失敗した場合や、予め設定したＮＡＴ設定が必要ないと判断された場合に、ＮＡＴ設定を削除することができるユーザ端末について説明する。これにより、ＮＡＴ変換表があふれるのを防ぐとともにセキュリティの向上が期待できる。
【０２７２】
たとえば、図１７Ａおよび図１７Ｂに示す例のように、ユーザ端末１ａからユーザ端末１ｅへのＰ２Ｐ接続が可能であると判断された場合、ユーザ端末１ａが設定したルータ２Ａにおける静的ＮＡＴの設定は必要ない。なぜなら、ルータ２Ａに対するアクセスは、ＬＡＮ側からＷＡＮ側へのアクセスとなり、動的ＮＡＴでＮＡＴ変換表が設定され、Ｐ２Ｐ通信では以降この動的ＮＡＴが使用されるからである。このように、自身が設定したＮＡＴ設定が必要なくなったと判断した場合、各ユーザ端末のＮＡＴ設定変更要求部２１７は、ＮＡＴ設定を削除してもよい。
【０２７３】
ＵＰｎＰ・ＩＧＤプロトコルを利用する場合、ユーザ端末は、上位ルータに対してＤｅｌＰｏｒｔＭａｐｐｉｎｇアクションメッセージを送信することで、上位ルータのＮＡＴ設定を削除することができる。上位ルータには、複数の動的ＮＡＴや静的ＮＡＴが設定されていることがある。ユーザ端末は、自身が静的ＮＡＴ設定を行ったときのポート番号を指定してＮＡＴ設定の削除を依頼する。
【０２７４】
上記第４〜第７の実施形態において、相手非限定型のＮＡＴ設定から相手限定型のＮＡＴ設定に切り替えることによって、セキュリティが改善される。ユーザ端末は、この切替の際に不要になったＮＡＴ設定を削除するとよい。
【０２７５】
また、動的ＮＡＴ設定と静的ＮＡＴ設定との両方が行われた場合、ユーザ端末は、不要と判断できる方のＮＡＴ設定を削除するとよい。
【０２７６】
なお、通常、ＴＣＰ通信の場合、セッションが切断されると動的ＮＡＴ設定は、解消される。すなわち、ＮＡＴ変換表の該当欄が削除されるのが一般的である。しかし、本発明は、これに限定されるものではない。また、ＵＤＰ通信の場合、パケットが一定時間（通常、数１０秒〜数分）流れなければ、動的ＮＡＴ設定は、解消される。このように、動的ＮＡＴ設定は、明示的な削除手順を行わなくとも、通信が終了すれば、自動的に削除されるのが一般的である。しかし、本発明は、これに限定されるものではない。
【０２７７】
本発明は、ＵＰｎＰなどによって入手した上位ルータのアドレス情報と、サーバを利用して得られるグローバルアドレス情報と、ユーザ端末自身に設定されたローカルアドレス情報とを、通信相手に通知し、自身の上記情報と通信相手の上記情報とに基づいて、適切な接続先アドレス情報を決定し、Ｐ２Ｐ通信を行う点に特徴がある。加えて、Ｐ２Ｐ通信に必要となる静的ＮＡＴ設定を判断する点に特徴がある。さらに、静的ＮＡＴ設定によるＰ２Ｐ通信ができないと判断した場合には、Ｐ２Ｐ通信方式を切り替え、ＳＴＵＮやＰ２Ｐサーバによる中継を用いてＰ２Ｐ通信を可能とする点に特徴がある。
【０２７８】
なお、図７において、ユーザ端末から上位ルータのＷＡＮ側アドレス情報を取得するステップＳ５０２と、ユーザ端末から上位ルータのアドレス情報変換ルールを設定するステップＳ５０３との順序は、逆でもよい。同様に、ステップＳ６０３とステップＳ６０４との順序についても逆であってもよい。また、上記各実施形態では、ユーザ端末は、上位ルータのＮＡＴ設定を行った後、アドレス情報を交換することとした。しかし、ユーザ端末は、上位ルータのＷＡＮ側アドレス情報だけを取得し、取得した段階では、ＮＡＴ設定を実行せずに、アドレス情報交換した後に、ＮＡＴ設定が必要なルータを判断して、ＮＡＴ設定を行ってもよい。
【０２７９】
なお、本発明が適用できるネットワークは、Ｐ２Ｐサーバ３、ルータ２Ｃ、およびルータ２Ｄの間は、直接的にしろ、あるいは、間接的にしろ、互いに通信できるネットワークでなければならない。本発明は、ルータ２Ｃの配下のユーザ端末とルータ２Ｄの配下のユーザ端末との間の通信、同一サブネットワーク上のユーザ端末間の通信、およびユーザ端末１ａとユーザ端末１ｂとの間のようにルータを介さない関係間での通信が可能である。また、相手のアドレス情報が分かっていない場合でも、公知の方法で相手アドレス情報を知る方法があれば、本発明のユーザ端末は、実質的に、Ｐ２Ｐ通信が可能である。ユーザ端末は途中のルータまで通信可能であり、ルータはユーザ端末からのデータを一旦受信するが、当該データがルータを超えることができないという課題を有している場合のも、本発明のユーザ端末は、Ｐ２Ｐ通信を行うことができる。二つのユーザ端末が物理的には接続されているまたは結合されているが、論理的にはＰ２Ｐ通信できない場合でも、本発明を用いれば、Ｐ２Ｐ通信が可能となる。
【０２８０】
Ｐ２Ｐ通信の対象となる二つのユーザ端末の内、少なくとも一つのユーザ端末の上位にルータが存在しない場合、すなわち、少なくとも一つのユーザ端末がインターネット網に直接接続されている場合、Ｐ２Ｐ通信を所望するユーザ端末は、インターネット網に直接接続されているユーザ端末のグローバルアドレス情報をＰ２Ｐサーバ３から入手する。Ｐ２Ｐ通信を所望するユーザ端末は、入手したグローバルアドレス情報を宛先として、通信相手に対して通信路接続要求を送信する。これによって、動的ＮＡＴ設定が行われ、復路の通信路が設定され、Ｐ２Ｐ通信が可能となる。上記のようなネットワーク構成におけるＰ２Ｐ通信に、本発明は適用可能である。また、一方のユーザ端末がルータ配下にある場合、ルータの配下にあるユーザ端末は、静的ＮＡＴ設定をルータに行う。したがって、いずれか一方のユーザ端末からの通信路接続要求は、通信相手に届くこととなる。よって、Ｐ２Ｐ通信が可能となる。
【０２８１】
図１に示すネットワークにおいて、ルータ２Ｃの直下にユーザ端末１ｆがあると想定する。このとき、ユーザ端末１ｆがユーザ端末１ｃとＰ２Ｐ通信するためには、ルータ２Ｃの直下にユーザ端末１ｆとユーザ端末１ｃとが存在するということを、お互いのユーザ端末が認識しなわないといけない。本発明のユーザ端末は、これが可能である。
【０２８２】
上記各実施形態では、ルータ２Ｃおよびルータ２Ａのように、２層構造のルータを有するネットワークを想定していた。しかし、３層以上の構造のルータを有するネットワークにおいても、本発明は適用可能である。特に、３層以上のルータを有するネットワークにおいて、２層構造の範囲内に存在するユーザ端末間では、Ｐ２Ｐ通信を行うことが期待できる。当然、３層以上の範囲内に存在するユーザ端末間でも、条件が揃えば、Ｐ２Ｐ通信を行うことが可能となる。
【０２８３】
図１４Ａおよび図１４Ｂに示すように、ユーザ端末１ａとユーザ端末１ｄとの間で交換されたアドレス情報内において、各ローカルアドレス情報のポート番号は、実際にＰ２Ｐ通信に利用する予定のポート番号が設定されていればよい。
【０２８４】
宅内ネットワークのように、ＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を使用したネットワーク環境では、アドレス情報が変わる可能性がある。しかし、ユーザ端末は、識別情報さえ分かっていれば、アドレス情報が変わったとしても、Ｐ２Ｐサーバ３に識別情報を登録することができる。したがって、ユーザ端末は、Ｐ２Ｐ通信を行うようにすることが可能になる。
【０２８５】
ユーザ端末は、アドレス情報の内、ＷＡＮ側アドレス情報だけ、サーバから取得したグローバルアドレス情報だけ、または、両方を通知するようにしてもよい。ＷＡＮ側アドレス情報だけの通知でよい場合、およびグローバルアドレス情報だけの通知でよい場合とは、グローバルＩＰアドレスとＷＡＮ側ＩＰアドレスとが一致している場合である。いいかえると、直上のルータがインターネットに直接接続されている場合である。グローバルアドレス情報だけの通知でよい場合とは、上位ルータがＵＰｎＰ非対応ルータの場合である。ローカルアドレス情報の通知が不要な場合とは、ユーザ端末がルータを介さず直接インターネットに接続されている場合ある。この場合、ユーザ端末は、グローバルアドレス情報のみを交換するだけでよい。
【０２８６】
識別情報の割り当てや管理は、従来のＤＮＳやダイナミックＤＮＳと同様に行われればよい。すなわち、ダイナミックＤＮＳでは、まず、ユーザ端末に対して、ユニークな識別情報（ドメインネーム）が割り当てられる。ユーザ端末は、割り当てて欲しい識別情報をサーバに申告する。サーバは、申告された識別情報が他のユーザ端末に割り当てられている識別情報と重複しないか否かを判断する。重複しない場合、サーバは、申告された識別情報をユーザ端末に割り当てる。サーバは、当該識別情報に対応するアドレス情報を、変更になる度に登録する。
【０２８７】
なお、上記各実施形態において、アドレス情報、またはネットワーク構成の調査をＰ２Ｐ通信開始時に行うとしたが、端末起動時に予め行っておくようにしても良い。さらに、端末起動時に予め行って判明した自身のネットワーク構成情報をＰ２Ｐサーバに登録しておくようにしても良い。ユーザ端末は、Ｐ２Ｐ通信を行いたい場合、Ｐ２Ｐサーバから自身及び相手のネットワーク構成の情報を入手することができる。すなわち、各端末がＰ２Ｐサーバに自身のアドレス情報（ネットワーク構成情報）を登録しておき、各端末は通信相手のネットワーク構成情報をＰ２Ｐサーバから取得するようにする。
【０２８８】
さらに、ユーザ端末は、定期的にネットワーク構成を調査するようにしても良い。ネットワーク構成情報が変化した場合には、ユーザ端末は、Ｐ２Ｐサーバに登録内容を更新するようにしても良い。
【０２８９】
なお、上記実施形態において、ユーザ端末は、静的ＮＡＴ設定を行ってＷＡＮ側アドレス情報を取得し、通信相手に対して、通信開始要求メッセージを送信することとした。しかし、ユーザ端末は、静的ＮＡＴ設定を行わずに、通信相手の通信端末との間でアドレス情報を交換するようにしてもよい。図２１Ａ、および図２１Ｂは、静的ＮＡＴ設定を行わずにアドレス情報を交換する場合のユーザ端末の動作を示すシーケンス図である。
【０２９０】
まず、ユーザ端末１ａは、Ｐ２Ｐサーバ３との間の通信路を確立する（Ｐ２０）。次に、ユーザ端末１ｄは、Ｐ２Ｐサーバ３との間の通信路を確立する（Ｐ２１）。次に、ユーザ端末１ａは、Ｐ２Ｐサーバ３からグローバルアドレス情報を取得する（Ｐ２３）。次に、ユーザ端末１ａは、直上のルータ２Ａに割り当てられているＷＡＮ側アドレス情報として、ＷＡＮ側ＩＰアドレスを取得する（Ｐ２４）。たとえば、ユーザ端末１ａは、ＵＰｎＰのＧｅｔＥｘｔｅｒｎａｌＡｄｄｒｅｓｓアクションを用いて、直上のルータ２ＡのＷＡＮ側ＩＰアドレスを取得する。
【０２９１】
次に、ユーザ端末１ａは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ｄに対して、アドレス情報交換要求メッセージを送信する（Ｐ２５）。アドレス情報交換要求メッセージには、ユーザ端末１ａに割り当てられているグローバルＩＰアドレス、ＷＡＮ側ＩＰアドレス、およびローカルＩＰアドレスのみが含まれる。なお、グローバルＩＰアドレスは、インターネット上でのユーザ端末のアドレスに関する情報であるので、グローバルアドレス情報であるといえる。ＷＡＮ側ＩＰアドレスは、直上のルータに割り当てられているＷＡＮ側でのアドレスに関する情報であるので、ＷＡＮ側アドレス情報であるといえる。ローカルＩＰアドレスは、ローカルネットワーク上での自装置に割り当てられているアドレスに関する情報であるので、ローカルアドレス情報であるといえる。
【０２９２】
アドレス情報交換要求メッセージを受信したユーザ端末１ｄは、Ｐ２Ｐサーバ３からグローバルアドレス情報を取得する（Ｐ２６）。次に、ユーザ端末１ｄは、直上のルータ２Ｂに割り当てられているＷＡＮ側アドレス情報として、ＷＡＮ側ＩＰアドレスの取得を試みる（Ｐ２７）。ここでは、ルータ２Ｂは、ＵＰｎＰに非対応であるとする。そのため、ユーザ端末１ｄは、ＷＡＮ側アドレス情報を取得することができない。
【０２９３】
次に、ユーザ端末１ｄは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ａに対して、アドレス情報交換応答メッセージを送信する（Ｐ２８）。ここで、アドレス情報交換応答メッセージには、ユーザ端末１ｄに割り当てられているグローバルＩＰアドレス、ＷＡＮ側ＩＰアドレス、およびローカルＩＰアドレスのみが含まれる。ただし、図２１Ａに示すように、直上のルータがＵＰｎＰに非対応であれば、アドレス情報交換応答メッセージにＷＡＮ側ＩＰアドレスは含まれない。
【０２９４】
アドレス情報交換応答メッセージを受信したユーザ端末１ａは、静的ＮＡＴ設定を行うか否かを判断する（Ｐ２９）。アドレス情報交換応答メッセージを送信したユーザ端末１ｄは、静的ＮＡＴ設定を行うか否かを判断する（Ｐ３０）。
【０２９５】
ここで、ユーザ端末１ａは、静的ＮＡＴ設定を行うと判断したとする。ユーザ端末１ａは、ＵＰｎＰによって、直上のルータ２Ａに、静的ＮＡＰＴを設定させる（Ｐ３１）。次に、ユーザ端末１ａは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ｄに通信開始要求メッセージを送信する（Ｐ３２）。通信開始要求メッセージには、ＩＰアドレスおよびポート番号を含むグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報が含まれる。
【０２９６】
通信開始要求メッセージを受信したユーザ端末１ｄは、Ｐ２Ｐサーバ３を介して、ユーザ端末１ａに通信開始応答メッセージを送信する（Ｐ３３）。通信開始応答メッセージには、ＩＰアドレスおよびポート番号を含むグローバルアドレス情報、ＷＡＮ側アドレス情報、ならびにローカルアドレス情報が含まれる。
【０２９７】
このようにしてアドレス情報が交換されたので、ユーザ端末１ａとユーザ端末１ｄとは、第１または第２の実施形態における処理と同様にして、Ｐ２Ｐ通信を開始する。たとえば、ユーザ端末１ａとユーザ端末１ｄとは、図１８ＢのＰ９以降に示される処理と同様にして、Ｐ２Ｐ通信を開始する。
【０２９８】
図２２は、静的ＮＡＴ設定を行うか否かを判断するときのユーザ端末の動作を示すフローチャートである。以下、図２２を参照しながら、静的ＮＡＴ設定を行うか否かを判断するときのユーザ端末の動作について説明する。図２２の動作は、たとえば、図２１Ｂに示すＰ２９およびＰ３２で行われる。
【０２９９】
まず、ユーザ端末は、通信相手のユーザ端末から取得したアドレス情報に基づいて、Ｐ２Ｐ通信が可能か否かを判断し、不可能であれば、接続方式を切り替える（ステップＳ１２００）。ユーザ端末は、グローバルＩＰアドレスが異なる場合のみ、ステップＳ１２００の判断を行うものとする。
【０３００】
次に、ユーザ端末は、自装置に割り当てられているグローバルＩＰアドレスと通信相手のユーザ端末に割り当てられているグローバルＩＰアドレスとが一致するか否かを判断する（ステップＳ１２０１）。一致する場合、自装置と通信相手との間の通信は同一ルータ配下での通信となるので、ユーザ端末は、直上のルータに対して、ＵＰｎＰによる静的ＮＡＴ設定を行う（Ｓ１２０２）。なお、ユーザ端末は、ＵＰｎＰ以外によって、静的ＮＡＴ設定を行っても良い。
【０３０１】
一方、一致しない場合、自装置と通信相手との間の通信はインターネットを介した通信となる。この場合、ユーザ端末は、自装置に割り当てられているＷＡＮ側ＩＰアドレスとグローバルＩＰアドレスとが一致するか否かを判断する（ステップＳ１２０３）。
【０３０２】
ステップＳ１２０３において、一致する場合、ユーザ端末は、ステップＳ１２０２の動作に進む。一方、一致しない場合、最上位のルータに静的ＮＡＴを設定することはできないので、ユーザ端末は、静的ＮＡＴ設定を行わないと判断する（ステップＳ１２０４）。静的ＮＡＴ設定を行わないと判断したユーザ端末は、Ｐ２Ｐサーバ３を介してＰ２Ｐ通信を開始するか、またはＳＴＵＮ通信方式を用いてＰ２Ｐ通信を開始する。
【０３０３】
このように、ユーザ端末は、自装置および通信相手のグローバルアドレス情報、ならびに自装置のＷＡＮ側アドレス情報に基づいて、静的ＮＡＴを設定すべきか否かを判断する。このような判断は、ユーザ端末にＮＡＴ設定判断部（図示せず）を備えることによっても実現可能である。静的ＮＡＴを設定すべきと判断しなかった場合、ユーザ端末は、通信方式を切り替えることとなる。これにより、不必要な静的ＮＡＴ設定が行われないこととなるので、セキュリティの向上、処理の高速化が期待できる。
【０３０４】
なお、本発明のプログラムは、コンピュータ読みとり可能な記録媒体に格納されて提供されてもよいし、ネットワークを介してコンピュータ装置に提供されてもよい。
【０３０５】
なお、本発明の端末を実現するために必要な機能ブロックは、集積回路であるＬＳＩとして実現されてもよい。これらの機能ブロックは、１チップ化されていてもよいし、一部又は全てを含むように１チップ化されていてもよい。ここでは、ＬＳＩといったが、集積度の違いによっては、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと称呼されることもある。また、集積回路化の手法は、ＬＳＩに限られるものではなく、専用回路または汎用プロセッサで集積回路化を行ってもよい。また、ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを用いてもよい。さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックを集積化してもよい。バイオ技術の適応等が可能性としてあり得る。
【０３０６】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【０３０７】
本発明に係る通信装置、方法、およびプログラムは、宅内ネットワークまたはインターネットを介したＰ２Ｐ通信を実現することができ、通信分野等において有用である。
【図面の簡単な説明】
【０３０８】
【図１Ａ】本発明の第１の実施形態におけるＰ２Ｐ通信制御が実行されるネットワークの構成の一例を示す図
【図１Ｂ】本発明の第１の実施形態におけるＰ２Ｐ通信制御が実行されるネットワークの構成の他の例を示す図
【図２】通信装置であるユーザ端末１ａ〜１ｅのハードウエア的構成を示すブロック図
【図３Ａ】ユーザ端末１ａ〜１ｅおよびＰ２Ｐサーバ３に割り当てられているＩＰアドレスの一例を示す図
【図３Ｂ】ルータに割り当てられているＷＡＮ側ＩＰアドレスおよびＬＡＮ側ＩＰアドレスの一例を示す図
【図４】Ｐ２Ｐ通信プログラムを実行したときの通信装置であるユーザ端末の機能的構成を示すブロック図
【図５】識別情報登録処理を実行するときのユーザ端末１ａおよびＰ２Ｐサーバ３の動作を示すフローチャート
【図６】識別情報管理テーブルの一例を示す図
【図７】発信側情報交換処理を実行する発信側のユーザ端末の動作およびＰ２Ｐサーバ３の動作を示すフローチャート
【図８Ａ】アドレス情報通知要求メッセージのフォーマットの一例を示す図
【図８Ｂ】アドレス情報通知応答メッセージのフォーマットの一例を示す図
【図９Ａ】通信開始要求メッセージのフォーマットの一例を示す図
【図９Ｂ】通信開始応答メッセージのフォーマットの一例を示す図
【図１０】着信側情報交換処理を実行する着信側のユーザ端末の動作およびＰ２Ｐサーバ３の動作を示すフローチャート
【図１１Ａ】アドレス情報を交換したユーザ端末が実際にＰ２Ｐ通信するときの動作を示すフローチャート
【図１１Ｂ】アドレス情報を交換したユーザ端末が実際にＰ２Ｐ通信するときの動作を示すフローチャート
【図１２Ａ】Ｐ２Ｐ通信用の通信路を確保できない場合の通信開始要求メッセージの一例を示す図
【図１２Ｂ】Ｐ２Ｐ通信用の通信路を確保できない場合の通信開始応答メッセージの一例を示す図
【図１３Ａ】Ｐ２Ｐ通信用の通信路を確保できない場合の通信開始要求メッセージの他の例を示す図
【図１３Ｂ】Ｐ２Ｐ通信用の通信路を確保できない場合の通信開始応答メッセージの他の例を示す図
【図１４Ａ】ユーザ端末１ａからユーザ端末１ｄに送信される通信開始要求メッセージの内容の一例を示す図
【図１４Ｂ】ユーザ端末１ｄからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図
【図１５Ａ】ユーザ端末１ａからユーザ端末１ｂに送信される通信開始要求メッセージの内容の一例を示す図
【図１５Ｂ】ユーザ端末１ｂからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図
【図１６Ａ】ユーザ端末１ａからユーザ端末１ｃに送信される通信開始要求メッセージの内容の一例を示す図
【図１６Ｂ】ユーザ端末１ｃからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図
【図１７Ａ】ユーザ端末１ａからユーザ端末１ｅに送信される通信開始要求メッセージの内容の一例を示す図
【図１７Ｂ】ユーザ端末１ｅからユーザ端末１ａに送信される通信開始応答メッセージの内容の一例を示す図
【図１８Ａ】ユーザ端末１ａとユーザ端末１ｄとの間でＰ２Ｐ通信を行うための具体的な通信シーケンスを示す図
【図１８Ｂ】ユーザ端末１ａとユーザ端末１ｄとの間でＰ２Ｐ通信を行うための具体的な通信シーケンスを示す図
【図１９Ａ】第２の実施形態におけるユーザ端末の動作を示すフローチャート
【図１９Ｂ】第２の実施形態におけるユーザ端末の動作を示すフローチャート
【図２０】本発明のＰ２Ｐ通信方式を実行することができるユーザ端末である通信装置の詳細な機能的構成を示すブロック図
【図２１Ａ】静的ＮＡＴ設定を行わずにアドレス情報を交換する場合のユーザ端末の動作を示すシーケンス図
【図２１Ｂ】静的ＮＡＴ設定を行わずにアドレス情報を交換する場合のユーザ端末の動作を示すシーケンス図
【図２２】静的ＮＡＴ設定を行うか否かを判断するときのユーザ端末の動作を示すフローチャート
【符号の説明】
【０３０９】
１，２  宅内ネットワーク
１ａ〜１ｂ  ユーザ端末
２Ａ〜２Ｄ  ルータ
２１  ＮＡＴ機能部
３  Ｐ２Ｐサーバ
４  インターネット
１０  中央処理装置
１１  主記憶装置
１２  補助記憶装置
１３  通信装置
１４  入出力装置
１０１  グローバルアドレス情報取得部
１０２  ＮＡＴ設定要求部
１０３  ＷＡＮ側アドレス情報取得部
１０４  ローカルアドレス情報取得部
１０５  アドレス情報通知部
１０６  アドレス情報取得部
１０７  使用アドレス情報判断部
１０８  Ｐ２Ｐ通信処理部
【図１Ａ】
0004633520.tif 000002
【図１Ｂ】
0004633520.tif 000003
【図２】
0004633520.tif 000004
【図３Ａ】
0004633520.tif 000005
【図３Ｂ】
0004633520.tif 000006
【図４】
0004633520.tif 000007
【図５】
0004633520.tif 000008
【図６】
0004633520.tif 000009
【図７】
0004633520.tif 000010
【図８Ａ】
0004633520.tif 000011
【図８Ｂ】
0004633520.tif 000012
【図９Ａ】
0004633520.tif 000013
【図９Ｂ】
0004633520.tif 000014
【図１０】
0004633520.tif 000015
【図１１Ａ】
0004633520.tif 000016
【図１１Ｂ】
0004633520.tif 000017
【図１２Ａ】
0004633520.tif 000018
【図１２Ｂ】
0004633520.tif 000019
【図１３Ａ】
0004633520.tif 000020
【図１３Ｂ】
0004633520.tif 000021
【図１４Ａ】
0004633520.tif 000022
【図１４Ｂ】
0004633520.tif 000023
【図１５Ａ】
0004633520.tif 000024
【図１５Ｂ】
0004633520.tif 000025
【図１６Ａ】
0004633520.tif 000026
【図１６Ｂ】
0004633520.tif 000027
【図１７Ａ】
0004633520.tif 000028
【図１７Ｂ】
0004633520.tif 000029
【図１８Ａ】
0004633520.tif 000030
【図１８Ｂ】
0004633520.tif 000031
【図１９Ａ】
0004633520.tif 000032
【図１９Ｂ】
0004633520.tif 000033
【図２０】
0004633520.tif 000034
【図２１Ａ】
0004633520.tif 000035
【図２１Ｂ】
0004633520.tif 000036
【図２２】
0004633520.tif 000037