以下、本発明の実施形態について、図面を参照しながら説明する。以下の説明において、アドレスは、IPアドレスを指す。アドレス情報は、IPアドレスおよびポート番号を含む。アドレス情報は、グローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報に分類される。IPアドレスは、グローバルIPアドレス、WAN側IPアドレス、およびローカルIPアドレスに分類させる。したがって、グローバルアドレス情報は、グローバルIPアドレスおよびポート番号を含む。WAN側アドレス情報は、WAN側IPアドレスおよびポート番号を含む。ローカルアドレス情報は、ローカルIPアドレスおよびポート番号を含む。
(第1の実施形態)
図1Aは、本発明の第1の実施形態におけるP2P通信制御が実行されるネットワークの構成の一例を示す図である。図1Aにおいて、ネットワーク全体は、宅内ネットワーク1と、宅内ネットワーク2と、P2Pサーバ3と、インターネット4とを備える。なお、宅内ネットワークの数およびP2Pサーバの数は、図1Aに示した例に限られない。
宅内ネットワーク1は、複数のルータ2A,2B,2Cと、複数のユーザ端末1a,1b,1c,1dとを備える。なお、宅内ネットワーク1におけるルータの数やユーザ端末の数は、図1Aに示した例に限られない。ルータ2A,2B,2Cは、下位のネットワークのアドレス情報を上位のネットワークのアドレス情報に変換するためのアドレス変換ルールを設定するNAT機能部21を備える。ルータ2A,2B,2Cは、インターネット4と宅内のネットワーク(以下、サブネットという)との接続、又は、宅内の複数のサブネット間の接続を可能とする。なお、本発明において、NATとは、アドレスを1対1に変換する狭義のNATに加え、ポート番号を用いてアドレスを1対Nに変換するNAPT(Network Address Port Translation)をも含む概念である。
宅内ネットワーク2は、ルータ2Dと、ユーザ端末1eとを備える。ルータ2Dは、NAT機能部21を備える。ルータ2Dは、ユーザ端末1eとインターネット4との接続を可能とする。なお、宅内ネットワーク2におけるルータの数やユーザ端末の数は、図1Aに示した例に限られない。
P2Pサーバ3は、ユーザ端末1a〜1eとの間の通信路を持つ。P2Pサーバ3は、ユーザ端末1a〜1eの識別情報を管理して、ユーザ端末間の通信の中継する機能と、インターネットを介した通信を行うときに、ルータ2Cによって各ユーザ端末用に割り当てられるグローバルアドレス情報を各ユーザ端末に通知する機能とを有するサーバである。なお、P2Pサーバは、上記機能を有しさえすればよい。したがって、上記機能を有するサーバであれば、P2Pサーバの変わりとなり得る。また、ここでは、P2Pサーバ3は、インターネットに接続されていることとしたが、上記機能を実現することができるのであれば、P2Pサーバは、宅内ネットワーク内に存在してもよい。P2Pサーバが宅内ネットワークに存在する場合、P2Pサーバの機能がルータに組み込まれていてもよい。
インターネット4は、グローバルアドレス情報を用いて、通信を行う。
図2は、通信装置であるユーザ端末1a〜1eのハードウエア的構成を示すブロック図である。ユーザ端末1a〜1eは同様のハードウエア的構成を有しているので、以下、代表して、ユーザ端末1aのハードウエア的構成について説明する。
図2において、ユーザ端末1aは、中央処理装置10と、主記憶装置11と、補助記憶装置12と、通信装置13と、入出力装置14とを備える。中央処理装置10は、補助記憶装置12または主記憶装置11に記憶されているプログラムを、主記憶装置11に読み込ませて、当該プログラムを実行し、ユーザ端末1a全体の動作を制御する。主記憶装置11は、中央処理装置10の動作に必要な情報を記憶する。補助記憶装置12は、中央処理装置10の動作に必要な情報を記憶すると共に、中央処理装置10で実行されるプログラムを予め記憶している。ここでは、P2P通信を実現するためのプログラム(以下、P2P通信プログラムという)が、補助記憶装置12に記憶されているとする。通信装置13は、外部の装置との間の通信を実現するための装置である。入出力装置14は、ユーザによる入力を受け付けるための装置および中央処理装置10による処理結果を出力する装置である。ユーザ端末1aは、P2P通信プログラムを実行することによって、他のユーザ端末との間のP2P通信を実現する。
図3Aは、ユーザ端末1a〜1eおよびP2Pサーバ3に割り当てられているIPアドレスの一例を示す図である。図3Aに示すように、ルータ2Aの配下にあるユーザ端末1a,1bには、それぞれ、“192.168.0.X”系統のIPアドレスである“192.168.0.100”および“192.168.0.101”が割り当てられている。ルータ2Cの配下にあるユーザ端末1cには、“192.168.10.X”系統のIPアドレスである“192.168.10.2”が割り当てられている。ルータ2Bの配下にあるユーザ端末1dには、“192.168.1.X”系統のIPアドレスである“192.168.1.10”が割り当てられている。ルータ2Dの配下にあるユーザ端末1eには、“192.168.0.X”系統のIPアドレスである“192.168.0.30”が割り当てられている。P2Pサーバ3には、“132.186.9.10”が割り当てられている。P2Pサーバ3は、直接インターネットに接続されているので、P2Pサーバ3に割り当てられているIPアドレスは、グローバルIPアドレスである。
図3Bは、ルータに割り当てられているWAN側IPアドレスおよびLAN側IPアドレスの一例を示す図である。図3Bに示すように、ルータ2Aには、WAN側IPアドレスとして“192.168.10.5”が、LAN側IPアドレスとして“192.168.0.1”が割り当てられている。ルータ2Aの配下のIPアドレスは、“192.168.0.X”系統であるので、ルータ2AのLAN側IPアドレスは、“192.168.0.1”となっている。ルータ2Bには、WAN側IPアドレスとして“192.168.10.4”が、LAN側IPアドレスとして“192.168.1.255”が割り当てられている。ルータ2Bの配下のIPアドレスは、“192.168.1.X”系統であるので、ルータ2BのLAN側IPアドレスは、“192.168.1.255”となっている。ルータ2Cには、WAN側IPアドレスとして“133.152.6.50”が、LAN側IPアドレスとして“192.168.10.1”が割り当てられている。ルータ2Cの配下のIPアドレスは、“192.168.10.X”系統であるので、ルータ2CのLAN側IPアドレスは、“192.168.10.1”となっている。また、ルータ2Aはルータ2Cの配下であるので、ルータ2AのWAN側IPアドレスは、“192.168.10.X”系統である“192.168.10.5”となっている。同様に、ルータ2Bはルータ2Cの配下であるので、ルータ2BのWAN側IPアドレスは、“192.168.10.X”系統である“192.168.10.4”となっている。ルータ2Cはインターネット4に直接接続されているので、ルータ2CのWAN側IPアドレスは、グローバルIPアドレスとなっている。ルータ2Dには、WAN側IPアドレスとして“133.121.2.15”が、LAN側IPアドレスとして“192.168.0.1”が割り当てられている。ルータ2Dはインターネット4に直接接続されているので、ルータ2DのWAN側IPアドレスは、グローバルIPアドレスとなっている。ルータ2Aとルータ2Dとは、別の宅内ネットワーク内に存在するので、ルータ2Aおよび2Dに割り当てられているLAN側IPアドレスが重複しているが、問題ない。
図4は、P2P通信プログラムを実行したときの通信装置であるユーザ端末の機能的構成を示すブロック図である。図4において、ユーザ端末は、グローバルアドレス情報取得部101と、NAT設定要求部102と、WAN側アドレス情報取得部103と、ローカルアドレス情報取得部104と、アドレス情報通知部105と、アドレス情報取得部106と、使用アドレス情報判断部107と、P2P通信処理部108とを含む。
グローバルアドレス情報取得部101は、P2Pサーバ3と通信して、自装置に割り当てられているグローバルアドレス情報を取得する。グローバルアドレス情報取得部101は、取得したグローバルアドレス情報を記憶装置(図示せず)に記憶させる。
NAT設定要求部102は、自装置の直上に存在する(自装置に直接接続されている)ルータに対して、アドレス変換ルールを設定するように要求し、アドレス変換ルールを設定させる。
WAN側アドレス情報取得部103は、当該ルータと通信して、設定されているアドレス変換ルールに基づいて、自装置に割り当てられているWAN側アドレス情報を取得する。WAN側アドレス情報取得部103は、取得したWAN側アドレス情報を記憶装置(図示せず)に記憶させる。
ローカルアドレス情報取得部104は、自装置に割り当てられているローカルアドレス情報を取得する。たとえば、ローカルアドレス情報取得部104は、記憶装置(図示せず)に記憶されている自装置に割り当てられているローカルアドレス情報を取得する。以下、自装置に割り当てられているグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を、第1のグローバルアドレス情報、第1のWAN側アドレス情報、および第1のローカルアドレス情報という。
アドレス情報通知部105は、グローバルアドレス情報取得部101が取得した第1のグローバルアドレス情報、WAN側アドレス情報取得部103が取得した第1のWAN側アドレス情報、およびローカルアドレス情報取得部104が取得した第1のローカルアドレス情報を、P2Pサーバ3を介して、P2P通信を所望する通信相手の通信装置に対して、通知する。なお、アドレス情報を通知する際に、ユーザ端末が介するサーバは、P2Pサーバ3以外であってもよい。
アドレス情報取得部106は、P2Pサーバ3を介して、通信相手の通信装置に割り当てられているグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を取得する。以下、通信相手の通信装置に割り当てられているグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を、第2のグローバルアドレス情報、第2のWAN側アドレス情報、および第2のローカルアドレス情報という。なお、アドレス情報取得部106は、通信相手の通信機器に割り当てられているアドレス情報を、P2Pサーバ3以外のサーバを介して取得してもよい。
使用アドレス情報判断部107は、アドレス情報取得部106によって取得された第2のグローバルアドレス情報、第2のWAN側アドレス情報、第2のローカルアドレス情報の内、いずれか一つのアドレス情報を使用して、通信相手の通信装置とP2P通信を開始するか否かを判断する。当該いずれか一つのアドレス情報を使用して、通信相手の通信装置とP2P通信を開始すると判断した場合、使用アドレス情報判断部107は、P2P通信処理部108に使用するアドレス情報を送る。一方、いずれのアドレス情報も使用せずに、通信相手の通信装置とP2P通信を開始すると判断した場合、使用アドレス情報判断部107は、P2P通信処理部108に対して、通信相手の通信装置からのP2P通信要求を待つように指示するか、あるいは、P2P通信方式を切り替えるように指示する。
P2P通信処理部108は、使用アドレス情報判断部107から、当該いずれか一つのアドレス情報を使用してP2P通信を開始するように指示された場合、当該アドレス情報を使用して、通信相手の通信装置とP2P通信を開始する。P2P通信処理部108は、使用アドレス情報判断部107から、通信相手の通信装置からのP2P通信要求を待つように指示された場合、当該通信相手の通信装置からのP2P通信要求が送られてくれば、当該要求の送信元アドレス情報を使用して、当該通信相手の通信装置に応答し、P2P通信を開始する。P2P通信処理部108は、使用アドレス情報判断部107から、P2P通信方式を切り替えてP2P通信を開始するように指示された場合、P2P通信方式を、P2Pサーバ3を介したP2P通信方式、またはSTUN通信方式を用いて、P2P通信を開始する。ここで、STUN通信方式とは、RFC 3489 − STUN − Simple Traversal Of User Datagram Protocol (UDP) Through Network Address Translators (NATs)で開示されている通信方式のことをいう。
以下、P2P通信を行うときのユーザ端末およびP2Pサーバ3の動作について説明する。以下では、随時、図1Aに示すネットワーク上のユーザ端末を例示しながら、動作説明を行うが、本発明のP2P通信の方法は、図1Aに示すネットワークのみに適用されるものではない。また、動作が分かりやすくなるように、IPアドレスを例示しながら、動作が説明されるが、本発明のP2P通信の方法は、例示したIPアドレスのみに適用されるものではない。ユーザ端末の動作は、P2P通信プログラムが実行されることによって実現される。
まず、各ユーザ端末は、P2P通信を開始する前に、P2Pサーバ3に対して、識別情報を登録する処理(識別情報登録処理)を実行する。以下、ユーザ端末1aが識別情報登録処理を実行すると仮定して説明するが、他のユーザ端末も同様に動作する。
図5は、識別情報登録処理を実行するときのユーザ端末1aおよびP2Pサーバ3の動作を示すフローチャートである。以下、図5を参照しながら、識別情報登録処理を実行するときのユーザ端末1aおよびP2Pサーバ3の動作について説明する。なお、図5において、ユーザ端末1aの動作は、一重線の枠で示されている。P2Pサーバ3の動作は、二重線の枠で示されている。
まず、ユーザ端末1aは、P2Pサーバ3との間に通信路を確立する(ステップS301)。通信路の確立は、周知の方法によって実現可能である。ユーザ端末1aからP2Pサーバ3への通信は、通常のWebアクセスと同様に、ルータのLAN側からWAN側への通信となる。したがって、周知の動的NATによって、自動的に通信路が確保される。動的NATによって、ユーザ端末1aからP2Pサーバ3への往路に対応して、P2Pサーバ3からユーザ端末1aへの返信通信路が、途中の経路も含めて自動的に確保される。すなわち、通信路上のルータにおいて、動的NAT設定によって、動的NATのアドレス変換ルールに従ったNAT変換表が作成される。ここで、NAT設定毎に、アドレス変換ルールが変化するNATを動的NATという。
次に、ユーザ端末1aは、P2Pサーバ3に対して、自身の識別情報を送信する(ステップS302)。たとえば、識別情報は、ユーザ端末1aのメールアドレス等、ユーザ端末を識別するための情報である。
次に、P2Pサーバ3は、ユーザ端末1aとの間の通信路に関する情報(以下、通信路情報という)と、ユーザ端末1aの識別情報とを対応付けて、識別情報管理テーブルとして管理する(ステップS303)。なお、ここで通信路情報とは、ユーザ端末1aへメッセージを送信するための宛先アドレス、ポート番号の情報を含む概念である。
図6は、識別情報管理テーブルの一例を示す図である。図6に示すように、たとえば、識別情報管理テーブルは、識別情報と対応付けて、通信路情報と、付加情報とを含む。
以上のように、識別情報登録処理が実行されることによって、P2Pサーバ3内に、各ユーザ端末の識別情報が、通信路情報と共に登録される。
第1のユーザ端末と第2のユーザ端末との間でP2P通信を開始する場合、第1および第2のユーザ端末は、必要な情報を交換する処理を実行する。必要な情報を交換するために発信側のユーザ端末(たとえば、第1のユーザ端末)が実行する処理を発信側情報交換処理という。必要な情報を交換するために着信側のユーザ端末(たとえば、第2のユーザ端末)が実行する処理を着信側情報交換処理という。
図7は、発信側情報交換処理を実行する発信側のユーザ端末の動作およびP2Pサーバ3の動作を示すフローチャートである。以下、図7を参照しながら、発信側情報交換処理を実行する発信側のユーザ端末の動作およびP2Pサーバの動作について説明する。なお、図7において、発信側ユーザ端末の動作は、一重線の枠で示されている。P2Pサーバの動作は、二重線の枠で示されている。
まず、通信開始を要望する発信側ユーザ端末は、P2Pサーバ3に対して、アドレス情報通知要求メッセージを送信し、P2Pサーバ3からのアドレス情報通知応答メッセージを受信して、アドレス情報通知応答メッセージからグローバルアドレス情報を取得する(ステップS501)。ステップS501の動作は、グローバルアドレス情報取得部101によって実現される。なお、ステップS501において、発信側ユーザ端末は、グローバルアドレス情報として、グローバルIPアドレスのみを取得してもよい。
図8Aは、アドレス情報通知要求メッセージのフォーマットの一例を示す図である。図8Bは、アドレス情報通知応答メッセージのフォーマットの一例を示す図である。
図8Aに示すように、アドレス情報通知要求メッセージには、通信ヘッダと、メッセージ識別情報と、付加情報とが含まれる。発信側ユーザ端末は、通信ヘッダに、送信元アドレス情報として発信側ユーザ端末自身のアドレス情報を記載し、宛先アドレス情報としてP2Pサーバ3のグローバルアドレス情報を記載する。このアドレス情報通知要求メッセージは、ルータを経由するたびに、通信ヘッダ内の送信元アドレス情報が、経由したルータのWAN側アドレス情報、すなわち、WAN側IPアドレスとポート番号との組に置き換えられる。したがって、アドレス情報通知要求メッセージがP2Pサーバ3に到達した段階では、当該通信ヘッダ内の送信元アドレス情報は、最後に通過したルータのWAN側IPアドレスとポート番号との組(グローバルIPアドレスとポート番号との組)に置き換えられている。メッセージ識別情報には、アドレス情報の通知を要求するメッセージであることを示す情報が記載される。付加情報には、認証情報等が記載される。
なお、前述の例では、P2Pサーバがインターネットに接続されている場合について説明したが、通信を行うユーザ端末が同一のプライベートネットワークに接続されている場合、P2Pサーバはインターネット上ではなく、当該プライベートネットワーク内に存在していても良い。このとき、P2Pサーバは、P2P通信を行う両ユーザ端末にとって、同一ルータ(NAT機能付き)に接続しているか、又は、より上位(WAN側)のルータ(NAT機能付き)に接続されていなければならない(図1B参照)。
この場合、グローバルアドレス情報は、P2Pサーバが接続されているルータのLAN側セグメントのアドレス空間の情報となる。すなわち、グローバルアドレス情報は、P2Pサーバが属するサブネットワーク上で、ユーザ端末に割り当てられているアドレスに関する情報である。そのため、グローバルアドレス情報は、実際には、プライベートアドレス空間のアドレス情報となる。ただし、接続に用いる手順は、P2Pサーバがインターネットに接続されている場合と同様である。
すなわち、ユーザ端末は、ネットワーク上のP2Pサーバ3と通信して、P2Pサーバ3が属するサブネットワーク(たとえば、192.168.10.X系列)上で、自装置に割り当てられているアドレスに関する情報を第1のグローバルアドレス情報として取得する。また、ユーザ端末は、自装置の直上に存在するルータに割り当てられているWAN側でのアドレスに関する情報を第1のWAN側アドレス情報として取得する。さらに、ユーザ端末は、自装置に割り当てられているローカルネットワーク上でのアドレスに関する情報を第1のローカルアドレス情報として取得する。そして、ユーザ端末は、P2P通信を所望する通信相手の通信装置に対して、P2Pサーバ3を介して、第1のグローバルアドレス情報、第1のWAN側アドレス情報、および第1のローカルアドレス情報を通知する。その後、ユーザ端末は、P2Pサーバ3を介して、P2Pサーバ3が属するサブネットワーク上で、通信相手の通信装置に割り当てられているアドレスに関する情報である第2のグローバルアドレス情報と、通信相手の通信装置の直上に存在するルータに割り当てられているWAN側でのアドレスに関する情報である第2のWAN側アドレス情報と、通信相手の通信装置に割り当てられているローカルネットワーク上でのアドレスに関する情報である第2のローカルアドレス情報とを取得する。ユーザ端末は、取得した第1および第2のグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報に基づいて、P2P通信が可能な方式を判断する。
図8Bに示すように、アドレス情報通知応答メッセージには、通信ヘッダと、メッセージ識別情報と、アドレス情報と、付加情報とが含まれる。P2Pサーバ3は、通信ヘッダに、送信元アドレス情報および宛先アドレス情報を記載する。メッセージ識別情報には、アドレス情報の通知要求に応答するメッセージであることを示す情報が記載される。付加情報には、認証情報等が記載される。P2Pサーバ3は、アドレス情報通知要求メッセージを受信すると、アドレス情報通知要求メッセージの通信ヘッダに記載されている送信元アドレス情報を取り出す。上述のように、当該送信元アドレス情報は、最後に通過したルータのWAN側IPアドレス(グローバルIPアドレス)とポート番号との組となっている。P2Pサーバ3は、取り出した送信元アドレス情報(グローバルIPアドレスおよびポート番号)をアドレス情報の欄に記載する。P2Pサーバ3は、作成したアドレス情報通知応答メッセージを、通信路情報(図6参照)に従って、送信する。P2Pサーバ3から送信されたアドレス情報通知応答メッセージは、ルータを逆にたどって、発信側ユーザ端末に届く。この際、動的NAT設定によるアドレス変換ルールに従ったNAT変換表が利用される。
先述のように、P2Pサーバ3が取り出したアドレス情報通知要求メッセージの通信ヘッダ内の送信元アドレス情報は、最後に通過したルータによって動的NATを用いて変換されたアドレス情報、すなわち、ユーザ端末専用のポート番号が割り振られたアドレス情報でありかつユーザ端末に割り当てられたグローバルアドレス情報を示している。たとえば、ユーザ端末1aがアドレス情報通知要求メッセージを送信した場合、送信元アドレス情報は、ルータ2CのグローバルIPアドレスと、ユーザ端末1aに向けてルータ2Cによって設定されたポート番号とで構成される。ただし、動的NAT設定が用いられているので、一般的には、このグローバルアドレス情報は、P2Pサーバ3からの通信だけを受け付けるものとなっている。
次に、発信側ユーザ端末は、自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとを比較し、IPアドレスが異なる場合、UPnP・IGDプロトコル等を用いて、上位ルータのWAN側IPアドレスを取得する(ステップS502)。本明細書において、上位ルータ(Upstream Router)とは、ユーザ端末から見たとき、インターネット側に存在するルータのことをいう。自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとが異なる場合、発信側ユーザ端末は、ルータを介して、インターネット4に接続されていることを意味する。したがって、自身に割り当てられているIPアドレスは、ローカルIPアドレスとなっている。たとえば、UPnP・IGDプロトコルを利用する場合、発信ユーザ端末は、上位ルータに対して、GetExternalIPAddressアクションメッセージを送信することによって、上位ルータのWAN側IPアドレスを取得することができる。なお、ここでは、IPアドレスは得られるが、ポート番号は得られない。
自身に割り当てられているIPアドレスがグローバルIPアドレスと異なる場合、発信側ユーザ端末は、UPnP・IGDプロトコル等を用いて、上位ルータにNAT設定を行い、当該上位ルータに設定されたWAN側アドレス情報を記憶する(ステップS503)。ステップS503の動作は、NAT設定要求部102およびWAN側アドレス情報取得部103によって実現される。
たとえば、UPnP・IGDプロトコルを利用する場合、発信側ユーザ端末は、上位ルータに対してAddPortMappingアクションメッセージを送信することによって、上位ルータにNAT設定を行うことが可能である。発信側ユーザ端末は、AddPortMappingアクションメッセージを送信することによって、設定したいポート番号を上位ルータに知らせて、当該ポート番号でのNAT設定を要請する。ステップS503でのNAT設定は、通信の開始および終了とは無関係に設定が維持されていなければならない。このように、通信の開始および終了とは無関係に設定が維持されているNAT設定を、静的NAT設定と呼ぶ。動的NAT設定は、通信の開始に伴って自動的に設定され、通信の終了と共に解除される。一方、静的NAT設定は、通信の開始および終了とは無関係に設定可能である。静的NAT設定は、通信を開始する以前にでも設定することができる。静的NAT設定は、解除されるまで、維持される。
なお、WAN側アドレス情報を記憶する際、発信側ユーザ端末は、ステップS502においてWAN側アドレス情報を取得済みであるので、ステップS503ではWAN側アドレス情報を取得しなくてもよい。発信側ユーザ端末におけるステップS503の動作に対して、上位ルータは、静的NAT設定を行い、静的NATのアドレス変換ルールに従ったNAT変換表を作成する。
当然のことながら、発信側ユーザ端末は、通信を希望する相手の識別情報を、知っている、あるいは事前に与えられている。発信側ユーザ端末は、通信相手先の識別情報を指定し、P2Pサーバ3に通信開始要求メッセージを送信する。このとき、発信側ユーザ端末は、自身の識別情報、自身のグローバルアドレス情報(第1のグローバルアドレス情報)、自身のローカルアドレス情報(第1のローカルアドレス情報)、および、上位ルータのWAN側アドレス情報(第1のWAN側アドレス情報)を送信する(ステップS504)。ステップS504の動作は、アドレス情報通知部105によって実現される。
図9Aは、通信開始要求メッセージのフォーマットの一例を示す図である。図9Aに示すように、通信開始要求メッセージは、通信ヘッダと、メッセージ識別情報と、送信元ユーザ端末識別情報と、送信先ユーザ端末識別情報と、グローバルアドレス情報(第1のグローバルアドレス情報)と、上位ルータのWAN側アドレス情報(第1のWAN側アドレス情報)と、自身のローカルアドレス情報(第1のローカルアドレス情報)と、付加情報とを含む。
メッセージ識別情報は、通信開始要求であることを示す情報である。送信元ユーザ端末識別情報は、発信側ユーザ端末の識別情報である。送信先ユーザ端末識別情報は、通信相手のユーザ端末の識別情報である。グローバルアドレス情報は、ステップS501で取得したグローバルアドレス情報(グローバルIPアドレスおよびポート番号)である。上位ルータのWAN側アドレス情報は、ステップS503で記憶したWAN側アドレス情報(WAN側IPアドレスおよびポート番号)である。自身のローカルアドレス情報は、予め自身に設定されているローカルIPアドレスおよび自身が用いているポート番号である。なお、自身のローカルアドレス情報には、ネットマスクが含まれている。なお、ネットマスクがなくてもIPアドレスの変数部分が認識されるのであれば、ネットマスクは含まれていなくてもよい。付加情報は、認証情報等である。
なお、上記ステップS502において、自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとが一致する場合、発信側ユーザ端末は、ルータを介さずに、直接インターネット4に接続されていることを意味する。すなわち、自身のローカルIPアドレスは、グローバルIPアドレスとなっている。このような場合、発信側ユーザ端末は、グローバルアドレス情報を自身に割り当てられているIPアドレスおよびポート番号とし、WAN側アドレス情報を自身に割り当てられているIPアドレスおよびポート番号とし、ローカルアドレス情報を自身に割り当てられているIPアドレスおよびポート番号として、通信開始要求メッセージをP2Pサーバ3に送信する。
P2Pサーバ3は、ユーザ端末からのメッセージを受信し、メッセージ識別情報を参照し、受信したメッセージが通信開始要求であることを認識する。通信開始要求であることを認識したP2Pサーバ3は、送信先ユーザ端末識別情報を参照して、送信先のユーザ端末の識別情報を認識する。そして、P2Pサーバ3は、識別情報管理テーブルを参照し、認識した識別情報に対応する通信路情報に基づいて、送信先ユーザ端末までの通信経路を決定する。P2Pサーバ3は、決定した送信先ユーザ端末までの通信路を経由するように、発信側ユーザ端末から受信した通信開始要求メッセージを、送信先のユーザ端末に送信する(ステップS505)。これによって、発信側ユーザ端末からの通信開始要求メッセージは、通信相手である着信先ユーザ端末に転送される。
なお、アドレス情報通知要求メッセージおよび通信開始要求メッセージには、認証用の情報が付加されているのが好ましい。P2Pサーバ3は、識別情報管理テーブルで管理するユーザ端末毎の認証用情報を用いて、正当なユーザ端末からの通信であるか否かを確認し、セキュリティを高めるようにするのが好ましい。また、P2Pサーバ3は、アドレス情報通知応答メッセージや通信開始要求メッセージを転送するとき、P2Pサーバ3の正当性を示す認証用情報をメッセージに添付することによって、セキュリティを高めるようにしてもよい。
図10は、着信側情報交換処理を実行する着信側のユーザ端末の動作およびP2Pサーバ3の動作を示すフローチャートである。以下、図10を参照しながら、着信側情報交換処理を実行する着信側のユーザ端末の動作およびP2Pサーバ3の動作について説明する。なお、図10において、着信側ユーザ端末の動作は、一重線の枠で示されている。P2Pサーバの動作は、二重線の枠で示されている。
まず、着信側ユーザ端末は、P2Pサーバ3から転送された通信開始要求メッセージを受信し、送信元(発信側ユーザ端末)の識別情報を取り出すと共に、通信開始要求メッセージに記載されたグローバルアドレス情報(第1のグローバルアドレス情報)、WAN側アドレス情報(第1のWAN側アドレス情報)、およびローカルアドレス情報(第1のローカルアドレス情報)を送信元のアドレス情報として取り出す。着信側ユーザ端末は、取り出した送信元の識別情報とアドレス情報とを対応付けて、記憶する(ステップS601)。ステップS601の動作は、アドレス情報取得部106によって実現される。
次に、着信側ユーザ端末は、P2Pサーバ3に対してアドレス情報通知要求メッセージを送信し、P2Pサーバ3から返信されてくるアドレス情報通知応答メッセージから自身のグローバルアドレス情報(第2のグローバルアドレス情報)を取得する(ステップS602)。ステップS602における処理は、発信側ユーザ端末がグローバルアドレス情報を取得した処理(ステップS501)と、基本的には同様である。ステップS602の動作は、グローバルアドレス情報取得部101によって実現される。なお、ステップS602において、着信側ユーザ端末は、グローバルアドレス情報として、グローバルIPアドレスのみを取得してもよい。
次に、着信側ユーザ端末は、自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとを比較し、IPアドレスが異なる場合、UPnP・IGDプロトコル等を用いて、上位ルータのWAN側アドレス情報を取得する(ステップS603)。自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとが異なる場合、発信側ユーザ端末は、ルータを介して、インターネット4に接続されていることを意味する。したがって、自身に割り当てられているIPアドレスは、ローカルIPアドレスとなっている。たとえば、UPnP・IGDプロトコルを利用する場合、着信側ユーザ端末は、上位ルータに対して、GetExternalIPAddressアクションメッセージを送信することによって、上位ルータのWAN側IPアドレス情報を取得することが可能である。ここでは、IPアドレスは得られるが、ポート番号は得られない。
自身に割り当てられているIPアドレスがグローバルIPアドレスと異なる場合、着信側ユーザ端末は、UPnP・IGDプロトコル等を用いて、上位ルータに静的NAT設定を行い、当該上位ルータに設定されたWAN側アドレス情報を記憶する(ステップS604)。たとえば、UPnP・IGDプロトコルを利用する場合、着信側ユーザ端末は、上位ルータに対してAddPortMappingアクションメッセージを送信することによって、上位ルータにNAT設定を行うことが可能である。ステップS603およびS604の動作は、NAT設定要求部102およびWAN側アドレス情報取得部103によって実現される。
次に、着信側ユーザ端末は、発信側ユーザ端末の識別情報を指定し、P2Pサーバ3に通信開始応答メッセージを送信する。このとき、着信側ユーザ端末は、自身の識別情報、自身のグローバルアドレス情報(第2のグローバルアドレス情報)、上位ルータのWAN側アドレス情報(第2のWAN側アドレス情報)、および自身のローカルアドレス情報(第2のローカルアドレス情報)を送信する(ステップS605)。ステップS605の動作は、アドレス情報通知部105によって実現される。
図9Bは、通信開始応答メッセージのフォーマットの一例を示す図である。図9Bに示すように、通信開始要求メッセージは、通信ヘッダと、メッセージ識別情報と、送信元ユーザ端末識別情報と、送信先ユーザ端末識別情報と、グローバルアドレス情報(第2のグローバルアドレス情報)と、上位ルータのWAN側アドレス情報(第2のWAN側アドレス情報)と、自身のローカルアドレス情報(第2のローカルアドレス情報)と、付加情報とを含む。
メッセージ識別情報は、通信開始要求に応答する旨のメッセージであることを示す情報である。送信元ユーザ端末識別情報は、着信側ユーザ端末の識別情報である。送信先ユーザ端末識別情報は、通信相手の発信側ユーザ端末の識別情報である。グローバルアドレス情報は、ステップS602で取得したグローバルアドレス情報(グローバルIPアドレスおよびポート番号)である。上位ルータのWAN側アドレス情報は、ステップS604で記憶したWAN側アドレス情報(WAN側IPアドレスおよびポート番号)である。自身のローカルアドレス情報は、予め自身に設定されているローカルIPアドレスおよび自身が用いているポート番号である。なお、自身のローカルアドレス情報には、ネットマスクが含まれている。なお、ネットマスクがなくてもIPアドレスの変数部分が認識されるのであれば、ネットマスクは含まれていなくてもよい。付加情報は、認証情報等である。
なお、上記ステップS603において、自身に割り当てられているIPアドレスとアドレス情報通知応答メッセージに含まれるグローバルIPアドレスとが一致する場合、着信側ユーザ端末は、ルータを介さずに、インターネット4に直接接続されていることを意味する。すなわち、自身のローカルIPアドレスは、グローバルIPアドレスとなっている。このような場合、着信側ユーザ端末は、グローバルアドレス情報を自身に割り当てられているIPアドレスおよびポート番号とし、WAN側アドレス情報を自身に割り当てられているIPアドレスおよびポート番号とし、ローカルアドレス情報を自身に割り当てられているIPアドレスおよびポート番号として、通信開始応答メッセージをP2Pサーバ3に送信する。
P2Pサーバ3は、ユーザ端末からのメッセージを受信し、メッセージ識別情報を調べ、通信開始応答メッセージであることを認識する。通信開始応答メッセージであることを認識したP2Pサーバ3は、送信先ユーザ端末識別情報を参照して、送信先のユーザ端末の識別情報を認識する。そして、P2Pサーバ3は、識別情報管理テーブルを参照し、送信先ユーザ端末識別情報に対応する通信経路に基づいて、送信先ユーザ端末までの通信経路を決定する。P2Pサーバ3は、送信先ユーザ端末までの通信路を経由するように、着信側ユーザ端末から受信した通信開始応答メッセージを送信する(ステップS606)。これによって、着信側ユーザ端末からの通信開始応答メッセージは、通信相手である発信側ユーザ端末に転送される。
着信側ユーザ端末の通信開始応答メッセージを受信した発信側のユーザ端末は、当該通信開始応答メッセージから、着信側ユーザ端末に割り当てられているグローバルアドレス情報(第2のグローバルアドレス情報)、WAN側アドレス情報(第2のWAN側アドレス情報)、およびローカルアドレス情報(第2のローカルアドレス情報)を取得する。この動作は、アドレス情報取得部106によって実現される。
なお、通信開始要求メッセージおよび通信開始応答メッセージの送受信は、P2Pサーバ3以外のサーバを介して行われてもよい。
以上のような発信側情報交換処理および着信側情報交換処理によって、ユーザ端末間で、P2P通信を行いたい旨のイベントがP2Pサーバ3を介して通知され、お互いのアドレス情報として、グローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報が交換される。ユーザ端末は、取得した、グローバルアドレス情報、WAN側アドレス情報、ローカルアドレス情報に基づいて、P2P通信を開始する。
次に、アドレス情報を交換し合ったユーザ端末間で、実際にP2P通信を開始する手順について説明する。
図11Aおよび図11Bは、アドレス情報を交換したユーザ端末が実際にP2P通信するときの動作を示すフローチャートである。図11Aおよび図11Bに示す動作は、発信側のユーザ端末が行ってもよいし、着信側のユーザ端末が行ってもよし、発信側および着信側のユーザ端末が行ってもよい。いずれのユーザ端末が図11Aおよび図11Bに示す動作を行うかは予め決められていてもよいし、通信開始要求メッセージまたは通信開始応答メッセージで決められてもよい。なお、図11Aおよび図11Bに示す動作は、使用アドレス情報判断部107およびP2P通信処理部108によって実現される。
まず、発信側情報交換処理および着信側情報交換処理によって通信相手となるユーザ端末のアドレス情報を取得したユーザ端末は、通信相手のアドレス情報と自身のアドレス情報とに基づいて、通信相手のユーザ端末とP2P通信が可能であるか、すなわち、P2P通信用の通信路を確保することができるか否かを判断する(ステップS900)。P2P通信用の通信路を確保することができると判断した場合、ユーザ端末は、ステップS901の動作に進む。一方、P2P通信用の通信路を確保することができないと判断した場合、ユーザ端末は、通信開始要求メッセージの送受信や通信開始応答メッセージの送受信と同様に、P2Pサーバを介して、ユーザデータを交換する通信に切り替える等、接続方式の切り替えを実行する。なお、ユーザ端末は、グローバルIPアドレスが異なる場合のみ、ステップS900の判断を行うものとする。
図12Aおよび図12Bは、P2P通信用の通信路を確保できない場合のアドレス情報の一例を示す図である。図12Aは、ユーザ端末1aからの通信開始要求メッセージの一例を示す。図12Bは、ユーザ端末1dからの通信開始応答メッセージの一例を示す。ここでは、ユーザ端末1aおよび1bについて、共に、WAN側アドレス情報が「WAN_IP:−(取得不能)」となっている。すなわち、ユーザ端末1aおよび1bは、共に、上位ルータのアドレス情報が取得できていない。このようになるのは、一般に、上位ルータがUPnP・IGDプロトコルに非対応等の理由等による。また、ユーザ端末1aおよび1dは、共に、グローバルIPアドレスとローカルIPアドレスとが異なる。したがって、ユーザ端末1aおよび1dは、共に、上位ルータの配下に存在しているといえる。さらに、ユーザ端末1aのグローバルIPアドレスとユーザ端末1bのグローバルIPアドレスとが一致しており、ポート番号が異なっている。したがって、ユーザ端末1aおよび1dは、共に、共通のルータの配下に存在することがわかる。したがって、ユーザ端末1aおよび1dは、インターネットを経由したルートで通信する必要がないことがわかる。通信経路にルータが存在する場合、ルータのWAN側からLAN側への通信は、NAT設定が行われていないと、実現不可能である。図12Aおよび図12Bに示す例では、ユーザ端末1aおよび1dの直上のルータ2Aおよび2Bは、NAT設定が行われていない。また、当該ルータは、新たにNAT設定することができない。ゆえに、結果的に、図12Aおよび図12Bに示す例では、ユーザ端末1aおよび1dは、ステップS908の判断によって、P2P通信が不可能であると判断される。言い換えると、この例のように、グローバルIPアドレスが一致している場合、発信側情報交換処理および着信側情報交換処理が行われた結果によって得られた情報だけを用いて、P2P通信が不可能であるか否かを判断することはできない。そのため、ユーザ端末は、ローカルアドレス情報、およびWAN側アドレス情報を用いてP2P通信を試み、P2P接続できないことを確認して、P2P通信不能であると判断する。そのため、図12Aおよび図12Bに示すアドレス情報がユーザ端末1aとユーザ端末1dとの間でのアドレス情報である場合、P2P通信が不可能であると判断される。なぜなら、相手側の上位に位置するルータにNAT設定されていないものがあるので、ユーザ端末1aおよび1dから送信した電文は、ルータが正しい相手に転送することができず、相手側に受信されないからである。なお、たとえば、電文は、要求メッセージや応答メッセージといったP2P通信路の接続用の制御パケット全体のことである。なお、図12Aおよび図12Bに示すアドレス情報が、ユーザ端末1aとユーザ端末1cとの間でのアドレス情報である場合、ルータ2Aおよびルータ2CがUPnPに対応していないために、WAN側アドレスの取得ができなくなっているといえる。しかし、この場合は、ユーザ端末1aから通信要求を開始すると動的NATによりP2P通信が可能となる。
図13Aおよび図13Bは、P2P通信用の通信路を確保できない場合のアドレス情報の他の例を示す図である。図13Aは、ユーザ端末1aからの通信開始要求メッセージの一例である。図13Bは、ユーザ端末eからの通信開始要求メッセージの一例である。図13Bの例では、ユーザ端末1eは、上位にルータが存在するが、直上のルータ2DにはNAT設定が行われていないことが示されている。一方、図13Aの例では、ユーザ端末1aは、上位ルータのNATは設定されている。しかし、図13Aの例では、グローバルIPアドレスとWAN側IPアドレスとが異なっている。したがって、直上のルータのさらに上位にルータが存在していることがわかる。なお、最上位のルータにおいて、ユーザ端末1aとユーザ端末1eとの通信に対応できるNAT設定は、行われていない。なぜなら、通常、ユーザ端末は、あるルータを介して更に上位に位置するルータに静的NAT設定を行うことはできないからである。また、ユーザ端末1aのグローバルIPアドレスとユーザ端末1eのグローバルIPアドレスとが異なるので、ユーザ端末1aとユーザ端末1eとは、通信経路にルータが存在するインターネットを経由したルートで通信する必要がある。しかし、ユーザ端末1eの直上のルータには、静的NAT設定が行われていないので、P2P通信が不能であると判断される。この判断は、発信側情報交換処理および着信側情報交換処理が行われた結果によって得られた情報だけで可能である。したがって、ユーザ端末は、ステップS900の段階でP2P通信不能であると判断できる。
このように、静的NAT設定が行われていないルータが存在する場合、ユーザ端末は、P2P通信が不能であると判断する。
ステップS900において、P2P通信用の通信路を確保することができないと判断した場合、ユーザ端末は、P2Pサーバ3を介してユーザデータを交換する通信に切り替えるものとした。しかし、P2P通信用の通信路を確保することができないと判断した場合、ユーザ端末は、グローバルアドレス情報を利用し、STUN通信方式を用いて、通信相手のグローバルアドレス情報にUDPパケットを送信して通信を試みてもよい。すなわち、P2P通信用の通信路を確保することができないと判断した場合、ユーザ端末は、STUN方式によって、P2P通信を試みてもよい。通信方式の切り替えは、P2P通信処理部108によって実現される。
ステップS901において、ユーザ端末は、通信相手のグローバルアドレス情報を参照して、通信相手のグローバルIPアドレスと自身のグローバルIPアドレスとが一致するか否かを判断する。
グローバルIPアドレスが一致する場合、P2P通信を試みている二つのユーザ端末は、同一ルータの配下に位置するユーザ端末である。したがって、当該二つのユーザ端末は、インターネットを介さずに通信が可能である。グローバルIPアドレスが一致する場合、ユーザ端末は、ステップS902の動作に進む。
一方、グローバルIPアドレスが一致しない場合、P2P通信を試みている二つのユーザ端末は、同一ルータの配下に位置しないユーザ端末である。したがって、当該二つのユーザ端末は、インターネットを介して通信することとなる。グローバルIPアドレスが一致しない場合、ユーザ端末は、ステップS910の動作に進む。
ステップS902において、ユーザ端末は、通信相手のローカルアドレス情報宛に、P2P接続要求を送信する。
ステップS902の後、ユーザ端末は、P2P接続要求の送信先である通信相手から、応答を受信するか否かを判断する(ステップS903)。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、通信相手のローカルアドレス情報宛に、P2P通信のためのデータを送信する(ステップS915)。
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する(ステップS904)。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、P2P接続ができた旨の応答を送信する(ステップS905)。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、P2P通信のためのデータを送信する(ステップS916)。
ステップS904において、通信相手からの要求を受信できなかった場合、ユーザ端末は、通信相手のWAN側アドレス情報宛(すなわち、通信相手の直上のルータ宛)に、P2P接続要求を送信する(ステップS906)。次に、ユーザ端末は、通信相手からの応答を受信するか否かを判断する(ステップS907)。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、通信相手のWAN側アドレス情報宛に、P2P通信のためのデータを送信する(ステップS917)。
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する(ステップS908)。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、P2P接続ができた旨の応答を送信する(ステップS909)。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、P2P通信のためのデータを送信する(ステップS918)。
ステップS908において、通信相手からの要求を受信できなかった場合、ユーザ端末は、ステップS914の動作に進む。ステップS914において、ユーザ端末は、P2P通信方式を、P2Pサーバ経由方式またはSTUN方式に切り替える。
ステップS910以降のP2P通信では、グローバルIPアドレスが必要となる。ステップS910において、ユーザ端末は、グローバルIPアドレスを、ローカルアドレス情報、WAN側アドレス情報、グローバルアドレス情報の順に探索し、グローバルIPアドレスが見つかったら、当該グローバルIPアドレスに対応するアドレス情報宛(当該グローバルIPアドレスおよびポート番号宛)にP2P接続要求を送信する。
なお、ローカルIPアドレスがグローバルIPアドレスと一致する場合は、ユーザ端末がインターネット網にルータを介さず直接接続されている場合である。
ステップS910の後、ユーザ端末は、P2P接続要求の送信先である通信相手から、応答を受信するか否かを判断する(ステップS911)。通信相手からの応答を受信した場合、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該グローバルIPアドレスに対応するアドレス情報宛に、P2P通信のためのデータを送信する(ステップS919)。
一方、通信相手からの応答を受信できなかった場合、ユーザ端末は、通信相手からの要求を受信するか否かを判断する(ステップS912)。通信相手からの要求を受信した場合、ユーザ端末は、当該要求の電文に含まれるヘッダに記述されている送信元情報に、P2P接続ができた旨の応答を送信する(ステップS913)。これにより、相互の通信路が確立されたこととなる。したがって、その後、ユーザ端末は、当該ヘッダに記述されていた送信元情報宛に、P2P通信のためのデータを送信する(ステップS920)。
ステップS912において、通信相手からの要求を受信できなかった場合、ユーザ端末は、ステップS914の動作に進み、P2P通信方式を切り替える。
図11Aおよび図11Bに示す手順では、通信相手のローカルアドレス情報、WAN側アドレス情報の順に通信路接続要求を試みるようにした(ステップS902、S906参照)。一般的に、サブネットワーク識別アドレス情報およびユーザ端末のローカルアドレス情報は、個々のルータが割り振る。したがって、相異なるサブネットワーク間において、IPアドレスだけでなくポート番号までもが同じローカルアドレス情報を有する複数のユーザ端末が存在する可能性がある。ステップS902において、ローカルアドレス情報を宛先とした場合、所望の通信相手以外のユーザ端末に通信路接続要求電文が届くことが起こりうる。しかし、所望の通信相手以外のユーザ端末は、事前に、アドレス情報の交換を行っていない。したがって、所望の通信相手以外のユーザ端末は、誤って届いた電文であると認識できる。よって、所望の通信相手以外のユーザ端末は、通信路接続応答電文を返信しない。従って、誤った通信路接続が起きることはない。
このように、図11に示す動作において、ユーザ端末は、通信相手のグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報の内、いずれか一つのアドレス情報を宛先として、P2P接続要求を送信し、通信を試み(ステップS902、S906、またはS910参照)、当該アドレス情報を用いてP2P通信を開始するか否かを判断する。通信相手のユーザ端末から応答が返ってきたら(ステップS903、S907、S911のYES参照)、ユーザ端末は、宛先として使用したアドレス情報を使用して、P2P通信を開始すると判断する(ステップS915、S917、S919参照)。
特徴的には、ユーザ端末は、グローバルIPアドレスの一致を判断し(ステップS901参照)、グローバルIPアドレスが一致する場合、当該グローバルIPアドレスに対応するアドレス情報宛にP2P接続要求を送信し(ステップS910参照)、通信相手からの応答が返ってきたら(ステップS911のYES参照)、宛先として用いたアドレス情報を使用して、P2P通信を開始すると判断する。一方、グローバルIPアドレスが一致しない場合、通信相手のWAN側アドレス情報およびローカルアドレス情報の内、いずれか一つのアドレス情報を宛先として、P2P接続要求を送信し(ステップS902、S906参照)、通信相手からの応答が返ってきたら(ステップS903、S907のYES参照)、宛先として用いたアドレス情報を使用して、P2P通信を開始すると判断する。
また、ユーザ端末は、通信相手のユーザ端末からのP2P接続要求を受信したら(ステップS904、S908、S912のYES参照)、当該P2P接続要求の送信元アドレス情報を使用して、P2P通信を開始すると判断する。そして、ユーザ端末は、当該送信元アドレス情報を使用して、P2P通信を開始する(ステップS905、S909、S913、S916、S918、S920)。
さらに、ユーザ端末は、上記のような判断の結果、いずれか一つのアドレス情報または送信元アドレス情報を使用してP2P通信を開始しないと判断した場合、P2P通信方式を切り替える。
次に、図1に示すユーザ端末1a〜1e間でP2P通信する際の流れについて、アドレス情報を例示しながら説明する。
図14Aは、ユーザ端末1aからユーザ端末1dに送信される通信開始要求メッセージの内容の一例を示す図である。図14Bは、ユーザ端末1dからユーザ端末1aに送信される通信開始応答メッセージの内容の一例を示す図である。
ユーザ端末1aとユーザ端末1dとは、ルータ2Cの配下に存在するので、グローバルIPアドレスは一致している。したがって、ユーザ端末1aは、ステップS902において、ユーザ端末1dのローカルアドレス情報宛(ローカルIPアドレスが“192.168.1.10”、ポート番号が“3001”)に、P2P接続要求を送信する(ステップS902参照)。図1Aに示すように、ユーザ端末1dは、ルータ2Aの配下に位置していない。したがって、ローカルアドレス情報を用いたユーザ端末1aの当該要求は、ユーザ端末1dには、到達しない。したがって、ユーザ端末1aは、ユーザ端末1dからの応答を受信しない(ステップS903のNO参照)ので、ステップS904の動作に進む。
ここで、ユーザ端末1dからの要求がユーザ端末1aに送信されなかったとする(ステップS904のNO参照)。この場合、ユーザ端末1aは、ユーザ端末1dのWAN側アドレス情報宛(WAN側IPアドレスが“192.168.10.4”、ポート番号が“4001”)に、P2P接続要求を送信する(ステップS906参照)。当該要求は、ルータ2Aを通過し、ルータ2Bに届く。ルータ2Bは、設定されている静的NATに従って、当該要求をユーザ端末1dに送信する。よって、ユーザ端末1dは、当該要求に対する応答をユーザ端末1aに返信することができる。その後、ユーザ端末1aは、ユーザ端末1dからの応答を受信する(ステップS907のYES参照)ので、当該WAN側アドレス情報を用いて、ユーザ端末1dとP2P通信を開始する(ステップS917参照)。
この場合、ユーザ端末1dは、ユーザ端末1aからのP2P接続要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末1aとの間でのP2P通信を開始する。なお、ユーザ端末1dが発信側である場合も、ユーザ端末1dとユーザ端末1aとは、同様にP2P通信することができる。
図15Aは、ユーザ端末1aからユーザ端末1bに送信される通信開始要求メッセージの内容の一例を示す図である。図15Bは、ユーザ端末1bからユーザ端末1aに送信される通信開始応答メッセージの内容の一例を示す図である。
ユーザ端末1aとユーザ端末1bとは、ルータ2Cの配下に存在するので、グローバルIPアドレスは一致している。したがって、ユーザ端末1aは、ステップS902において、ユーザ端末1bのローカルアドレス情報宛(ローカルIPアドレスが“192.168.0.101”、ポート番号が“3021”)に、P2P接続要求を送信する。図1Aに示すように、ユーザ端末1bは、ルータ2Aの配下に位置している。したがって、ローカルアドレス情報を用いたユーザ端末1aの当該要求は、ユーザ端末1bには、到達する。よって、ユーザ端末1aは、ユーザ端末1bと、ローカルアドレス情報を用いてP2P通信する(ステップS915参照)。この場合、ユーザ端末1bは、当該要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末1aとの間でのP2P通信を開始する。なお、ユーザ端末1bが発信側である場合も、ユーザ端末1bとユーザ端末1aとは、同様にP2P通信することができる。
図16Aは、ユーザ端末1aからユーザ端末1cに送信される通信開始要求メッセージの内容の一例を示す図である。図16Bは、ユーザ端末1cからユーザ端末1aに送信される通信開始応答メッセージの内容の一例を示す図である。
ユーザ端末1aとユーザ端末1cとは、ルータ2Cの配下に存在するので、グローバルIPアドレスは一致している。したがって、ユーザ端末1aは、ステップS902において、ユーザ端末1cのローカルアドレス情報宛(ローカルIPアドレスが“192.168.10.2”、ポート番号が“3031”)に、P2P接続要求を送信する。図1Aに示すように、ユーザ端末1cは、ユーザ端末1aが接続されているルータ2Aの上位側(WAN側)ルータ2Cに接続されている。したがって、ローカルアドレス情報を用いたユーザ端末1aのP2P接続要求は、ユーザ端末1cに到達する。よって、ユーザ端末1cは、この要求を受信して、P2P通信を開始することが可能となる。
なお、この例では、ユーザ端末1aの上位ルータにNAT設定が行われているので、ユーザ端末1cがユーザ端末1aのWAN側アドレス情報を用いたP2P接続要求を送信した場合でも、当該P2P要求は、ユーザ端末1aに到達する。よって、ユーザ端末1c側からP2P接続要求を送信して、P2P通信を行うことも可能である。
図17Aは、ユーザ端末1aからユーザ端末1eに送信される通信開始要求メッセージの内容の一例を示す図である。図17Bは、ユーザ端末1eからユーザ端末1aに送信される通信開始応答メッセージの内容の一例を示す図である。
ユーザ端末1aはルータ2Cの配下に位置し、ユーザ端末1eはルータ2Dの配下に位置する。したがって、グローバルIPアドレスは一致しない。ゆえに、ユーザ端末1aは、ステップS910の処理において、グローバルIPアドレスに対応するアドレス情報宛に、P2P接続要求を送信する。ここでは、ユーザ端末1aは、ユーザ端末1eのWAN側アドレス情報(WAN側IPアドレス“133.121.2.15”およびポート番号“4021”)宛に、当該要求を送信する。その後、ユーザ端末1eからの応答が返ってきたら(ステップS911のYES参照)、ユーザ端末1aは、当該アドレス情報を用いて、ユーザ端末1eとの間でP2P通信を開始する(ステップS919参照)。ユーザ端末1eは、当該要求のヘッダに記述されている送信元アドレス情報を用いて、ユーザ端末1aとの間でP2P通信する。なお、ユーザ端末1eが発信側である場合、ユーザ端末1eは、ユーザ端末1aのグローバルアドレス情報に対応するアドレス情報として、ユーザ端末1aのグローバルアドレス情報を用いて、ユーザ端末1aとP2P通信する。
なお、ユーザ端末1eは、ユーザ端末1aから受信したアドレス情報を調べて、WAN側IPアドレスとグローバルIPアドレスとが不一致であるか否かを判断してもよい。不一致である場合、ユーザ端末1eは、NAT設定されていないルータが存在するとして、P2P接続要求をユーザ端末1aに送信しても、応答されない判断する。この場合、ユーザ端末1eは、一定時間、ユーザ端末1aからのP2P接続要求を待ち、自らは、P2P接続要求を送信しないようにしてもよい。図17Aおよび図17Bの例では、上記のように制御された場合においても、ユーザ端末1aからユーザ端末1eへのP2P接続要求が送信可能であるので、ユーザ端末1aとユーザ端末1e間に通信路が確立される。
以下、二つのユーザ端末間でP2P通信が実現されるまでの具体的な処理の流れを説明する。
図18Aおよび図18Bは、ユーザ端末1aとユーザ端末1dとの間でP2P通信を行うための具体的な通信シーケンスを示す図である。この例では、ルータBがUPnP非対応であるとし、ルータBは静的NAT設定ができないものとする。ユーザ端末1a、ルータ2A、ルータ2C、ルータ2B、およびユーザ端末1dに設定されているIPアドレスは、図3Aおよび図3Bに示されている例と同様であるとする。
まず、ユーザ端末1aとユーザ端末1dとは、それぞれ、P2Pサーバ3と通信して、識別情報を登録する(P0、図5参照)。このために、たとえば、ユーザ端末1a,1dとP2Pサーバ3とは、TCPセッションを実行する。
次に、ユーザ端末1aは、アドレス情報通知要求メッセージM11(図8A参照)およびアドレス情報通知応答メッセージM12(図8B参照)の送受信によって、P2Pサーバ3から、自身のグローバルアドレス情報(132.152.6.50:6001)を取得する(P1、図7のステップS501参照)。この過程において、P2Pサーバ3とユーザ端末1aとの間のルータ2Aおよび2Cは、動的NAT設定を行う。
次に、ユーザ端末1aは、直上のルータ2Aに、静的NAT設定を行う(P2、図7のステップS502参照)。ここでは、(162.168.0.100:2701)が(192.168.10.5:5001)に変換され、(192.168.10.5:5001)が(162.168.0.100:2701)に変換される静的NAT設定が行われるとする。
次に、ユーザ端末1aは、P2Pサーバ3を介して、ユーザ端末1dに対して、通信開始要求メッセージ(図9A参照)を送信する(P3、図7のステップS504参照)。この際、ユーザ端末1aは、自身に関するアドレス情報であるグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を、アドレス情報開始要求メッセージに含めて、通知する。
次に、P2Pサーバ3は、ユーザ端末1aからの通信開始要求メッセージをユーザ端末1dに転送する(P4、図7のステップS505参照)。
次に、ユーザ端末1dは、通信開始要求メッセージを受信すると、アドレス情報通知要求メッセージM51(図8A参照)およびアドレス情報通知応答メッセージM52(図8B参照)の送受信によって、自身のグローバルアドレス情報(133.152.6.50:6003)を、P2Pサーバ3から取得する(P5、図10のステップS603参照)。
その後、ユーザ端末1dは、直上のルータ2Bに対して、UPnPによる静的NAT設定を試みる(P6、図10のステップS603参照)。しかし、ルータ2BはUPnP非対応であるので、静的NAT設定ができない。したがって、ユーザ端末1dは、図10のステップS603およびS604の処理を適切に実行できず、WAN側アドレス情報を取得できない。
続いて、図18Bの説明に進む。ユーザ端末1dは、P2Pサーバ3を介して、ユーザ端末1aに通信開始応答メッセージ(図9B参照)を送信する(P7、図10のステップS605参照)。この際、ユーザ端末1dは、自身に関するアドレス情報であるグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を、アドレス情報開始要求メッセージに含めて、通知する。ただし、静的NAT設定ができていないので、WAN側アドレス情報は、空欄となる。
次に、P2Pサーバ3は、ユーザ端末1dからの通信開始応答メッセージをユーザ端末1aに転送する(P8、図10のステップS606参照)。
P8までの処理によって、ユーザ端末1aとユーザ端末1dとは、お互いのアドレス情報を入手したこととなる。
次に、ユーザ端末1aは、ユーザ端末1dのローカルアドレス情報(192.168.1.10:3001)宛にP2P接続要求を送信する(P9、図11AのステップS902参照)。しかし、送信先経路情報がない、送信先がない等の理由によりパケットは破棄される。
合わせて、ユーザ端末1dは、ユーザ端末1aのローカルアドレス情報(192.168.0.100:2701)宛にP2P接続要求を送信する(P10、図11AのステップS902)。しかし、こちらも、送信先経路情報がない、送信先がない等の理由によりパケットは破棄される。
そこで、ユーザ端末1dは、ユーザ端末1a側のWAN側アドレス情報(192.168.10.5:5001)へ接続要求を送信する(P11、図11AのステップS906参照)。この際、ルータ2Bは、(192.168.10.4:6551)から(192.168.1.10:3001)へ、(192.168.1.10:3001)から(192.168.10.4:6551)への変換処理を実行する。このときの動的NAT2は、P5における動的NAT1とは異なる。
ユーザ端末1dからの接続要求は、ルータ2CのWAN側に出ないので、ルータ2CのNATは実行されず、ルータ2Aに到達する(P12)。
ルータ2Aは、P2において設定した静的NATによる経路を使用して、ユーザ端末1dからの接続要求電文をユーザ端末1aに転送する(P13)。したがって、ユーザ端末1aは、ポート番号“2701”でユーザ端末1dからの接続要求を受信する(P14、図11AのステップS904参照)。
次に、ユーザ端末1aは、受信した接続要求の送信元アドレス情報(192.168.10.4:6551)宛に接続応答電文を送信する(P15、図11AのステップS905)。当該電文は、接続要求電文が到着した経路であるルータAの静的NATとルータBの動的NAT2とを経由して、ユーザ端末1dに届く(P16)。ユーザ端末1dは、ポート番号3001で、接続応答を受信する(P17)。以降、ユーザ端末1aとユーザ端末1dとは、当該静的NATと当該動的NAT2とを経由して、相互にP2P通信を行うこととなる。
このように、第1の実施形態によれば、ユーザ端末間でグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報が交換され、適宜、いずれか一つのアドレス情報を用いてP2P通信が開始され、また、通信相手からの要求があった場合には当該要求に記述されている送信元アドレス情報を用いてP2P通信が開始される。したがって、複雑にネットワークが構成されている通信環境においても、P2P通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。さらに、ネットワークの構成が動的に変化したとしても、新たに交換されたグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報に基づいて、P2P通信が行われる。したがって、ネットワーク構成が動的に変化する場合にもP2P通信を実現することができる通信装置、方法、およびプログラムが提供されることとなる。また、いずれのアドレス情報を用いてもP2P通信が不可能である場合、ユーザ端末は、P2Pサーバを介したP2P通信またはSTUN通信方式によるP2P通信に通信方式を切り替える。
本発明のユーザ端末は、二つのユーザ端末間で交換される第1および第2のグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報に基づいて、P2P通信が可能な方式を判断する。当該方式としては、ローカルアドレス情報を用いてP2P通信を開始する方式(図11AのS915参照)、WAN側アドレス情報を用いてP2P通信を開始する方式(図11AのS917参照)、送信元アドレス情報を用いてP2P通信を開始する方式(図11AのS916、S918、および図11BのS920参照)、グローバルIPアドレスに対応するアドレス情報でP2P通信を開始する方式(図11BのS919参照)、P2Pサーバを用いてP2P通信を開始する方式(図11BのS914参照)、およびSTUN通信方式を用いてP2P通信を開始する方式(図11BのS914参照)がある。
なお、ユーザ端末は、ステップS901の判断を実行せずに、ステップS908の後、ステップS910の動作を実行してもよい。すなわち、グローバルIPアドレスが一致するか否かの判断は、必須ではない。本発明は、グローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を用いて、P2P通信が試みられるのであれば、P2P通信可能か否かの判断順序は、図11の順序に限定されるものではない。
なお、グローバルアドレス情報はIPアドレスのみであってもよい。グローバルアドレス情報がIPアドレスのみである場合、ユーザ端末は、グローバルアドレス情報を指定したP2P接続を行わないようにするとよい。
なお、グローバルアドレス情報は、インターネット上でのアドレスに関する情報であれば、グローバルIPアドレスおよびポート番号に限定されるものではない。
なお、WAN側アドレス情報は、ユーザ端末の直上に存在するルータに割り当てられているWAN側でのアドレスに関する情報であれば、WAN側IPアドレスおよびポート番号に限定されるものではない。
なお、ローカルアドレス情報は、ユーザ端末に割り当てられているローカルネットワーク上でのアドレスに関する情報であれば、ローカルIPアドレスおよびポート番号に限定されるものではない。
(第2の実施形態)
第2の実施形態において、ユーザ端末は、自身のアドレス情報および通信相手のアドレス情報に基づいて、自身および通信相手がどのようなネットワーク構成で接続されているか、あるいは、どのような経路で通信が可能か、を予め判断した後、P2P通信を実行する。ユーザ端末からインターネットまでの間に2以下のルータしかない存在しなければ、どのような宛先アドレスを用いて通信を行うとP2P通信が可能を、第2の実施形態ではほぼ判定できる。ネットワークの構成、識別情報登録手順、通信情報交換手順は、第1の実施形態と同様であるので、説明を省く。なお、図中、(x−y)という表記が用いられている。ここで、“x”は、自身の上位に存在するルータの数(ルータの階層数)を示す。“y”は、通信相手のユーザ端末の上位に存在するルータの数(ルータの階層数)を示す。“?”の記号は、1階層であるか2階層であるかいずれか決定できない場合、または、階層不明である場合を示す。なお、第2の実施形態においても、ユーザ端末は、P2P通信プログラムを実行することによって、下記に説明する動作を実現する。
図19Aおよび図19Bは、第2の実施形態におけるユーザ端末の動作を示すフローチャートである。以下、図19Aおよび図19Bを参照しながら、第2の実施形態におけるユーザ端末の動作について説明する。図19Aおよび図19Bの動作は、使用アドレス情報判断部107およびP2P通信処理部108によって実現される。なお、図19Aおよび図19Bを用いて、ユーザ端末の動作を説明するにあたり、ユーザ端末からインターネットまでの間に2以下のルータしかない存在しないとして想定して説明する。ただし、後述のように、第2の実施形態は、ユーザ端末からインターネットまでの間に3以上のルータが存在する場合にも転用可能である。
ユーザ端末は、自身から通信相手に送った通信開始要求メッセージと、通信相手からP2Pサーバ3経由で入手した通信開始応答メッセージとを比較し、次のような手順を実行する。
まず、ユーザ端末は、自身のグローバルIPアドレスと通信相手のグローバルIPアドレスとが一致するか否かを判断する(ステップS1000)。グローバルIPアドレスが一致しない場合、自身と通信相手とはインターネット網を経由した通信であるので、ユーザ端末は、図19Bに示す処理に進む。一方、グローバルIPアドレスが一致する場合、自身と通信相手とは同一のルータの配下での通信であり、ステップS1001の動作に進む。ここで、グローバルIPアドレスが一致しない場合とは、自身と通信相手とがインターネットを介して接続されていることを示す。これを、第1のタイプという。一方、グローバルIPアドレスが一致しない場合を第2のタイプという。なお、図中には、タイプ番号が示されている。
ステップS1001において、ユーザ端末は、通信相手の直上のルータに静的NAT設定が行われているか否かを判断する。具体的には、ユーザ端末は、通信相手のアドレス情報を参照して、WAN側アドレス情報が設定されている場合、静的NAT設定が行われていると判断する。静的NAT設定が行われている場合、ユーザ端末は、ステップS1002の動作に進む。一方、静的NAT設定が行われていない場合、ユーザ端末は、通信相手の上に、ルータがいくつ存在しているか判断できない。この場合、ユーザ端末は、ステップS1006の動作に進む。ここで、通信相手のユーザ端末の直上に存在するルータが静的NATが設定可能である場合を第3のタイプという。通信相手のユーザ端末の直上に存在するルータが静的NATが設定不可能である場合を第4のタイプという。
ステップS1002において、ユーザ端末は、通信相手の上にルータが2層存在するか否かを判断する。具体的には、ユーザ端末は、通信相手のアドレス情報を参照して、グローバルIPアドレスとWAN側IPアドレスとを比較する。グローバルIPアドレスとWAN側IPアドレスとが一致する場合、ユーザ端末は、通信相手の上にルータが1層存在すると判断する。一方、グローバルIPアドレスとWAN側IPアドレスとが一致しない場合、ユーザ端末は、通信相手の上にルータが2層存在すると判断する。通信相手の上にルータが2層存在する場合、ユーザ端末は、ステップS1003の動作に進む。一方、通信相手の上にルータが1層だけ存在する場合、ユーザ端末は、ステップS1005の動作に進む。ここで、通信相手のユーザ端末からインターネットまでにルータが一つしか存在しない場合を第5のタイプという。通信相手のユーザ端末からインターネットまでにルータが二つ存在する場合を第6のタイプという。
ステップS1003において、ユーザ端末は、自身のアドレス情報に含まれるWAN側IPアドレスと通信相手のアドレス情報に含まれるWAN側IPアドレスとが一致するか否かを判断する。WAN側IPアドレスが一致する場合、自身の直上のルータと通信相手の直上のルータとは同一であることを意味している。したがって、自身の上に2層のルータが存在することとなる。WAN側IPアドレスが一致する場合、ユーザ端末は、ステップS1005の動作に進む。一方、WAN側IPアドレスが一致しない場合、自身の直上のルータと通信相手の直上のルータとは同一でないことを意味している。したがって、自身の上に何層のルータが存在するかは不明である。WAN側IPアドレスが一致しない場合、ユーザ端末は、ステップS1004の動作に進む。ここで、WAN側IPアドレスが一致する場合を第7のタイプという。WAN側IPアドレスが一致しない場合を第8のタイプという。
ステップS1004において、すなわち、アドレス情報が第2、第3、第6、および第8のタイプに属する場合、ユーザ端末は、通信相手のWAN側アドレス情報(IPアドレスとポート番号)へ通信路接続を要求する。通信路接続要求電文は周知のものでよい。通信相手は、受信した通信路接続要求電文のヘッダに記述された送信元アドレス情報に応答を送信する。もし、自身の上のルータで静的NATが設定されていなくとも、自身から通信相手へ向けた通信により、動的NATが設定される。したがって、当該通信相手から返信される通信路接続応答電文は、当該動的NATによる通信経路を逆にたどってユーザ端末自身に届く。したがって、自身と通信相手との間でP2P通信が実現できる。
ステップS1004に示すP2P通信が行われるケースは、たとえば、図14Aに示すユーザ端末1aと図14Bに示すユーザ端末1dとの間において、ユーザ端末1aからユーザ端末1dへの通信路接続の場合である。その他、図16Bに示すユーザ端末1cから図16Aに示すユーザ端末1aへの通信路接続や、図1に示すユーザ端末1cから図1に示すユーザ端末1dへの通信路接続、このケースに相当する。
ステップS1005において、すなわち、アドレス情報が第2、第3、および第5のタイプに属する場合、または、アドレス情報が第2、第3、第6、および第7のタイプに属する場合、ユーザ端末は、通信相手のローカルアドレス情報へ通信路接続を要求する。これに応じて、通信相手は、受信した通信路接続要求電文のヘッダに記述された送信元アドレス情報に応答を送信する。これによって、自身と通信相手との間のP2P通信が実現される。通信路接続要求電文は、同じサブネットワーク内の通信であるか、または、通信相手が自身の上位(WAN側)のルータに接続されているので、直接通信又は動的NAT設定によって、通信相手からの返信を受信することができる。ただし、ステップS1005において、2層を越えるルータが存在する場合には、自身と通信相手とは、同一ルータ配下でない場合が起こり得る。この場合、ステップS1005の手順では、P2P通信が失敗する。この場合、P2P通信接続方式を切り替えて、P2Pサーバで通信データを中継する等の方法でユーザ端末間を接続する。
ステップS1005に示すP2P通信が行われるケースは、たとえば、図16Aに示すユーザ端末1aから図16Bに示すユーザ端末1cへの通信路接続に相当する。その他、図1Aに示すユーザ端末bから図1Aに示すユーザ端末cへの通信路接続や、図1Aに示すユーザ端末dから図1Aに示すユーザ端末cへの通信路接続もこのケースに相当する。
ステップS1006において、ユーザ端末は、自装置の直上のルータに静的NAT設定が行われているか否かを判断する。具体的には、ユーザ端末は、アドレス情報にWAN側IPアドレスが記載されていれば、静的NAT設定が行われていると判断する。ここで、自装置の直上に存在するルータが静的NAT設定可能である場合を第9のタイプという。一方、自装置の直上に存在するルータが静的NAT設定不可能である場合を第10のタイプという。
ステップS1006において、静的NAT設定が行われていると判断した場合、自装置である第1のユーザ端末(以下、単に、第1のユーザ端末という)から送信された電文を、通信相手である第2のユーザ端末(以下、単に、第2のユーザ端末という)は、受信できないが、第2のユーザ端末からの電文を、第1のユーザ端末は、受信可能である。したがって、第1のユーザ端末は、ステップS1007の動作に進み、第2のユーザ端末からの通信路接続の要求を待つ。第2のユーザ端末は、第1のユーザ端末の直上のルータは、静的NAT設定を行っていると判断するので、ステップS1004またはステップS1005の動作を行う。したがって、第2のユーザ端末は、第1のユーザ端末への通信路接続要求を行う。よって、P2P通信が可能となる。ステップS1007の動作が行われるのは、アドレス情報が、第2、第4、および第9のタイプに属する場合である。
ステップS1006において、静的NAT設定が行われていないと判断した場合、第1および第2のユーザ端末共に、上位のルータの数が一つであるのか二つであるのか分からない。しかし、第1のユーザ端末と第2のユーザ端末とが、同じサブネットワーク内に位置する場合もある。したがって、第1のユーザ端末は、第2のユーザ端末のローカルアドレス情報へ通信路接続を要求する(ステップS1008)。ステップS1008の動作が行われるのは、アドレス情報が、第2、第4、および第10のタイプに属する場合である。
第1および第2のユーザ端末が同じサブネットワーク内に位置する場合、または、第1のユーザ端末が接続しているルータの上位(WAN側)が接続しているルータに第2のユーザ端末が接続されている場合(たとえば、ユーザ端末1aとユーザ端末1cとの関係)には、第1のユーザ端末からの電文は、動的NAT設定によって、第2のユーザ端末に届く。
なお、上記のような場合でも、各ルータに静的NATが設定されていない場合(UPnP非対応の場合)、両者の関係がどのような接続関係になっているか判断できないため、ユーザ端末は、ステップS1001でNOと判定し、ステップS1007の動作を実行するのではなく、ステップS1008の動作を実行することとなる。
また、ステップS1008で通信できない場合、逆に、第2のユーザ端末は、第1のユーザ端末のローカルアドレス情報へP2P接続を要求してもよい。このように制御することで、第2のユーザ端末が接続しているルータの上位(WAN側)に接続されているルータに第1のユーザ端末が接続されているならば、P2P通信が可能となる。
ステップS1008の後、第1のユーザ端末は、通信路が確立されたか否かを判断する(ステップS1009)。通信路が確立された場合、第1および第2のユーザ端末は、確立された通信路を用いて、以後、P2P通信する。一方、通信路が確立されていない場合、ユーザ端末1aおよび1dのように上流に2つのルータがあり、共に直上のルータ2Aおよび2Bにおいて静的NATが設定されていない場合である。この場合、第1のユーザ端末は、P2P通信方式を、P2Pサーバ経由方式、STUN方式の一方又は両方に切り替えて、第2のユーザ端末との間のP2P通信を実行する(ステップS1010)。
なお、ステップS1006において第1のユーザ端末に静的NAT設定が行われている場合でも、ユーザ端末1cのように通信相手の上位のルータが1つのみである場合がある。したがって、第1のユーザ端末は、ステップS1008およびステップS1009のように、自身からの通信開始要求を試みた後、通信路が確立できない場合にステップS1007に進むようにしてもよい。
図19BのステップS1100において、第1のユーザ端末は、第2のユーザ端末の直上のルータに静的NAT設定が行われているか否かを判断する。判断基準は、ステップS1001と同様である。第2のユーザ端末の直上のルータに静的NAT設定が行われている場合、第1のユーザ端末は、ステップS1101の動作に進む。一方、第2のユーザ端末の直上のルータに静的NAT設定が行われていない場合、第1のユーザ端末は、ステップS1108の動作に進む。
ステップS1101において、第1のユーザ端末は、直上のルータに静的NAT設定が行われているか否かを判断する。具体的には、第1のユーザ端末は、自装置のアドレス情報を参照して、WAN側アドレス情報が設定されている場合、静的NAT設定が行われていると判断する。静的NAT設定が行われていない場合、第1のユーザ端末は、ステップS1103の動作に進む。一方、静的NAT設定が行われている場合、第1のユーザ端末は、ステップS1102の動作に進む。ここで、自装置の直上に存在するルータが静的NAT可能な場合を第9のタイプという。一方、自装置の直上に存在するルータが静的NAT設定不可能な場合を第10のタイプという。
ステップS1102において、第1のユーザ端末は、自装置の上のルータが2層であるか否かを判断する。具体的には、第1のユーザ端末は、自装置のアドレス情報を参照して、グローバルIPアドレスとWAN側IPアドレスとを比較する。グローバルIPアドレスとWAN側IPアドレスとが一致する場合、ユーザ端末は、自装置の上にルータが1層存在すると判断する。一方、グローバルIPアドレスとWAN側IPアドレスとが一致しない場合、ユーザ端末は、通信相手の上にルータが2層存在すると判断する。ルータが2層である場合、第1のユーザ端末は、ステップS1103の動作に進む。一方、ルータが2層でない場合、すなわち、ルータが1層である場合、第1のユーザ端末は、ステップS1104の動作に進む。ここで、自装置からインターネットまでにルータが一つしか存在しない場合を第11のタイプという。自装置からインターネットまでにルータが二つ存在する場合を第12のタイプという。
ステップS1104において、第1のユーザ端末は、第2のユーザ端末の上のルータが2層であるか否かを判断する。第2のユーザ端末の上のルータが2層である場合、第1のユーザ端末は、ステップS1105の動作に進む。一方、第2のユーザ端末の上のルータが2層でない場合、すなわち、1層である場合、第1のユーザ端末は、ステップS1106の動作に進む。
ステップS1103において、第1のユーザ端末は、第2のユーザ端末の上のルータが2層であるか否かを判断する。第2のユーザ端末の上のルータが2層でない場合、第1のユーザ端末は、ステップS1106に進む。一方、第2のユーザ端末の上のルータが2層である場合、第1のユーザ端末は、ステップS1107の動作に進む。
ステップS1105の動作が実行される条件は、第1および第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3および第9のタイプであり)、第1のユーザ端末の上のルータが1層であり(第11のタイプであり)、かつ、第2のユーザ端末の上のルータが2層である(第6のタイである)場合である。たとえば、図1Aの例では、第1のユーザ端末がユーザ端末1eであり、第2のユーザ端末がユーザ端末1aである場合である。第2のユーザ端末の上に2層のルータが存在する場合、第2のユーザ端末は、直上のルータよりも上のルータの静的NAT設定を行うことができない。したがって、第1のユーザ端末から第2のユーザ端末への通信路接続要求電文は届かない。一方、第1のユーザ端末の上のルータは1層であり、かつ当該ルータには静的NAT設定が行われているので、第2のユーザ端末から第1のユーザ端末への通信路接続要求電文は、第1のユーザ端末に届く。したがって、第1のユーザ端末は、第2のユーザ端末からの通信路接続の要求を待つ(ステップS1105)。このような条件の場合、第2のユーザ端末は、後述のステップS1106の動作を実行することとなる。ステップS1106において、第2のユーザ端末は、第1のユーザ端末のWAN側アドレス情報に基づいて、通信路接続要求を送信する。なお、ステップS1106の動作では、第2のユーザ端末の上に存在するルータが1層であるので、WAN側アドレス情報のIPアドレスとグローバルアドレス情報のIPアドレスとは一致する。
ステップS1106の動作が実行される条件は、三つある。第1は、第1および第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3および第9のタイプ)、かつ第1のユーザ端末の上にルータが1層だけ存在し(第11のタイプ)、第2のユーザ端末の上にルータが1層だけ存在する(第5のタイプ)場合である。第2は、第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3のタイプ)、第1のユーザ端末の直上のルータに静的NAT設定が行われておらず(第10のタイプ)、第2のユーザ端末の上にルータが1層だけ存在する(第5のタイプ)場合である。第3は、第1および第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3および第9のタイプ)、かつ第1のユーザ端末の上にルータが2層存在し(第12のタイプ)、第2のユーザ端末の上にルータが1層だけ存在する(第5のタイプ)場合である。この場合、第1のユーザ端末は、第2のユーザ端末のWAN側アドレス情報を用いて、第2のユーザ端末に対して通信路接続要求を送信する(ステップS1106)。なお、ステップS1106では、第2のユーザ端末の上にルータが1層しかないので、WAN側アドレス情報のIPアドレスとグローバルアドレス情報のIPアドレスとは一致している。これに応じて、第2のユーザ端末は、当該要求の送信元情報に基づいて応答することができるので、第1のユーザ端末と第2のユーザ端末との間でのP2P通信のための通信路が確立する。
ステップS1108において、第1のユーザ端末は、第1のユーザ端末の直上のルータに静的NAT設定が行われているか否かを判断する。静的NAT設定が行われている場合、第1のユーザ端末は、ステップS1109の動作に進む。一方、静的NAT設定が行われていない場合、第1のユーザ端末は、ステップS1107の動作に進む。
ステップS1109において、第1のユーザ端末は、第1のユーザ端末の上に存在するルータが2層であるか否かを判断する。2層である場合、第1のユーザ端末は、ステップS1107の動作に進む。一方、2層でない場合、第1のユーザ端末は、ステップS1110の動作に進む。
ステップS1107の動作が実行される条件は、4つ存在する。
第1は、第1および第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3および第9のタイプ)、第1のユーザ端末の上に存在するルータが2層であり(第12のタイプ)、第2のユーザ端末の上に存在するルータが2層(第6のタイプ)の場合である。第1の場合、第1および第2のユーザ端末の上に、静的NATを設定できないルータが1層存在することとなる。したがって、第1のユーザ端末からの通信路接続要求電文も第2のユーザ端末からの通信路接続要求電文も、お互いに届かない。ゆえに、第1のユーザ端末は、ステップS1107の動作を実行する。
第2は、第2のユーザ端末の直上のルータに静的NAT設定が行われており(第3のタイプ)、第1のユーザ端末の直上のルータには静的NAT設定が行われておらず(第10のタイプ)、第2のユーザ端末の上に存在するルータが2層である(第6のタイプ)場合である。第2の場合、第2のユーザ端末の上に静的NAT設定されていないルータが存在するので、第1のユーザ端末からの通信路接続要求電文は、第2のユーザ端末に届かない。また、第1のユーザ端末の直上のルータに静的NAT設定が行われていないので、第2のユーザ端末からの通信路接続要求電文は第1のユーザ端末に届かない。したがって、第1のユーザ端末は、ステップS1107の動作を実行する。
第3は、第2のユーザ端末の直上のルータに静的NAT設定が行われておらず(第4のタイプ)、第1のユーザ端末の直上のルータに静的NAT設定が行われておらない(第10のタイプ)場合である。第3の場合、第1および第2の直上のルータに静的NAT設定が行われていないので、第1および第2のユーザ端末からの通信路接続要求電文は、お互いに受信できない。したがって、第1のユーザ端末は、ステップS1107の動作に進む。第3の条件は、たとえば、図12A,Bのような場合を指している。
第4は、第2のユーザ端末の直上のルータに静的NAT設定が行われておらず(第4のタイプ)、第1のユーザ端末の直上のルータに静的NAT設定が行われており(第9のタイプ)、第1のユーザ端末の上に存在するルータが2層である(第12のタイプ)場合である。第4の場合、第1のユーザ端末の上に、静的NAT設定を行うことができないルータが存在することとなるので、第2のユーザ端末からの通信路接続要求電文は、第1のユーザ端末に届かない。また、第2のユーザ端末の直上のルータに静的NAT設定が行われていないので、第1のユーザ端末からの通信路接続要求電文は、第2のユーザ端末には届かない。したがって、第1のユーザ端末は、ステップS1107の動作を実行する。
上記第1〜第4の場合のように、静的NATが設定できていないルータが存在する場合、動的NAT設定によって通信路を確立するしかないが、動的NAT設定によって通信路を確立するためには、一方からの電文が他方に届かなければならない。第1〜第4の場合では、双方からの電文をお互いに受信することができないので、動的NAT設定によっても、通信路を確立することができない。そこで、ステップS1107において、第1の通信端末は、P2Pサーバ経由方式、STUN方式の一方、又は両方に切り替えて、第2のユーザ端末との間でP2P通信を行う。
ステップS1100の動作が実行される条件は、第2のユーザ端末の直上のルータに静的NAT設定が行われておらず(第4のタイプ)、第1のユーザ端末の直上のルータに静的NAT設定が行われており(第9のタイプ)、かつ第1のユーザ端末の上に存在するルータが1層だけである(第11のタイプ)場合である。この場合、第2のユーザ端末の直上のルータに静的NAT設定が行われていないので、第1のユーザ端末からの通信路接続要求電文は、第2のユーザ端末に届かない。しかし、第1のユーザ端末の上に存在するルータが1層で、当該ルータに静的NAT設定が行われているので、第2のユーザ端末は、ステップS1106の動作を実行することによって、通信路接続要求電文を第1のユーザ端末に届かせることができる。よって、第1のユーザ端末は、第2のユーザ端末からの通信路接続要求電文を待つ(ステップS1100)。これによって、P2P通信が実現される。
上記説明では、第1および第2のユーザ端末は、共に、図19Aおよび図19Bに示す手順を備えたユーザ端末であるとした。第2のユーザ端末が図19Aおよび図19Bに示す手順を備えていない場合、第1のユーザ端末から送信した通信路接続要求電文を第2のユーザ端末が受信できない場合がある。この場合、第2のユーザ端末は、通信路接続応答電文を送信しない。また、第2のユーザ端末が、通信路接続要求電文を送信してこない場合もあり得る。このような場合に備えて、図19Aおよび図19Bのエンドの直前に、第1のユーザ端末は、たとえば、ステップS1009のようにして第2のユーザ端末との間で通信路を確立できたか否かを判断し、確立できていない場合、たとえば、ステップS1010のようにP2Pサーバ経由方式、STUN方式の一方、又は両方に切り替える動作を実行できるようにしておくとよい。
図19AのステップS1005およびステップS1008において、第1のユーザ端末は、第2のユーザ端末のローカルアドレス情報に通信路接続要求を試みるようにした。ユーザ端末のローカルIPアドレス情報は、個々のルータが割り振る。したがって、異なるサブネットワークにおいて、ローカルIPアドレス情報が同じ値になっているユーザ端末が複数存在することがある。ゆえに、ローカルアドレス情報を宛先とした場合、所望の通信相手以外のユーザ端末に通信路接続要求電文が届くことがある。しかし、所望の通信相手以外のユーザ端末は、事前の通信情報の交換を行っていないので、誤って届いた電文であることがわかる。よって、所望の通信相手以外のユーザ端末は、通信路接続応答電文を返信しない。従って、誤った通信路接続が起きることはない。
ユーザ端末がインターネット網に直接接続されている場合、すなわち、グローバルIPアドレスがローカルIPアドレスと一致する場合、上位ルータのWAN側アドレス情報欄にローカルアドレス情報が記載されている。したがって、ステップS1104またはステップS1103を経た場合、第1のユーザ端末は、あたかも上位ルータが1層であるかのように判断する。この場合、第1のユーザ端末は、ステップS1106の動作に進み、相手のWAN側アドレス情報を宛先とする通信路接続要求を行う。しかし、実質的には、この場合のステップS1106の動作は、相手のローカルアドレス情報を直接の宛先として適用する動作と同様になる。
このように、第2の実施形態によれば、ユーザ端末は、第1および第2のグローバルアドレス情報ならびに第1および第2のWAN側アドレス情報が予め定められたタイプの内、いかなるタイプに属するか否かを判断する。ユーザ端末は、第1および第2のグローバルアドレス情報ならびに第1および第2のWAN側アドレス情報が属するタイプに応じて、宛先となるアドレス情報を第2のグローバルアドレス情報にするか、第2のWAN側アドレス情報にするか、それとも第2のローカルアドレス情報にするかを予め決めておく。さらに、ユーザ端末は、第1および第2のグローバルアドレス情報ならびに第1および第2のWAN側アドレス情報が属するタイプに応じて、通信相手のユーザ端末からの接続要求を待つか、それとも、通信方式を切り替えるかを予め決めておく。そして、ユーザ端末は、第1および第2のグローバルアドレス情報ならびに第1および第2のWAN側アドレス情報が属するタイプに応じたアドレス情報を使用して、P2P通信を開始する。第2の実施形態で示した第1〜第12のタイプの組み合わせは、ユーザ端末の上に存在するルータの数が2つ以下の場合を全て網羅している。したがって、第2の実施形態に示す手順によれば、ユーザ端末は、通信相手との間の通信経路を予測して、どのようなアドレス情報を用いてP2P通信を開始すればよいか、予め判別することができる。したがって、第2の実施形態に係るユーザ端末は、通信路接続要求電文を送信する試行回数を減らすことができ、無駄な通信路接続要求電文の送信を減らすことができる。結果、通信路の確立を速めることができる。
第2の実施形態においても、第1の実施形態と同様、ユーザ端末は、第1および第2のグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報に基づいて、P2P通信が可能な方式を判断する。当該方式としては、ローカルアドレス情報を用いてP2P通信を開始する方式(図19AのS1005およびS1008参照)、WAN側アドレス情報を用いてP2P通信を開始する方式(図19AのS1004、および図19BのS1106参照)、送信元アドレス情報を用いてP2P通信を開始する方式(図19AのS1007、図19BのS1105、およびS1110参照)、グローバルIPアドレスに対応するアドレス情報でP2P通信を開始する方式(図19BのS1106参照)、P2Pサーバを用いてP2P通信を開始する方式(図19AのS1010、およびS1107参照)、およびSTUN通信方式を用いてP2P通信を開始する方式(図19AのS1010、および図14BのS1107参照)がある。
本発明は、いずれかのユーザ端末からインターネットまでの間に存在するルータが3つ以上の場合にも適用できる。以下、いずれかのユーザ端末からインターネットまでの間にルータが3つ以上あるネットワークを考える。
ユーザ端末からインターネットまでの間にルータが3つ以上ある場合も、第1および第2のユーザ端末は、図19Aおよび図19Bに示す手順で動作したとする。
まず、第1および第2のユーザ端末が、当該ネットワーク内の任意のルータから、二つ下のルータまでに位置していると想定する。この場合、二つのグローバルIPアドレスは一致するので、図19Aの手順にしたがって、第1および第2のユーザ端末は、P2P通信を試みる。当該任意のルータは、ユーザ端末からインターネットまでの間にルータが2つ以下しか存在しなかった場合の最上位のルータに相当する。したがって、この場合、第1および第2のユーザ端末は、図19Aに示す手順にしたがって動作することで、P2P通信を開始することができる。
次に、第1および第2のユーザ端末のいずれか一方のユーザ端末からインターネットまでの間にルータが3つ以上存在し、他方のユーザ端末からインターネットまでの間に存在するルータが2つ以下であったと想定する。この場合、二つのグローバルIPアドレスは一致しないので、図19Bの手順にしたがって、第1および第2のユーザ端末は、P2P通信を試みる。当該他方のユーザ端末が第2のユーザ端末であったとする。第2のユーザ端末の直上のルータに静的NAT設定が行われている場合、第1のユーザ端末は、ステップS1103の動作に進むこととなる。第2のユーザ端末の上にルータが一つしかない場合、第1のユーザ端末は、ステップS1106の動作に進んで、第2のユーザ端末のグローバルアドレス情報を用いて、P2P通信を開始する。一方、第2のユーザ端末の上に、ルータが二つある場合、第1のユーザ端末は、ステップS1107の動作に進んで通信方式を切り替える。したがって、第1および第2のユーザ端末は、P2P通信を開始することができる。
第1および第2のユーザ端末のいずれか一方のユーザ端末からインターネットまでの間にルータが3つ以上存在する場合、想定される接続関係は、他にも存在する。したがって、図19Aおよび図19Bに示す手順に従った場合、P2P通信が不可能である場合も存在するかもしれない。そこで、ユーザ端末は、図19Aおよび図19Bのエンドの前に、通信相手との通信路が確立されたか否かを判断し、確立されていない場合、P2P通信方式をP2Pサーバ経由方式またはSTUN方式に切り替えるようにするとよい。これによって、ユーザ端末からインターネットまでの間にルータが3つ以上存在する場合であっても、P2P通信が可能となる。
上述のように、2つのユーザ端末が4つ以下のルータを介して結合されている場合、一方のユーザ端末の直上のルータがUPnP対応で静的NAT設定を行うことができれば、他方のユーザ端末からP2P通信の開始が可能である。
上述のように、2つのユーザ端末が5つ以上の多数のルータを介して隔てられている場合、静的NAT設定ができないルータがあったり、静的NAT設定を試みても静的NAT設定できないルータが途中に存在したりなどの理由によって、通信相手からの電文が届かないか、あるいは、自身宛でない電文が届く場合がある。したがって、ユーザ端末が属するネットワークが大規模なネットワークである可能性を考慮して、ユーザ端末は、所定の時間以内に通信ができたか否かを判断するステップと、通信できなかった場合にステップS1010、ステップS1107のようにP2Pサーバ経由方式および/またはSTUN方式を試みるステップを、図19Aおよび図19Bのエンドの前に設けるとよい。
なお、図19Aおよび図19Bのフローチャートの判定手順は、あくまでも一例である。第1および第2のグローバルアドレス情報ならびに第1および第2のWAN側アドレス情報が属するタイプの定義の仕方も、一例でしかない。自装置と通信相手との接続状態を知ることができるのであれば、ユーザ端末は、図19Aおよび図19Bに示す判定手順以外の手順で、いかなるアドレス情報を用いて、P2P通信を開始したらよいのか判断してもよい。そのための判定手順は、ネットワークの接続状態を完全に、又は部分的に推測できる手順であれば、本実施形態に適用できる。
以上説明したように、第1および第2の実施形態は、ステップS501、ステップS602のような、インターネット上のサーバを利用してユーザ端末に割り当てられるグローバルアドレス情報を取得するステップと、ステップS503、ステップS604のような、ユーザ端末から直上のルータのアドレス変換ルールを設定するステップと、ステップS502、ステップS603のような、ユーザ端末から直上のルータのWAN側アドレスを取得するステップと、ステップS504、ステップS505や、ステップS605、ステップS606のような、通信相手に対して、直上のルータに設定したアドレス変換ルールに基づくWAN側アドレス情報、サーバから取得するグローバルアドレス情報、およびローカルアドレス情報を通知するステップと、図11、19A、19Bにおいて説明したような、通知された情報を用いてP2P通信するステップと、を備えたことを特徴とするP2P通信方法である。また、第1および第2の実施形態において説明した各ステップを実行する手段を設けることにより、ユーザ端末間で直接通信するP2P通信を可能にするシステムを構成することができる。
ユーザ端末は、通信相手のユーザ端末に、グローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を通知し、グローバルアドレス情報が等しい場合、ローカルアドレス情報またはWAN側アドレス情報を用いて、P2P通信を開始する。また、ユーザ端末は、通知された通信相手のアドレス情報と自身のアドレス情報とを比較して、通信相手のアドレス情報を利用してP2P通信可能であるか否かを判断し、不可能と判断した場合、通信方式を切り替えて通信を行うことを特徴とする。
(第3の実施形態)
図20は、本発明のP2P通信方式を実行することができるユーザ端末である通信装置の詳細な機能的構成を示すブロック図である。図20に示すように、通信装置は、識別情報記録部201と、自他アドレス情報記憶部202と、アドレス情報比較判断部203、通信路確立判定部204と、制御部205と、通信方式切替部206と、アプリケーション処理部207と、識別情報登録送信部208と、アドレス情報通知要求送信・応答受信部209と、静的NAT設定要求部210と、通信開始要求送信・応答受信部211と、通信路接続要求送信・応答受信部212と、P2P通信処理部213と、P2Pサーバ経由方式処理部214と、STUN方式処理部215と、ネットワークインタフェース216とを備える。各機能ブロックは、図20の矢印のようにそれぞれ結合されている。
識別情報記録部201は、ユーザ端末である通信装置自身の識別情報を記憶しているメモリである。自他アドレス情報記憶部202は、図14Aおよび図14Bで示されるような、自身のアドレス情報と通信相手のアドレス情報とを記憶するメモリである。アドレス情報比較判断部203、通信路確立判定部204、通信方式切替部206、アプリケーション処理部207、識別情報登録送信部208、アドレス情報通知要求送信・応答受信部209、静的NAT設定要求部210、通信開始要求送信・応答受信部211、通信路接続要求送信・応答受信部212、P2P通信処理部213、P2Pサーバ経由方式処理部214、STUN方式処理部215、およびネットワークインタフェース216は、上記第1および第2の実施形態で説明した処理を担当する機能ブロックであり、制御部205の指示によって、所定の処理を実行する。ネットワークインタフェース216は、物理層、データリンク層の処理を行い、宅内のネットワークやインターネット網との間でのデータの送受信を行う。
識別情報登録送信部208は、ステップS301およびS302の処理のために、P2Pサーバ3との間の通信路を確立し、識別情報記録部201内の自身の識別情報をP2Pサーバに送信して、P2Pサーバ3に登録する。
アドレス情報通知要求送信・応答受信部209は、ステップS501で説明したように、アドレス情報通知要求メッセージを作成、送信し、アドレス情報通知応答メッセージを受信し、入手したアドレス情報を自他アドレス情報記憶部202のグローバルアドレス情報欄に記載する。
アドレス情報比較判断部203は、ステップS502のように、アドレス情報の比較を行い、比較結果を制御部205に渡す。比較結果に基づき、制御部205は、必要な場合、静的NAT設定要求部210に直上のルータに対して静的NAT設定を行わせる。静的NAT設定要求部210は、設定結果を自他アドレス情報記憶部202のWAN側アドレス情報欄に記載する。静的NAT設定要求部210の処理は、ステップS502、およびステップS503で説明した処理である。
通信開始要求送信・応答受信部211は、ステップS504に従って、P2Pサーバ3宛に通信開始要求メッセージを送信する。また、通信開始要求送信・応答受信部211は、通信開始要求メッセージに対する返信である通信開始応答メッセージを待ち、受信したら、通信開始応答メッセージに記載された通信相手のアドレス情報を自他アドレス情報記憶部202の通信相手欄に記憶する。これらの動作状態は、制御部205が監視する。
本通信装置が他の通信装置の通信相手である場合、ステップS601〜ステップS605において説明した処理を、識別情報登録送信部208、アドレス情報通知要求送信・応答受信部209、アドレス情報比較判断部203、静的NAT設定要求部210、通信開始要求送信・応答受信部211が、制御部205の指示の元に行う。
図14Aおよび図14Bに示したような、自他のアドレス情報が入手できたら、通信装置は、図11、または、図19Aおよび図19Bで説明したP2P通信路接続の動作に移る。
アドレス情報比較判断部203は、制御部205の指示に従い、自他アドレス情報記憶部202内の所定のアドレス情報を比較し、インターネット網を介した通信であるか、同一ルータ配下の通信であるか、P2P通信の可能な宛先か否かを判断し、判断結果を制御部205に通知する。
制御部205は、通信路接続要求送信・応答受信部212に指示して、選択されたアドレス情報宛に通信路接続要求電文を送信させ、通信相手からの通信路接続応答電文を待たせる。自身からの通信路接続要求電文を通信相手に届ける経路がないとの判断結果の場合は、制御部205は、通信路接続要求送信・応答受信部212に指示して、通信相手からの通信路接続要求電文の受信を待たせる。
通信路確立判定部204は、制御部205の指示の下に、通信路接続要求送信・応答受信部212による通信路接続要求電文の送信、および対応する通信路接続応答電文の受信、ならびに、通信路接続要求電文の受信、および対応する通信路接続応答電文の送信を監視し、通信路が確立されたか否かを判断し、判断結果を制御部205に通知する。通信路接続要求電文の送信および対応する通信路接続応答電文の受信、または、通信路接続要求電文の受信および対応する通信路接続応答電文の送信が成功した場合、通信路確立判定部204は、制御部205にその結果を知らせる。制御部205は、P2P通信処理部213を起動し、以降、アプリケーション処理部207が、P2P通信処理部213を介して、通信相手との間でP2P通信を行う。
通信路接続要求電文が送信できず、かつ、通信路接続要求電文を受信していない場合、通信方式切替部206は、P2P通信ができないと判断し、制御部205に通知する。
制御部205は、その通知を受けて、通信方式切替部206に指示して、P2Pサーバ経由方式処理部214、または、STUN方式処理部215を起動し、通信経路を確立させる。
図11AおよびBにおけるステップS901における処理およびステップS910におけるアドレス情報探索処理は、アドレス情報比較判断部203が行う処理である。ステップS902、ステップS905、ステップS909、ステップS910の一部、ステップS913の処理は、通信路接続要求送信・応答受信部212が行う処理である。ステップS903、ステップS904、ステップS907、ステップS908、ステップS911、ステップS912の処理は、通信路確立判定部204が行う処理である。
図19AにおけるステップS1000〜ステップS1003、ステップS1006、ステップS1008、図19BにおけるステップS1100〜ステップS1004、ステップS1108、ステップS1109の処理は、アドレス情報比較判断部203において行う処理である。図19AにおけるステップS1004、ステップS1005、ステップS1007、ステップS1008、図19AにおけるステップS1105、ステップS1106、ステップS1110の処理は、通信路接続要求送信・応答受信部212が行う処理である。ステップS1009の処理は、通信路確立判定部204が行う処理である。ステップS1010、ステップS1107の処理は、通信方式切替部206が行う処理である。
以上の説明における各ブロックの機能について整理すると次のようになる。
アドレス情報通知要求送信・応答受信部209は、ユーザ端末がP2Pサーバ3を利用してユーザ端末自身に割り当てられるグローバルアドレス情報を取得する。
静的NAT設定要求部210は、上位ルータにアドレス変換ルールを設定させ、上位ルータのWAN側アドレス情報を取得する。
通信開始要求送信・応答受信部211は、P2Pサーバ3から取得したグローバルアドレス情報、上位ルータに設定されたアドレス変換ルールのWAN側アドレス情報、およびローカルアドレス情報を、P2Pサーバ3を介して通信相手に対して送信する。
P2P通信処理部213は、通知されたアドレス情報を用いてP2P通信する。
アドレス情報比較判断部203は、通知されたグローバルアドレス情報、WAN側アドレス情報、ローカルアドレス情報について、グローバルアドレス情報が自身と通信相手において等しいか否かを比較する。比較結果に基づき、通信路接続要求送信・応答受信部212は、ローカルアドレス情報及びWAN側アドレス情報、又はいずれか一方を用いて接続又は通信する。また、アドレス情報比較判断部203は、自身の直上のルータのNAT設定検査のステップ、通信相手の直上のルータのNAT設定検査、通信相手の上位ルータ2層の有無の検査、自身と通信相手の上位ルータのWAN側IPアドレスの一致検査、の少なくとも何れかを行い、直接通信可能か否かを判断する。
通信路接続要求送信・応答受信部212は、通信相手のローカルアドレス情報、WAN側アドレス情報、グローバルアドレス情報の順序で接続又は通信を試みる。試みが非成功の場合、通信路接続要求送信・応答受信部212は、通信相手からの接続を待つ。交換したグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報について、グローバルアドレス情報が自身と通信相手との間で等しく、通知された通信相手のアドレス情報と自身のアドレス情報とに基づいて、当該アドレス情報を利用して直接通信可能かであるか否かをアドレス情報比較判断部203が判断し、可能と判断した場合に、通信路接続要求送信・応答受信部212は、ローカルアドレス情報及びWAN側アドレス情報、又はいずれか一方を用いて接続又は通信する。
通信開始要求送信・応答受信部211は、グローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報を通信相手に通知する。アドレス情報比較判断部203によってグローバルアドレス情報が自身と通信相手との間で等しくないと判断された場合、通信路接続要求送信・応答受信部212は、グローバルアドレス情報を用いて接続又は通信する。
アドレス情報比較判断部203は、通信相手のグローバルIPアドレスを、ローカルアドレス情報、WAN側アドレス情報、グローバルアドレス情報の順序に調べる。その結果に基づいて、通信路接続要求送信・応答受信部212は、グローバルIPアドレスに該当するアドレス情報宛に接続又は通信を試み、試みが非成功の場合は、通信相手からの接続を待つ。
また、アドレス情報比較判断部203は、交換したグローバルアドレス情報、WAN側アドレス情報、およびローカルアドレス情報について、グローバルアドレス情報が自身と通信相手において等しくなく、通知された通信相手のアドレス情報と自身のアドレス情報とをよって、当該アドレス情報を利用して直接通信可能であるか否かを判断する。直接通信可能である場合、通信路接続要求送信・応答受信部212は、グローバルアドレス情報を用いて接続又は通信するようにする。
また、アドレス情報比較判断部203は、自身の直上のルータのNAT設定検査のステップ、通信相手の直上のルータのNAT設定検査、通信相手の上位ルータ2層の有無の検査、自身と通信相手の上位ルータのWAN側IPアドレスの一致検査、の少なくとも何れかを行う。
通信方式切替部206は、アドレス情報比較判断部203が、通知された通信相手のアドレス情報と自身のアドレス情報に基づいて、当該アドレス情報を利用して直接通信可能であるか否かを判断し、不可能であると判断した場合、通信方式を切り替えて通信を行う。
NAT設定変更要求部217は、交換したアドレス情報に基づいて、直上のルータに設定されている不要なアドレス変換ルールを削除する。たとえば、NAT設定変更要求部217は、静的NAT設定によってP2P通信が不可能と判断された場合、静的NAT設定を削除するとよい。
NAT設定変更要求部217は、P2P通信を開始したら、上位ルータに設定されたアドレス変換ルールが通信相手を限定しない相手非限定型の場合、通信相手を限定する相手限定型のアドレス変換ルールに変更する。ここで、相手非限定型NATとは、Full−Cone NAT以外のNATのことをいう。
図20における、アドレス情報比較判断部203、通信路確立判定部204、制御部205、通信方式切替部206、アプリケーション処理部207、識別情報登録送信部208、アドレス情報通知要求送信・応答受信部209、静的NAT設定要求部210、通信開始要求送信・応答受信部211、通信路接続要求送信・応答受信部212、P2P通信処理部213、P2Pサーバ経由方式処理部214、STUN方式処理部215は、個別のハードウエアによって構成することが可能である。一般的には、これらの機能ブロックは、第1および第2の実施形態に示したように、コンピュータ装置でプログラム(P2P通信プログラム)が実行されることによって、実現可能である。従って、各機能ブロックは、周知のコンピュータシステム上のCPU、RAMやROMなどのメモリ、HDD上に実現される。すなわち、各機能ブロックは、物理的にはハードウエアを共有していてもよい。また、各機能ブロックは、完全に独立していている個々のプログラムによって実現されてもよいし、部分的に共有しているプログラムによって実現されてもよい。
(第4の実施形態)
上記各実施形態では、動的NAT設定は、ユーザ端末からの送信に際してルータが自動的に行うこととした。
動的NAT設定には、通信相手からの返信があった場合のみアドレス情報変換を行う動的NAT設定と、データの送信元に関わらずアドレス変換ルールに基づいたNAT変換表に従ってアドレス情報変換を行う動的NAT設定とが存在する。
前者の場合、データの送信元が限定されている相手限定型NAT設定である。ユーザ端末からP2Pサーバ3への送信に際して設定された動的NAT設定が相手限定型NAT設定である場合、送信元がP2Pサーバ3でない限り、データは、ユーザ端末へ届かない。したがって、ユーザ端末からP2Pサーバ3への送信に際して設定された相手限定型の動的NAT設定は、ユーザ端末間の通信に使用できない。よって、上記各実施形態において、ユーザ端末は、直上のルータに静的NAT設定を行わせることとした。しかし、図5のステップS503のように、ユーザ端末間で通信を行う前に静的NAT設定が行われる場合、通信相手であるユーザ端末からの返信が特定できない。したがって、上記各実施形態での静的NAT設定は、送信元を問わずNAT変換を行うモードでなければならず、すなわち、相手非限定型の静的NAT設定でなければならない。
第4の実施形態では、相手非限定型の静的NAT設定を、相手限定型の静的NAT設定に切り替えることができるユーザ端末を提案する。
図14Aおよび図14Bに示すように、ユーザ端末は、アドレス情報を交換した段階で、通信相手のローカルIPアドレスおよびポート番号が分かる。したがって、ユーザ端末は、通信相手のアドレス情報が送信元の場合にのみ、静的NAT設定に基づくNAT変換を行うように、ルータの設定を切り替えさせる。すなわち、ユーザ端末は、通信相手のアドレス情報が分かった段階で、ルータの設定を相手限定型の静的NAT設定に切り替えさせる。
たとえば、ユーザ端末は、AddPortMappingアクションメッセージに通信相手のアドレス情報を追加記載して、直上のルータに送信し、アドレス情報変換相手を限定するように指示する。静的NAT設定のWAN側IPアドレスおよびポート番号が通信相手に既に通知されている。したがって、アドレス情報変換相手を限定するように指示する際、ユーザ端末は、WAN側IPアドレスおよびポート番号を変更せずに、受信先の宛先アドレス情報だけを限定すればよい。
このように、P2P通信が開始し、通信相手に関するアドレス情報を入手した後、ユーザ端末は、通信相手を限定するように静的NAT設定を変更することによって、通信を希望するユーザ端末以外からの悪意による通信を受信することを避けることができる。したがって、セキュリティが向上する。
なお、現在知られているAddPortMappingアクションメッセージで通信相手を限定することができない場合、ユーザ端末は、通信相手のアドレス情報を記載できるエリアを追加した新たなAddPortMappingアクションメッセージを定義して使用すればよい。
なお、図10のステップS604では、ユーザ端末は、既に相手のアドレス情報を分かっているので、最初から、相手限定型の静的NAT設定をルータに行うとよい。
(第5の実施形態)
上記のように、ルータは、ユーザ端末による通信の際、相手限定型または相手非限定型の動的NAT設定を行う。
上記実施形態では、図7のステップS503において、ユーザ端末は、ルータに静的NAT設定を行うこととした。
しかし、第5の実施形態では、図7のステップS503において、ユーザ端末は、静的NAT設定をルータに行わずに、相手非限定型の動的NAT設定をルータに行うこととする。そして、ユーザ端末は、ステップS503において、相手非限定型の動的NAT設定でのWAN側IPアドレスとポート番号とをルータから取得して、上位ルータWAN側アドレス情報として記憶し、当該WAN側アドレス情報を通信相手のユーザ端末にP2Pサーバ3経由で送信する。また、通信相手のユーザ端末は、図10のステップS604において、同様に、相手非限定型の動的NAT設定をルータに行ってもよい。
第5の実施形態を実現するために、ユーザ端末は、相手非限定型のNAT変換を行うモードをルータに指示する機能を備えている必要がある。また、ルータは、上記指示に応じて、相手非限定型のNAT変換モードを設定する機能を備えている必要がある。また、ユーザ端末とルータとは、ルータに設定されているアドレス情報としてのWAN側IPアドレスおよびポート番号を送受信するための電文および返信電文を通信する機能を備えている必要がある。これにより、ルータは、静的NAT設定を行わなくてもよい。
例えば、ユーザ端末である通信装置は、制御部205とNAT設定変更要求部217とを備える。制御部205は、上位ルータに設定された動的NAT設定のアドレス変換ルールが相手限定型であるか相手非限定型であるかを、上位ルータに問い合わせる。相手限定型のアドレス変換ルールが上位ルータに設定されている場合、NAT設定変更要求部217は、既に設定されている動的NAT設定のアドレス変換ルールを相手非限定型に変更するように上位ルータに要求する。要求電文として、静的NAT設定において説明した電文を変形した形式が利用できる。NAT設定変更要求部217は、静的NAT設定要求部210と並列的に設けられていればよい。制御部205は、上位ルータのNAT設定状況やWAN側アドレス情報の管理、NAT設定変更要求部の動作管理、動作指示を行う。
(第6の実施形態)
上記第4および第5の実施形態では、P2Pサーバ3経由のアドレス情報交換まで処理における動的NAT設定および静的NAT設定で、通信相手を限定する制御について説明した。第6の実施形態は、ユーザ端末間の通信開始において、NAT変換の送信元の相手を限定する実施形態である。
送信開始側のユーザ端末から通信相手のユーザ端末に送信する際、自動的に動的NAT設定が行われる。ユーザ端末は、この動的NAT設定を、通信相手からの返信に対してのみNAT変換する相手限定型に設定して使用するようにしてもよい。このためには、一旦静的NAT設定によって開始した通信の後、送信開始側のユーザ端末は、自身の上位ルータの動的NAT設定のWAN側IPアドレスとポート番号を入手し、これを通信相手に通知する。以降、通信相手のユーザ端末は、返信の宛先に、新たな動的NAT設定のWAN側IPアドレスとポート番号を用いるようにすればよい。送信開始側のユーザ端末の上位ルータは、前に設定した静的NAT設定が不要になる。したがって、当該上位ルータは、後述する第8の実施形態のように、不要になったNAT設定を削除すればよい。
動的NAT設定を相手限定型にするために、ユーザ端末である通信装置は、制御部205とNAT設定変更要求部217とを備えるとよい。制御部205は、上位ルータに設定された動的NAT設定のアドレス変換ルールが相手限定型であるかそれとも相手非限定型であるかを上位ルータに問い合わせて検査する。相手非限定型である場合、NAT設定変更要求部217は、アドレス変換ルールを相手限定型に変更するように上位ルータに要求する。要求電文には、静的NAT設定において説明した形式の電文が利用できる。NAT設定変更要求部217は、静的NAT設定要求部210と並列的に設けておけばよい。制御部205は、上位ルータのNAT設定状況やWAN側アドレス情報の管理、NAT設定変更要求部の動作管理、動作指示を行う。
(第7の実施形態)
上記第6の実施形態は、送信開始側のユーザ端末の上位ルータについて、相手非限定型の静的NAT設定の後、相手限定型の動的NAT設定に切り替える例であった。静的NAT設定を使用し続ける場合、ユーザ端末は、相手非限定型の静的NAT設定の後、相手限定型の静的NAT設定に切り替えるようにしてもよい。通信相手のユーザ端末も、相手非限定型の静的NAT設定の後、相手限定型の動的NAT設定に切り替えてもよい。あるいは、通信相手のユーザ端末は、相手非限定型の静的NAT設定の後、相手限定型の静的NAT設定に切り替えるようにしてもよい。
この機能を実現するために、ユーザ端末は、制御部205とNAT設定変更要求部217とを備えるとよい。制御部205は、上位ルータに設定されたアドレス変換ルールが相手限定型であるかそれとも相手非限定型であるかを、上位ルータに問い合わせて検査する。NAT設定変更要求部217は、所望のNAT設定に対して所望のアドレス変換ルールに変更するように、上位ルータに要求する。要求電文には、静的NAT設定において説明した形式の電文が利用できる。NAT設定変更要求部217は、静的NAT設定要求部210と並列的に設けておけばよい。制御部205は、上位ルータのNAT設定状況やWAN側アドレス情報の管理、NAT設定変更要求部の動作管理、動作指示を行う。
(第8の実施形態)
第8の実施形態では、上記各実施形態の変形として、通信が失敗した場合や、予め設定したNAT設定が必要ないと判断された場合に、NAT設定を削除することができるユーザ端末について説明する。これにより、NAT変換表があふれるのを防ぐとともにセキュリティの向上が期待できる。
たとえば、図17Aおよび図17Bに示す例のように、ユーザ端末1aからユーザ端末1eへのP2P接続が可能であると判断された場合、ユーザ端末1aが設定したルータ2Aにおける静的NATの設定は必要ない。なぜなら、ルータ2Aに対するアクセスは、LAN側からWAN側へのアクセスとなり、動的NATでNAT変換表が設定され、P2P通信では以降この動的NATが使用されるからである。このように、自身が設定したNAT設定が必要なくなったと判断した場合、各ユーザ端末のNAT設定変更要求部217は、NAT設定を削除してもよい。
UPnP・IGDプロトコルを利用する場合、ユーザ端末は、上位ルータに対してDelPortMappingアクションメッセージを送信することで、上位ルータのNAT設定を削除することができる。上位ルータには、複数の動的NATや静的NATが設定されていることがある。ユーザ端末は、自身が静的NAT設定を行ったときのポート番号を指定してNAT設定の削除を依頼する。
上記第4〜第7の実施形態において、相手非限定型のNAT設定から相手限定型のNAT設定に切り替えることによって、セキュリティが改善される。ユーザ端末は、この切替の際に不要になったNAT設定を削除するとよい。
また、動的NAT設定と静的NAT設定との両方が行われた場合、ユーザ端末は、不要と判断できる方のNAT設定を削除するとよい。
なお、通常、TCP通信の場合、セッションが切断されると動的NAT設定は、解消される。すなわち、NAT変換表の該当欄が削除されるのが一般的である。しかし、本発明は、これに限定されるものではない。また、UDP通信の場合、パケットが一定時間(通常、数10秒〜数分)流れなければ、動的NAT設定は、解消される。このように、動的NAT設定は、明示的な削除手順を行わなくとも、通信が終了すれば、自動的に削除されるのが一般的である。しかし、本発明は、これに限定されるものではない。
本発明は、UPnPなどによって入手した上位ルータのアドレス情報と、サーバを利用して得られるグローバルアドレス情報と、ユーザ端末自身に設定されたローカルアドレス情報とを、通信相手に通知し、自身の上記情報と通信相手の上記情報とに基づいて、適切な接続先アドレス情報を決定し、P2P通信を行う点に特徴がある。加えて、P2P通信に必要となる静的NAT設定を判断する点に特徴がある。さらに、静的NAT設定によるP2P通信ができないと判断した場合には、P2P通信方式を切り替え、STUNやP2Pサーバによる中継を用いてP2P通信を可能とする点に特徴がある。
なお、図7において、ユーザ端末から上位ルータのWAN側アドレス情報を取得するステップS502と、ユーザ端末から上位ルータのアドレス情報変換ルールを設定するステップS503との順序は、逆でもよい。同様に、ステップS603とステップS604との順序についても逆であってもよい。また、上記各実施形態では、ユーザ端末は、上位ルータのNAT設定を行った後、アドレス情報を交換することとした。しかし、ユーザ端末は、上位ルータのWAN側アドレス情報だけを取得し、取得した段階では、NAT設定を実行せずに、アドレス情報交換した後に、NAT設定が必要なルータを判断して、NAT設定を行ってもよい。
なお、本発明が適用できるネットワークは、P2Pサーバ3、ルータ2C、およびルータ2Dの間は、直接的にしろ、あるいは、間接的にしろ、互いに通信できるネットワークでなければならない。本発明は、ルータ2Cの配下のユーザ端末とルータ2Dの配下のユーザ端末との間の通信、同一サブネットワーク上のユーザ端末間の通信、およびユーザ端末1aとユーザ端末1bとの間のようにルータを介さない関係間での通信が可能である。また、相手のアドレス情報が分かっていない場合でも、公知の方法で相手アドレス情報を知る方法があれば、本発明のユーザ端末は、実質的に、P2P通信が可能である。ユーザ端末は途中のルータまで通信可能であり、ルータはユーザ端末からのデータを一旦受信するが、当該データがルータを超えることができないという課題を有している場合のも、本発明のユーザ端末は、P2P通信を行うことができる。二つのユーザ端末が物理的には接続されているまたは結合されているが、論理的にはP2P通信できない場合でも、本発明を用いれば、P2P通信が可能となる。
P2P通信の対象となる二つのユーザ端末の内、少なくとも一つのユーザ端末の上位にルータが存在しない場合、すなわち、少なくとも一つのユーザ端末がインターネット網に直接接続されている場合、P2P通信を所望するユーザ端末は、インターネット網に直接接続されているユーザ端末のグローバルアドレス情報をP2Pサーバ3から入手する。P2P通信を所望するユーザ端末は、入手したグローバルアドレス情報を宛先として、通信相手に対して通信路接続要求を送信する。これによって、動的NAT設定が行われ、復路の通信路が設定され、P2P通信が可能となる。上記のようなネットワーク構成におけるP2P通信に、本発明は適用可能である。また、一方のユーザ端末がルータ配下にある場合、ルータの配下にあるユーザ端末は、静的NAT設定をルータに行う。したがって、いずれか一方のユーザ端末からの通信路接続要求は、通信相手に届くこととなる。よって、P2P通信が可能となる。
図1に示すネットワークにおいて、ルータ2Cの直下にユーザ端末1fがあると想定する。このとき、ユーザ端末1fがユーザ端末1cとP2P通信するためには、ルータ2Cの直下にユーザ端末1fとユーザ端末1cとが存在するということを、お互いのユーザ端末が認識しなわないといけない。本発明のユーザ端末は、これが可能である。
上記各実施形態では、ルータ2Cおよびルータ2Aのように、2層構造のルータを有するネットワークを想定していた。しかし、3層以上の構造のルータを有するネットワークにおいても、本発明は適用可能である。特に、3層以上のルータを有するネットワークにおいて、2層構造の範囲内に存在するユーザ端末間では、P2P通信を行うことが期待できる。当然、3層以上の範囲内に存在するユーザ端末間でも、条件が揃えば、P2P通信を行うことが可能となる。
図14Aおよび図14Bに示すように、ユーザ端末1aとユーザ端末1dとの間で交換されたアドレス情報内において、各ローカルアドレス情報のポート番号は、実際にP2P通信に利用する予定のポート番号が設定されていればよい。
宅内ネットワークのように、DHCP(Dynamic Host Configuration Protocol)を使用したネットワーク環境では、アドレス情報が変わる可能性がある。しかし、ユーザ端末は、識別情報さえ分かっていれば、アドレス情報が変わったとしても、P2Pサーバ3に識別情報を登録することができる。したがって、ユーザ端末は、P2P通信を行うようにすることが可能になる。
ユーザ端末は、アドレス情報の内、WAN側アドレス情報だけ、サーバから取得したグローバルアドレス情報だけ、または、両方を通知するようにしてもよい。WAN側アドレス情報だけの通知でよい場合、およびグローバルアドレス情報だけの通知でよい場合とは、グローバルIPアドレスとWAN側IPアドレスとが一致している場合である。いいかえると、直上のルータがインターネットに直接接続されている場合である。グローバルアドレス情報だけの通知でよい場合とは、上位ルータがUPnP非対応ルータの場合である。ローカルアドレス情報の通知が不要な場合とは、ユーザ端末がルータを介さず直接インターネットに接続されている場合ある。この場合、ユーザ端末は、グローバルアドレス情報のみを交換するだけでよい。
識別情報の割り当てや管理は、従来のDNSやダイナミックDNSと同様に行われればよい。すなわち、ダイナミックDNSでは、まず、ユーザ端末に対して、ユニークな識別情報(ドメインネーム)が割り当てられる。ユーザ端末は、割り当てて欲しい識別情報をサーバに申告する。サーバは、申告された識別情報が他のユーザ端末に割り当てられている識別情報と重複しないか否かを判断する。重複しない場合、サーバは、申告された識別情報をユーザ端末に割り当てる。サーバは、当該識別情報に対応するアドレス情報を、変更になる度に登録する。
なお、上記各実施形態において、アドレス情報、またはネットワーク構成の調査をP2P通信開始時に行うとしたが、端末起動時に予め行っておくようにしても良い。さらに、端末起動時に予め行って判明した自身のネットワーク構成情報をP2Pサーバに登録しておくようにしても良い。ユーザ端末は、P2P通信を行いたい場合、P2Pサーバから自身及び相手のネットワーク構成の情報を入手することができる。すなわち、各端末がP2Pサーバに自身のアドレス情報(ネットワーク構成情報)を登録しておき、各端末は通信相手のネットワーク構成情報をP2Pサーバから取得するようにする。
さらに、ユーザ端末は、定期的にネットワーク構成を調査するようにしても良い。ネットワーク構成情報が変化した場合には、ユーザ端末は、P2Pサーバに登録内容を更新するようにしても良い。
なお、上記実施形態において、ユーザ端末は、静的NAT設定を行ってWAN側アドレス情報を取得し、通信相手に対して、通信開始要求メッセージを送信することとした。しかし、ユーザ端末は、静的NAT設定を行わずに、通信相手の通信端末との間でアドレス情報を交換するようにしてもよい。図21A、および図21Bは、静的NAT設定を行わずにアドレス情報を交換する場合のユーザ端末の動作を示すシーケンス図である。
まず、ユーザ端末1aは、P2Pサーバ3との間の通信路を確立する(P20)。次に、ユーザ端末1dは、P2Pサーバ3との間の通信路を確立する(P21)。次に、ユーザ端末1aは、P2Pサーバ3からグローバルアドレス情報を取得する(P23)。次に、ユーザ端末1aは、直上のルータ2Aに割り当てられているWAN側アドレス情報として、WAN側IPアドレスを取得する(P24)。たとえば、ユーザ端末1aは、UPnPのGetExternalAddressアクションを用いて、直上のルータ2AのWAN側IPアドレスを取得する。
次に、ユーザ端末1aは、P2Pサーバ3を介して、ユーザ端末1dに対して、アドレス情報交換要求メッセージを送信する(P25)。アドレス情報交換要求メッセージには、ユーザ端末1aに割り当てられているグローバルIPアドレス、WAN側IPアドレス、およびローカルIPアドレスのみが含まれる。なお、グローバルIPアドレスは、インターネット上でのユーザ端末のアドレスに関する情報であるので、グローバルアドレス情報であるといえる。WAN側IPアドレスは、直上のルータに割り当てられているWAN側でのアドレスに関する情報であるので、WAN側アドレス情報であるといえる。ローカルIPアドレスは、ローカルネットワーク上での自装置に割り当てられているアドレスに関する情報であるので、ローカルアドレス情報であるといえる。
アドレス情報交換要求メッセージを受信したユーザ端末1dは、P2Pサーバ3からグローバルアドレス情報を取得する(P26)。次に、ユーザ端末1dは、直上のルータ2Bに割り当てられているWAN側アドレス情報として、WAN側IPアドレスの取得を試みる(P27)。ここでは、ルータ2Bは、UPnPに非対応であるとする。そのため、ユーザ端末1dは、WAN側アドレス情報を取得することができない。
次に、ユーザ端末1dは、P2Pサーバ3を介して、ユーザ端末1aに対して、アドレス情報交換応答メッセージを送信する(P28)。ここで、アドレス情報交換応答メッセージには、ユーザ端末1dに割り当てられているグローバルIPアドレス、WAN側IPアドレス、およびローカルIPアドレスのみが含まれる。ただし、図21Aに示すように、直上のルータがUPnPに非対応であれば、アドレス情報交換応答メッセージにWAN側IPアドレスは含まれない。
アドレス情報交換応答メッセージを受信したユーザ端末1aは、静的NAT設定を行うか否かを判断する(P29)。アドレス情報交換応答メッセージを送信したユーザ端末1dは、静的NAT設定を行うか否かを判断する(P30)。
ここで、ユーザ端末1aは、静的NAT設定を行うと判断したとする。ユーザ端末1aは、UPnPによって、直上のルータ2Aに、静的NAPTを設定させる(P31)。次に、ユーザ端末1aは、P2Pサーバ3を介して、ユーザ端末1dに通信開始要求メッセージを送信する(P32)。通信開始要求メッセージには、IPアドレスおよびポート番号を含むグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報が含まれる。
通信開始要求メッセージを受信したユーザ端末1dは、P2Pサーバ3を介して、ユーザ端末1aに通信開始応答メッセージを送信する(P33)。通信開始応答メッセージには、IPアドレスおよびポート番号を含むグローバルアドレス情報、WAN側アドレス情報、ならびにローカルアドレス情報が含まれる。
このようにしてアドレス情報が交換されたので、ユーザ端末1aとユーザ端末1dとは、第1または第2の実施形態における処理と同様にして、P2P通信を開始する。たとえば、ユーザ端末1aとユーザ端末1dとは、図18BのP9以降に示される処理と同様にして、P2P通信を開始する。
図22は、静的NAT設定を行うか否かを判断するときのユーザ端末の動作を示すフローチャートである。以下、図22を参照しながら、静的NAT設定を行うか否かを判断するときのユーザ端末の動作について説明する。図22の動作は、たとえば、図21Bに示すP29およびP32で行われる。
まず、ユーザ端末は、通信相手のユーザ端末から取得したアドレス情報に基づいて、P2P通信が可能か否かを判断し、不可能であれば、接続方式を切り替える(ステップS1200)。ユーザ端末は、グローバルIPアドレスが異なる場合のみ、ステップS1200の判断を行うものとする。
次に、ユーザ端末は、自装置に割り当てられているグローバルIPアドレスと通信相手のユーザ端末に割り当てられているグローバルIPアドレスとが一致するか否かを判断する(ステップS1201)。一致する場合、自装置と通信相手との間の通信は同一ルータ配下での通信となるので、ユーザ端末は、直上のルータに対して、UPnPによる静的NAT設定を行う(S1202)。なお、ユーザ端末は、UPnP以外によって、静的NAT設定を行っても良い。
一方、一致しない場合、自装置と通信相手との間の通信はインターネットを介した通信となる。この場合、ユーザ端末は、自装置に割り当てられているWAN側IPアドレスとグローバルIPアドレスとが一致するか否かを判断する(ステップS1203)。
ステップS1203において、一致する場合、ユーザ端末は、ステップS1202の動作に進む。一方、一致しない場合、最上位のルータに静的NATを設定することはできないので、ユーザ端末は、静的NAT設定を行わないと判断する(ステップS1204)。静的NAT設定を行わないと判断したユーザ端末は、P2Pサーバ3を介してP2P通信を開始するか、またはSTUN通信方式を用いてP2P通信を開始する。
このように、ユーザ端末は、自装置および通信相手のグローバルアドレス情報、ならびに自装置のWAN側アドレス情報に基づいて、静的NATを設定すべきか否かを判断する。このような判断は、ユーザ端末にNAT設定判断部(図示せず)を備えることによっても実現可能である。静的NATを設定すべきと判断しなかった場合、ユーザ端末は、通信方式を切り替えることとなる。これにより、不必要な静的NAT設定が行われないこととなるので、セキュリティの向上、処理の高速化が期待できる。
なお、本発明のプログラムは、コンピュータ読みとり可能な記録媒体に格納されて提供されてもよいし、ネットワークを介してコンピュータ装置に提供されてもよい。
なお、本発明の端末を実現するために必要な機能ブロックは、集積回路であるLSIとして実現されてもよい。これらの機能ブロックは、1チップ化されていてもよいし、一部又は全てを含むように1チップ化されていてもよい。ここでは、LSIといったが、集積度の違いによっては、IC、システムLSI、スーパーLSI、ウルトラLSIと称呼されることもある。また、集積回路化の手法は、LSIに限られるものではなく、専用回路または汎用プロセッサで集積回路化を行ってもよい。また、LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを用いてもよい。さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックを集積化してもよい。バイオ技術の適応等が可能性としてあり得る。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。