(57)【要約】【課題】ＮＡＴ通過のための通信をより効率的に実行し、通信装置間でのＰ２Ｐ通信を迅速に行うことができる通信装置、通信システム、通信方法、及び通信プログラムを提供する。【解決手段】通信装置は、通信相手方の通信装置（相手装置）に対して、通信経路上のサーバのＩＤを取得するための往路ＩＤパケットを送信する（Ｓ１５）。相手装置から返信される復路ＩＤパケットを受信する（Ｓ３３）。通信経路上のサーバ及びＮＡＴ装置のＩＰアドレスを取得するための往路アドレスパケットを送信する（Ｓ３７）。相手装置から返信される復路アドレスパケットを受信する（Ｓ３９）。復路アドレスパケットに含まれているアドレス情報に基づき、相手装置との間でＰ２Ｐ通信を開始するために必要な通信（確立通信）時に使用するサーバを選択する（Ｓ４３）。【選択図】図１４
2011176383.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置であって、
前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信手段と、
前記第一送信手段によって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信手段と、
前記第一受信手段によって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得手段と、
前記第一取得手段によって取得された前記中継アドレス情報に基づいて、前記相手装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、
前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段と
を備えた通信装置。
【請求項２】
前記中継アドレス情報は、
前記サーバが付加する情報であって、前記第一パケット又は前記第二パケットを前記サーバが受信した場合の前記パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを少なくとも含み、
前記送信元アドレス情報は、
前記ＮＡＴ装置が転送した前記第一パケット又は前記第二パケットを前記サーバが受信した場合には、前記ＮＡＴ装置が前記パケットに送信元アドレスとして割り当てた前記アドレス情報であり、
前記ローカルアドレス情報は、
前記サーバが直接接続する前記ネットワーク上でのアドレス情報であり、
前記選択手段は、
一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に他の前記サーバによって付加された前記送信元アドレス情報とが一致する場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記選択手段は、
前記往路アドレス情報のうち、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に前記他のサーバによって付加された前記送信元アドレス情報とが一致し、且つ、前記復路アドレス情報のうち、他の前記サーバによって付加された前記ローカルアドレス情報と、他の前記サーバによって中継転送された前記パケットを一の前記サーバが受信した場合に一の前記サーバによって付加された前記送信元アドレス情報とが一致した場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択することを特徴とする請求項２に記載の通信装置。
【請求項４】
前記選択手段によって選択された前記サーバの前記アドレス情報を、前記サーバを介して前記相手装置に送信する第二送信手段をさらに備えたことを特徴とする請求項１から３のいずれかに記載の通信装置。
【請求項５】
前記第二送信手段によって送信された前記アドレス情報に応じ、前記選択手段によって選択された前記サーバから返信される応答情報であって、前記確立通信時に必要なポート番号を少なくとも含む前記応答情報を受信する第二受信手段を更に備えたことを特徴とする請求項４に記載の通信装置。
【請求項６】
前記相手装置に対して送信されたパケットが経由する前記サーバのＩＤ情報である往路ＩＤ情報を取得するための第三パケットを、前記サーバを介して前記相手装置に送信する第三送信手段と、
前記第三送信手段によって送信された前記第三パケットに応じ、前記相手装置から返信されるパケットであって、前記往路ＩＤ情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバの前記ＩＤ情報である復路ＩＤ情報を取得するためのパケットである第四パケットを受信する第三受信手段と
前記第三受信手段によって受信された前記第四パケットから、前記往路ＩＤ情報と前記復路ＩＤ情報とを少なくとも含む前記中継ＩＤ情報を取得する第二取得手段と
を備え、
前記第一送信手段は、
前記第二取得手段によって取得された中継ＩＤ情報を少なくとも含む前記第一パケットを送信することを特徴とする請求項に１から５のいずれかに記載の通信装置。
【請求項７】
ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムであって、
前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信手段と、
前記第一送信手段において前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信手段と、
前記第一送信手段において前記第一装置が送信し、前記第二送信手段において前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信手段と、
前記第三送信手段において前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信手段と、
前記第三送信手段において前記第二装置が送信し、前記第四送信手段において前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得手段と、
前記取得手段によって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、
前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段と
を備えた通信システム。
【請求項８】
ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置において実行される通信方法であって、
前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信ステップと、
前記第一送信ステップによって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信ステップと、
前記第一受信ステップによって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得ステップと、
前記第一取得ステップによって取得された前記中継アドレス情報に基づいて、前記相手装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、
前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップと
を備えた通信方法。
【請求項９】
ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムにおいて実行される通信方法であって、
前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信ステップと、
前記第一送信ステップにおいて前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信ステップと、
前記第一送信ステップにおいて前記第一装置が送信し、前記第二送信ステップにおいて前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信ステップと、
前記第三送信ステップにおいて前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信ステップと、
前記第三送信ステップにおいて前記第二装置が送信し、前記第四送信ステップにおいて前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得ステップと、
前記取得ステップによって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、
前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップと
を備えた通信方法。
【請求項１０】
請求項１から６のいずれかに記載の通信装置の各処理手段としてコンピュータを機能させるための通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信システム、通信方法、及び通信プログラムに関する。より詳細には、ＮＡＴ装置を含むネットワークを介して通信を行う通信装置、通信システム、通信方法、及び通信プログラムに関する。
【背景技術】
【０００２】
通信装置（ＰＣなど）は、ＮＡＴ（Network Address Translation）機能を備えた装置（ＮＡＴルータなど。以下「ＮＡＴ装置」という。）によって区画されたプライベートネットワーク内に接続される場合がある。異なるプライベートネットワーク内にある通信装置間でＰ２Ｐ（Peer to Peer）通信を実行する場合のＮＡＴ通過（NAT traversal）の手法として、例えば、特許文献１に記載の手法がある。特許文献１に記載された通信装置は、パス結合シグナリングプロトコルに基づいた通信によって、ＮＡＴ装置にアドレス情報（ＩＰアドレス、ポート番号）を直接問い合せる。通信装置は、問い合わせに応じてＮＡＴ装置から返信されたアドレス情報を用いることで、相手方の通信装置とＰ２Ｐ通信を行う。
【０００３】
また、ＳＴＵＮ（Simple Traversal of UDP through NATs）サーバを使用するＮＡＴ通過（NAT traversal）の手法が知られている。一例として、ＵＤＰホールパンチングについて説明する。ＵＤＰホールパンチングでは、はじめに、通信が行われる二つの通信装置がＳＴＵＮサーバとのＵＤＰ通信を開始する。通信装置間に介在するＮＡＴ装置は、ＵＤＰパケットを転送する場合に、一時的なアドレス情報（ＩＰアドレス、ポート番号）をＵＤＰパケットに割り当てる。ＳＴＵＮサーバは、ＮＡＴ装置によって割り当てられたアドレス情報を、其々の通信装置に対して通知する。通信装置は、通知されたアドレス情報を用いることで、相手方の通信装置と通信を行う。ＮＡＴ装置に、Ｐ２Ｐ通信時に使用可能なアドレス情報が割り当てられる。割り当てられたアドレス情報を使用し、通信装置間でＰ２Ｐ通信が開始される。ＵＤＰホールパンチングを用いることで、上述のパス結合シグナリングプロトコルに対応していないＮＡＴ装置が使用された場合であっても、相手方の通信装置とＰ２Ｐ通信を行うことができる。
【０００４】
なおＳＴＵＮサーバとしては、専用サーバの他、ネットワークに接続されたプロキシサーバのうち一を選択して使用することもできる。またＵＤＰホールパンチングに基づく通信時において、通信経路上にあるプロキシサーバがＵＤＰパケットをＳＴＵＮサーバに中継転送する場合、プロキシサーバは、ＳＴＵＮサーバのＩＰアドレスまたはドメイン等に応じてＵＤＰパケットを中継転送する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３８９１１９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワーク内における通信装置の配置によっては、非常に多くのＮＡＴ装置を経由しなければ、ＵＤＰパケットがＳＴＵＮサーバに到達しない状況が発生する。このため、通信装置間でＰ２Ｐ通信が可能となるまでに時間を要してしまうという問題点がある。
【０００７】
本発明の目的は、ＮＡＴ通過のための通信をより効率的に実行し、通信装置間でのＰ２Ｐ通信を迅速に行うことができる通信装置、通信システム、通信方法、及び通信プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第一態様に係る通信装置は、ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置であって、前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信手段と、前記第一送信手段によって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信手段と、前記第一受信手段によって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得手段と、前記第一取得手段によって取得された前記中継アドレス情報に基づいて、前記相手装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段とを備えている。
【０００９】
本発明の第一態様によれば、通信装置は、ＮＡＴ越えを実現し、相手装置との間でP2P通信を確立するための通信（UDP Hole Punchingなど、以下「確立通信」という。）を行う場合に使用されるサーバ（ＳＴＵＮ（Simple Traversal of UDP through NATs）サーバなど）を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット（往路アドレスパケット、復路アドレスパケット）に格納される。サーバがＮＡＴ装置を介してパケットを受信した場合、パケットのアドレス情報には、ＮＡＴ装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやＮＡＴ装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でＮＡＴ通過問題を解消し、相手装置とP2P通信を開始することができる。
【００１０】
また、第一態様において、前記中継アドレス情報は、前記サーバが付加する情報であって、前記第一パケット又は前記第二パケットを前記サーバが受信した場合の前記パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを少なくとも含み、前記送信元アドレス情報は、前記ＮＡＴ装置が転送した前記第一パケット又は前記第二パケットを前記サーバが受信した場合には、前記ＮＡＴ装置が前記パケットに送信元アドレスとして割り当てた前記アドレス情報であり、前記ローカルアドレス情報は、前記サーバが直接接続する前記ネットワーク上でのアドレス情報であり、前記選択手段は、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に他の前記サーバによって付加された前記送信元アドレス情報とが一致する場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択してもよい。ローカルアドレス情報と送信元アドレス情報とが一致する場合、サーバ間の通信時にＮＡＴ装置はアドレス情報の変換を行っていない。一方、ローカルアドレス情報と送信元アドレス情報とが相違する場合、サーバ間の通信時にＮＡＴ装置はアドレス情報を変換している。従って通信装置は、サーバ間でのパケット中継転送時にＮＡＴ装置が介在するか否かを認識でき、ＮＡＴ装置が極力介在しないサーバを優先的に選択できる。これによって通信装置は、ＮＡＴ装置を極力介在させずに確立通信を行うことができる。結果として通信装置は、ＮＡＴ装置が介在しない最短経路を選択することができるので、確立通信時にパケットが経由するＮＡＴ装置の数を極力抑制することができる。通信装置は、より短時間でＮＡＴ通過問題を解消できる。
【００１１】
また、第一態様において、前記選択手段は、前記往路アドレス情報のうち、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に前記他のサーバによって付加された前記送信元アドレス情報とが一致し、且つ、前記復路アドレス情報のうち、他の前記サーバによって付加された前記ローカルアドレス情報と、他の前記サーバによって中継転送された前記パケットを一の前記サーバが受信した場合に一の前記サーバによって付加された前記送信元アドレス情報とが一致した場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択してもよい。通信装置は、これによって、相手装置への通信時における往路と復路との両方で、サーバ間でのパケット中継転送時にＮＡＴ装置が介在するか否かを認識でき、ＮＡＴ装置が極力介在しないサーバを優先的に選択できる。通信装置は、往路と復路の両方でＮＡＴ装置が極力介在しない最短経路を選択することができるので、確立通信時にパケットが経由するサーバの数をさらに抑制できる。
【００１２】
また、第一態様において、前記選択手段によって選択された前記サーバの前記アドレス情報を、前記サーバを介して前記相手装置に送信する第二送信手段をさらに備えていてもよい。これによって相手装置は、通知されたサーバのアドレス情報に基づいて確立通信を行うことができる。相手装置は、サーバを選択するための処理を行うことなく、確立通信のためのサーバを特定できるので、相手装置の処理負荷を軽減できる。また、通信が行われる通信装置間で同一のサーバを選択することができるので、確実に確立通信を実行できる。
【００１３】
また、第一態様において、前記第二送信手段によって送信された前記アドレス情報に応じ、前記選択手段によって選択された前記サーバから返信される応答情報であって、前記確立通信時に必要なポート番号を少なくとも含む前記応答情報を受信する第二受信手段を更に備ええていてもよい。これによって通信装置は、確立通信時に必要なサーバのポート番号を認識できる。通信装置は、自身が特定したアドレス情報（ＩＰアドレスなど）と、受信したポート番号とを使用し、迅速且つ容易に確立通信を実行できる。
【００１４】
また、第一態様において、前記相手装置に対して送信されたパケットが経由する前記サーバのＩＤ情報である往路ＩＤ情報を取得するための第三パケットを、前記サーバを介して前記相手装置に送信する第三送信手段と、前記第三送信手段によって送信された前記第三パケットに応じ、前記相手装置から返信されるパケットであって、前記往路ＩＤ情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバの前記ＩＤ情報である復路ＩＤ情報を取得するためのパケットである第四パケットを受信する第三受信手段と前記第三受信手段によって受信された前記第四パケットから、前記往路ＩＤ情報と前記復路ＩＤ情報とを少なくとも含む前記中継ＩＤ情報を取得する第二取得手段とを備え、前記第一送信手段は、前記第二取得手段によって取得された中継ＩＤ情報を少なくとも含む前記第一パケットを送信してもよい。これによってサーバは、第一パケットに含まれているＩＤ情報に基づき、アドレス情報を付加できる。通信装置は、サーバによるアドレス情報の付加処理を容易化できる。
【００１５】
本発明の第二態様に係る通信システムは、ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムであって、前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信手段と、前記第一送信手段において前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信手段と、前記第一送信手段において前記第一装置が送信し、前記第二送信手段において前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信手段と、前記第三送信手段において前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信手段と、前記第三送信手段において前記第二装置が送信し、前記第四送信手段において前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得手段と、前記取得手段によって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段とを備えている。
【００１６】
本発明の第二態様によれば、通信装置は、ＮＡＴ越えを実現し、相手装置との間でP2P通信を確立するための通信（UDP Hole Punchingなど、以下「確立通信」という。）を行う場合に使用されるサーバ（ＳＴＵＮ（Simple Traversal of UDP through NATs）サーバなど）を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット（往路アドレスパケット、復路アドレスパケット）に格納される。サーバがＮＡＴ装置を介してパケットを受信した場合、パケットのアドレス情報には、ＮＡＴ装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやＮＡＴ装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でＮＡＴ通過問題を解消し、相手装置とP2P通信を開始することができる。
【００１７】
本発明の第三態様に係る通信方法は、ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置において実行される通信方法であって、前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信ステップと、前記第一送信ステップによって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信ステップと、前記第一受信ステップによって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得ステップと、前記第一取得ステップによって取得された前記中継アドレス情報に基づいて、前記相手装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップとを備えている。
【００１８】
本発明の第三態様によれば、通信装置は、ＮＡＴ越えを実現し、相手装置との間でP2P通信を確立するための通信（UDP Hole Punchingなど、以下「確立通信」という。）を行う場合に使用されるサーバ（ＳＴＵＮ（Simple Traversal of UDP through NATs）サーバなど）を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット（往路アドレスパケット、復路アドレスパケット）に格納される。サーバがＮＡＴ装置を介してパケットを受信した場合、パケットのアドレス情報には、ＮＡＴ装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやＮＡＴ装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でＮＡＴ通過問題を解消し、相手装置とP2P通信を開始することができる。
【００１９】
本発明の第四態様に係る通信方法は、ＮＡＴ（Network Address Translation）装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムにおいて実行される通信方法であって、前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信ステップと、前記第一送信ステップにおいて前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信ステップと、前記第一送信ステップにおいて前記第一装置が送信し、前記第二送信ステップにおいて前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記ＮＡＴ装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信ステップと、前記第三送信ステップにおいて前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信ステップと、前記第三送信ステップにおいて前記第二装置が送信し、前記第四送信ステップにおいて前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得ステップと、前記取得ステップによって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのＰ２Ｐ（Peer to Peer）通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップとを備えている。
【００２０】
本発明の第四態様によれば、通信装置は、ＮＡＴ越えを実現し、相手装置との間でP2P通信を確立するための通信（UDP Hole Punchingなど、以下「確立通信」という。）を行う場合に使用されるサーバ（ＳＴＵＮ（Simple Traversal of UDP through NATs）サーバなど）を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット（往路アドレスパケット、復路アドレスパケット）に格納される。サーバがＮＡＴ装置を介してパケットを受信した場合、パケットのアドレス情報には、ＮＡＴ装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやＮＡＴ装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でＮＡＴ通過問題を解消し、相手装置とP2P通信を開始することができる。
【００２１】
本発明の第五態様に係る通信プログラムは、通信装置の各処理手段としてコンピュータを機能させる。
【図面の簡単な説明】
【００２２】
【図１】通信システム１を示す図である。
【図２】Ｐ２Ｐ通信を開始するための手順を示す図である。
【図３】往路ＩＤ情報５２を示す図である。
【図４】復路ＩＤ情報５３を示す図である。
【図５】往路アドレス情報５４を示す図である。
【図６】復路アドレス情報５５を示す図である。
【図７】比較テーブル５６を示す図である。
【図８】通信システム３を示す図である。
【図９】往路アドレス情報７２を示す図である。
【図１０】復路アドレス情報７３を示す図である。
【図１１】比較テーブル７４を示す図である。
【図１２】通信装置１１の電気的構成を示すブロック図である。
【図１３】サーバ２１の電気的構成を示すブロック図である。
【図１４】装置メイン処理を示すフローチャートである。
【図１５】装置メイン処理を示すフローチャートである。
【図１６】選択処理を示すフローチャートである。
【図１７】決定処理を示すフローチャートである。
【図１８】サーバメイン処理を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明の一実施の形態である通信装置、及び通信システムについて、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【００２４】
図１を参照し、通信システム１について説明する。通信システムは、通信装置１１〜１３、サーバ２１〜２３、ＮＡＴ装置３１〜３４を少なくとも備えている。通信装置１１〜１３は、他の通信装置と通信を行うことができる。通信装置としては、例えばＰＣ等が使用できる。ＮＡＴ装置３１〜３４は、ＮＡＴ（Network Address Translation）機能を備えた装置である。ＮＡＴ装置３１〜３４としては、例えばＮＡＴルータが使用できる。サーバ２１〜２３は、プロキシ機能を備えている。またサーバ２１〜２３は、ＳＴＵＮ（Simple Traversal of UDP through NATs）に基づき、通信装置１１〜１３間で行われる通信を制御できる。ＳＴＵＮは、ＮＡＴ通過（NAT traversal）の方法の1つとして使われる標準化された通信プロトコルである。サーバ２１〜２３としては、プロキシサーバやＳＴＵＮサーバが使用できる。
【００２５】
通信システム１は、ＮＡＴ装置３１〜３４で区画された複数のプライベートネットワークを備えている。ＮＡＴ装置３１によって区画されたプライベートネットワークに、通信装置１１が接続している。ＮＡＴ装置３３によって区画されたプライベートネットワークに、通信装置１２が接続している。ＮＡＴ装置３２によって区画されたプライベートネットワークに、ＮＡＴ装置３１、ＮＡＴ装置３３、及びサーバ２１が接続している。ＮＡＴ装置３４によって区画されたプライベートネットワークに、通信装置１３とサーバ２３とが接続している。サーバ２２、ＮＡＴ装置３２、及びＮＡＴ装置３４は、オープンネットワーク２に直接接続している。
【００２６】
図２を参照し、異なる通信装置（「第一装置」「第二装置」という。）間でＰ２Ｐ通信が開始される場合の通信手順について説明する。第一装置と第二装置とは、其々異なるプライベートネットワークに接続されている。第一装置は、次の通信手順に基づき、第二装置とのＰ２Ｐ通信を開始する。
（１）第一装置及び第二装置は、サーバ２１〜２３のいずれか一つを、ＳＴＵＮサーバとして選択する（Ｓ１）。
（２）第一装置及び第二装置は、選択されたサーバに対してＵＤＰパケットを送信する。サーバは、ＵＤＰパケットを受信する。サーバは、後述する通信（３）時に使用されるアドレス情報を、受信したパケットの送信元アドレス情報に基づいて特定する。サーバは、第一装置及び第二装置に対して、特定されたアドレス情報を送信する。通信装置は、アドレス情報を受信する（Ｓ２）。
（３）第一装置及び第二装置は、サーバから受信したアドレス情報を使用し、相手方の通信装置に対してパケットを送信する。これによって、Ｐ２Ｐ通信時に使用可能なアドレス情報が、ＮＡＴ装置に割り当てられる（Ｓ３）。
（（２）（３）が、通信相手方の通信装置とＰ２Ｐ通信を確立するために必要な通信（以下「確立通信」という。）に相当する。確立通信として、例えばUDP Hole PunchingやUDP Multi Hole Punching等が使用可能である。）
（４）確立通信の後、（３）においてＮＡＴ装置に割り当てられたアドレス情報が使用され、第一装置と第二装置との間でＰ２Ｐ通信が開始される（Ｓ４）。通信装置から送信されたパケットは、ＮＡＴ装置においてブロックされることなく、相手方の通信装置に到達する。
【００２７】
本実施の形態では、（１）において選択されるサーバを適切に選択することによって、（２）の通信を効率化する。適切なサーバが選択されない場合、（２）の通信においてサーバに伝送されるパケットは、多くのサーバ及びＮＡＴ装置を経由することになる。その結果、確立通信に時間を要してしまうので、通信装置は迅速にＰ２Ｐ通信を開始することができない。これに対して本実施の形態では、（１）において最適なサーバを選択することで、（２）の通信に要する時間を短縮できる。このため通信装置は、迅速にＰ２Ｐ通信を開始することができる。以下、（１）におけるサーバの選択方法の詳細について、説明する。
【００２８】
第一装置は、第二装置に対してパケットが送信された場合において該パケットが経由するサーバのＩＤ情報を取得するために、往路ＩＤパケットを第二装置に対して送信する（Ｓ５）。往路ＩＤパケットは、サーバ及びＮＡＴ装置を経由する。サーバが往路ＩＤパケットを受信し転送する場合、サーバは、自身のＩＤ情報を往路ＩＤパケットに格納する。往路ＩＤパケットは第二装置に到達する。往路ＩＤパケットには、往路で経由したサーバすべてのＩＤ情報が格納されていることになる（以下、往路ＩＤパケットの中継転送時に格納されたＩＤ情報を、「往路ＩＤ情報」という。往路ＩＤパケットが経由した経路を、「往路」という。）。
【００２９】
第二装置は、第一装置に対してパケットが送信された場合において該パケットが経由するサーバのＩＤ情報を取得するために、復路ＩＤパケットを第一装置に対して送信する（Ｓ６）。復路ＩＤパケットには、往路ＩＤ情報が格納される。サーバが復路ＩＤパケットを受信し転送する場合、サーバは、自身のＩＤ情報を復路ＩＤパケットに格納する。復路ＩＤパケットは第一装置に到達する。復路ＩＤパケットには、復路で経由したサーバすべてのＩＤ情報と往路ＩＤ情報とが格納されていることになる（以下、復路ＩＤパケットの中継転送時に格納されたＩＤ情報を、「復路ＩＤ情報」という。復路ＩＤパケットが経由した経路を「復路」という。）。
【００３０】
第一装置は、往路上にあるサーバ及びＮＡＴ装置のアドレス情報を取得するために、往路アドレスパケットを第二装置に対して送信する（Ｓ７）。往路ＩＤ情報と復路ＩＤ情報とが、往路アドレスパケットに格納される。往路アドレスパケットを転送するサーバは、往路ＩＤ情報に基づいて往路を容易に特定できる。
【００３１】
往路アドレスパケットは、往路上のサーバ及びＮＡＴ装置を経由する。ＮＡＴ装置は、プライベートネットワーク側から往路アドレスパケットを受信した場合、往路アドレスパケットの送信元ＩＰアドレスを変換して転送する。サーバは、往路アドレスパケットを受信した場合、往路アドレスパケットの送信元ＩＰアドレスと、自身のローカルアドレスとを、往路アドレスパケットに格納する。往路アドレスパケットは、第二装置に到達する。往路アドレスパケットには、往路上にあるサーバ及びＮＡＴ装置のアドレス情報、往路ＩＤ情報、及び復路ＩＤ情報が格納されていることになる（以下、往路アドレスパケットの中継転送時に格納されたアドレス情報を、「往路アドレス情報」という。）
【００３２】
第二装置は、復路上にあるサーバ及びＮＡＴ装置のアドレス情報を取得するために、復路アドレスパケットを第一装置に対して送信する（Ｓ８）。往路アドレス情報と復路ＩＤ情報とが、復路アドレス情報に格納される。復路アドレスパケットを転送するサーバは、復路ＩＤ情報に基づいて復路を容易に特定できる。
【００３３】
復路アドレスパケットは、復路上のサーバ及びＮＡＴ装置を経由する。ＮＡＴ装置は、プライベートネットワーク側から復路アドレスパケットを受信した場合、復路アドレスパケットの送信元ＩＰアドレスを変換して転送する。サーバは、復路アドレスパケットを受信した場合、復路アドレスパケットの送信元ＩＰアドレスと、自身のローカルアドレスとを、復路アドレスパケットに格納する。復路アドレスパケットは、第一装置に到達する。復路アドレスパケットには、復路上にあるサーバ及びＮＡＴ装置のアドレス情報、往路アドレス情報、及び復路ＩＤ情報が格納されていることになる（以下、復路アドレスパケットの中継転送時に格納されたアドレス情報を、「復路アドレス情報」という。）
【００３４】
第一装置は、受信した往路アドレス情報と復路アドレス情報とに基づいて、サーバを選択する（Ｓ９）。通信装置は、中継経路上に介在するＮＡＴ装置が極力少なくなるように、サーバを選択する。ＮＡＴ装置は、パケットを転送する場合に、送信元ＩＰアドレスを変換する。一のサーバがパケットを送信し、他のサーバがこのパケットを受信した場合、これらのサーバ間にＮＡＴ装置が介在すると、他のサーバが受信したパケットの送信元アドレスは、一のサーバのローカルアドレスと異なる。第一装置は、受信した往路アドレス情報及び復路アドレス情報（以下、往路アドレス情報と復路アドレスとを総称して「中継アドレス情報」ともいう。）を参照する。通信装置は、中継アドレス情報のうち相違するアドレス情報を抽出し、ＮＡＴ装置が経路上に介在しているか否かを判断する。通信装置は、極力ＮＡＴ装置が介在しない経路をパケットが伝送されるように、サーバを選択する。通信装置は、選択されたサーバを確立通信時に使用することで、ＮＡＴ装置が極力介在しない最短経路を介して確立通信を実行できる。通信装置は、より短時間で迅速に相手方の通信装置とのＰ２Ｐ通信を開始できる。
【００３５】
なお上述では、ＩＤパケット（往路ＩＤパケット及び復路ＩＤパケット）とアドレスパケット（往路アドレスパケット及び復路アドレスパケット）とを使用することによって、ＩＤ情報（往路ＩＤ情報、復路ＩＤ情報）とアドレス情報（往路アドレス情報、復路アドレス情報）とを取得し、サーバを選択していた。本発明はこの方法に限定されない。例えば、ＩＤ情報とアドレス情報とを同時に取得するパケット（往路パケット、復路パケット）を使用することによって、サーバを選択してもよい。往路パケットを使用することで、往路ＩＤ情報及び往路アドレス情報を取得し、復路パケットを使用することで、復路ＩＤ情報及び復路アドレス情報を取得してもよい。これによって、サーバを選択するまでに要する時間をさらに短縮できる。
【００３６】
第一装置は、選択されたことを通知するための通知パケットを、選択されたサーバに送信する。通知パケットには、確立通信を行う相手方の通信装置（第二装置）のＩＰアドレスが格納される。サーバは、通知パケットを受信する。サーバは、確立通信時に使用されるポート番号を決定する。サーバは、自身のＩＰアドレスと、決定したポート番号とを通知応答パケットに格納する。通知応答パケットは、第一装置及び第二装置に対して送信される。第一装置及び第二装置は、通知応答パケットを受信する（Ｓ１０）。第一装置及び第二装置は、通知応答パケットに格納されたＩＰアドレス及びポート番号を使用し、確立通信を開始する（Ｓ２）。第一装置は、通知されたポート番号を使用して確立通信を開始できる。第二装置は、通知されたＩＰアドレス及びポート番号に従い、確立通信を開始できる。第二装置は、自身がサーバを選択するための処理を行わずに済むので、容易に確立通信を実行できる。また、確立通信時に使用されるサーバが、第一装置と第二装置とで常に同一となるので、通信装置は確実に確立通信を実行できる。
【００３７】
図１、図３〜７を参照し、サーバが選択される様子について説明する。通信装置１１が第一装置に相当する。通信装置１３が第二装置に相当する。通信装置１１は、自身のＩＤ情報「１１」を、送信元ＩＤとして往路ＩＤパケットに格納する（図３参照）。通信装置１１は、通信装置１３に対して往路ＩＤパケットを送信する。送信された往路ＩＤパケットは、ＮＡＴ装置３１を通過し、サーバ２１において受信される。サーバ２１は、自身のＩＤ情報「２１」を、ローカルＩＤとして往路ＩＤパケットに格納する（図３参照）。サーバ２１は、自身のＩＤ「２１」を、送信元ＩＤとして往路ＩＤパケットに格納する（図３参照）。サーバ２１は、往路ＩＤパケットをサーバ２２に対して送信する。送信された往路ＩＤパケットは、ＮＡＴ装置３２を通過し、サーバ２２において受信される。以上の通信を繰り返すことで、通信装置１１から送信された往路ＩＤパケットは、ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３２、サーバ２２、ＮＡＴ装置３４、及びサーバ２３を経由し、通信装置１３において受信される。中継経路は、サーバ２１〜２３において決定される。通信装置１３において受信された往路ＩＤパケットには、往路ＩＤ情報５２（図３参照）が往路ＩＤ情報として格納されている。
【００３８】
通信装置１３は、通信装置１１に対して復路ＩＤパケットを送信する。復路ＩＤパケットには、往路ＩＤ情報５２（図３参照）が格納される。送信された復路ＩＤパケットは、サーバ２３、ＮＡＴ装置３４、サーバ２２、ＮＡＴ装置３２、サーバ２１、及びＮＡＴ装置３１を経由し、通信装置１１において受信される。通信装置１１において受信された復路ＩＤパケットには、復路ＩＤ情報５３（図４参照）が復路ＩＤ情報として格納されている。また復路ＩＤパケットには、往路ＩＤ情報５２（図３参照）が往路ＩＤ情報として格納されている。
【００３９】
次いで通信装置１１は、通信装置１３に対して往路アドレスパケットを送信する。往路アドレスパケットには、往路ＩＤ情報５２（図３参照）と復路ＩＤ情報５３（図４参照）とが格納される。サーバは、格納された往路ＩＤ情報５２に基づき、往路アドレスパケットの転送先を決定する。往路アドレスパケットは、サーバ間を順番に中継転送される。
【００４０】
往路アドレスパケットは、ＮＡＴ装置３１を通過する。ＮＡＴ装置３１は、往路アドレスパケットの送信元ＩＰアドレスを、通信装置１１のローカルＩＰアドレス「192.168.1.1」から「192.168.3.1」に変換する。サーバ２１は、往路アドレスパケットを受信する。サーバ２１は、往路アドレスパケットの送信元ＩＰアドレス「192.168.3.1」を、送信元ＩＰアドレスとして往路アドレスパケットに格納する（図５参照）。サーバ２１は、自身のローカルＩＰアドレス「192.168.3.2」を、ローカルＩＰアドレスとして往路アドレスパケットに格納する（図５参照）。サーバ２１は、往路アドレスパケットをサーバ２２に対して送信する。送信された往路アドレスパケットは、ＮＡＴ装置３２を通過する。ＮＡＴ装置３２は、往路アドレスパケットの送信元ＩＰアドレスを、サーバ２１のローカルＩＰアドレス「192.168.3.2」から「10.10.10.1」に変換する。サーバ２２は、往路アドレスパケットを受信する。以上の処理を繰り返すことで、通信装置１１から送信された往路アドレスパケットは、往路ＩＤ情報５２にて示されたＩＤの順番「ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３２、サーバ２２、ＮＡＴ装置３４、サーバ２３」でサーバを経由する。往路アドレスパケットは、通信装置１３において受信される。通信装置１３において受信された往路アドレスパケットには、往路アドレス情報５４（図５参照）が往路アドレス情報として格納されている。また往路アドレスパケットには、往路ＩＤ情報５２（図３参照）及び復路ＩＤ情報５３（図４参照）が格納されている。
【００４１】
次いで通信装置１３は、通信装置１１に対して復路アドレスパケットを送信する。復路アドレスパケットには、復路ＩＤ情報５３（図４参照）と、往路アドレス情報５４（図５参照）とが格納される。復路アドレスパケットは、格納された復路ＩＤ情報５３に基づき、サーバ間を順番に中継転送される。復路アドレスパケットは、サーバ２３、ＮＡＴ装置３４、サーバ２２、ＮＡＴ装置３２、サーバ２１、及びＮＡＴ装置３１を経由し、通信装置１１において受信される。通信装置１１において受信された復路アドレスパケットには、復路アドレス情報５５（図６参照）が復路アドレス情報として格納されている。また復路アドレスパケットには、往路アドレス情報５４（図５参照）、及び復路ＩＤ情報５３（図４参照）が格納されている。
【００４２】
通信装置１１において、中継アドレス情報（往路アドレス情報５４（図５参照）、及び復路アドレス情報５５（図６参照））が参照される。通信装置１１は、中継アドレス情報のうち同一のＩＤ情報（送信元ＩＤ、ローカルＩＤ）に対応付けられるアドレス情報（送信元ＩＰアドレス、ローカルＩＰアドレス）を往路／復路毎に比較し、双方が一致するかを判断する。判断結果は、ＲＡＭ４３（図１２参照）に記憶した比較テーブル５６（図７参照）に格納される。例えば、往路アドレス情報５４のうち、同一のＩＤ情報「２１」に対応付けられているＩＰアドレス「192.168.3.2」「10.10.10.1」は異なっている。比較テーブル５６の「２１−往路」には、結果が相違することを示す「×」が示されている。同一のＩＤ情報「２２」に対応付けられているアドレス情報「30.30.30.1」は一致する。比較テーブル５６の「２２−往路」には、結果が一致することを示す「○」が示されている。同一のＩＤ情報「２３」に対応付けられているアドレス情報「192.167.4.1」は一致する。比較テーブルの「２３−往路」には、結果が一致することを示す「○」が示されている。同様の判断が、復路アドレス情報５５を参照して実行される。結果、比較テーブル５６（図７参照）が作成される。
【００４３】
比較テーブル５６（図７参照）の結果に基づいて、サーバが選択される。比較テーブル５６のうち、往路及び復路とも比較結果が「○」である場合、優先順位「１」が設定される。往路及び復路とも比較結果が「×」である場合、優先順位「２」が設定される。往路「○」であり復路「×」であるか、往路「×」であり復路「○」である場合、優先順位「３」が設定される。往路及び復路とも比較結果が「○」である場合、対応するサーバは、通信装置間を結ぶ最短経路上に接続されており、且つ、通信装置が接続するプライベートネットワークの外側にある。従って、確立通信時に使用されるサーバとして最も適している。往路及び復路の両方の比較結果が「×」である場合、対応するサーバは通信装置間を結ぶ最短経路上に接続されていないが、通信装置が接続するプライベートネットワークの外側にある。従って、確立通信時に使用されるサーバとして使用することができる。往路及び復路のいずれかの比較結果が「×」である場合、対応するサーバは、通信装置が接続するプライベートネットワークの内側にある。従って、確立通信時に使用されるサーバとしては適していない。
【００４４】
比較テーブル５６では、ＩＤ情報２２に優先順位「１」が設定されている。ＩＤ情報２１及び２３に優先順位「３」が設定されている。最も優先順位の高いＩＤ情報２２のサーバが、確立通信時に使用されるサーバとして選択される。サーバ２２を選択することで、確立通信時においてパケットが経由する経路上のＮＡＴ装置を極力少なくできる。第一装置及び第二装置は、選択されたサーバを確立通信時に使用することで、より効率的に確立通信を実行できる。第一装置及び第二装置は迅速にＰ２Ｐ通信を開始できる。
【００４５】
図８〜図１１を参照し、通信システム３においてサーバが選択される様子について説明する。図８では、図１の通信システム１に加え、サーバ２４とＮＡＴ装置３５とを備えている。サーバ２４は、ＮＡＴ装置３５によって区画されたプライベートネットワークに接続されている。ＮＡＴ装置３５は、オープンネットワーク２に接続されている。その他の構成は、図１の通信システム１と同一である。
【００４６】
通信装置１１を第一装置とし、通信装置１３を第二装置とした場合を想定する。通信装置１１と通信装置１３との間で、往路／復路ＩＤパケット、及び往路／復路アドレスパケットの通信が実行される。通信装置１１から通信装置１３に対してパケット（往路ＩＤパケット、往路アドレスパケット）が送信される場合、パケットは、ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３２、サーバ２２、ＮＡＴ装置３５、サーバ２４、ＮＡＴ装置３５、ＮＡＴ装置３４、及びサーバ２３を経由する。中継経路は、サーバ２１〜２４において決定される。通信装置１１では、中継アドレス情報（往路アドレス情報７２（図９参照）、及び復路アドレス情報７３（図１０参照））が中継アドレス情報として取得される。取得された中継アドレス情報に基づいて、比較テーブル７４（図１１参照）が作成され、優先順位が設定される。最も優先順位の高いＩＤ情報２２のサーバが、確立中通信時に使用されるサーバとして選択される。
【００４７】
通信システム３（図８参照）において、通信装置１１と通信装置１３との確立通信時に使用されるサーバとしてサーバ２４が選択されたとする。この場合、通信装置１１と通信装置１３との間で送受信されるパケットは、ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３２、ＮＡＴ装置３５、サーバ２４、ＮＡＴ装置３５、ＮＡＴ装置３４、及びサーバ２３の経路を経由する。サーバ２２が選択された場合と比較して、経由するＮＡＴ装置の数が大きくなる。これに対して本実施の形態では、確立通信時に使用されるサーバとしてサーバ２２が選択される。これによって、確立通信時のパケットが経由するＮＡＴ装置の数を小さくできる。確立通信に要する時間を短縮できるので、通信装置は、迅速にＰ２Ｐ通信を開始できる。
【００４８】
同様に、例えば通信装置１１と通信装置１２との間でＰ２Ｐ通信が実行される場合を想定する。確立通信時に使用されるサーバとしてサーバ２２が選択されると、通信時に経由するサーバ及びＮＡＴ装置の数が大きくなる（ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３２、サーバ２２、ＮＡＴ装置３２、サーバ２１、ＮＡＴ装置３３）。これに対し本実施の形態では、確立通信時に使用されるサーバとしてサーバ２１が選択される。これによって、確立通信時のパケットが経由するサーバ及びＮＡＴ装置の数を小さくできる（ＮＡＴ装置３１、サーバ２１、ＮＡＴ装置３３）。
【００４９】
図１２を参照し、通信装置１１の電気的構成について説明する。通信装置１１〜１３の電気的構成は同一である。通信装置１１は、通信装置１１の制御を司るＣＰＵ４１を備えている。ＲＯＭ４２、ＲＡＭ４３、ＨＤＤ４４は、バスを介してＣＰＵ４１と電気的に接続している。ＲＯＭ４２には、Ｂｏｏｔプログラムや初期設定パラメータが少なくとも記憶される。ＲＡＭ４３は、ＣＰＵ２１の処理時に必要なデータを一時的に記憶する。ＨＤＤ４４は、ＣＰＵ２１のプログラムが少なくとも記憶される。
【００５０】
入力ドライバ４５、表示ドライバ４６、通信モジュール４７、及びディスクドライブ４８が、バスを介してＣＰＵ４１と接続している。入力ドライバ４５は、キーボード４９を介して入力された情報を検出する。ＣＰＵ４１は、キーボード４９を介して入力された情報を認識できる。表示ドライバ４６は、ディスプレイ５０に像を表示させるための制御を行う。ＣＰＵ４１は、ディスプレイ５０に所望の像を表示させることができる。通信モジュール４７は、オープンネットワーク２やプライベートネットワークを介して通信を行う場合の同期制御等を行う。ＣＰＵ４１は、通信モジュール４７を介して外部と通信を行うことができる。ディスクドライブ４８は、記憶媒体５１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ４１は、ディスクドライブ４８に挿入された記憶媒体５１に記憶された情報にアクセスできる。記憶媒体５１には、例えば、ＣＰＵ４１が実行するプログラムが記憶される。プログラムのインストール時、プログラムは記憶媒体５１から読み出され、ＨＤＤ４４に記憶される。
【００５１】
図１３を参照し、サーバ２１の電気的構成について説明する。サーバ２１〜２３の電気的構成は同一である。サーバ２１は、サーバ２１の制御を司るＣＰＵ６１を備えている。ＲＯＭ６２、ＲＡＭ６３、ＨＤＤ６４は、バスを介してＣＰＵ６１と電気的に接続している。ＲＯＭ６２には、Ｂｏｏｔプログラムや初期設定パラメータが少なくとも記憶される。ＲＡＭ６３には、ＣＰＵ６１の処理時に必要なデータを一時的に記憶する。ＨＤＤ６４は、ＣＰＵ６１のプログラムが少なくとも記憶される。
【００５２】
入力ドライバ６５、表示ドライバ６６、通信モジュール６７、及びディスクドライブ６８が、バスを介してＣＰＵ６１と接続している。入力ドライバ６５は、キーボード６９を介して入力された情報を検出する。ＣＰＵ６１は、キーボード６９を介して入力された情報を認識できる。表示ドライバ６６は、ディスプレイ７０に像を表示させるための制御を行う。ＣＰＵ６１は、ディスプレイ７０に所望の像を表示させることができる。通信モジュール６７は、オープンネットワーク２やプライベートネットワークを介して通信を行う場合の同期制御等を行う。ＣＰＵ６１は、通信モジュール６７を介して外部と通信を行うことができる。ディスクドライブ６８は、記憶媒体７１に記憶された情報にアクセスする為の駆動装置である。ＣＰＵ６１は、ディスクドライブ６８に挿入された記憶媒体７１に記憶された情報にアクセスできる。記憶媒体７１には、例えば、ＣＰＵ６１が実行するプログラムが記憶される。プログラムのインストール時、プログラムは記憶媒体７１から読み出され、ＨＤＤ６４に記憶される。
【００５３】
図１４から図１７を参照し、通信装置１１〜１３のＣＰＵ４１において実行される装置メイン処理について説明する。装置メイン処理は、通信装置１１〜１３の電源が投入された状態で、ＣＰＵ４１によって起動され実行される。以下では、第一装置と第二装置とがＰ２Ｐ通信を開始する場合を想定する。第一装置のＣＰＵ４１において実行される処理について説明する。
【００５４】
装置メイン処理が起動されると、第二装置とのＰ２Ｐ通信を開始する指示が、キーボード４９を介してユーザによって入力されたかが判断される（Ｓ１１）。Ｐ２Ｐ通信を開始する指示が入力された場合（Ｓ１１：ＹＥＳ）、自身のＩＤ情報が往路ＩＤパケットに格納される（Ｓ１３）。第二装置に対して、往路ＩＤパケットが送信される（Ｓ１５）。往路ＩＤパケットが送信された後、第二装置から返信される復路ＩＤパケットを受信したかがが判断される（Ｓ３３）。復路ＩＤパケットが受信された場合（Ｓ３３：ＹＥＳ）、復路ＩＤパケットに含まれている往路ＩＤ情報と復路ＩＤ情報とが抽出される。抽出された往路ＩＤ情報と復路ＩＤ情報とが、往路アドレスパケットに格納される（Ｓ３５）。第二装置に対して、往路アドレスパケットが送信される（Ｓ３７）。そしてＳ３３の処理に戻る。
【００５５】
往路アドレスパケットを送信した後、第二装置から送信される復路アドレスパケットを受信した場合（Ｓ３３：ＮＯ、Ｓ３９：ＹＥＳ）、復路アドレス情報に含まれている中継アドレス情報が抽出される（Ｓ４１）。抽出された中継アドレス情報に基づいてサーバを選択する処理（選択処理、図１６参照）が実行される（Ｓ４３）。
【００５６】
図１６を参照し、選択処理について説明する。選択処理では、中継アドレス情報（図５、図６、図９、図１０参照）のうちＩＤ情報とＩＰアドレスとが、往路／復路毎に対応付けられる。ＩＤ情報毎に以下の判断が実行される。判断されていないＩＤ情報があるかが判断される（Ｓ５１）。判断されていないＩＤ情報がある場合（Ｓ５１：ＹＥＳ）、判断されていないＩＤ情報のうち一が選択される。選択されたＩＤ情報に対応する複数のＩＰアドレスが比較される（Ｓ５３）。比較結果は、ＲＡＭ４３に展開した比較テーブル（図７、図１１参照）に格納される。比較の結果、複数のＩＰアドレスが一致した場合（Ｓ５５：ＹＥＳ）、ＩＰアドレスが一致したことを示す情報（以下では「○」と示す。）が、比較テーブルに格納される（Ｓ５７）。そしてＳ５１の処理に戻る。複数のＩＰアドレスが相違した場合（Ｓ５５：ＮＯ）、ＩＰアドレスが一致しないことを示す情報（以下では「×」と示す。）が、比較テーブルに格納される（Ｓ５９）。そしてＳ５１の処理に戻る。Ｓ５１〜Ｓ５９の処理が繰り返され、すべてのＩＤ情報に対応するＩＰアドレスが判断された場合（Ｓ５１：ＮＯ）、作成された比較テーブルに基づき、選択されるサーバを決定する処理（決定処理、図１７参照）が実行される（Ｓ６１）。
【００５７】
図１７を参照し、決定処理について説明する。決定処理では、選択処理（図１６参照）における判断結果が、ＩＤ情報毎に判断される。判断されていないＩＤ情報があるかが判断される（Ｓ６５）。判断されていないＩＤ情報がある場合（Ｓ６５：ＹＥＳ）、判断されていないＩＤ情報のうち一が選択される。比較テーブル（図７、図１１参照）のうち、選択されたＩＤ情報に対応する判断結果が参照される。往路の判断結果と復路の判断結果との両方がともに「○」である場合、（Ｓ６７：ＹＥＳ）、優先順位「１」が比較テーブルに格納される（Ｓ６９）。そしてＳ６５の処理に戻る。比較テーブルのうち、往路の判断結果と復路の判断結果とがともに「×」である場合（Ｓ６７：ＮＯ、Ｓ７０：ＹＥＳ）、優先順位「３」が比較テーブルに格納される（Ｓ７１）。そしてＳ６５の処理に戻る。往路の判断結果と復路の判断結果とのうち一方が「○」であり、他方が「×」である場合（Ｓ７０：ＮＯ）、優先順位「２」が比較テーブルに格納される（Ｓ７３）。そしてＳ６５の処理に戻る。すべてのＩＤ情報に対応する判断結果が判断された場合（Ｓ６５：ＮＯ）、決定処理処理を終了し、選択処理（図１６参照）に戻る。図１６に示すように、決定処理（Ｓ６１）の終了後、比較テーブルに格納された優先順位のうち最も高い順位に対応付けられているＩＤ情報が抽出される。抽出されたＩＤ情報に対応するサーバが選択される（Ｓ６３）。そして選択処理を終了し、装置メイン処理（図１４参照）に戻る。
【００５８】
装置メイン処理では、選択処理（Ｓ４３）の終了後、第二装置のＩＰアドレスが、通知パケットに格納される。選択されたサーバに対して通知パケットが送信される（Ｓ４５）。そしてＳ３３の処理に戻る。通知パケットを送信した後、サーバから返信される通知応答パケットを受信した場合（Ｓ３９：ＮＯ、Ｓ４７：ＹＥＳ）、受信した通知応答パケットに含まれているポート番号が抽出される。抽出されたポート番号は、確立通信時にサーバと通信を行う場合に通信装置が使用可能な、サーバのポート番号である。選択処理（Ｓ４３）において選択されたサーバのＩＰアドレスと、通知応答パケットから抽出されたポート番号は、ＲＡＭ４３に記憶される（Ｓ４９）。記憶されたＩＰアドレスとポート番号とを使用し、サーバと通信を行うことで、確立通信が実行される（Ｓ５０）。そして装置メイン処理を終了する。
【００５９】
一方、Ｓ１１の処理において、第二装置とのＰ２Ｐ通信を開始する指示が入力されなかった場合（Ｓ１１：ＮＯ）、Ｓ１７の処理（図１５参照）に移行する。図１５に示すように、第二装置から送信された往路ＩＤパケットを受信したかが判断される（Ｓ１７）。往路ＩＤパケットを受信した場合（Ｓ１７：ＹＥＳ）、往路ＩＤパケットに含まれている往路ＩＤ情報が抽出される。抽出された往路ＩＤ情報が、復路ＩＤパケットに格納される。自身のＩＤ情報が、復路ＩＤパケットに復路ＩＤ情報として格納される（Ｓ１９）。第二装置に対して、復路ＩＤパケットが送信される（Ｓ２１）。そしてＳ１１（図１４参照）の処理に戻る。
【００６０】
往路アドレスパケットを受信した場合（Ｓ１７：ＮＯ、Ｓ２３：ＹＥＳ）、往路アドレスパケットに含まれている往路ＩＤ情報、復路ＩＤ情報、及び往路アドレス情報が抽出される。抽出された復路ＩＤ情報と往路アドレス情報とが、復路アドレスパケットに格納される（Ｓ２５）。第二装置に対して、復路アドレスパケットが送信される（Ｓ２７）。そしてＳ１１（図１４参照）の処理に戻る。
【００６１】
サーバから送信される通知パケットを受信した場合（Ｓ２３：ＮＯ、Ｓ２９：ＹＥＳ）、通知パケットに含まれているＩＰアドレスとポート番号とが抽出される。抽出されたＩＰアドレスとポート番号とは、確立通信時にサーバと通信を行う場合に通信装置が使用可能な、サーバのＩＰアドレス及びポート番号である。抽出されたＩＰアドレス及びポート番号は、ＲＡＭ４３に記憶される（Ｓ３１）。記憶されたＩＰアドレスとポート番号とを使用し、サーバと通信を行うことで、確立通信が実行される（Ｓ３２）。そして装置メイン処理に戻る。
【００６２】
図１８を参照し、サーバ２１〜２３のＣＰＵ６１において実行されるサーバメイン処理について説明する。サーバメイン処理は、サーバ２１〜２３の電源が投入された状態で、ＣＰＵ６１によって起動され実行される。以下では、第一装置が往路ＩＤパケットを送信することで、第一装置と第二装置とが通信を開始したことを想定する。
【００６３】
図１８に示すように、サーバメイン処理では、第一装置から送信された往路アドレスパケットを受信したかが判断される（Ｓ７５）。第一装置から送信された往路アドレスパケットを受信した場合（Ｓ７５：ＹＥＳ）、往路アドレスパケットの送信元ＩＰアドレスが、往路アドレス情報（送信元ＩＰアドレス）として往路アドレスパケットに格納される。自身のローカルＩＰアドレスが、往路アドレス情報（ローカルＩＰアドレス）として往路アドレスパケットに格納される（Ｓ７９）。往路アドレスパケットを第二装置に転送するために、往路アドレスパケットが送信される（Ｓ８１）。往路アドレスパケットの中継経路は、受信した往路アドレスパケットに格納されている往路ＩＤ情報を参照することで決定される。そしてＳ７５の処理に戻る。
【００６４】
復路アドレスパケットが受信された場合（Ｓ７５：ＮＯ、Ｓ７７：ＹＥＳ）、復路アドレスパケットの送信元アドレスが、復路アドレス情報（送信元ＩＰアドレス）として復路アドレスパケットに格納される。自身のローカルＩＰアドレスが、復路アドレス情報（ローカルＩＰアドレス）として復路アドレスパケットに格納される（Ｓ７９）。復路アドレスパケットを第一装置に転送するために、復路アドレスパケットが送信される（Ｓ８１）。復路アドレスパケットの中継経路は、受信した復路アドレスパケットに格納されている復路ＩＤ情報を参照することで決定される。そしてＳ７５の処理に戻る。
【００６５】
往路ＩＤパケットが受信された場合（Ｓ７７：ＮＯ、Ｓ８３：ＹＥＳ）、自身のＩＤ情報が往路ＩＤ情報として往路ＩＤパケットに格納される（Ｓ８７）。往路ＩＤパケットを第二装置に転送するために、往路ＩＤパケットが送信される（Ｓ８９）。そしてＳ７５の処理に戻る。復路ＩＤパケットを受信した場合（Ｓ８３：ＮＯ、Ｓ８５：ＹＥＳ）、自身のＩＤ情報が復路ＩＤ情報として復路ＩＤパケットに格納される（Ｓ８７）。復路ＩＤパケットを第一装置に転送するために、復路ＩＤパケットが送信される（Ｓ８９）。そしてＳ７５の処理に戻る。
【００６６】
通知パケットが受信された場合（Ｓ８５：ＮＯ、Ｓ９１：ＹＥＳ）、受信した通知パケットが、第一装置から自身宛に送信されたものであるかが判断される（Ｓ９５）。通知パケットが自身宛に送信されている場合（Ｓ９５：ＹＥＳ）、第一装置と第二装置との間で確立通信が実行される場合のサーバとして、自身が選択されていることになる。通知パケットに格納されている第二装置のＩＰアドレスが抽出される。第一装置と第二装置との間の確立通信時に使用されるポート番号が決定される。決定されたポート番号と、自身のＩＰアドレスとが、通知応答パケットに格納される（Ｓ９９）。通知応答パケットは、通知パケットを送信した第一装置に対して送信される。通知応答パケットは、通知パケットから抽出した第二装置のＩＰアドレスに基づき、第二装置に対して送信される（Ｓ１０１）。そしてＳ７５の処理に戻る。
【００６７】
通知パケットが受信されていない場合（Ｓ９１：ＮＯ）、別のサーバから送信された通知応答パケットを受信したかが判断される（Ｓ９３）。通知応答パケットを受信した場合（Ｓ９３：ＹＥＳ）、受信した通知応答パケットを、第一装置又は第二装置に対して転送する（Ｓ９７）。そしてＳ７５の処理に戻る。通知応答パケットを受信していない場合（Ｓ９３：ＮＯ）、そのままＳ７５の処理に戻る。
【００６８】
以上説明したように、通信装置は、確立通信を行う場合に使用されるサーバを、中継アドレス情報に基づいて選択する。通信装置は、パケットの中継経路上にあるサーバやＮＡＴ装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でＮＡＴ通過問題を解消し、相手装置とP2P通信を開始することができる。
【００６９】
通信装置は、サーバ間でのパケット中継転送時にＮＡＴ装置が介在するか否かを認識でき、ＮＡＴ装置が極力介在しないサーバを優先的に選択できる。これによって通信装置は、ＮＡＴ装置を極力介在させずに確立通信を行うことができる。結果として通信装置は、ＮＡＴ装置が介在しない最短経路を選択することができるので、確立通信時にパケットが経由するＮＡＴ装置の数を極力抑制することができる。通信装置は、より短時間でＮＡＴ通過問題を解消できる。
【００７０】
なお、上述した通信装置１１〜１３が実行可能な各処理のうち、図１４のＳ３７の処理を行うＣＰＵ４１が本発明の「第一送信手段」に相当し、Ｓ３９の処理を行うＣＰＵ４１が本発明の「第一受信手段」に相当し、Ｓ４１の処理を行うＣＰＵ４１が本発明の「第一取得手段」に相当し、Ｓ４３の処理を行うＣＰＵ４１が本発明の「選択手段」に相当し、Ｓ５０の処理を行うＣＰＵ４１が本発明の「通信手段」に相当し、Ｓ４５の処理を行うＣＰＵ４１が本発明の「第二送信手段」に相当し、Ｓ４７の処理を行うＣＰＵ４１が本発明の「第二受信手段」に相当し、Ｓ１５の処理を行うＣＰＵ４１が本発明の「第三送信手段」に相当し、Ｓ３３の処理を行うＣＰＵ４１が本発明の「第三受信手段」に相当し、Ｓ３５の処理を行うＣＰＵ４１が本発明の「第二取得手段」に相当する。図１４のＳ３７の処理が本発明の「第一送信ステップ」に相当し、Ｓ３９の処理が本発明の「第一受信ステップ」に相当し、Ｓ４１の処理が本発明の「第一取得ステップ」に相当し、Ｓ４３の処理が本発明の「選択ステップ」に相当し、Ｓ５０の処理が本発明の「通信ステップ」に相当し、Ｓ４５の処理が本発明の「第二送信ステップ」に相当し、Ｓ４７の処理が本発明の「第二受信ステップ」に相当し、Ｓ１５の処理が本発明の「第三送信ステップ」に相当し、Ｓ３３の処理が本発明の「第三受信ステップ」に相当し、Ｓ３５の処理が本発明の「第二取得ステップ」に相当する。
【００７１】
上述した通信システム１，３が実行可能な各処理のうち、図１０のＳ３７の処理を行う通信装置１１〜１３のＣＰＵ４１が本発明の「第一送信手段」に相当し、図１４のＳ８１の処理を行うサーバ２１〜２４のＣＰＵ６１が本発明の「第二送信手段」「第四送信手段」に相当し、図１１のＳ２７の処理を行う通信装置１１〜１３のＣＰＵ４１が本発明の「第三送信手段」に相当し、図１０のＳ４１の処理を行う通信装置１１〜１３のＣＰＵ４１が本発明の「取得手段」に相当し、Ｓ４３の処理を行う通信装置１１〜１３のＣＰＵ４１が本発明の「選択手段」に相当し、Ｓ３２の処理を行う通信装置１１〜１３のＣＰＵ４１が本発明の「通信手段」に相当する。図１０のＳ３７の処理が本発明の「第一送信ステップ」に相当し、図１４のＳ８１の処理が本発明の「第二送信ステップ」「第四送信ステップ」に相当し、図１１のＳ２７の処理が本発明の「第三送信ステップ」に相当し、図１０のＳ４１の処理が本発明の「取得ステップ」に相当し、Ｓ４３の処理が本発明の「選択ステップ」に相当し、Ｓ３２の処理が本発明の「通信ステップ」に相当する。
【００７２】
なお、本発明は上記実施形態に限定されるものではなく、種々の変更が可能である。上述の実施の形態では、往路アドレス情報と復路アドレス情報との両方に基づいて、確立通信時に使用されるサーバを選択していた。本発明はこの方法に限定されない。往路アドレス情報及び復路アドレス情報のうち少なくとも一方の情報に基づいて、サーバを選択してもよい。
【００７３】
上述の実施の形態では、往路ＩＤパケット及び復路ＩＤパケットの通信によって、往路／復路の経路上にあるサーバのＩＤ情報を取得していた。取得したＩＤ情報（往路ＩＤ情報及び復路ＩＤ情報）に基づいて、サーバは往路アドレスパケット及び復路アドレスパケットを中継していた。本発明はこの方法に限定されない。サーバは、ＴＣＰ／ＩＰヘッダに格納されている送信先アドレス情報に基づいて、往路アドレスパケット及び復路アドレスパケットを中継してもよい。
【００７４】
上述の実施の形態では、作成された比較テーブルの優先順位が「１」であるサーバを、確立通信時に使用するサーバとして選択していた。優先順位「１」であるサーバが存在しない場合には、優先順位の高い順に、確立通信時に使用されるサーバが選択されてもよい。選択されたサーバを使用しても確立通信が実行できない（確立通信に失敗した）場合、次に優先順位の高いサーバが順次選択され、確立通信が試みられてもよい。
【００７５】
上述の実施の形態では、往路ＩＤパケットを送信した通信装置（第一装置）において比較テーブルが作成され、確立通信時に使用されるサーバが選択された。本発明はこの方法に限定されない。例えば、往路アドレス情報を受信した通信装置（第二装置）において、往路アドレス情報に基づいて比較テーブルが作成されてもよい。作成された比較テーブルは、復路アドレスパケットに格納され、第一装置に対して送信されてもよい。第一装置では、復路アドレス情報に基づいて比較テーブルが作成されてもよい。第一装置では、作成された比較テーブルと、受信した復路アドレスパケットに格納されていた比較テーブルに基づいて、確立通信時に使用されるサーバが選択されてもよい。
【符号の説明】
【００７６】
１，３      通信システム
１１，１２，１３  通信装置
２１，２２，２３，２４  サーバ
４１，６１  ＣＰＵ
３１，３２，３３，３４，３５  ＮＡＴ装置
【図１】
2011176383.tif 000003
【図２】
2011176383.tif 000004
【図３】
2011176383.tif 000005
【図４】
2011176383.tif 000006
【図５】
2011176383.tif 000007
【図６】
2011176383.tif 000008
【図７】
2011176383.tif 000009
【図８】
2011176383.tif 000010
【図９】
2011176383.tif 000011
【図１０】
2011176383.tif 000012
【図１１】
2011176383.tif 000013
【図１２】
2011176383.tif 000014
【図１３】
2011176383.tif 000015
【図１４】
2011176383.tif 000016
【図１５】
2011176383.tif 000017
【図１６】
2011176383.tif 000018
【図１７】
2011176383.tif 000019
【図１８】
2011176383.tif 000020