説明

通信装置、通信システム、通信方法、及び通信プログラム。

【課題】NAT通過のための通信をより効率的に実行し、通信装置間でのP2P通信を迅速に行うことができる通信装置、通信システム、通信方法、及び通信プログラムを提供する。
【解決手段】通信装置は、通信相手方の通信装置(相手装置)に対して、通信経路上のサーバのIDを取得するための往路IDパケットを送信する(S15)。相手装置から返信される復路IDパケットを受信する(S33)。通信経路上のサーバ及びNAT装置のIPアドレスを取得するための往路アドレスパケットを送信する(S37)。相手装置から返信される復路アドレスパケットを受信する(S39)。復路アドレスパケットに含まれているアドレス情報に基づき、相手装置との間でP2P通信を開始するために必要な通信(確立通信)時に使用するサーバを選択する(S43)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信装置、通信システム、通信方法、及び通信プログラムに関する。より詳細には、NAT装置を含むネットワークを介して通信を行う通信装置、通信システム、通信方法、及び通信プログラムに関する。
【背景技術】
【0002】
通信装置(PCなど)は、NAT(Network Address Translation)機能を備えた装置(NATルータなど。以下「NAT装置」という。)によって区画されたプライベートネットワーク内に接続される場合がある。異なるプライベートネットワーク内にある通信装置間でP2P(Peer to Peer)通信を実行する場合のNAT通過(NAT traversal)の手法として、例えば、特許文献1に記載の手法がある。特許文献1に記載された通信装置は、パス結合シグナリングプロトコルに基づいた通信によって、NAT装置にアドレス情報(IPアドレス、ポート番号)を直接問い合せる。通信装置は、問い合わせに応じてNAT装置から返信されたアドレス情報を用いることで、相手方の通信装置とP2P通信を行う。
【0003】
また、STUN(Simple Traversal of UDP through NATs)サーバを使用するNAT通過(NAT traversal)の手法が知られている。一例として、UDPホールパンチングについて説明する。UDPホールパンチングでは、はじめに、通信が行われる二つの通信装置がSTUNサーバとのUDP通信を開始する。通信装置間に介在するNAT装置は、UDPパケットを転送する場合に、一時的なアドレス情報(IPアドレス、ポート番号)をUDPパケットに割り当てる。STUNサーバは、NAT装置によって割り当てられたアドレス情報を、其々の通信装置に対して通知する。通信装置は、通知されたアドレス情報を用いることで、相手方の通信装置と通信を行う。NAT装置に、P2P通信時に使用可能なアドレス情報が割り当てられる。割り当てられたアドレス情報を使用し、通信装置間でP2P通信が開始される。UDPホールパンチングを用いることで、上述のパス結合シグナリングプロトコルに対応していないNAT装置が使用された場合であっても、相手方の通信装置とP2P通信を行うことができる。
【0004】
なおSTUNサーバとしては、専用サーバの他、ネットワークに接続されたプロキシサーバのうち一を選択して使用することもできる。またUDPホールパンチングに基づく通信時において、通信経路上にあるプロキシサーバがUDPパケットをSTUNサーバに中継転送する場合、プロキシサーバは、STUNサーバのIPアドレスまたはドメイン等に応じてUDPパケットを中継転送する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第3891195号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ネットワーク内における通信装置の配置によっては、非常に多くのNAT装置を経由しなければ、UDPパケットがSTUNサーバに到達しない状況が発生する。このため、通信装置間でP2P通信が可能となるまでに時間を要してしまうという問題点がある。
【0007】
本発明の目的は、NAT通過のための通信をより効率的に実行し、通信装置間でのP2P通信を迅速に行うことができる通信装置、通信システム、通信方法、及び通信プログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明の第一態様に係る通信装置は、NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置であって、前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信手段と、前記第一送信手段によって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信手段と、前記第一受信手段によって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得手段と、前記第一取得手段によって取得された前記中継アドレス情報に基づいて、前記相手装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段とを備えている。
【0009】
本発明の第一態様によれば、通信装置は、NAT越えを実現し、相手装置との間でP2P通信を確立するための通信(UDP Hole Punchingなど、以下「確立通信」という。)を行う場合に使用されるサーバ(STUN(Simple Traversal of UDP through NATs)サーバなど)を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット(往路アドレスパケット、復路アドレスパケット)に格納される。サーバがNAT装置を介してパケットを受信した場合、パケットのアドレス情報には、NAT装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやNAT装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でNAT通過問題を解消し、相手装置とP2P通信を開始することができる。
【0010】
また、第一態様において、前記中継アドレス情報は、前記サーバが付加する情報であって、前記第一パケット又は前記第二パケットを前記サーバが受信した場合の前記パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを少なくとも含み、前記送信元アドレス情報は、前記NAT装置が転送した前記第一パケット又は前記第二パケットを前記サーバが受信した場合には、前記NAT装置が前記パケットに送信元アドレスとして割り当てた前記アドレス情報であり、前記ローカルアドレス情報は、前記サーバが直接接続する前記ネットワーク上でのアドレス情報であり、前記選択手段は、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に他の前記サーバによって付加された前記送信元アドレス情報とが一致する場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択してもよい。ローカルアドレス情報と送信元アドレス情報とが一致する場合、サーバ間の通信時にNAT装置はアドレス情報の変換を行っていない。一方、ローカルアドレス情報と送信元アドレス情報とが相違する場合、サーバ間の通信時にNAT装置はアドレス情報を変換している。従って通信装置は、サーバ間でのパケット中継転送時にNAT装置が介在するか否かを認識でき、NAT装置が極力介在しないサーバを優先的に選択できる。これによって通信装置は、NAT装置を極力介在させずに確立通信を行うことができる。結果として通信装置は、NAT装置が介在しない最短経路を選択することができるので、確立通信時にパケットが経由するNAT装置の数を極力抑制することができる。通信装置は、より短時間でNAT通過問題を解消できる。
【0011】
また、第一態様において、前記選択手段は、前記往路アドレス情報のうち、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に前記他のサーバによって付加された前記送信元アドレス情報とが一致し、且つ、前記復路アドレス情報のうち、他の前記サーバによって付加された前記ローカルアドレス情報と、他の前記サーバによって中継転送された前記パケットを一の前記サーバが受信した場合に一の前記サーバによって付加された前記送信元アドレス情報とが一致した場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択してもよい。通信装置は、これによって、相手装置への通信時における往路と復路との両方で、サーバ間でのパケット中継転送時にNAT装置が介在するか否かを認識でき、NAT装置が極力介在しないサーバを優先的に選択できる。通信装置は、往路と復路の両方でNAT装置が極力介在しない最短経路を選択することができるので、確立通信時にパケットが経由するサーバの数をさらに抑制できる。
【0012】
また、第一態様において、前記選択手段によって選択された前記サーバの前記アドレス情報を、前記サーバを介して前記相手装置に送信する第二送信手段をさらに備えていてもよい。これによって相手装置は、通知されたサーバのアドレス情報に基づいて確立通信を行うことができる。相手装置は、サーバを選択するための処理を行うことなく、確立通信のためのサーバを特定できるので、相手装置の処理負荷を軽減できる。また、通信が行われる通信装置間で同一のサーバを選択することができるので、確実に確立通信を実行できる。
【0013】
また、第一態様において、前記第二送信手段によって送信された前記アドレス情報に応じ、前記選択手段によって選択された前記サーバから返信される応答情報であって、前記確立通信時に必要なポート番号を少なくとも含む前記応答情報を受信する第二受信手段を更に備ええていてもよい。これによって通信装置は、確立通信時に必要なサーバのポート番号を認識できる。通信装置は、自身が特定したアドレス情報(IPアドレスなど)と、受信したポート番号とを使用し、迅速且つ容易に確立通信を実行できる。
【0014】
また、第一態様において、前記相手装置に対して送信されたパケットが経由する前記サーバのID情報である往路ID情報を取得するための第三パケットを、前記サーバを介して前記相手装置に送信する第三送信手段と、前記第三送信手段によって送信された前記第三パケットに応じ、前記相手装置から返信されるパケットであって、前記往路ID情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバの前記ID情報である復路ID情報を取得するためのパケットである第四パケットを受信する第三受信手段と前記第三受信手段によって受信された前記第四パケットから、前記往路ID情報と前記復路ID情報とを少なくとも含む前記中継ID情報を取得する第二取得手段とを備え、前記第一送信手段は、前記第二取得手段によって取得された中継ID情報を少なくとも含む前記第一パケットを送信してもよい。これによってサーバは、第一パケットに含まれているID情報に基づき、アドレス情報を付加できる。通信装置は、サーバによるアドレス情報の付加処理を容易化できる。
【0015】
本発明の第二態様に係る通信システムは、NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムであって、前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信手段と、前記第一送信手段において前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信手段と、前記第一送信手段において前記第一装置が送信し、前記第二送信手段において前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信手段と、前記第三送信手段において前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信手段と、前記第三送信手段において前記第二装置が送信し、前記第四送信手段において前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得手段と、前記取得手段によって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段とを備えている。
【0016】
本発明の第二態様によれば、通信装置は、NAT越えを実現し、相手装置との間でP2P通信を確立するための通信(UDP Hole Punchingなど、以下「確立通信」という。)を行う場合に使用されるサーバ(STUN(Simple Traversal of UDP through NATs)サーバなど)を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット(往路アドレスパケット、復路アドレスパケット)に格納される。サーバがNAT装置を介してパケットを受信した場合、パケットのアドレス情報には、NAT装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやNAT装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でNAT通過問題を解消し、相手装置とP2P通信を開始することができる。
【0017】
本発明の第三態様に係る通信方法は、NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置において実行される通信方法であって、前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信ステップと、前記第一送信ステップによって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信ステップと、前記第一受信ステップによって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得ステップと、前記第一取得ステップによって取得された前記中継アドレス情報に基づいて、前記相手装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップとを備えている。
【0018】
本発明の第三態様によれば、通信装置は、NAT越えを実現し、相手装置との間でP2P通信を確立するための通信(UDP Hole Punchingなど、以下「確立通信」という。)を行う場合に使用されるサーバ(STUN(Simple Traversal of UDP through NATs)サーバなど)を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット(往路アドレスパケット、復路アドレスパケット)に格納される。サーバがNAT装置を介してパケットを受信した場合、パケットのアドレス情報には、NAT装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやNAT装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でNAT通過問題を解消し、相手装置とP2P通信を開始することができる。
【0019】
本発明の第四態様に係る通信方法は、NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムにおいて実行される通信方法であって、前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信ステップと、前記第一送信ステップにおいて前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信ステップと、前記第一送信ステップにおいて前記第一装置が送信し、前記第二送信ステップにおいて前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信ステップと、前記第三送信ステップにおいて前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信ステップと、前記第三送信ステップにおいて前記第二装置が送信し、前記第四送信ステップにおいて前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得ステップと、前記取得ステップによって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップとを備えている。
【0020】
本発明の第四態様によれば、通信装置は、NAT越えを実現し、相手装置との間でP2P通信を確立するための通信(UDP Hole Punchingなど、以下「確立通信」という。)を行う場合に使用されるサーバ(STUN(Simple Traversal of UDP through NATs)サーバなど)を、中継アドレス情報に基づいて選択する。中継アドレス情報は、パケットを中継転送するサーバによって中継パケット(往路アドレスパケット、復路アドレスパケット)に格納される。サーバがNAT装置を介してパケットを受信した場合、パケットのアドレス情報には、NAT装置において変換されたアドレス情報が含まれる。通信装置は、パケットの中継経路上にあるサーバやNAT装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でNAT通過問題を解消し、相手装置とP2P通信を開始することができる。
【0021】
本発明の第五態様に係る通信プログラムは、通信装置の各処理手段としてコンピュータを機能させる。
【図面の簡単な説明】
【0022】
【図1】通信システム1を示す図である。
【図2】P2P通信を開始するための手順を示す図である。
【図3】往路ID情報52を示す図である。
【図4】復路ID情報53を示す図である。
【図5】往路アドレス情報54を示す図である。
【図6】復路アドレス情報55を示す図である。
【図7】比較テーブル56を示す図である。
【図8】通信システム3を示す図である。
【図9】往路アドレス情報72を示す図である。
【図10】復路アドレス情報73を示す図である。
【図11】比較テーブル74を示す図である。
【図12】通信装置11の電気的構成を示すブロック図である。
【図13】サーバ21の電気的構成を示すブロック図である。
【図14】装置メイン処理を示すフローチャートである。
【図15】装置メイン処理を示すフローチャートである。
【図16】選択処理を示すフローチャートである。
【図17】決定処理を示すフローチャートである。
【図18】サーバメイン処理を示すフローチャートである。
【発明を実施するための形態】
【0023】
以下、本発明の一実施の形態である通信装置、及び通信システムについて、図面を参照して説明する。参照する図面は、本発明が採用し得る技術的特徴を説明するために用いられるものである。図面に記載されている装置の構成、各種処理のフローチャート等は、それのみに限定する趣旨ではなく、単なる説明例である。
【0024】
図1を参照し、通信システム1について説明する。通信システムは、通信装置11〜13、サーバ21〜23、NAT装置31〜34を少なくとも備えている。通信装置11〜13は、他の通信装置と通信を行うことができる。通信装置としては、例えばPC等が使用できる。NAT装置31〜34は、NAT(Network Address Translation)機能を備えた装置である。NAT装置31〜34としては、例えばNATルータが使用できる。サーバ21〜23は、プロキシ機能を備えている。またサーバ21〜23は、STUN(Simple Traversal of UDP through NATs)に基づき、通信装置11〜13間で行われる通信を制御できる。STUNは、NAT通過(NAT traversal)の方法の1つとして使われる標準化された通信プロトコルである。サーバ21〜23としては、プロキシサーバやSTUNサーバが使用できる。
【0025】
通信システム1は、NAT装置31〜34で区画された複数のプライベートネットワークを備えている。NAT装置31によって区画されたプライベートネットワークに、通信装置11が接続している。NAT装置33によって区画されたプライベートネットワークに、通信装置12が接続している。NAT装置32によって区画されたプライベートネットワークに、NAT装置31、NAT装置33、及びサーバ21が接続している。NAT装置34によって区画されたプライベートネットワークに、通信装置13とサーバ23とが接続している。サーバ22、NAT装置32、及びNAT装置34は、オープンネットワーク2に直接接続している。
【0026】
図2を参照し、異なる通信装置(「第一装置」「第二装置」という。)間でP2P通信が開始される場合の通信手順について説明する。第一装置と第二装置とは、其々異なるプライベートネットワークに接続されている。第一装置は、次の通信手順に基づき、第二装置とのP2P通信を開始する。
(1)第一装置及び第二装置は、サーバ21〜23のいずれか一つを、STUNサーバとして選択する(S1)。
(2)第一装置及び第二装置は、選択されたサーバに対してUDPパケットを送信する。サーバは、UDPパケットを受信する。サーバは、後述する通信(3)時に使用されるアドレス情報を、受信したパケットの送信元アドレス情報に基づいて特定する。サーバは、第一装置及び第二装置に対して、特定されたアドレス情報を送信する。通信装置は、アドレス情報を受信する(S2)。
(3)第一装置及び第二装置は、サーバから受信したアドレス情報を使用し、相手方の通信装置に対してパケットを送信する。これによって、P2P通信時に使用可能なアドレス情報が、NAT装置に割り当てられる(S3)。
((2)(3)が、通信相手方の通信装置とP2P通信を確立するために必要な通信(以下「確立通信」という。)に相当する。確立通信として、例えばUDP Hole PunchingやUDP Multi Hole Punching等が使用可能である。)
(4)確立通信の後、(3)においてNAT装置に割り当てられたアドレス情報が使用され、第一装置と第二装置との間でP2P通信が開始される(S4)。通信装置から送信されたパケットは、NAT装置においてブロックされることなく、相手方の通信装置に到達する。
【0027】
本実施の形態では、(1)において選択されるサーバを適切に選択することによって、(2)の通信を効率化する。適切なサーバが選択されない場合、(2)の通信においてサーバに伝送されるパケットは、多くのサーバ及びNAT装置を経由することになる。その結果、確立通信に時間を要してしまうので、通信装置は迅速にP2P通信を開始することができない。これに対して本実施の形態では、(1)において最適なサーバを選択することで、(2)の通信に要する時間を短縮できる。このため通信装置は、迅速にP2P通信を開始することができる。以下、(1)におけるサーバの選択方法の詳細について、説明する。
【0028】
第一装置は、第二装置に対してパケットが送信された場合において該パケットが経由するサーバのID情報を取得するために、往路IDパケットを第二装置に対して送信する(S5)。往路IDパケットは、サーバ及びNAT装置を経由する。サーバが往路IDパケットを受信し転送する場合、サーバは、自身のID情報を往路IDパケットに格納する。往路IDパケットは第二装置に到達する。往路IDパケットには、往路で経由したサーバすべてのID情報が格納されていることになる(以下、往路IDパケットの中継転送時に格納されたID情報を、「往路ID情報」という。往路IDパケットが経由した経路を、「往路」という。)。
【0029】
第二装置は、第一装置に対してパケットが送信された場合において該パケットが経由するサーバのID情報を取得するために、復路IDパケットを第一装置に対して送信する(S6)。復路IDパケットには、往路ID情報が格納される。サーバが復路IDパケットを受信し転送する場合、サーバは、自身のID情報を復路IDパケットに格納する。復路IDパケットは第一装置に到達する。復路IDパケットには、復路で経由したサーバすべてのID情報と往路ID情報とが格納されていることになる(以下、復路IDパケットの中継転送時に格納されたID情報を、「復路ID情報」という。復路IDパケットが経由した経路を「復路」という。)。
【0030】
第一装置は、往路上にあるサーバ及びNAT装置のアドレス情報を取得するために、往路アドレスパケットを第二装置に対して送信する(S7)。往路ID情報と復路ID情報とが、往路アドレスパケットに格納される。往路アドレスパケットを転送するサーバは、往路ID情報に基づいて往路を容易に特定できる。
【0031】
往路アドレスパケットは、往路上のサーバ及びNAT装置を経由する。NAT装置は、プライベートネットワーク側から往路アドレスパケットを受信した場合、往路アドレスパケットの送信元IPアドレスを変換して転送する。サーバは、往路アドレスパケットを受信した場合、往路アドレスパケットの送信元IPアドレスと、自身のローカルアドレスとを、往路アドレスパケットに格納する。往路アドレスパケットは、第二装置に到達する。往路アドレスパケットには、往路上にあるサーバ及びNAT装置のアドレス情報、往路ID情報、及び復路ID情報が格納されていることになる(以下、往路アドレスパケットの中継転送時に格納されたアドレス情報を、「往路アドレス情報」という。)
【0032】
第二装置は、復路上にあるサーバ及びNAT装置のアドレス情報を取得するために、復路アドレスパケットを第一装置に対して送信する(S8)。往路アドレス情報と復路ID情報とが、復路アドレス情報に格納される。復路アドレスパケットを転送するサーバは、復路ID情報に基づいて復路を容易に特定できる。
【0033】
復路アドレスパケットは、復路上のサーバ及びNAT装置を経由する。NAT装置は、プライベートネットワーク側から復路アドレスパケットを受信した場合、復路アドレスパケットの送信元IPアドレスを変換して転送する。サーバは、復路アドレスパケットを受信した場合、復路アドレスパケットの送信元IPアドレスと、自身のローカルアドレスとを、復路アドレスパケットに格納する。復路アドレスパケットは、第一装置に到達する。復路アドレスパケットには、復路上にあるサーバ及びNAT装置のアドレス情報、往路アドレス情報、及び復路ID情報が格納されていることになる(以下、復路アドレスパケットの中継転送時に格納されたアドレス情報を、「復路アドレス情報」という。)
【0034】
第一装置は、受信した往路アドレス情報と復路アドレス情報とに基づいて、サーバを選択する(S9)。通信装置は、中継経路上に介在するNAT装置が極力少なくなるように、サーバを選択する。NAT装置は、パケットを転送する場合に、送信元IPアドレスを変換する。一のサーバがパケットを送信し、他のサーバがこのパケットを受信した場合、これらのサーバ間にNAT装置が介在すると、他のサーバが受信したパケットの送信元アドレスは、一のサーバのローカルアドレスと異なる。第一装置は、受信した往路アドレス情報及び復路アドレス情報(以下、往路アドレス情報と復路アドレスとを総称して「中継アドレス情報」ともいう。)を参照する。通信装置は、中継アドレス情報のうち相違するアドレス情報を抽出し、NAT装置が経路上に介在しているか否かを判断する。通信装置は、極力NAT装置が介在しない経路をパケットが伝送されるように、サーバを選択する。通信装置は、選択されたサーバを確立通信時に使用することで、NAT装置が極力介在しない最短経路を介して確立通信を実行できる。通信装置は、より短時間で迅速に相手方の通信装置とのP2P通信を開始できる。
【0035】
なお上述では、IDパケット(往路IDパケット及び復路IDパケット)とアドレスパケット(往路アドレスパケット及び復路アドレスパケット)とを使用することによって、ID情報(往路ID情報、復路ID情報)とアドレス情報(往路アドレス情報、復路アドレス情報)とを取得し、サーバを選択していた。本発明はこの方法に限定されない。例えば、ID情報とアドレス情報とを同時に取得するパケット(往路パケット、復路パケット)を使用することによって、サーバを選択してもよい。往路パケットを使用することで、往路ID情報及び往路アドレス情報を取得し、復路パケットを使用することで、復路ID情報及び復路アドレス情報を取得してもよい。これによって、サーバを選択するまでに要する時間をさらに短縮できる。
【0036】
第一装置は、選択されたことを通知するための通知パケットを、選択されたサーバに送信する。通知パケットには、確立通信を行う相手方の通信装置(第二装置)のIPアドレスが格納される。サーバは、通知パケットを受信する。サーバは、確立通信時に使用されるポート番号を決定する。サーバは、自身のIPアドレスと、決定したポート番号とを通知応答パケットに格納する。通知応答パケットは、第一装置及び第二装置に対して送信される。第一装置及び第二装置は、通知応答パケットを受信する(S10)。第一装置及び第二装置は、通知応答パケットに格納されたIPアドレス及びポート番号を使用し、確立通信を開始する(S2)。第一装置は、通知されたポート番号を使用して確立通信を開始できる。第二装置は、通知されたIPアドレス及びポート番号に従い、確立通信を開始できる。第二装置は、自身がサーバを選択するための処理を行わずに済むので、容易に確立通信を実行できる。また、確立通信時に使用されるサーバが、第一装置と第二装置とで常に同一となるので、通信装置は確実に確立通信を実行できる。
【0037】
図1、図3〜7を参照し、サーバが選択される様子について説明する。通信装置11が第一装置に相当する。通信装置13が第二装置に相当する。通信装置11は、自身のID情報「11」を、送信元IDとして往路IDパケットに格納する(図3参照)。通信装置11は、通信装置13に対して往路IDパケットを送信する。送信された往路IDパケットは、NAT装置31を通過し、サーバ21において受信される。サーバ21は、自身のID情報「21」を、ローカルIDとして往路IDパケットに格納する(図3参照)。サーバ21は、自身のID「21」を、送信元IDとして往路IDパケットに格納する(図3参照)。サーバ21は、往路IDパケットをサーバ22に対して送信する。送信された往路IDパケットは、NAT装置32を通過し、サーバ22において受信される。以上の通信を繰り返すことで、通信装置11から送信された往路IDパケットは、NAT装置31、サーバ21、NAT装置32、サーバ22、NAT装置34、及びサーバ23を経由し、通信装置13において受信される。中継経路は、サーバ21〜23において決定される。通信装置13において受信された往路IDパケットには、往路ID情報52(図3参照)が往路ID情報として格納されている。
【0038】
通信装置13は、通信装置11に対して復路IDパケットを送信する。復路IDパケットには、往路ID情報52(図3参照)が格納される。送信された復路IDパケットは、サーバ23、NAT装置34、サーバ22、NAT装置32、サーバ21、及びNAT装置31を経由し、通信装置11において受信される。通信装置11において受信された復路IDパケットには、復路ID情報53(図4参照)が復路ID情報として格納されている。また復路IDパケットには、往路ID情報52(図3参照)が往路ID情報として格納されている。
【0039】
次いで通信装置11は、通信装置13に対して往路アドレスパケットを送信する。往路アドレスパケットには、往路ID情報52(図3参照)と復路ID情報53(図4参照)とが格納される。サーバは、格納された往路ID情報52に基づき、往路アドレスパケットの転送先を決定する。往路アドレスパケットは、サーバ間を順番に中継転送される。
【0040】
往路アドレスパケットは、NAT装置31を通過する。NAT装置31は、往路アドレスパケットの送信元IPアドレスを、通信装置11のローカルIPアドレス「192.168.1.1」から「192.168.3.1」に変換する。サーバ21は、往路アドレスパケットを受信する。サーバ21は、往路アドレスパケットの送信元IPアドレス「192.168.3.1」を、送信元IPアドレスとして往路アドレスパケットに格納する(図5参照)。サーバ21は、自身のローカルIPアドレス「192.168.3.2」を、ローカルIPアドレスとして往路アドレスパケットに格納する(図5参照)。サーバ21は、往路アドレスパケットをサーバ22に対して送信する。送信された往路アドレスパケットは、NAT装置32を通過する。NAT装置32は、往路アドレスパケットの送信元IPアドレスを、サーバ21のローカルIPアドレス「192.168.3.2」から「10.10.10.1」に変換する。サーバ22は、往路アドレスパケットを受信する。以上の処理を繰り返すことで、通信装置11から送信された往路アドレスパケットは、往路ID情報52にて示されたIDの順番「NAT装置31、サーバ21、NAT装置32、サーバ22、NAT装置34、サーバ23」でサーバを経由する。往路アドレスパケットは、通信装置13において受信される。通信装置13において受信された往路アドレスパケットには、往路アドレス情報54(図5参照)が往路アドレス情報として格納されている。また往路アドレスパケットには、往路ID情報52(図3参照)及び復路ID情報53(図4参照)が格納されている。
【0041】
次いで通信装置13は、通信装置11に対して復路アドレスパケットを送信する。復路アドレスパケットには、復路ID情報53(図4参照)と、往路アドレス情報54(図5参照)とが格納される。復路アドレスパケットは、格納された復路ID情報53に基づき、サーバ間を順番に中継転送される。復路アドレスパケットは、サーバ23、NAT装置34、サーバ22、NAT装置32、サーバ21、及びNAT装置31を経由し、通信装置11において受信される。通信装置11において受信された復路アドレスパケットには、復路アドレス情報55(図6参照)が復路アドレス情報として格納されている。また復路アドレスパケットには、往路アドレス情報54(図5参照)、及び復路ID情報53(図4参照)が格納されている。
【0042】
通信装置11において、中継アドレス情報(往路アドレス情報54(図5参照)、及び復路アドレス情報55(図6参照))が参照される。通信装置11は、中継アドレス情報のうち同一のID情報(送信元ID、ローカルID)に対応付けられるアドレス情報(送信元IPアドレス、ローカルIPアドレス)を往路/復路毎に比較し、双方が一致するかを判断する。判断結果は、RAM43(図12参照)に記憶した比較テーブル56(図7参照)に格納される。例えば、往路アドレス情報54のうち、同一のID情報「21」に対応付けられているIPアドレス「192.168.3.2」「10.10.10.1」は異なっている。比較テーブル56の「21−往路」には、結果が相違することを示す「×」が示されている。同一のID情報「22」に対応付けられているアドレス情報「30.30.30.1」は一致する。比較テーブル56の「22−往路」には、結果が一致することを示す「○」が示されている。同一のID情報「23」に対応付けられているアドレス情報「192.167.4.1」は一致する。比較テーブルの「23−往路」には、結果が一致することを示す「○」が示されている。同様の判断が、復路アドレス情報55を参照して実行される。結果、比較テーブル56(図7参照)が作成される。
【0043】
比較テーブル56(図7参照)の結果に基づいて、サーバが選択される。比較テーブル56のうち、往路及び復路とも比較結果が「○」である場合、優先順位「1」が設定される。往路及び復路とも比較結果が「×」である場合、優先順位「2」が設定される。往路「○」であり復路「×」であるか、往路「×」であり復路「○」である場合、優先順位「3」が設定される。往路及び復路とも比較結果が「○」である場合、対応するサーバは、通信装置間を結ぶ最短経路上に接続されており、且つ、通信装置が接続するプライベートネットワークの外側にある。従って、確立通信時に使用されるサーバとして最も適している。往路及び復路の両方の比較結果が「×」である場合、対応するサーバは通信装置間を結ぶ最短経路上に接続されていないが、通信装置が接続するプライベートネットワークの外側にある。従って、確立通信時に使用されるサーバとして使用することができる。往路及び復路のいずれかの比較結果が「×」である場合、対応するサーバは、通信装置が接続するプライベートネットワークの内側にある。従って、確立通信時に使用されるサーバとしては適していない。
【0044】
比較テーブル56では、ID情報22に優先順位「1」が設定されている。ID情報21及び23に優先順位「3」が設定されている。最も優先順位の高いID情報22のサーバが、確立通信時に使用されるサーバとして選択される。サーバ22を選択することで、確立通信時においてパケットが経由する経路上のNAT装置を極力少なくできる。第一装置及び第二装置は、選択されたサーバを確立通信時に使用することで、より効率的に確立通信を実行できる。第一装置及び第二装置は迅速にP2P通信を開始できる。
【0045】
図8〜図11を参照し、通信システム3においてサーバが選択される様子について説明する。図8では、図1の通信システム1に加え、サーバ24とNAT装置35とを備えている。サーバ24は、NAT装置35によって区画されたプライベートネットワークに接続されている。NAT装置35は、オープンネットワーク2に接続されている。その他の構成は、図1の通信システム1と同一である。
【0046】
通信装置11を第一装置とし、通信装置13を第二装置とした場合を想定する。通信装置11と通信装置13との間で、往路/復路IDパケット、及び往路/復路アドレスパケットの通信が実行される。通信装置11から通信装置13に対してパケット(往路IDパケット、往路アドレスパケット)が送信される場合、パケットは、NAT装置31、サーバ21、NAT装置32、サーバ22、NAT装置35、サーバ24、NAT装置35、NAT装置34、及びサーバ23を経由する。中継経路は、サーバ21〜24において決定される。通信装置11では、中継アドレス情報(往路アドレス情報72(図9参照)、及び復路アドレス情報73(図10参照))が中継アドレス情報として取得される。取得された中継アドレス情報に基づいて、比較テーブル74(図11参照)が作成され、優先順位が設定される。最も優先順位の高いID情報22のサーバが、確立中通信時に使用されるサーバとして選択される。
【0047】
通信システム3(図8参照)において、通信装置11と通信装置13との確立通信時に使用されるサーバとしてサーバ24が選択されたとする。この場合、通信装置11と通信装置13との間で送受信されるパケットは、NAT装置31、サーバ21、NAT装置32、NAT装置35、サーバ24、NAT装置35、NAT装置34、及びサーバ23の経路を経由する。サーバ22が選択された場合と比較して、経由するNAT装置の数が大きくなる。これに対して本実施の形態では、確立通信時に使用されるサーバとしてサーバ22が選択される。これによって、確立通信時のパケットが経由するNAT装置の数を小さくできる。確立通信に要する時間を短縮できるので、通信装置は、迅速にP2P通信を開始できる。
【0048】
同様に、例えば通信装置11と通信装置12との間でP2P通信が実行される場合を想定する。確立通信時に使用されるサーバとしてサーバ22が選択されると、通信時に経由するサーバ及びNAT装置の数が大きくなる(NAT装置31、サーバ21、NAT装置32、サーバ22、NAT装置32、サーバ21、NAT装置33)。これに対し本実施の形態では、確立通信時に使用されるサーバとしてサーバ21が選択される。これによって、確立通信時のパケットが経由するサーバ及びNAT装置の数を小さくできる(NAT装置31、サーバ21、NAT装置33)。
【0049】
図12を参照し、通信装置11の電気的構成について説明する。通信装置11〜13の電気的構成は同一である。通信装置11は、通信装置11の制御を司るCPU41を備えている。ROM42、RAM43、HDD44は、バスを介してCPU41と電気的に接続している。ROM42には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM43は、CPU21の処理時に必要なデータを一時的に記憶する。HDD44は、CPU21のプログラムが少なくとも記憶される。
【0050】
入力ドライバ45、表示ドライバ46、通信モジュール47、及びディスクドライブ48が、バスを介してCPU41と接続している。入力ドライバ45は、キーボード49を介して入力された情報を検出する。CPU41は、キーボード49を介して入力された情報を認識できる。表示ドライバ46は、ディスプレイ50に像を表示させるための制御を行う。CPU41は、ディスプレイ50に所望の像を表示させることができる。通信モジュール47は、オープンネットワーク2やプライベートネットワークを介して通信を行う場合の同期制御等を行う。CPU41は、通信モジュール47を介して外部と通信を行うことができる。ディスクドライブ48は、記憶媒体51に記憶された情報にアクセスする為の駆動装置である。CPU41は、ディスクドライブ48に挿入された記憶媒体51に記憶された情報にアクセスできる。記憶媒体51には、例えば、CPU41が実行するプログラムが記憶される。プログラムのインストール時、プログラムは記憶媒体51から読み出され、HDD44に記憶される。
【0051】
図13を参照し、サーバ21の電気的構成について説明する。サーバ21〜23の電気的構成は同一である。サーバ21は、サーバ21の制御を司るCPU61を備えている。ROM62、RAM63、HDD64は、バスを介してCPU61と電気的に接続している。ROM62には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM63には、CPU61の処理時に必要なデータを一時的に記憶する。HDD64は、CPU61のプログラムが少なくとも記憶される。
【0052】
入力ドライバ65、表示ドライバ66、通信モジュール67、及びディスクドライブ68が、バスを介してCPU61と接続している。入力ドライバ65は、キーボード69を介して入力された情報を検出する。CPU61は、キーボード69を介して入力された情報を認識できる。表示ドライバ66は、ディスプレイ70に像を表示させるための制御を行う。CPU61は、ディスプレイ70に所望の像を表示させることができる。通信モジュール67は、オープンネットワーク2やプライベートネットワークを介して通信を行う場合の同期制御等を行う。CPU61は、通信モジュール67を介して外部と通信を行うことができる。ディスクドライブ68は、記憶媒体71に記憶された情報にアクセスする為の駆動装置である。CPU61は、ディスクドライブ68に挿入された記憶媒体71に記憶された情報にアクセスできる。記憶媒体71には、例えば、CPU61が実行するプログラムが記憶される。プログラムのインストール時、プログラムは記憶媒体71から読み出され、HDD64に記憶される。
【0053】
図14から図17を参照し、通信装置11〜13のCPU41において実行される装置メイン処理について説明する。装置メイン処理は、通信装置11〜13の電源が投入された状態で、CPU41によって起動され実行される。以下では、第一装置と第二装置とがP2P通信を開始する場合を想定する。第一装置のCPU41において実行される処理について説明する。
【0054】
装置メイン処理が起動されると、第二装置とのP2P通信を開始する指示が、キーボード49を介してユーザによって入力されたかが判断される(S11)。P2P通信を開始する指示が入力された場合(S11:YES)、自身のID情報が往路IDパケットに格納される(S13)。第二装置に対して、往路IDパケットが送信される(S15)。往路IDパケットが送信された後、第二装置から返信される復路IDパケットを受信したかがが判断される(S33)。復路IDパケットが受信された場合(S33:YES)、復路IDパケットに含まれている往路ID情報と復路ID情報とが抽出される。抽出された往路ID情報と復路ID情報とが、往路アドレスパケットに格納される(S35)。第二装置に対して、往路アドレスパケットが送信される(S37)。そしてS33の処理に戻る。
【0055】
往路アドレスパケットを送信した後、第二装置から送信される復路アドレスパケットを受信した場合(S33:NO、S39:YES)、復路アドレス情報に含まれている中継アドレス情報が抽出される(S41)。抽出された中継アドレス情報に基づいてサーバを選択する処理(選択処理、図16参照)が実行される(S43)。
【0056】
図16を参照し、選択処理について説明する。選択処理では、中継アドレス情報(図5、図6、図9、図10参照)のうちID情報とIPアドレスとが、往路/復路毎に対応付けられる。ID情報毎に以下の判断が実行される。判断されていないID情報があるかが判断される(S51)。判断されていないID情報がある場合(S51:YES)、判断されていないID情報のうち一が選択される。選択されたID情報に対応する複数のIPアドレスが比較される(S53)。比較結果は、RAM43に展開した比較テーブル(図7、図11参照)に格納される。比較の結果、複数のIPアドレスが一致した場合(S55:YES)、IPアドレスが一致したことを示す情報(以下では「○」と示す。)が、比較テーブルに格納される(S57)。そしてS51の処理に戻る。複数のIPアドレスが相違した場合(S55:NO)、IPアドレスが一致しないことを示す情報(以下では「×」と示す。)が、比較テーブルに格納される(S59)。そしてS51の処理に戻る。S51〜S59の処理が繰り返され、すべてのID情報に対応するIPアドレスが判断された場合(S51:NO)、作成された比較テーブルに基づき、選択されるサーバを決定する処理(決定処理、図17参照)が実行される(S61)。
【0057】
図17を参照し、決定処理について説明する。決定処理では、選択処理(図16参照)における判断結果が、ID情報毎に判断される。判断されていないID情報があるかが判断される(S65)。判断されていないID情報がある場合(S65:YES)、判断されていないID情報のうち一が選択される。比較テーブル(図7、図11参照)のうち、選択されたID情報に対応する判断結果が参照される。往路の判断結果と復路の判断結果との両方がともに「○」である場合、(S67:YES)、優先順位「1」が比較テーブルに格納される(S69)。そしてS65の処理に戻る。比較テーブルのうち、往路の判断結果と復路の判断結果とがともに「×」である場合(S67:NO、S70:YES)、優先順位「3」が比較テーブルに格納される(S71)。そしてS65の処理に戻る。往路の判断結果と復路の判断結果とのうち一方が「○」であり、他方が「×」である場合(S70:NO)、優先順位「2」が比較テーブルに格納される(S73)。そしてS65の処理に戻る。すべてのID情報に対応する判断結果が判断された場合(S65:NO)、決定処理処理を終了し、選択処理(図16参照)に戻る。図16に示すように、決定処理(S61)の終了後、比較テーブルに格納された優先順位のうち最も高い順位に対応付けられているID情報が抽出される。抽出されたID情報に対応するサーバが選択される(S63)。そして選択処理を終了し、装置メイン処理(図14参照)に戻る。
【0058】
装置メイン処理では、選択処理(S43)の終了後、第二装置のIPアドレスが、通知パケットに格納される。選択されたサーバに対して通知パケットが送信される(S45)。そしてS33の処理に戻る。通知パケットを送信した後、サーバから返信される通知応答パケットを受信した場合(S39:NO、S47:YES)、受信した通知応答パケットに含まれているポート番号が抽出される。抽出されたポート番号は、確立通信時にサーバと通信を行う場合に通信装置が使用可能な、サーバのポート番号である。選択処理(S43)において選択されたサーバのIPアドレスと、通知応答パケットから抽出されたポート番号は、RAM43に記憶される(S49)。記憶されたIPアドレスとポート番号とを使用し、サーバと通信を行うことで、確立通信が実行される(S50)。そして装置メイン処理を終了する。
【0059】
一方、S11の処理において、第二装置とのP2P通信を開始する指示が入力されなかった場合(S11:NO)、S17の処理(図15参照)に移行する。図15に示すように、第二装置から送信された往路IDパケットを受信したかが判断される(S17)。往路IDパケットを受信した場合(S17:YES)、往路IDパケットに含まれている往路ID情報が抽出される。抽出された往路ID情報が、復路IDパケットに格納される。自身のID情報が、復路IDパケットに復路ID情報として格納される(S19)。第二装置に対して、復路IDパケットが送信される(S21)。そしてS11(図14参照)の処理に戻る。
【0060】
往路アドレスパケットを受信した場合(S17:NO、S23:YES)、往路アドレスパケットに含まれている往路ID情報、復路ID情報、及び往路アドレス情報が抽出される。抽出された復路ID情報と往路アドレス情報とが、復路アドレスパケットに格納される(S25)。第二装置に対して、復路アドレスパケットが送信される(S27)。そしてS11(図14参照)の処理に戻る。
【0061】
サーバから送信される通知パケットを受信した場合(S23:NO、S29:YES)、通知パケットに含まれているIPアドレスとポート番号とが抽出される。抽出されたIPアドレスとポート番号とは、確立通信時にサーバと通信を行う場合に通信装置が使用可能な、サーバのIPアドレス及びポート番号である。抽出されたIPアドレス及びポート番号は、RAM43に記憶される(S31)。記憶されたIPアドレスとポート番号とを使用し、サーバと通信を行うことで、確立通信が実行される(S32)。そして装置メイン処理に戻る。
【0062】
図18を参照し、サーバ21〜23のCPU61において実行されるサーバメイン処理について説明する。サーバメイン処理は、サーバ21〜23の電源が投入された状態で、CPU61によって起動され実行される。以下では、第一装置が往路IDパケットを送信することで、第一装置と第二装置とが通信を開始したことを想定する。
【0063】
図18に示すように、サーバメイン処理では、第一装置から送信された往路アドレスパケットを受信したかが判断される(S75)。第一装置から送信された往路アドレスパケットを受信した場合(S75:YES)、往路アドレスパケットの送信元IPアドレスが、往路アドレス情報(送信元IPアドレス)として往路アドレスパケットに格納される。自身のローカルIPアドレスが、往路アドレス情報(ローカルIPアドレス)として往路アドレスパケットに格納される(S79)。往路アドレスパケットを第二装置に転送するために、往路アドレスパケットが送信される(S81)。往路アドレスパケットの中継経路は、受信した往路アドレスパケットに格納されている往路ID情報を参照することで決定される。そしてS75の処理に戻る。
【0064】
復路アドレスパケットが受信された場合(S75:NO、S77:YES)、復路アドレスパケットの送信元アドレスが、復路アドレス情報(送信元IPアドレス)として復路アドレスパケットに格納される。自身のローカルIPアドレスが、復路アドレス情報(ローカルIPアドレス)として復路アドレスパケットに格納される(S79)。復路アドレスパケットを第一装置に転送するために、復路アドレスパケットが送信される(S81)。復路アドレスパケットの中継経路は、受信した復路アドレスパケットに格納されている復路ID情報を参照することで決定される。そしてS75の処理に戻る。
【0065】
往路IDパケットが受信された場合(S77:NO、S83:YES)、自身のID情報が往路ID情報として往路IDパケットに格納される(S87)。往路IDパケットを第二装置に転送するために、往路IDパケットが送信される(S89)。そしてS75の処理に戻る。復路IDパケットを受信した場合(S83:NO、S85:YES)、自身のID情報が復路ID情報として復路IDパケットに格納される(S87)。復路IDパケットを第一装置に転送するために、復路IDパケットが送信される(S89)。そしてS75の処理に戻る。
【0066】
通知パケットが受信された場合(S85:NO、S91:YES)、受信した通知パケットが、第一装置から自身宛に送信されたものであるかが判断される(S95)。通知パケットが自身宛に送信されている場合(S95:YES)、第一装置と第二装置との間で確立通信が実行される場合のサーバとして、自身が選択されていることになる。通知パケットに格納されている第二装置のIPアドレスが抽出される。第一装置と第二装置との間の確立通信時に使用されるポート番号が決定される。決定されたポート番号と、自身のIPアドレスとが、通知応答パケットに格納される(S99)。通知応答パケットは、通知パケットを送信した第一装置に対して送信される。通知応答パケットは、通知パケットから抽出した第二装置のIPアドレスに基づき、第二装置に対して送信される(S101)。そしてS75の処理に戻る。
【0067】
通知パケットが受信されていない場合(S91:NO)、別のサーバから送信された通知応答パケットを受信したかが判断される(S93)。通知応答パケットを受信した場合(S93:YES)、受信した通知応答パケットを、第一装置又は第二装置に対して転送する(S97)。そしてS75の処理に戻る。通知応答パケットを受信していない場合(S93:NO)、そのままS75の処理に戻る。
【0068】
以上説明したように、通信装置は、確立通信を行う場合に使用されるサーバを、中継アドレス情報に基づいて選択する。通信装置は、パケットの中継経路上にあるサーバやNAT装置の配置を、取得した中継アドレス情報に基づいて認識できる。通信装置は、認識されたサーバの配置に基づいて、より効率的に確立通信を実現するためのサーバを選択できる。通信装置は、より短時間で確立通信を実行できる。通信装置は、短時間でNAT通過問題を解消し、相手装置とP2P通信を開始することができる。
【0069】
通信装置は、サーバ間でのパケット中継転送時にNAT装置が介在するか否かを認識でき、NAT装置が極力介在しないサーバを優先的に選択できる。これによって通信装置は、NAT装置を極力介在させずに確立通信を行うことができる。結果として通信装置は、NAT装置が介在しない最短経路を選択することができるので、確立通信時にパケットが経由するNAT装置の数を極力抑制することができる。通信装置は、より短時間でNAT通過問題を解消できる。
【0070】
なお、上述した通信装置11〜13が実行可能な各処理のうち、図14のS37の処理を行うCPU41が本発明の「第一送信手段」に相当し、S39の処理を行うCPU41が本発明の「第一受信手段」に相当し、S41の処理を行うCPU41が本発明の「第一取得手段」に相当し、S43の処理を行うCPU41が本発明の「選択手段」に相当し、S50の処理を行うCPU41が本発明の「通信手段」に相当し、S45の処理を行うCPU41が本発明の「第二送信手段」に相当し、S47の処理を行うCPU41が本発明の「第二受信手段」に相当し、S15の処理を行うCPU41が本発明の「第三送信手段」に相当し、S33の処理を行うCPU41が本発明の「第三受信手段」に相当し、S35の処理を行うCPU41が本発明の「第二取得手段」に相当する。図14のS37の処理が本発明の「第一送信ステップ」に相当し、S39の処理が本発明の「第一受信ステップ」に相当し、S41の処理が本発明の「第一取得ステップ」に相当し、S43の処理が本発明の「選択ステップ」に相当し、S50の処理が本発明の「通信ステップ」に相当し、S45の処理が本発明の「第二送信ステップ」に相当し、S47の処理が本発明の「第二受信ステップ」に相当し、S15の処理が本発明の「第三送信ステップ」に相当し、S33の処理が本発明の「第三受信ステップ」に相当し、S35の処理が本発明の「第二取得ステップ」に相当する。
【0071】
上述した通信システム1,3が実行可能な各処理のうち、図10のS37の処理を行う通信装置11〜13のCPU41が本発明の「第一送信手段」に相当し、図14のS81の処理を行うサーバ21〜24のCPU61が本発明の「第二送信手段」「第四送信手段」に相当し、図11のS27の処理を行う通信装置11〜13のCPU41が本発明の「第三送信手段」に相当し、図10のS41の処理を行う通信装置11〜13のCPU41が本発明の「取得手段」に相当し、S43の処理を行う通信装置11〜13のCPU41が本発明の「選択手段」に相当し、S32の処理を行う通信装置11〜13のCPU41が本発明の「通信手段」に相当する。図10のS37の処理が本発明の「第一送信ステップ」に相当し、図14のS81の処理が本発明の「第二送信ステップ」「第四送信ステップ」に相当し、図11のS27の処理が本発明の「第三送信ステップ」に相当し、図10のS41の処理が本発明の「取得ステップ」に相当し、S43の処理が本発明の「選択ステップ」に相当し、S32の処理が本発明の「通信ステップ」に相当する。
【0072】
なお、本発明は上記実施形態に限定されるものではなく、種々の変更が可能である。上述の実施の形態では、往路アドレス情報と復路アドレス情報との両方に基づいて、確立通信時に使用されるサーバを選択していた。本発明はこの方法に限定されない。往路アドレス情報及び復路アドレス情報のうち少なくとも一方の情報に基づいて、サーバを選択してもよい。
【0073】
上述の実施の形態では、往路IDパケット及び復路IDパケットの通信によって、往路/復路の経路上にあるサーバのID情報を取得していた。取得したID情報(往路ID情報及び復路ID情報)に基づいて、サーバは往路アドレスパケット及び復路アドレスパケットを中継していた。本発明はこの方法に限定されない。サーバは、TCP/IPヘッダに格納されている送信先アドレス情報に基づいて、往路アドレスパケット及び復路アドレスパケットを中継してもよい。
【0074】
上述の実施の形態では、作成された比較テーブルの優先順位が「1」であるサーバを、確立通信時に使用するサーバとして選択していた。優先順位「1」であるサーバが存在しない場合には、優先順位の高い順に、確立通信時に使用されるサーバが選択されてもよい。選択されたサーバを使用しても確立通信が実行できない(確立通信に失敗した)場合、次に優先順位の高いサーバが順次選択され、確立通信が試みられてもよい。
【0075】
上述の実施の形態では、往路IDパケットを送信した通信装置(第一装置)において比較テーブルが作成され、確立通信時に使用されるサーバが選択された。本発明はこの方法に限定されない。例えば、往路アドレス情報を受信した通信装置(第二装置)において、往路アドレス情報に基づいて比較テーブルが作成されてもよい。作成された比較テーブルは、復路アドレスパケットに格納され、第一装置に対して送信されてもよい。第一装置では、復路アドレス情報に基づいて比較テーブルが作成されてもよい。第一装置では、作成された比較テーブルと、受信した復路アドレスパケットに格納されていた比較テーブルに基づいて、確立通信時に使用されるサーバが選択されてもよい。
【符号の説明】
【0076】
1,3 通信システム
11,12,13 通信装置
21,22,23,24 サーバ
41,61 CPU
31,32,33,34,35 NAT装置

【特許請求の範囲】
【請求項1】
NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置であって、
前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信手段と、
前記第一送信手段によって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信手段と、
前記第一受信手段によって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得手段と、
前記第一取得手段によって取得された前記中継アドレス情報に基づいて、前記相手装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、
前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段と
を備えた通信装置。
【請求項2】
前記中継アドレス情報は、
前記サーバが付加する情報であって、前記第一パケット又は前記第二パケットを前記サーバが受信した場合の前記パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを少なくとも含み、
前記送信元アドレス情報は、
前記NAT装置が転送した前記第一パケット又は前記第二パケットを前記サーバが受信した場合には、前記NAT装置が前記パケットに送信元アドレスとして割り当てた前記アドレス情報であり、
前記ローカルアドレス情報は、
前記サーバが直接接続する前記ネットワーク上でのアドレス情報であり、
前記選択手段は、
一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に他の前記サーバによって付加された前記送信元アドレス情報とが一致する場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択することを特徴とする請求項1に記載の通信装置。
【請求項3】
前記選択手段は、
前記往路アドレス情報のうち、一の前記サーバによって付加された前記ローカルアドレス情報と、一の前記サーバによって中継転送された前記パケットを他の前記サーバが受信した場合に前記他のサーバによって付加された前記送信元アドレス情報とが一致し、且つ、前記復路アドレス情報のうち、他の前記サーバによって付加された前記ローカルアドレス情報と、他の前記サーバによって中継転送された前記パケットを一の前記サーバが受信した場合に一の前記サーバによって付加された前記送信元アドレス情報とが一致した場合に、一致するとされた前記ローカルアドレス情報及び前記送信元アドレス情報によって特定される前記サーバを優先的に選択することを特徴とする請求項2に記載の通信装置。
【請求項4】
前記選択手段によって選択された前記サーバの前記アドレス情報を、前記サーバを介して前記相手装置に送信する第二送信手段をさらに備えたことを特徴とする請求項1から3のいずれかに記載の通信装置。
【請求項5】
前記第二送信手段によって送信された前記アドレス情報に応じ、前記選択手段によって選択された前記サーバから返信される応答情報であって、前記確立通信時に必要なポート番号を少なくとも含む前記応答情報を受信する第二受信手段を更に備えたことを特徴とする請求項4に記載の通信装置。
【請求項6】
前記相手装置に対して送信されたパケットが経由する前記サーバのID情報である往路ID情報を取得するための第三パケットを、前記サーバを介して前記相手装置に送信する第三送信手段と、
前記第三送信手段によって送信された前記第三パケットに応じ、前記相手装置から返信されるパケットであって、前記往路ID情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバの前記ID情報である復路ID情報を取得するためのパケットである第四パケットを受信する第三受信手段と
前記第三受信手段によって受信された前記第四パケットから、前記往路ID情報と前記復路ID情報とを少なくとも含む前記中継ID情報を取得する第二取得手段と
を備え、
前記第一送信手段は、
前記第二取得手段によって取得された中継ID情報を少なくとも含む前記第一パケットを送信することを特徴とする請求項に1から5のいずれかに記載の通信装置。
【請求項7】
NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムであって、
前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信手段と、
前記第一送信手段において前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信手段と、
前記第一送信手段において前記第一装置が送信し、前記第二送信手段において前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信手段と、
前記第三送信手段において前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信手段と、
前記第三送信手段において前記第二装置が送信し、前記第四送信手段において前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得手段と、
前記取得手段によって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択手段と、
前記選択手段によって選択された前記サーバを介し、前記確立通信を行う通信手段と
を備えた通信システム。
【請求項8】
NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続し、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である相手装置と通信を行う通信装置において実行される通信方法であって、
前記相手装置に対して送信されたパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するための第一パケットを、前記サーバを介して前記相手装置に対して送信する第一送信ステップと、
前記第一送信ステップによって送信された前記第一パケットに応じ、前記相手装置から返信されるパケットであって、前記往路アドレス情報を少なくとも含み、前記相手装置から送信されるパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットである第二パケットを受信する第一受信ステップと、
前記第一受信ステップによって受信された前記第二パケットから、前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する第一取得ステップと、
前記第一取得ステップによって取得された前記中継アドレス情報に基づいて、前記相手装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、
前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップと
を備えた通信方法。
【請求項9】
NAT(Network Address Translation)装置によって区画されたプライベートネットワーク内に接続する通信装置である第一装置が、複数のサーバを介して、他の前記プライベートネットワーク内に接続する他の通信装置である第二装置と通信を行う通信システムにおいて実行される通信方法であって、
前記第一装置が前記第二装置に対して送信したパケットが経由する前記サーバ及び前記NAT装置のアドレス情報である往路アドレス情報を取得するためのパケットである第一パケットを、前記第一装置が前記サーバを介して前記第二装置に対して送信する第一送信ステップと、
前記第一送信ステップにおいて前記第一装置から送信された前記第一パケットを前記サーバが受信した場合に、前記サーバが、前記第一パケットの送信元アドレス情報と、前記サーバ自身のローカルアドレス情報とを前記往路アドレス情報として前記第一パケットに付加し、前記第二装置に対して前記第一パケットを中継転送するために送信する第二送信ステップと、
前記第一送信ステップにおいて前記第一装置が送信し、前記第二送信ステップにおいて前記サーバが中継転送した前記第一パケットを前記第二装置が受信した場合に、前記第二装置が送信したパケットが経由する前記サーバ及び前記NAT装置の前記アドレス情報である復路アドレス情報を取得するためのパケットであって、前記往路アドレス情報が付加された第二パケットを、前記第二装置が前記第一装置に対して送信する第三送信ステップと、
前記第三送信ステップにおいて前記第二装置から送信された前記第二パケットを前記サーバが受信した場合に、前記サーバが、前記第二パケットの送信元アドレス情報と前記サーバ自身のローカルアドレス情報とを前記復路アドレス情報として前記第二パケットに付加し、前記第一装置に対して前記第二パケットを中継転送するために送信する第四送信ステップと、
前記第三送信ステップにおいて前記第二装置が送信し、前記第四送信ステップにおいて前記サーバが中継転送した前記第二パケットを前記第一装置が受信した場合に、前記第一装置が、前記第二パケットに付加されている前記往路アドレス情報と前記復路アドレス情報とを少なくとも含む中継アドレス情報を取得する取得ステップと、
前記取得ステップによって取得された前記中継アドレス情報に基づいて、前記第一装置が前記第二装置とのP2P(Peer to Peer)通信を確立するために必要な通信である確立通信を実行するために使用されるサーバを、前記第一パケット及び前記第二パケットが経由した前記サーバの中から選択する選択ステップと、
前記選択ステップによって選択された前記サーバを介し、前記確立通信を行う通信ステップと
を備えた通信方法。
【請求項10】
請求項1から6のいずれかに記載の通信装置の各処理手段としてコンピュータを機能させるための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2011−176383(P2011−176383A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−36756(P2010−36756)
【出願日】平成22年2月23日(2010.2.23)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】