本発明は、通信端末及び通信方法に関し、より特定的には、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末及び通信方法に関する。
ネットワーク全体で一意に決定され、一対一(ピア・ツー・ピア。以降P2Pと呼ぶ)の相互接続を可能とするIPアドレスをグローバルIPアドレスという。一方、グローバルIPアドレスではなく、特定の一部のネットワーク内だけで一意に決定され、他のネットワークとのP2P通信に使用できないIPアドレスをプライベートIPアドレスという。このようなプライベートIPアドレスによって構成されるネットワークを、プライベートネットワークという。
プライベートIPアドレスを有する通信端末が、外部のグローバルIPアドレスを有する通信端末と通信するには、プライベートネットワークと、外部のグローバルネットワークとの間に、ネットワークアドレス変換(Network Address Translation、以降NATと呼ぶ)、あるいはネットワークアドレスポート変換(Network Address Port Translation、以降NAPTと呼ぶ)機能を備えた通信端末(ルータ)を配置する方法が一般的である。ただし、以降の説明では、単にNATと記せば、このNATとNAPTの両方の概念を含むものとする。
NATには複数の種類があることが知られている。ここで、図8を用いて、NATの種類について説明する。図8(a)は、Full Cone NATと呼ばれる種類のNATを示している。図8(a)を参照して、Full Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対しては、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。また、ルータは、外部のネットワークに接続された不特定の宅外端末C、Dから、アドレス情報[IPb、Pb]に向けて送信されたパケットを、全て宅内端末A[IPa、Pa]に転送する。
図8(b)は、Restricted Cone NATと呼ばれる種類のNATを示している。図8(b)を参照して、Restricted Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対しては、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。ただし、Full Cone NATとは異なり、ルータは、宅内端末Aがパケットを送信したことがある宅外端末CのIPアドレス[IPc]から、アドレス情報[IPb、Pb]に向けて送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。この時、宅外端末Cのポート番号は何でも良い。
図8(c)は、Port Restricted Cone NATと呼ばれる種類のNATを示している。図8(c)を参照して、Port Restricted Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対して、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。また、Restricted Cone NATとは異なり、ルータは、宅内端末Aがパケットを送信したことがある宅外端末Cのポート番号[Pc1]から、アドレス情報[IPb、Pb]に向けて送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。この時、ルータは、同じ宅外端末Cから送信されたパケットでも、[Pc1]以外のポート番号(例えば[Pc2])から送信されたパケットは全て破棄する。
図8(d)は、Symmetric NATと呼ばれる種類のNATを示している。図8(d)を参照して、Symmetric NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から特定の宅外端末のポート番号へ向けて送信されるパケットに対しては、ルータの特定のポート番号を割当てて外部のネットワークへ送信する。例えば、ルータは、宅内端末A[IPa、Pa]から宅外端末C[IPc、Pc]へ送信されるパケットに対しては、ルータのポート番号[Pb1]を割り当てる。また、ルータは、宅内端末A[IPa、Pa]から宅外端末D[IPd、Pd]へ送信されるパケットに対しては、ルータのポート番号[Pb2]を割り当てる。また、Port Restricted Cone NATと同様に、ルータは、宅内端末Aがパケットを送信したことがある宅外端末のポート番号から送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。
これらのルータのNAT機能を利用することで、プライベートネットワーク内に存在する宅内端末は、プライベートIPアドレスを用いて、グローバルネットワーク上に存在する宅外端末との間で通信を行うことができる。
しかし、プライベートネットワークとグローバルネットワークとの間にNAT機能を持ったルータを配置するだけでは、プライベートIPアドレスを持った端末が、異なるプライベートネットワークに存在する端末との間でP2P通信を行うことができない。そこで、異なるプライベートネットワークに存在する端末同士が、ルータのNATを越えてP2P通信を実現する手法として、RFC3489には、STUN(Simple Traversal UDP through NATを用いた手法が開示されている。なお、以降の説明で使用される「パケット」は、全て「UDPパケット」を意味し、メッセージは、全てUDPパケットによって送受信されるものとする。
図9は、STUNを用いた手法によってP2P通信を実現する場合の端末間のシーケンスを示す図である。ただし、図9に示すルータ1及びルータ2は、Symmetric NATではないものとする。図9を参照して、端末1は、サーバに対してIP/ポート登録要求を送信する(ステップS501)。サーバは、受信したパケットの送信元アドレス情報(すなわち、送信元IPアドレス及び送信元ポート番号)を登録する(ステップS502)。ここで、サーバには、ルータ1のNATによって、端末1のアドレス情報[IPL1、LP1]から、ルータ1のアドレス情報[IPG1、GP1]に変換された後のアドレス情報[IPG1、GP1]が登録される。
同様に、端末2は、サーバに対してIP/ポート登録要求を送信する(ステップS503)。サーバは、受信したパケットの送信元アドレス情報(すなわち、送信元IPアドレス及び送信元ポート番号)を登録する(ステップS504)。ここで、サーバには、ルータ2のNATによって、端末2のアドレス情報[IPL2、LP2]から、ルータ2のアドレス情報[IPG2、GP2]に変換された後のアドレス情報[IPG2、GP2]が登録される。
次に、端末2は、端末1にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS505)。サーバは、その応答として、ステップS502で登録したアドレス情報[IPG1、GP1]を設定したIP/ポート取得応答を端末2に返す(ステップS506)。
端末2は、端末1にアクセスするときに用いるアドレス情報[IPG1、GP1]を取得すれば、取得したアドレス情報[IPG1、GP1]に向けて、P2P開始要求を送信する(ステップS507)。ルータ2は、端末2が送信したP2P開始要求をルータ1に中継する。ここで、ルータ1がFull Cone NATであれば、端末2から送信されたP2P開始要求は、端末1へ転送され、端末1と端末2との間にP2P通信路が確立する。
一方、ルータ1がFull Cone NATでなければ、端末2から送信されたP2P開始要求は、ルータ1よって破棄され、端末1[IPL1、LP1]に転送されることはない。
ただし、ルータ2のNATには、端末2が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末2まで転送するための設定が行われる。すなわち、ルータ2のNATには、ルータ2がFull Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がRestricted Cone NATである場合には、送信元IPアドレス[IPG1]から、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がPort Restricted Cone NATである場合には、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。
次に、端末1は、端末2にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS508)。サーバは、その応答として、ステップS504で登録したアドレス情報[IPG2、GP2]を設定したIP/ポート取得応答を端末1に返す(ステップS509)。
端末1は、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2]を取得すれば、取得したアドレス情報[IPG2、GP2]に向けて、P2P開始要求を送信する(ステップS510)。ルータ1は、端末1が送信したP2P開始要求をルータ2に中継する。ルータ2のNATには、上述したように、端末1からルータ1を介して、ルータ2[IPG2、GP2]に届いたパケットを端末2[IPL2、LP2]に転送する設定がある。そのため、ルータ2は、端末1が送信したP2P開始要求を端末2に転送することができる。
また、ルータ1のNATには、端末1が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末1まで転送するための設定が行われる。すなわち、ルータ1のNATには、ルータ1がRestricted Cone NATである場合は、送信元IPアドレス[IPG2]から、ルータ1[IPG1、GP1]に届いたパケットを、端末1[IPL1、LP1]に転送するという設定が行われる。また、ルータ1がPort Restricted Cone NATである場合には、端末2からルータ2[IPG2、GP2]を介して、ルータ1[IPG1、GP1]に届いたパケットを、端末1[IPL1、LP1]に転送するという設定が行われる。
P2P開始要求を受信した端末2は、端末1に対して、P2P開始応答を送信する(ステップS511)。このとき、ルータ1のNATには、上述したように、端末2からルータ2を介して、ルータ1[IPG1、GP1]に届いたパケットを端末1[IPL1、LP1]に転送する設定がある。そのため、ルータ1は、端末2から送信されたP2P開始応答を端末1に転送することができる。以上がルータ1及びルータ2がSymmetric NAT以外の時におけるSTUNによるP2P通信路の確立手法である。
一方、端末1と端末2との間の経路に、Symmetric NATであるルータが存在する場合には、STUNによってP2P通信路を確立する上で以下のような問題が発生する。その問題を図10及び図11を用いて説明する。図10は、ルータ1がSymmetric NATである場合に発生する問題を説明する図である。図11は、ルータ2がSymmetric NATである場合に発生する問題を説明する図である。
図10を参照して、ステップS601〜S604は、図9におけるステップS501〜S504と同様の処理であるため説明を省略する。次に、端末2は、端末1にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS605)。サーバは、その応答として、ステップS602で登録したアドレス情報[IPG1、GP1]を設定したIP/ポート取得応答を端末2に返す(ステップS606)。
端末2は、端末1にアクセスするときに用いるアドレス情報[IPG1、GP1]を取得すれば、取得したアドレス情報[IPG1、GP1]に向けて、P2P開始要求を送信する(ステップS607)。ルータ2は、端末2が送信したP2P開始要求をルータ1に中継する。ここでルータ1がSymmetric NATであるため、端末2から送信されたP2P開始要求のパケットは、ルータ1よって破棄され、端末1[IPL1、LP1]に転送されない。
ただし、ルータ2のNATには、端末2が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末2まで転送するための設定が行われる。すなわち、ルータ2のNATには、ルータ2がFull Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がRestricted Cone NATである場合は、送信元IPアドレス[IPG1]から、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がPort Restricted Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。
次に、端末1は、端末2にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS608)。サーバは、その応答として、ステップS604で登録したアドレス情報[IPG2、GP2]を設定したIP/ポート取得応答を端末1に返す(ステップS609)。
端末1は、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2]を取得すれば、取得したアドレス情報[IPG2、GP2]に向けて、P2P開始要求を送信する(ステップS610)。このとき、ルータ1は、Symmetric NATであるため、端末1から送信されたP2P開始要求に、[GP1]以外のポート番号(例えば、[GP3])を割り当てることになる。
ここで、ルータ2がFull Cone NAT、あるいはRestricted Cone NATである場合には、端末1が送信したP2P開始要求は、ルータ2によって端末2[IPL2、LP2]に転送され、端末1と端末2との間におけるP2P通信路が確立する。しかし、ルータ2がPort Restricted Cone NAT、あるいはSymmetric NATである場合には、端末1が送信したP2P開始要求は、ルータ2によって破棄され、端末2に転送されない。このため、端末1と端末2との間におけるP2P通信路の確立は失敗する。
なお、ルータ2がSymmetric NAT(図11参照)である場合も、同様の問題によって、P2P通信路の確立は失敗する。
このように、ルータ1またはルータ2のいずれかがSymmetric NATである場合には、STUNによるP2P通信路確立の可能性は高いとは言い難い。そこで、このような問題を解決するために、従来、ルータ1及びルータ2がSymmetric NATである場合にも、P2P通信路の確立を成功させる手法が開示されている(例えば、特許文献1参照)。
図12は、従来の手法によるP2P通信路の確立手順を示すシーケンス図である。図12を参照して、ステップS801〜S804は、図9におけるステップS501〜S504と同様の処理であるため説明を省略する。端末2は、端末1にP2P通信を要求するために、P2P通信要求をサーバに対して送信する(ステップS805)。このとき、端末2は、P2P通信要求で使用する送信元ポート番号を、IP/ポート取得要求で使用した送信元ポート番号[LP2]から[LP2+a]に変更する。aは、任意の整数である。
端末2が新しいポート番号[LP2+a]を使う理由は、ルータ2に、P2P通信要求の送信元ポート番号として、新しい送信元ポート番号[GP2+b]を使わせるためである。bは、ルータ2におけるNATの不確定な増分値である。
P2P通信要求を受取ったサーバは、アドレス情報[IPG2、GP2+b]を設定したIP/ポート通知を端末1に送信する(ステップS806)。
IP/ポート通知を受取った端末1は、P2P通信を許可する場合は、サーバに対してP2P開始許可を送信する(ステップS807)。このとき、端末1は、P2P開始許可で使用する送信元ポート番号を、IP/ポート取得要求で使用した送信元ポート番号[LP1]から[LP1+d]に変更して送信する。端末1が[LP1+d]という新しいポート番号を使う理由は、ルータ1に、P2P通信許可の送信元ポート番号として、新しい送信元ポート番号[GP1+d]を使わせるためである。dは、任意の整数であり、ルータ1におけるNATの不確定な増分値である。
さらに、IP/ポート通知によって、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2+b]を取得した端末1は、取得したアドレス情報[IPG2、GP2+b+n]に向けて、P2P開始要求を送信する(ステップS808)。
なお、ステップS807で送信されるP2P通信許可と、ステップS808で送信されるP2P開始要求とは、極めて短時間内に連続で送信される。このため、ルータ1によって、P2P通信許可の送信元ポート番号が[LP1+c]から[GP1+d]に変換された場合、P2P開始要求の送信元ポート番号は、[LP1+c+1]から[GP1+d+1]に変換される。
また、ルータ1のNATには、端末1が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末1まで転送するための設定が行われる。すなわち、ルータ1のNATには、端末2からルータ2[IPG2、GP2+b+n]を介して、ルータ1[IPG1、GP1+d+1]に届いたパケットを、端末1[IPL1、LP1+c+1]に転送するという設定が行われる。ここで、nは任意の整数値である。
サーバは、ステップS807で端末1が送信したP2P通信許可を受け取ると、端末2に対して、ルータ1のアドレス情報[IPG1、GP1+d]を設定したP2P通信許可を送信する(ステップS809)。
次に、端末2は、P2P通信許可によって、端末1にアクセスするときに用いるアドレス情報(すなわち、ルータ1のアドレス情報)[IPG1、GP1+d]を受取ったら、直ちに端末1へP2P開始要求を送信する(ステップS810)。このとき端末2は、ルータ1のポート番号[GP1+d+1]に向けて、送信元ポート番号を[LP2+a+1]から1つずつ増加させながらn個のP2P開始要求を送信する。このP2P開始要求の送信元ポート番号は、ルータ2によって、[GP2+b+m]から[GP2+b+m+n−1]までのポート番号に変換される。
端末2から送信された複数のP2P開始要求のいずれかは、逆方向のパケットを端末1まで転送するルータ1の設定と一致するため、端末1まで転送される。P2P開始要求を受取った端末1は、その応答としてP2P開始応答を送信する(ステップS811)。これによって、端末1と端末2との間におけるP2P通信路が確立する。
特開2004−180003号公報
しかしながら、図12に示した従来の手法においては、端末2は、端末1がステップS808でP2P開始要求を送信したポート番号を予測するために、ステップS810で複数のP2P開始要求を送信している。このために、P2P通信路の確立までの接続時間が遅延するという問題や、トラフィックが増大するという問題が発生していた。また、さらに、ルータ2の種類によっては、端末2から送信された複数のP2P開始要求に割り当てられるポート番号がランダムに変化する場合がある。このような場合、端末2から送信されたP2P開始要求には、順番にポート番号が割当てられないため、P2P通信路の接続性が悪くなるという問題が発生する可能性があった。
それ故に、本発明の目的は、他の通信端末との間でP2P通信路を確立するときに、短時間かつ少ないトラフィックで、高い接続性を実現する通信端末及び通信方法を提供することである。
本発明は、ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末に向けられている。そして、上記目的を達成するために、本発明の通信端末は、アドレス情報決定部と、アドレス情報交換部と、通信制御部と、通信部とを備える。
アドレス情報決定部は、グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで、ルータの中継特性を調査して、他のネットワーク上の通信端末との一対一の相互接続に使用するルータのアドレス情報を決定する。アドレス情報交換部は、アドレス情報決定部によって決定されたルータのアドレス情報を、他のネットワーク上の通信端末との間で互いに交換する。通信制御部は、アドレス情報交換部で交換されたルータのアドレス情報に基づいて、他のネットワーク上の通信端末との間で一対一の相互接続を行う。通信部は、通信端末の全ての通信を行う。アドレス情報決定部は、ルータの中継特性がPort Reuseである場合に、他のネットワーク上の通信端末と一対一の相互接続で使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定する。
より特定的には、アドレス情報決定部は、アドレス情報要求部と、アドレス情報受信部と、中継特性判断部と、ポート番号決定部とを含む。アドレス情報要求部は、ルータを介して、サーバに所定のメッセージを送信することで、サーバにルータのアドレス情報を要求する。アドレス情報受信部は、要求に対する応答として、サーバからルータのアドレス情報を受信する。中継特性判断部は、アドレス情報受信部が受信したルータのアドレス情報に基づいて、ルータの中継特性を判断する。ポート番号決定部は、中継特性判断部が判断したルータの中継特性に基づいて、他のネットワーク上の通信端末と一対一の相互接続で使用する通信端末自身のポート番号を決定する。
好ましくは、アドレス情報調査要求部は、通信端末の所定のポート番号から、サーバの第1のポート番号に向けて第1のポート番号調査要求メッセージと、サーバの第2のポート番号に向けて第2のポート番号調査要求メッセージとを連続して送信する。アドレス情報受信部は、サーバから、第1のポート番号調査要求メッセージに対する応答である第1のポート番号調査応答メッセージと、第2のポート番号調査要求メッセージに対する応答である第2のポート番号調査応答メッセージとを受信する。中継特性判断部は、アドレス情報受信部が受信した第1のポート番号調査応答メッセージと、第2のポート番号調査応答メッセージとに基づいて、ルータの中継特性を判断する。
第1のポート番号調査応答メッセージには、ルータのIPアドレスと、第1のポート番号調査要求メッセージをサーバに中継したときのルータの送信元ポート番号とが含まれる。第2のポート番号調査応答メッセージには、ルータのIPアドレスと、第2のポート番号調査要求メッセージをサーバ中継したときルータの送信元ポート番号とが含まれる。中継特性判断部は、第1のポート番号調査要求メッセージを送信した通信端末の所定のポート番号と、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致する場合に、ルータの中継特性がPort Reuseの性質を持っていると判断する。
中継特性判断部は、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致する場合に、ルータの中継特性がCone系のNAT機能を持っていると判断する。また、中継特性判断部は、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致しない場合に、ルータの中継特性がSymmetric NATの機能を持っていると判断する。
通信ポート決定部は、中継特性判断部によって、ルータの中継特性がPort Reuseでなく、かつCone系のNAT機能を持っていると判断された場合に、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号を、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる。
通信ポート決定部は、中継特性判断部によって、ルータの中継特性がPort Reuseでなく、かつSymmetric NATの機能を持っていると判断された場合に、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号との差分を、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号に加算したポート番号を、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる。
より特定的には、アドレス情報交換部は、中継情報送信部と、中継情報送信部とを含む。中継情報送信部は、サーバを介して、他のネットワーク上の通信端末との一対一の相互接続に使用するルータのアドレス情報を設定したメッセージを、他のネットワーク上の通信端末に送信する。中継情報送信部は、サーバを介して、自通信端末と一対一の相互接続に使用するアドレス情報が設定されたメッセージを、他のネットワーク上の通信端末から受信する。
好ましくは、通信制御部は、通信部を介して、アドレス情報交換部によって交換されたアドレス情報宛てに、一対一の相互接続の開始を要求するメッセージを送信し、他のネットワーク上の通信端末から一対一の相互接続の開始を要求するメッセージを受信した場合に、他のネットワーク上の通信端末との間で一対一の相互接続を行う。
また、本発明は、ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末が実行する通信方法にも向けられている。上記目的を達成するために、本発明の通信方法は、通信端末が、グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで、ルータの中継特性を調査し、ルータの中継特性がPort Reuseである場合に、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定し、決定されたルータのアドレス情報を、他のネットワーク上の通信端末との間で互いに交換し、交換されたアドレス情報に基づいて、他のネットワーク上の通信端末との間で一対一の相互接続を実施する。
以上のように、本発明の通信端末及び通信方法によれば、サーバとの間で所定のメッセージを送受信し、送受信したメッセージに基づいてルータの中継特性を調査し、ルータの中継特性がPort Reuseである場合に、他の通信端末とのP2P通信に使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定する。これによって、本発明の通信端末及び通信方法は、ルータの中継特性がPort Reuseであれば、サーバを用いたルータが使用するアドレス情報を決定するための手順を簡略化することができる。
また、本発明の通信端末及び通信方法は、ルータの中継特性がPort Reuseであり、かつSymmetric NATである場合に、ルータが使用するポート番号を予測するための手順を省略することができる。故に、本発明の通信端末及び通信方法によれば、他の通信端末とのP2P通信路の確立時に、より短時間かつ少ないトラフィックで、高い接続性を実現することができる。
図1は、本発明の一実施形態に係る通信システムのネットワーク構成の一例を示す図である。
図2は、Port Reuseの性質を持ったルータ11を説明する図である。
図3Aは、通信端末10の構成の一例を示すブロック図である。
図3Bは、通信端末20の構成の一例を示すブロック図である。
図3Cは、サーバ30の構成の一例を示すブロック図である。
図4は、本発明の一実施形態に係る通信システムにおけるP2P通信路確立時の動作を説明する図である。
図5Aは、通信端末10におけるNAT調査フェーズ(ステップS100)の詳細な動作を示すフローチャートである。
図5Bは、通信端末20におけるNAT調査フェーズ(ステップS200)の詳細な動作を示すフローチャートである。
図5Cは、P2P通信ポート決定処理(ステップS109)の詳細な動作を示すフローチャートである。
図6は、P2P通信ポート交換フェーズ(ステップS300)の詳細な動作を示すフローチャートである。
図7は、P2P通信路確立フェーズ(ステップS400)の詳細な動作を示すフローチャートである。
図8は、NATの種類について説明する図である。
図9は、STUNを用いた手法によってP2P通信を実現する場合の端末間のシーケンスを示す図である。
図10は、ルータ1がSymmetric NATである場合に発生する問題を説明する図である。
図11は、ルータ2がSymmetric NATである場合に発生する問題を説明する図である。
図12は、特許文献1に開示されている従来の手法によるP2P通信路の確立手順を示すシーケンス図である。
符号の説明
10、20 通信端末(宅内端末)
11、21 ルータ
30 サーバ
100、200 プライベートネットワーク
300 グローバルネットワーク
101、201 アドレス情報調査要求部
102、202 アドレス情報受信部
103、203 通信ポート決定部
104、204 中継特性判断部
105、205 中継情報送信部
106、206 中継情報受信部
301 アドレス情報調査部
302 アドレス情報送信部
303 中継情報転送部
304 通信部
以下に、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係る通信システムのネットワーク構成の一例を示す図である。図1において、グローバルネットワーク300と、プライベートネットワーク100とが、グローバルIPアドレス[IPG1]を有するルータ11を介して接続されている。また、グローバルネットワーク300と、プライベートネットワーク200とが、グローバルIPアドレス[IPG2]を有するルータ21を介して接続されている。グローバルネットワーク300には、サーバ30が接続されている。プライベートネットワーク100には、プライベートIPアドレス[IPL1]を有する通信端末(宅内端末)10が接続されている。プライベートネットワーク200には、プライベートIPアドレス[IPL2]を有する通信端末(宅内端末)20が接続されている。
ルータ11は、Symmetric NATであり、かつPort Reuseの性質を持ったルータである。ここで、Port Reuseの性質を持ったルータ11について、図2を用いて説明する。図2において、Port Reuseの性質を持ったルータ11は、通信端末10が送信したパケットを中継する際に、中継するパケットの送信元ポート番号と同じポート番号を、ルータ11の送信元ポート番号として割り当てることを特徴とする。
例えば、ルータ11は、通信端末10のポート番号[Pa]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番号として、ルータ11のポート番号[Pa]を割り当てる。また、ルータ11は、通信端末10のポート番号[Pb]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番として、ルータ11のポート番号[Pb]を割り当てる。また、ルータ11は、通信端末10のポート番号[Pc]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番として、ルータ11のポート番号[Pc]を割り当てる。一方、ルータ21は、Full Cone NATであり、かつPort Reuseの性質を持っていないルータである。
図3Aは、通信端末10の構成の一例を示すブロック図である。図3Aにおいて、通信端末10は、アドレス情報調査要求部101、アドレス情報受信部102、通信ポート決定部103、中継特性判断部104、中継情報送信部105、中継情報受信部106、通信制御部107、及び通信部108を備える。
アドレス情報調査要求部101は、自身が接続するルータ11に割り当てられるポート番号を調査するメッセージ(ポート番号調査要求メッセージ)をサーバ30に向けて送信する。アドレス情報受信部102は、ポート番号調査要求メッセージに対する応答として、ルータ11に割り当てられるポート番号を含んだメッセージ(ポート番号調査応答メッセージ)をサーバ30から受信する。中継特性判断部104は、受信したポート番号調査応答メッセージに基づいて、ルータ11の中継特性を判断する。通信ポート決定部103は、ルータ11の中継特性に基づいて、通信端末10がP2P通信で使用するポート番号を決定する。
中継情報送信部105は、ルータ11のIPアドレスと、通信端末10がP2P通信で使用するポート番号とを含むメッセージ(IP/ポート通知メッセージ)を、サーバ30に向けて送信する。中継情報受信部106は、通信端末20が送信したIP/ポート通知メッセージをサーバ30から受信する。通信制御部107は、通信部108を制御して、通信端末20とのP2P通信を行う。通信部108は、通信端末10に関する全ての通信を行う。
なお、アドレス情報調査要求部101、アドレス情報受信部102、通信ポート決定部103、及び中継特性判断部104は、通信端末20とのP2P通信に使用するアドレス情報(IPアドレス及びポート番号)を決定するので、アドレス情報決定部と記してもよい。また、中継情報送信部105、及び中継情報受信部106は、決定したアドレス情報を通信端末20との間で交換するので、アドレス情報交換部と記してもよい。
図3Bは、通信端末20の構成の一例を示すブロック図である。図3Bにおいて、通信端末20は、アドレス情報調査要求部201、アドレス情報受信部202、通信ポート決定部203、中継特性判断部204、中継情報送信部205、中継情報受信部206、通信制御部207、及び通信部208を備える。なお、通信端末20の各構成は、上述した通信端末10と同様であるため説明を省略する。
図3Cは、サーバ30の構成の一例を示すブロック図である。図3Cにおいて、サーバ30は、アドレス情報調査部301、アドレス情報送信部302、中継情報転送部303、及び通信部304を備える。
アドレス情報調査部301は、通信端末10又は20からポート番号調査要求メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス及び送信元ポート番号を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したIPアドレス及び送信元ポート番号を含んだメッセージ(ポート番号調査応答メッセージ)を通信端末10又は20に対して返信する。中継情報転送部303は、一方の通信端末から受信したIP/ポート通知メッセージを、他方の通信端末に中継する。通信部304は、サーバ30に関する全ての通信を行う。
図4は、本発明の一実施形態に係る通信システムがP2P通信路確立時に実行する動作を説明する図である。図4において、本発明の一実施形態に係る通信システムは、P2P通信路確立時に、NAT調査フェーズ(ステップS100、S200)、P2P通信ポート交換フェーズ(ステップS300)、及びP2P通信路確立フェーズ(ステップS400)を実行する。
NAT調査フェーズ(ステップS100、S200)は、通信端末10及び通信端末20が、サーバ30と通信を行って、自身が接続されてルータ11又はルータ21の中継特性を調査し、P2P通信において互いにアクセス可能な通信ポートを決定する。具体的には、通信端末10及び通信端末20は、ルータ11又はルータ21の中継特性として、NATの種類(例えば、Full Cone NAT、Symmetric NATなど)と、Port Reuseの性質を持っているかどうかを調査する。
P2P通信ポート交換フェーズ(ステップS300)は、通信端末10及び通信端末20が、NAT調査フェーズで決定した通信ポートをサーバ30経由で互いに交換する。P2P通信路確立フェーズ(ステップS400)は、通信端末10及び通信端末20が、P2P通信ポート交換フェーズで交換した互いの通信ポートに向けてパケットを送信して、P2P通信路を確立する。
図5Aは、通信端末10におけるNAT調査フェーズ(ステップS100)の詳細な動作を示すフローチャートである。以下、図5Aを参照しながら、通信端末10におけるNAT調査フェーズ(ステップS100)について説明する。なお、図5Aにおいて、各メッセージの下の(IPG1、GP11)等の記載は、各メッセージに含まれる送信元アドレス情報(送信元IPアドレス、及び送信元ポート番号)を示している。
まず、通信端末10において、アドレス情報調査要求部101は、通信端末10のポート番号[LP1]から、サーバ30のポート番号[SP0]に向けて、ポート番号調査要求1メッセージを送信する(ステップS101)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求1メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP11])を抜き出す。アドレス情報送信部302は、抜き出したルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP11]をポート番号調査応答1メッセージに含めて、通信端末10に返信する(ステップS102)。
続いて、通信端末10において、アドレス情報調査要求部101は、通信端末10のポート番号[LP1]から、サーバ30のポート番号[SP1]に向けて、ポート番号調査要求2メッセージを送信する(ステップS103)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求2メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP12])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP12]をポート番号調査応答2メッセージに含めて、通信端末10に返信する(ステップS104)。
ここで、ステップS101及びS102において、通信端末10が、同じポート番号[LP1]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信する理由を説明する。通信端末10は、サーバ30が受信した2つのポート番号調査要求メッセージに含まれるルータ11の送信元ポート番号が等しい(すなわち、GP11=GP12である)場合には、ルータ11がCone系(Full Cone、Restricted Cone、又はPort Restricted Cone)NATであると判断できる。また、通信端末10は、サーバ30が受信した2つのポート番号調査要求メッセージに含まれる送信元ポート番号が異なる(すなわち、GP11≠GP12である)場合には、ルータ11がSymmetric NATであると判断できる。すなわち、通信端末10は、同じポート番号[LP1]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信することで、ルータ11のNATの種類を調査することができる。
なお、通信端末10は、上述した以外の方法を用いても、ルータ11のNATの種類を調査してもよい。例えば、通信端末10は、異なるIPアドレスを持つ2つのサーバに対してルータ経由でパケットを送信し、そのときに割り当てられるルータのポート番号が等しいか、あるいは異なるかで、ルータのNATの種類を調査してもよい。
通信端末10において、アドレス情報受信部102は、通信部108を介して、ポート番号調査応答1メッセージ、及びポート番号調査応答2メッセージを受信すると、中継特性判断部104に受信メッセージを渡す。中継特性判断部104は、ポート番号調査応答1メッセージに含まれるルータ11のポート番号[GP11]と、ポート番号調査要求1メッセージを送信したときの通信端末10のポート番号[LP1]とが一致するかどうかをチェックする(ステップS105)。中継特性判断部104は、ルータ11のポート番号[GP11]と、通信端末10のポート番号[LP1]とが一致する(すなわち、GP11=LP1である)場合には、ルータ11のNATが、Port Reuseの性質を持っていると判断する(ステップS106)。
さらに、通信端末10において、中継特性判断部104は、アドレス情報受信部102が受信したポート番号調査応答1メッセージと、ポート番号調査応答2メッセージとに含まれるルータ11のポート番号が一致するか否かをチェックする(ステップS107)。中継特性判断部104は、ルータ11のポート番号が一致している場合には、ルータ11がCone系NATであると判断し、ルータ11のポート番号が一致していない場合には、ルータ11がSymmetric NATであると判断する(ステップS108)。
通信ポート決定部103は、中継特性判断部104が判断したルータ11の中継特性に基づいて、通信端末10がP2P通信で使用するポート番号を決定する(ステップS109)。なお、P2P通信ポート決定処理(ステップS109)の詳細については後述する。
図5Bは、通信端末20におけるNAT調査フェーズ(ステップS200)の詳細な動作を示すフローチャートである。以下、図5Bを参照しながら、通信端末20におけるNAT調査フェーズ(ステップS200)処理について説明する。
まず、通信端末20において、アドレス情報調査要求部201は、通信端末20のポート番号[LP2]から、サーバ30のポート番号[SP0]に向けて、ポート番号調査1メッセージを送信する(ステップS201)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求1メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP21])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP21]をポート番号調査応答1メッセージに含めて、通信端末20に返信する(ステップS202)。
通信端末20において、アドレス情報調査要求部201は、通信端末20のポート番号[LP2]から、サーバ30のポート番号[SP1]に向けて、ポート番号調査要求2メッセージを送信する(ステップS203)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求2メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP22])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP22]をポート番号調査応答2メッセージに含めて、通信端末20に返信する(ステップS204)。
ここで、ステップS201及びS202において、通信端末20が、同じポート番号[LP2]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信する理由は、図5Aを用いて通信端末10に対して行った説明と同様である。
次に、通信端末20において、アドレス情報受信部202は、通信部208を介して、ポート番号調査応答1メッセージ、及びポート番号調査応答2メッセージを受信すると、中継特性判断部202に受信メッセージを渡す。中継特性判断部204は、ポート番号調査応答1メッセージに含まれるルータ21のポート番号[GP21]と、ポート番号調査要求1メッセージを送信したときの通信端末20のポート番号[LP2]とが一致するかどうかをチェックする(ステップS205)。中継特性判断部204は、ルータ21のポート番号[GP21]と、通信端末20のポート番号[LP2]とが一致する(すなわち、GP21=LP2である)場合には、ルータ21のNATが、Port Reuseの性質を持っていると判断する(ステップS206)。
さらに、通信端末20において、中継特性判断部204は、アドレス情報受信部202が受信したポート番号調査応答1メッセージと、ポート番号調査応答2メッセージとに含まれるルータ21のポート番号が一致するか否かをチェックする(ステップS207)。中継特性判断部204は、ルータ21のポート番号が一致している場合には、ルータ21がCone系NATであると判断し、ルータ21のポート番号が一致していない場合には、ルータ21がSymmetric NATであると判断する(ステップS208)。
通信ポート決定部203は、中継特性判断部204が判断したルータ21の中継特性に基づいて、通信端末20がP2P通信で使用するポート番号を決定する(ステップS209)。
図5Cは、図5AにおけるP2P通信ポート決定処理(ステップS109)の詳細な動作を示すフローチャートである。以下、図5Cを参照しながら、通信端末10におけるP2P通信ポート決定処理(ステップS109)の詳細について説明する。
まず、通信端末10において、通信ポート決定部103は、ルータ11のNATがPort Reuseの性質を持っているかどうかをチェックする(ステップS1091)。通信ポート決定部103は、ルータ11のNATがPort Reuseの性質を持っていれば、P2P通信で使用するポート番号を自由に選択する(ステップS1092)。なお、通信ポート決定部103は、P2P通信で使用するポート番号として、ポート番号[GP13]を選択したものとする。
ここで、ルータ11のNATがPort Reuseである場合に、通信ポート決定部103がP2P通信で使用するポート番号を自由に選択してもよい理由を説明する。ルータ11がPort Reuseの性質を持っている場合、ルータ11には、通信端末10が開いたポート番号と同じポート番号が割り振られることになる。このため、通信端末10は、次のP2P通信ポート交換フェーズ(ステップS300)において、通信端末20に通知するポート番号として、自身が開いたポート番号を通知すればよいことになる。このため、通信ポート決定部103は、P2P通信で使用するポート番号を自由に選択することができる。
通信ポート決定部103は、ルータ11のNATがPort Reuseでなければ、ルータ11がCone系のNATであるかどうかをチェックする(ステップS1093)。通信ポート決定部103は、ルータ11のNATがCone系のNATであれば、P2P通信で使用するポート番号として、ポート番号調査応答1メッセージ(ステップS102)で取得したルータ11のポート番号を選択する(ステップS1094)。その理由は、ルータ11がCone系のNATである場合、ルータ11が中継するメッセージの送信元ポート番号が同じであれば、ルータ11には、常に同じポート番号が割り振られるからである。
一方、通信ポート決定部103は、ルータ11がCone系のNATでない(すなわち、ルータ11がSymmetric NATである)場合は、P2P通信時にルータ11に割り当てられるポート番号を予測する必要がある。そのため、通信ポート決定部103は、ポート番号調査応答2メッセージで取得したルータ11のポート番号[GP12]と、ポート番号調査応答1で取得したルータ11のポート番号[GP11]との差分をαとすると、P2P通信で使用するポート番号として[GP12+α]を選択する(ステップS1095)。
なお、図5BにおけるP2P通信ポート決定処理(ステップS209)も、図5Cと同様であるので説明を省略する。
また、本実施形態では、ルータ11は、Port Reuseであり、かつSymmetric NATであることを想定している。そのため、ルータ11が割り当てるポート番号は、GP11=LP1であり、かつGP11=GP12である。また、本実施形態では、ルータ21は、Port Reuseでなく、かつFull Cone NATであることを想定している。そのため、ルータ21が割り当てるポート番号は、GP21≠LP2であり、かつGP21=GP22である。以降、ルータ11及びルータ21が、これらのポート番号を割り当てるものとして説明する。
図6は、図4におけるP2P通信ポート交換フェーズ(ステップS300)の詳細な動作を示すフローチャートである。以下、図6を参照しながら、P2P通信ポート交換フェーズ(ステップS300)の詳細について説明する。
通信端末10において、中継情報送信部105は、ルータ11のIPアドレスと、通信ポート決定部103が決定したポート番号とを含むIP/ポート通知メッセージを、サーバ30に向けて送信する(ステップS301)。本実施形態では、ルータ11がPort Reuseであるため、サーバ30が受信するIP/ポート通知メッセージには、ルータ11のIPアドレス[IPG1]と、ポート番号[GP13]とが含まれる。
サーバ30において、中継情報転送部303は、通信部304を介して、通信端末10から受信したIP/ポート通知メッセージを、通信端末20に中継する(ステップS302)。通信端末20において、中継情報受信部206は、サーバ30を介して、通信端末10から送信されたIP/ポート通知メッセージを受信する。
また、通信端末20において、中継情報送信部205は、通信ポート決定部203が決定したポート番号をIP/ポート通知メッセージとして、サーバ30に対して送信する(ステップS303)。本実施形態では、ルータ21がFull Cone NATであり、かつPort Reuseでないため、IP/ポート通知メッセージには、ポート番号調査応答1メッセージで取得したルータ21のIPアドレス[IPG2]と、ポート番号[GP21]とが含まれる。
サーバ30において、中継情報転送部303は、通信部304を介して、通信端末20から受信したIP/ポート通知メッセージを、通信端末10に中継する(ステップS304)。通信端末10において、中継情報受信部206は、サーバ30を介して、通信端末20から送信されたIP/ポート通知メッセージを受信する。
図7は、図4におけるP2P通信路確立フェーズ(ステップS400)の詳細な動作を示すフローチャートである。以下、図7を参照しながら、P2P通信路確立フェーズ(ステップS400)の詳細について説明する。
通信端末20において、通信制御部207は、ステップS302で通信端末10から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG1、GP13]に向けて、P2P開始要求メッセージを送信する(ステップS401)。通信端末20から送信されたP2P開始要求メッセージは、ルータ21によって、ルータ11に中継される。このとき、ルータ21のNATには、逆方向のパケットを中継する設定として、通信端末10(すなわち、ルータ11[IPG1、GP13])から、ルータ21[IPG2、GP21]に届いたパケットを、通信端末20[IPL2、LP2]に中継するための設定が行われる。
通信端末20から送信されたP2P開始要求メッセージは、ルータ21を介して、ルータ11によって受信される。しかし、ルータ11のNATには、ルータ21[IPG2、GP21]を介して、アドレス情報[IPG1、GP13]に向けて送信されたパケットを、通信端末10に中継するための設定が行われていない。このため、通信端末20から送信されたP2P開始要求メッセージは、ルータ11によって破棄される。
一方、通信端末10において、通信制御部107は、ステップS304で通信端末20から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG2、GP21]に向けて、P2P開始要求メッセージを送信する(ステップS402)。通信端末10から送信されたP2P開始要求メッセージは、ルータ11によって、ルータ21に中継される。このとき、ルータ11のNATには、逆方向のパケットを中継する設定として、通信端末20(すなわち、ルータ21[IPG2、GP21])から、ルータ11[IPG1、GP13]に届いたパケットを、通信端末20[IPL2、LP2]に中継するための設定が行われる。
通信端末10から送信されたP2P開始要求メッセージは、ルータ11を介して、ルータ21によって受信される。ここで、ルータ21には、上述したように、宅内端末11(すなわち、ルータ11[IPG1、GP13])から、ルータ21[IPG2、GP21]に届いたパケットを、通信端末20[IPL2、LP2]に中継するための設定が行われている。このため、ルータ21は、通信端末10から送信されたP2P開始要求メッセージを通信端末20に中継することができる。
また、通信端末20において、通信制御部207は、通信端末10からP2P開始要求メッセージを受信すると、ステップS302で通信端末10から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG1、GP13]に向けて、再度P2P開始要求メッセージを送信する(ステップS403)。通信端末20から送信されたP2P開始要求メッセージは、ルータ21によって、ルータ11に中継される。ここで、ルータ11には、上述したように、通信端末20(すなわち、ルータ21[IPG2、GP21])から、ルータ11[IPG1、GP13]に届いたパケットを、通信端末10[IPL1、LP1]に中継するための設定が行われている。このため、ルータ11は、通信端末20から送信されたP2P開始要求メッセージを通信端末10に中継することができる。これによって、通信端末10と通信端末20との間でのP2P通信路が確立される。
以上のように本発明の一実施形態に係る通信端末10は、サーバ30との間で所定のメッセージを送受信し、送受信したメッセージに基づいてルータ11の中継特性を調査する。通信端末10は、ルータ11の中継特性がPort Reuseである場合に、他の通信端末20とのP2P通信で使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータが使用するアドレス情報として決定する。これによって、通信端末10は、ルータ11の中継特性がPort Reuseであれば、サーバ11を用いたルータ11が使用するアドレス情報を決定するための手順を簡略化できる。
また、通信端末10は、ルータ11の中継特性がPort Reuseであり、かつSymmetric NATである場合に、ルータ11が使用するポート番号を予測するための手順を省略することができる。故に、通信端末10は、他の通信端末20とのP2P通信路の確立時に、より短時間かつ少ないトラフィックで、高い接続性を実現することができる。
なお、図4において、NAT調査フェーズ(ステップS100、S200)は、次に行われるP2P通信ポート交換フェーズ(ステップS300)の前準備として、各端末が事前に行っておくものであり、必ずしも図4に示した方法で実施されなくてもよい。
また、一度P2P通信を行った端末間で、再びP2P通信を行う場合においては、前回調査したルータの中継特性がPort Reuseであれば、以降のNAT調査フェーズを省略してもよい。
また、図6においては、最初に通信端末10がIPポート/ポート通知メッセージを送信しているが、図5A及び図5Bに示すP2P通信ポートを決定するタイミングによっては、最初に通信端末10がIPポート/ポート通知メッセージを送信する場合もあり、必ずしも図6に示す順序で処理が行われるわけではない。
また、図6において、通信端末10及び通信端末20は、IP/ポート通知メッセージで1つのIP/ポートの組み合わせしか相手端末に通知していないが、複数のIP/ポートの組合せを通知することによって、P2P通信路確立の接続性を高めてもよい。
また、図7においては、最初に通信端末20がP2P通信開始要求メッセージを送信しているが、図6に示すIP/ポート通知メッセージを受信するタイミングによっては、最初に通信端末10がP2P通信開始要求メッセージを送信する場合もあり、必ずしも図7に示す順序で処理が行われるわけではない。
本発明の通信端末及び通信方法は、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う場合等に有用である。
本発明は、通信端末及び通信方法に関し、より特定的には、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末及び通信方法に関する。
ネットワーク全体で一意に決定され、一対一(ピア・ツー・ピア。以降P2Pと呼ぶ)の相互接続を可能とするIPアドレスをグローバルIPアドレスという。一方、グローバルIPアドレスではなく、特定の一部のネットワーク内だけで一意に決定され、他のネットワークとのP2P通信に使用できないIPアドレスをプライベートIPアドレスという。このようなプライベートIPアドレスによって構成されるネットワークを、プライベートネットワークという。
プライベートIPアドレスを有する通信端末が、外部のグローバルIPアドレスを有する通信端末と通信するには、プライベートネットワークと、外部のグローバルネットワークとの間に、ネットワークアドレス変換(Network Address Translation、以降NATと呼ぶ)、あるいはネットワークアドレスポート変換(Network Address Port Translation、以降NAPTと呼ぶ)機能を備えた通信端末(ルータ)を配置する方法が一般的である。ただし、以降の説明では、単にNATと記せば、このNATとNAPTの両方の概念を含むものとする。
NATには複数の種類があることが知られている。ここで、図8を用いて、NATの種類について説明する。図8(a)は、Full Cone NATと呼ばれる種類のNATを示している。図8(a)を参照して、Full Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対しては、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。また、ルータは、外部のネットワークに接続された不特定の宅外端末C、Dから、アドレス情報[IPb、Pb]に向けて送信されたパケットを、全て宅内端末A[IPa、Pa]に転送する。
図8(b)は、Restricted Cone NATと呼ばれる種類のNATを示している。図8(b)を参照して、Restricted Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対しては、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。ただし、Full Cone NATとは異なり、ルータは、宅内端末Aがパケットを送信したことがある宅外端末CのIPアドレス[IPc]から、アドレス情報[IPb、Pb]に向けて送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。この時、宅外端末Cのポート番号は何でも良い。
図8(c)は、Port Restricted Cone NATと呼ばれる種類のNATを示している。図8(c)を参照して、Port Restricted Cone NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から宅外へ向けて送信されるパケットに対して、常にルータの同じポート番号[Pb]を割当てて外部のネットワークへ送信する。また、Restricted Cone NATとは異なり、ルータは、宅内端末Aがパケットを送信したことがある宅外端末Cのポート番号[Pc1]から、アドレス情報[IPb、Pb]に向けて送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。この時、ルータは、同じ宅外端末Cから送信されたパケットでも、[Pc1]以外のポート番号(例えば[Pc2])から送信されたパケットは全て破棄する。
図8(d)は、Symmetric NATと呼ばれる種類のNATを示している。図8(d)を参照して、Symmetric NATを備えたルータは、同じ宅内端末Aのアドレス情報[IPa、Pa]から特定の宅外端末のポート番号へ向けて送信されるパケットに対しては、ルータの特定のポート番号を割当てて外部のネットワークへ送信する。例えば、ルータは、宅内端末A[IPa、Pa]から宅外端末C[IPc、Pc]へ送信されるパケットに対しては、ルータのポート番号[Pb1]を割り当てる。また、ルータは、宅内端末A[IPa、Pa]から宅外端末D[IPd、Pd]へ送信されるパケットに対しては、ルータのポート番号[Pb2]を割り当てる。また、Port Restricted Cone NATと同様に、ルータは、宅内端末Aがパケットを送信したことがある宅外端末のポート番号から送信されたパケットしか、宅内端末A[IPa、Pa]への転送を行わない。
これらのルータのNAT機能を利用することで、プライベートネットワーク内に存在する宅内端末は、プライベートIPアドレスを用いて、グローバルネットワーク上に存在する宅外端末との間で通信を行うことができる。
しかし、プライベートネットワークとグローバルネットワークとの間にNAT機能を持ったルータを配置するだけでは、プライベートIPアドレスを持った端末が、異なるプライベートネットワークに存在する端末との間でP2P通信を行うことができない。そこで、異なるプライベートネットワークに存在する端末同士が、ルータのNATを越えてP2P通信を実現する手法として、RFC3489 には、STUN(Simple Traversal UDP through NATを用いた手法が開示されている。なお、以降の説明で使用される「パケット」は、全て「UDPパケット」を意味し、メッセージは、全てUDPパケットによって送受信されるものとする。
図9は、STUNを用いた手法によってP2P通信を実現する場合の端末間のシーケンスを示す図である。ただし、図9に示すルータ1及びルータ2は、Symmetric NATではないものとする。図9を参照して、端末1は、サーバに対してIP/ポート登録要求を送信する(ステップS501)。サーバは、受信したパケットの送信元アドレス情報(すなわち、送信元IPアドレス及び送信元ポート番号)を登録する(ステップS502)。ここで、サーバには、ルータ1のNATによって、端末1のアドレス情報[IPL1、LP1]から、ルータ1のアドレス情報[IPG1、GP1]に変換された後のアドレス情報[IPG1、GP1]が登録される。
同様に、端末2は、サーバに対してIP/ポート登録要求を送信する(ステップS503)。サーバは、受信したパケットの送信元アドレス情報(すなわち、送信元IPアドレス及び送信元ポート番号)を登録する(ステップS504)。ここで、サーバには、ルータ2のNATによって、端末2のアドレス情報[IPL2、LP2]から、ルータ2のアドレス情報[IPG2、GP2]に変換された後のアドレス情報[IPG2、GP2]が登録される。
次に、端末2は、端末1にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS505)。サーバは、その応答として、ステップS502で登録したアドレス情報[IPG1、GP1]を設定したIP/ポート取得応答を端末2に返す(ステップS506)。
端末2は、端末1にアクセスするときに用いるアドレス情報[IPG1、GP1]を取得すれば、取得したアドレス情報[IPG1、GP1]に向けて、P2P開始要求を送信する(ステップS507)。ルータ2は、端末2が送信したP2P開始要求をルータ1に中継する。ここで、ルータ1がFull Cone NATであれば、端末2から送信されたP2P開始要求は、端末1へ転送され、端末1と端末2との間にP2P通信路が確立する。
一方、ルータ1がFull Cone NATでなければ、端末2から送信されたP2P開始要求は、ルータ1よって破棄され、端末1[IPL1、LP1]に転送されることはない。
ただし、ルータ2のNATには、端末2が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末2まで転送するための設定が行われる。すなわち、ルータ2のNATには、ルータ2がFull Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がRestricted Cone NATである場合には、送信元IPアドレス[IPG1]から、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がPort Restricted Cone NATである場合には、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。
次に、端末1は、端末2にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS508)。サーバは、その応答として、ステップS504で登録したアドレス情報[IPG2、GP2]を設定したIP/ポート取得応答を端末1に返す(ステップS509)。
端末1は、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2]を取得すれば、取得したアドレス情報[IPG2、GP2]に向けて、P2P開始要求を送信する(ステップS510)。ルータ1は、端末1が送信したP2P開始要求をルータ2に中継する。ルータ2のNATには、上述したように、端末1からルータ1を介して、ルータ2[IPG2、GP2]に届いたパケットを端末2[IPL2、LP2]に転送する設定がある。そのため、ルータ2は、端末1が送信したP2P開始要求を端末2に転送することができる。
また、ルータ1のNATには、端末1が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末1まで転送するための設定が行われる。すなわち、ルータ1のNATには、ルータ1がRestricted Cone NATである場合は、送信元IPアドレス[IPG2]から、ルータ1[IPG1、GP1]に届いたパケットを、端末1[IPL1、LP1]に転送するという設定が行われる。また、ルータ1がPort Restricted Cone NATである場合には、端末2からルータ2[IPG2、GP2]を介して、ルータ1[IPG1、GP1]に届いたパケットを、端末1[IPL1、LP1]に転送するという設定が行われる。
P2P開始要求を受信した端末2は、端末1に対して、P2P開始応答を送信する(ステップS511)。このとき、ルータ1のNATには、上述したように、端末2からルータ2を介して、ルータ1[IPG1、GP1]に届いたパケットを端末1[IPL1、LP1]に転送する設定がある。そのため、ルータ1は、端末2から送信されたP2P開始応答を端末1に転送することができる。以上がルータ1及びルータ2がSymmetric NAT以外の時におけるSTUNによるP2P通信路の確立手法である。
一方、端末1と端末2との間の経路に、Symmetric NATであるルータが存在する場合には、STUNによってP2P通信路を確立する上で以下のような問題が発生する。その問題を図10及び図11を用いて説明する。図10は、ルータ1がSymmetric NATである場合に発生する問題を説明する図である。図11は、ルータ2がSymmetric NATである場合に発生する問題を説明する図である。
図10を参照して、ステップS601〜S604は、図9におけるステップS501〜S504と同様の処理であるため説明を省略する。次に、端末2は、端末1にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS605)。サーバは、その応答として、ステップS602で登録したアドレス情報[IPG1、GP1]を設定したIP/ポート取得応答を端末2に返す(ステップS606)。
端末2は、端末1にアクセスするときに用いるアドレス情報[IPG1、GP1]を取得すれば、取得したアドレス情報[IPG1、GP1]に向けて、P2P開始要求を送信する(ステップS607)。ルータ2は、端末2が送信したP2P開始要求をルータ1に中継する。ここでルータ1がSymmetric NATであるため、端末2から送信されたP2P開始要求のパケットは、ルータ1よって破棄され、端末1[IPL1、LP1]に転送されない。
ただし、ルータ2のNATには、端末2が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末2まで転送するための設定が行われる。すなわち、ルータ2のNATには、ルータ2がFull Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がRestricted Cone NATである場合は、送信元IPアドレス[IPG1]から、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。また、ルータ2がPort Restricted Cone NATである場合は、端末1からルータ1[IPG1、GP1]を介して、ルータ2[IPG2、GP2]に届いたパケットを、端末2[IPL2、LP2]に転送するという設定が行われる。
次に、端末1は、端末2にアクセスするときに用いるアドレス情報を取得するために、IP/ポート取得要求をサーバに対して送信する(ステップS608)。サーバは、その応答として、ステップS604で登録したアドレス情報[IPG2、GP2]を設定したIP/ポート取得応答を端末1に返す(ステップS609)。
端末1は、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2]を取得すれば、取得したアドレス情報[IPG2、GP2]に向けて、P2P開始要求を送信する(ステップS610)。このとき、ルータ1は、Symmetric NATであるため、端末1から送信されたP2P開始要求に、[GP1]以外のポート番号(例えば、[GP3])を割り当てることになる。
ここで、ルータ2がFull Cone NAT、あるいはRestricted Cone NATである場合には、端末1が送信したP2P開始要求は、ルータ2によって端末2[IPL2、LP2]に転送され、端末1と端末2との間におけるP2P通信路が確立する。しかし、ルータ2がPort Restricted Cone NAT、あるいはSymmetric NATである場合には、端末1が送信したP2P開始要求は、ルータ2によって破棄され、端末2に転送されない。このため、端末1と端末2との間におけるP2P通信路の確立は失敗する。
なお、ルータ2がSymmetric NAT(図11参照)である場合も、同様の問題によって、P2P通信路の確立は失敗する。
このように、ルータ1またはルータ2のいずれかがSymmetric NATである場合には、STUNによるP2P通信路確立の可能性は高いとは言い難い。そこで、このような問題を解決するために、従来、ルータ1及びルータ2がSymmetric NATである場合にも、P2P通信路の確立を成功させる手法が開示されている(例えば、特許文献1参照)。
図12は、従来の手法によるP2P通信路の確立手順を示すシーケンス図である。図12を参照して、ステップS801〜S804は、図9におけるステップS501〜S504と同様の処理であるため説明を省略する。端末2は、端末1にP2P通信を要求するために、P2P通信要求をサーバに対して送信する(ステップS805)。このとき、端末2は、P2P通信要求で使用する送信元ポート番号を、IP/ポート取得要求で使用した送信元ポート番号[LP2]から[LP2+a]に変更する。aは、任意の整数である。
端末2が新しいポート番号[LP2+a]を使う理由は、ルータ2に、P2P通信要求の送信元ポート番号として、新しい送信元ポート番号[GP2+b]を使わせるためである。bは、ルータ2におけるNATの不確定な増分値である。
P2P通信要求を受取ったサーバは、アドレス情報[IPG2、GP2+b]を設定したIP/ポート通知を端末1に送信する(ステップS806)。
IP/ポート通知を受取った端末1は、P2P通信を許可する場合は、サーバに対してP2P開始許可を送信する(ステップS807)。このとき、端末1は、P2P開始許可で使用する送信元ポート番号を、IP/ポート取得要求で使用した送信元ポート番号[LP1]から[LP1+d]に変更して送信する。端末1が[LP1+d]という新しいポート番号を使う理由は、ルータ1に、P2P通信許可の送信元ポート番号として、新しい送信元ポート番号[GP1+d]を使わせるためである。dは、任意の整数であり、ルータ1におけるNATの不確定な増分値である。
さらに、IP/ポート通知によって、端末2にアクセスするときに用いるアドレス情報[IPG2、GP2+b]を取得した端末1は、取得したアドレス情報[IPG2、GP2+b+n]に向けて、P2P開始要求を送信する(ステップS808)。
なお、ステップS807で送信されるP2P通信許可と、ステップS808で送信されるP2P開始要求とは、極めて短時間内に連続で送信される。このため、ルータ1によって、P2P通信許可の送信元ポート番号が[LP1+c]から[GP1+d]に変換された場合、P2P開始要求の送信元ポート番号は、[LP1+c+1]から[GP1+d+1]に変換される。
また、ルータ1のNATには、端末1が送信したP2P開始要求を中継する際に、中継したP2P開始要求と逆方向のパケットを、端末1まで転送するための設定が行われる。すなわち、ルータ1のNATには、端末2からルータ2[IPG2、GP2+b+n]を介して、ルータ1[IPG1、GP1+d+1]に届いたパケットを、端末1[IPL1、LP1+c+1]に転送するという設定が行われる。ここで、nは任意の整数値である。
サーバは、ステップS807で端末1が送信したP2P通信許可を受け取ると、端末2に対して、ルータ1のアドレス情報[IPG1、GP1+d]を設定したIP/ポート取得応答を送信する(ステップS809)。
次に、端末2は、IP/ポート取得応答によって、端末1にアクセスするときに用いるアドレス情報(すなわち、ルータ1のアドレス情報)[IPG1、GP1+d]を受取ったら、直ちに端末1へP2P開始要求を送信する(ステップS810)。このとき端末2は、ルータ1のポート番号[GP1+d+1]に向けて、送信元ポート番号を[LP2+a+1]から1つずつ増加させながらn個のP2P開始要求を送信する。このP2P開始要求の送信元ポート番号は、ルータ2によって、[GP2+b+m]から[GP2+b+m+n−1]までのポート番号に変換される。
端末2から送信された複数のP2P開始要求のいずれかは、逆方向のパケットを端末1まで転送するルータ1の設定と一致するため、端末1まで転送される。P2P開始要求を受取った端末1は、その応答としてP2P開始応答を送信する(ステップS811)。これによって、端末1と端末2との間におけるP2P通信路が確立する。
特開2004−180003号公報
しかしながら、図12に示した従来の手法においては、端末2は、端末1がステップS808でP2P開始要求を送信したポート番号を予測するために、ステップS810で複数のP2P開始要求を送信している。このために、P2P通信路の確立までの接続時間が遅延するという問題や、トラフィックが増大するという問題が発生していた。また、さらに、ルータ2の種類によっては、端末2から送信された複数のP2P開始要求に割り当てられるポート番号がランダムに変化する場合がある。このような場合、端末2から送信されたP2P開始要求には、順番にポート番号が割当てられないため、P2P通信路の接続性が悪くなるという問題が発生する可能性があった。
それ故に、本発明の目的は、他の通信端末との間でP2P通信路を確立するときに、短時間かつ少ないトラフィックで、高い接続性を実現する通信端末及び通信方法を提供することである。
本発明は、ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末に向けられている。そして、上記目的を達成するために、本発明の通信端末は、アドレス情報決定部と、アドレス情報交換部と、通信制御部と、通信部とを備える。
アドレス情報決定部は、グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで、ルータの中継特性を調査して、他のネットワーク上の通信端末との一対一の相互接続に使用するルータのアドレス情報を決定する。アドレス情報交換部は、アドレス情報決定部によって決定されたルータのアドレス情報を、他のネットワーク上の通信端末との間で互いに交換する。通信制御部は、アドレス情報交換部で交換されたルータのアドレス情報に基づいて、他のネットワーク上の通信端末との間で一対一の相互接続を行う。通信部は、通信端末の全ての通信を行う。アドレス情報決定部は、ルータの中継特性がPort Reuseである場合に、他のネットワーク上の通信端末と一対一の相互接続で使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定する。
より特定的には、アドレス情報決定部は、アドレス情報調査要求部と、アドレス情報受信部と、中継特性判断部と、通信ポート決定部とを含む。アドレス情報調査要求部は、ルータを介して、サーバに所定のメッセージを送信することで、サーバにルータのアドレス情報を要求する。アドレス情報受信部は、要求に対する応答として、サーバからルータのアドレス情報を受信する。中継特性判断部は、アドレス情報受信部が受信したルータのアドレス情報に基づいて、ルータの中継特性を判断する。通信ポート決定部は、中継特性判断部が判断したルータの中継特性に基づいて、他のネットワーク上の通信端末と一対一の相互接続で使用する通信端末自身のポート番号を決定する。
好ましくは、アドレス情報調査要求部は、通信端末の所定のポート番号から、サーバの第1のポート番号に向けて第1のポート番号調査要求メッセージと、サーバの第2のポート番号に向けて第2のポート番号調査要求メッセージとを連続して送信する。アドレス情報受信部は、サーバから、第1のポート番号調査要求メッセージに対する応答である第1のポート番号調査応答メッセージと、第2のポート番号調査要求メッセージに対する応答である第2のポート番号調査応答メッセージとを受信する。中継特性判断部は、アドレス情報受信部が受信した第1のポート番号調査応答メッセージと、第2のポート番号調査応答メッセージとに基づいて、ルータの中継特性を判断する。
第1のポート番号調査応答メッセージには、ルータのIPアドレスと、第1のポート番号調査要求メッセージをサーバに中継したときのルータの送信元ポート番号とが含まれる。第2のポート番号調査応答メッセージには、ルータのIPアドレスと、第2のポート番号調査要求メッセージをサーバ中継したときルータの送信元ポート番号とが含まれる。中継特性判断部は、第1のポート番号調査要求メッセージを送信した通信端末の所定のポート番号と、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致する場合に、ルータの中継特性がPort Reuseの性質を持っていると判断する。
中継特性判断部は、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致する場合に、ルータの中継特性がCone系のNAT機能を持っていると判断する。また、中継特性判断部は、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号とが一致しない場合に、ルータの中継特性がSymmetric NATの機能を持っていると判断する。
通信ポート決定部は、中継特性判断部によって、ルータの中継特性がPort Reuseでなく、かつCone系のNAT機能を持っていると判断された場合に、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号を、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる。
通信ポート決定部は、中継特性判断部によって、ルータの中継特性がPort Reuseでなく、かつSymmetric NATの機能を持っていると判断された場合に、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号と、第1のポート番号調査応答メッセージに含まれるルータの送信元ポート番号との差分を、第2のポート番号調査応答メッセージに含まれるルータの送信元ポート番号に加算したポート番号を、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる。
より特定的には、アドレス情報交換部は、中継情報送信部と、中継情報受信部とを含む。中継情報送信部は、サーバを介して、他のネットワーク上の通信端末との一対一の相互接続に使用するルータのアドレス情報を設定したメッセージを、他のネットワーク上の通信端末に送信する。中継情報受信部は、サーバを介して、自通信端末と一対一の相互接続に使用するアドレス情報が設定されたメッセージを、他のネットワーク上の通信端末から受信する。
好ましくは、通信制御部は、通信部を介して、アドレス情報交換部によって交換されたアドレス情報宛てに、一対一の相互接続の開始を要求するメッセージを送信し、他のネットワーク上の通信端末から一対一の相互接続の開始を要求するメッセージを受信した場合に、他のネットワーク上の通信端末との間で一対一の相互接続を行う。
また、本発明は、ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末が実行する通信方法にも向けられている。上記目的を達成するために、本発明の通信方法は、通信端末が、グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで、ルータの中継特性を調査し、ルータの中継特性がPort Reuseである場合に、他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定し、決定されたルータのアドレス情報を、他のネットワーク上の通信端末との間で互いに交換し、交換されたアドレス情報に基づいて、他のネットワーク上の通信端末との間で一対一の相互接続を実施する。
以上のように、本発明の通信端末及び通信方法によれば、サーバとの間で所定のメッセージを送受信し、送受信したメッセージに基づいてルータの中継特性を調査し、ルータの中継特性がPort Reuseである場合に、他の通信端末とのP2P通信に使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定する。これによって、本発明の通信端末及び通信方法は、ルータの中継特性がPort Reuseであれば、サーバを用いたルータが使用するアドレス情報を決定するための手順を簡略化することができる。
また、本発明の通信端末及び通信方法は、ルータの中継特性がPort Reuseであり、かつSymmetric NATである場合に、ルータが使用するポート番号を予測するための手順を省略することができる。故に、本発明の通信端末及び通信方法によれば、他の通信端末とのP2P通信路の確立時に、より短時間かつ少ないトラフィックで、高い接続性を実現することができる。
以下に、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係る通信システムのネットワーク構成の一例を示す図である。図1において、グローバルネットワーク300と、プライベートネットワーク100とが、グローバルIPアドレス[IPG1]を有するルータ11を介して接続されている。また、グローバルネットワーク300と、プライベートネットワーク200とが、グローバルIPアドレス[IPG2]を有するルータ21を介して接続されている。グローバルネットワーク300には、サーバ30が接続されている。プライベートネットワーク100には、プライベートIPアドレス[IPL1]を有する通信端末(宅内端末)10が接続されている。プライベートネットワーク200には、プライベートIPアドレス[IPL2]を有する通信端末(宅内端末)20が接続されている。
ルータ11は、Symmetric NATであり、かつPort Reuseの性質を持ったルータである。ここで、Port Reuseの性質を持ったルータ11について、図2を用いて説明する。図2において、Port Reuseの性質を持ったルータ11は、通信端末10が送信したパケットを中継する際に、中継するパケットの送信元ポート番号と同じポート番号を、ルータ11の送信元ポート番号として割り当てることを特徴とする。
例えば、ルータ11は、通信端末10のポート番号[Pa]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番号として、ルータ11のポート番号[Pa]を割り当てる。また、ルータ11は、通信端末10のポート番号[Pb]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番として、ルータ11のポート番号[Pb]を割り当てる。また、ルータ11は、通信端末10のポート番号[Pc]から送信されたパケットを中継する際には、中継するパケットの送信元ポート番として、ルータ11のポート番号[Pc]を割り当てる。一方、ルータ21は、Full Cone NATであり、かつPort Reuseの性質を持っていないルータである。
図3Aは、通信端末10の構成の一例を示すブロック図である。図3Aにおいて、通信端末10は、アドレス情報調査要求部101、アドレス情報受信部102、通信ポート決定部103、中継特性判断部104、中継情報送信部105、中継情報受信部106、通信制御部107、及び通信部108を備える。
アドレス情報調査要求部101は、自身が接続するルータ11に割り当てられるポート番号を調査するメッセージ(ポート番号調査要求メッセージ)をサーバ30に向けて送信する。アドレス情報受信部102は、ポート番号調査要求メッセージに対する応答として、ルータ11に割り当てられるポート番号を含んだメッセージ(ポート番号調査応答メッセージ)をサーバ30から受信する。中継特性判断部104は、受信したポート番号調査応答メッセージに基づいて、ルータ11の中継特性を判断する。通信ポート決定部103は、ルータ11の中継特性に基づいて、通信端末10がP2P通信で使用するポート番号を決定する。
中継情報送信部105は、ルータ11のIPアドレスと、通信端末10がP2P通信で使用するポート番号とを含むメッセージ(IP/ポート通知メッセージ)を、サーバ30に向けて送信する。中継情報受信部106は、通信端末20が送信したIP/ポート通知メッセージをサーバ30から受信する。通信制御部107は、通信部108を制御して、通信端末20とのP2P通信を行う。通信部108は、通信端末10に関する全ての通信を行う。
なお、アドレス情報調査要求部101、アドレス情報受信部102、通信ポート決定部103、及び中継特性判断部104は、通信端末20とのP2P通信に使用するアドレス情報(IPアドレス及びポート番号)を決定するので、アドレス情報決定部と記してもよい。また、中継情報送信部105、及び中継情報受信部106は、決定したアドレス情報を通信端末20との間で交換するので、アドレス情報交換部と記してもよい。
図3Bは、通信端末20の構成の一例を示すブロック図である。図3Bにおいて、通信端末20は、アドレス情報調査要求部201、アドレス情報受信部202、通信ポート決定部203、中継特性判断部204、中継情報送信部205、中継情報受信部206、通信制御部207、及び通信部208を備える。なお、通信端末20の各構成は、上述した通信端末10と同様であるため説明を省略する。
図3Cは、サーバ30の構成の一例を示すブロック図である。図3Cにおいて、サーバ30は、アドレス情報調査部301、アドレス情報送信部302、中継情報転送部303、及び通信部304を備える。
アドレス情報調査部301は、通信端末10又は20からポート番号調査要求メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス及び送信元ポート番号を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したIPアドレス及び送信元ポート番号を含んだメッセージ(ポート番号調査応答メッセージ)を通信端末10又は20に対して返信する。中継情報転送部303は、一方の通信端末から受信したIP/ポート通知メッセージを、他方の通信端末に中継する。通信部304は、サーバ30に関する全ての通信を行う。
図4は、本発明の一実施形態に係る通信システムがP2P通信路確立時に実行する動作を説明する図である。図4において、本発明の一実施形態に係る通信システムは、P2P通信路確立時に、NAT調査フェーズ(ステップS100、S200)、P2P通信ポート交換フェーズ(ステップS300)、及びP2P通信路確立フェーズ(ステップS400)を実行する。
NAT調査フェーズ(ステップS100、S200)は、通信端末10及び通信端末20が、サーバ30と通信を行って、自身が接続されてルータ11又はルータ21の中継特性を調査し、P2P通信において互いにアクセス可能な通信ポートを決定する。具体的には、通信端末10及び通信端末20は、ルータ11又はルータ21の中継特性として、NATの種類(例えば、Full Cone NAT、Symmetric NATなど)と、Port Reuseの性質を持っているかどうかを調査する。
P2P通信ポート交換フェーズ(ステップS300)は、通信端末10及び通信端末20が、NAT調査フェーズで決定した通信ポートをサーバ30経由で互いに交換する。P2P通信路確立フェーズ(ステップS400)は、通信端末10及び通信端末20が、P2P通信ポート交換フェーズで交換した互いの通信ポートに向けてパケットを送信して、P2P通信路を確立する。
図5Aは、通信端末10におけるNAT調査フェーズ(ステップS100)の詳細な動作を示すフローチャートである。以下、図5Aを参照しながら、通信端末10におけるNAT調査フェーズ(ステップS100)について説明する。なお、図5Aにおいて、各メッセージの下の(IPG1、GP11)等の記載は、各メッセージに含まれる送信元アドレス情報(送信元IPアドレス、及び送信元ポート番号)を示している。
まず、通信端末10において、アドレス情報調査要求部101は、通信端末10のポート番号[LP1]から、サーバ30のポート番号[SP0]に向けて、ポート番号調査要求1メッセージを送信する(ステップS101)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求1メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP11])を抜き出す。アドレス情報送信部302は、抜き出したルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP11]をポート番号調査応答1メッセージに含めて、通信端末10に返信する(ステップS102)。
続いて、通信端末10において、アドレス情報調査要求部101は、通信端末10のポート番号[LP1]から、サーバ30のポート番号[SP1]に向けて、ポート番号調査要求2メッセージを送信する(ステップS103)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求2メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP12])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ11のIPアドレス[IPG1]、及び送信元ポート番号[GP12]をポート番号調査応答2メッセージに含めて、通信端末10に返信する(ステップS104)。
ここで、ステップS101及びS103において、通信端末10が、同じポート番号[LP1]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信する理由を説明する。通信端末10は、サーバ30が受信した2つのポート番号調査要求メッセージに含まれるルータ11の送信元ポート番号が等しい(すなわち、GP11=GP12である)場合には、ルータ11がCone系(Full Cone、Restricted Cone、又はPort Restricted Cone)NATであると判断できる。また、通信端末10は、サーバ30が受信した2つのポート番号調査要求メッセージに含まれる送信元ポート番号が異なる(すなわち、GP11≠GP12である)場合には、ルータ11がSymmetric NATであると判断できる。すなわち、通信端末10は、同じポート番号[LP1]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信することで、ルータ11のNATの種類を調査することができる。
なお、通信端末10は、上述した以外の方法を用いても、ルータ11のNATの種類を調査してもよい。例えば、通信端末10は、異なるIPアドレスを持つ2つのサーバに対してルータ経由でパケットを送信し、そのときに割り当てられるルータのポート番号が等しいか、あるいは異なるかで、ルータのNATの種類を調査してもよい。
通信端末10において、アドレス情報受信部102は、通信部108を介して、ポート番号調査応答1メッセージ、及びポート番号調査応答2メッセージを受信すると、中継特性判断部104に受信メッセージを渡す。中継特性判断部104は、ポート番号調査応答1メッセージに含まれるルータ11のポート番号[GP11]と、ポート番号調査要求1メッセージを送信したときの通信端末10のポート番号[LP1]とが一致するかどうかをチェックする(ステップS105)。中継特性判断部104は、ルータ11のポート番号[GP11]と、通信端末10のポート番号[LP1]とが一致する(すなわち、GP11=LP1である)場合には、ルータ11のNATが、Port Reuseの性質を持っていると判断する(ステップS106)。
さらに、通信端末10において、中継特性判断部104は、アドレス情報受信部102が受信したポート番号調査応答1メッセージと、ポート番号調査応答2メッセージとに含まれるルータ11のポート番号が一致するか否かをチェックする(ステップS107)。中継特性判断部104は、ルータ11のポート番号が一致している場合には、ルータ11がCone系NATであると判断し、ルータ11のポート番号が一致していない場合には、ルータ11がSymmetric NATであると判断する(ステップS108)。
通信ポート決定部103は、中継特性判断部104が判断したルータ11の中継特性に基づいて、通信端末10がP2P通信で使用するポート番号を決定する(ステップS109)。なお、P2P通信ポート決定処理(ステップS109)の詳細については後述する。
図5Bは、通信端末20におけるNAT調査フェーズ(ステップS200)の詳細な動作を示すフローチャートである。以下、図5Bを参照しながら、通信端末20におけるNAT調査フェーズ(ステップS200)処理について説明する。
まず、通信端末20において、アドレス情報調査要求部201は、通信端末20のポート番号[LP2]から、サーバ30のポート番号[SP0]に向けて、ポート番号調査要求1メッセージを送信する(ステップS201)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求1メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP21])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP21]をポート番号調査応答1メッセージに含めて、通信端末20に返信する(ステップS202)。
通信端末20において、アドレス情報調査要求部201は、通信端末20のポート番号[LP2]から、サーバ30のポート番号[SP1]に向けて、ポート番号調査要求2メッセージを送信する(ステップS203)。
サーバ30において、アドレス情報調査部301は、通信部304を介して、ポート番号調査要求2メッセージを受信すると、受信メッセージ(受信パケットのヘッダ)から、送信元IPアドレス、及び送信元ポート番号(すなわち、ルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP22])を抜き出す。アドレス情報送信部302は、アドレス情報調査部301が抜き出したルータ21のIPアドレス[IPG2]、及び送信元ポート番号[GP22]をポート番号調査応答2メッセージに含めて、通信端末20に返信する(ステップS204)。
ここで、ステップS201及びS203において、通信端末20が、同じポート番号[LP2]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信する理由は、図5Aを用いて通信端末10に対して行った説明と同様である。
次に、通信端末20において、アドレス情報受信部202は、通信部208を介して、ポート番号調査応答1メッセージ、及びポート番号調査応答2メッセージを受信すると、中継特性判断部204に受信メッセージを渡す。中継特性判断部204は、ポート番号調査応答1メッセージに含まれるルータ21のポート番号[GP21]と、ポート番号調査要求1メッセージを送信したときの通信端末20のポート番号[LP2]とが一致するかどうかをチェックする(ステップS205)。中継特性判断部204は、ルータ21のポート番号[GP21]と、通信端末20のポート番号[LP2]とが一致する(すなわち、GP21=LP2である)場合には、ルータ21のNATが、Port Reuseの性質を持っていると判断する(ステップS206)。
さらに、通信端末20において、中継特性判断部204は、アドレス情報受信部202が受信したポート番号調査応答1メッセージと、ポート番号調査応答2メッセージとに含まれるルータ21のポート番号が一致するか否かをチェックする(ステップS207)。中継特性判断部204は、ルータ21のポート番号が一致している場合には、ルータ21がCone系NATであると判断し、ルータ21のポート番号が一致していない場合には、ルータ21がSymmetric NATであると判断する(ステップS208)。
通信ポート決定部203は、中継特性判断部204が判断したルータ21の中継特性に基づいて、通信端末20がP2P通信で使用するポート番号を決定する(ステップS209)。
図5Cは、図5AにおけるP2P通信ポート決定処理(ステップS109)の詳細な動作を示すフローチャートである。以下、図5Cを参照しながら、通信端末10におけるP2P通信ポート決定処理(ステップS109)の詳細について説明する。
まず、通信端末10において、通信ポート決定部103は、ルータ11のNATがPort Reuseの性質を持っているかどうかをチェックする(ステップS1091)。通信ポート決定部103は、ルータ11のNATがPort Reuseの性質を持っていれば、P2P通信で使用するポート番号を自由に選択する(ステップS1092)。なお、通信ポート決定部103は、P2P通信で使用するポート番号として、ポート番号[GP13]を選択したものとする。
ここで、ルータ11のNATがPort Reuseである場合に、通信ポート決定部103がP2P通信で使用するポート番号を自由に選択してもよい理由を説明する。ルータ11がPort Reuseの性質を持っている場合、ルータ11には、通信端末10が開いたポート番号と同じポート番号が割り振られることになる。このため、通信端末10は、次のP2P通信ポート交換フェーズ(ステップS300)において、通信端末20に通知するポート番号として、自身が開いたポート番号を通知すればよいことになる。このため、通信ポート決定部103は、P2P通信で使用するポート番号を自由に選択することができる。
通信ポート決定部103は、ルータ11のNATがPort Reuseでなければ、ルータ11がCone系のNATであるかどうかをチェックする(ステップS1093)。通信ポート決定部103は、ルータ11のNATがCone系のNATであれば、P2P通信で使用するポート番号として、ポート番号調査応答1メッセージ(ステップS102)で取得したルータ11のポート番号を選択する(ステップS1094)。その理由は、ルータ11がCone系のNATである場合、ルータ11が中継するメッセージの送信元ポート番号が同じであれば、ルータ11には、常に同じポート番号が割り振られるからである。
一方、通信ポート決定部103は、ルータ11がCone系のNATでない(すなわち、ルータ11がSymmetric NATである)場合は、P2P通信時にルータ11に割り当てられるポート番号を予測する必要がある。そのため、通信ポート決定部103は、ポート番号調査応答2メッセージで取得したルータ11のポート番号[GP12]と、ポート番号調査応答1メッセージで取得したルータ11のポート番号[GP11]との差分をαとすると、P2P通信で使用するポート番号として[GP12+α]を選択する(ステップS1095)。
なお、図5BにおけるP2P通信ポート決定処理(ステップS209)も、図5Cと同様であるので説明を省略する。
また、本実施形態では、ルータ11は、Port Reuseであり、かつSymmetric NATであることを想定している。そのため、ルータ11が割り当てるポート番号は、GP11=LP1であり、かつGP11=GP12である。また、本実施形態では、ルータ21は、Port Reuseでなく、かつFull Cone NATであることを想定している。そのため、ルータ21が割り当てるポート番号は、GP21≠LP2であり、かつGP21=GP22である。以降、ルータ11及びルータ21が、これらのポート番号を割り当てるものとして説明する。
図6は、図4におけるP2P通信ポート交換フェーズ(ステップS300)の詳細な動作を示すフローチャートである。以下、図6を参照しながら、P2P通信ポート交換フェーズ(ステップS300)の詳細について説明する。
通信端末10において、中継情報送信部105は、ルータ11のIPアドレスと、通信ポート決定部103が決定したポート番号とを含むIP/ポート通知メッセージを、サーバ30に向けて送信する(ステップS301)。本実施形態では、ルータ11がPort Reuseであるため、サーバ30が受信するIP/ポート通知メッセージには、ルータ11のIPアドレス[IPG1]と、ポート番号[GP13]とが含まれる。
サーバ30において、中継情報転送部303は、通信部304を介して、通信端末10から受信したIP/ポート通知メッセージを、通信端末20に中継する(ステップS302)。通信端末20において、中継情報受信部206は、サーバ30を介して、通信端末10から送信されたIP/ポート通知メッセージを受信する。
また、通信端末20において、中継情報送信部205は、通信ポート決定部203が決定したポート番号をIP/ポート通知メッセージとして、サーバ30に対して送信する(ステップS303)。本実施形態では、ルータ21がFull Cone NATであり、かつPort Reuseでないため、IP/ポート通知メッセージには、ポート番号調査応答1メッセージで取得したルータ21のIPアドレス[IPG2]と、ポート番号[GP21]とが含まれる。
サーバ30において、中継情報転送部303は、通信部304を介して、通信端末20から受信したIP/ポート通知メッセージを、通信端末10に中継する(ステップS304)。通信端末10において、中継情報受信部206は、サーバ30を介して、通信端末20から送信されたIP/ポート通知メッセージを受信する。
図7は、図4におけるP2P通信路確立フェーズ(ステップS400)の詳細な動作を示すフローチャートである。以下、図7を参照しながら、P2P通信路確立フェーズ(ステップS400)の詳細について説明する。
通信端末20において、通信制御部207は、ステップS302で通信端末10から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG1、GP13]に向けて、P2P開始要求メッセージを送信する(ステップS401)。通信端末20から送信されたP2P開始要求メッセージは、ルータ21によって、ルータ11に中継される。このとき、ルータ21のNATには、逆方向のパケットを中継する設定として、通信端末10(すなわち、ルータ11[IPG1、GP13])から、ルータ21[IPG2、GP21]に届いたパケットを、通信端末20[IPL2、LP2]に中継するための設定が行われる。
通信端末20から送信されたP2P開始要求メッセージは、ルータ21を介して、ルータ11によって受信される。しかし、ルータ11のNATには、ルータ21[IPG2、GP21]を介して、アドレス情報[IPG1、GP13]に向けて送信されたパケットを、通信端末10に中継するための設定が行われていない。このため、通信端末20から送信されたP2P開始要求メッセージは、ルータ11によって破棄される。
一方、通信端末10において、通信制御部107は、ステップS304で通信端末20から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG2、GP21]に向けて、P2P開始要求メッセージを送信する(ステップS402)。通信端末10から送信されたP2P開始要求メッセージは、ルータ11によって、ルータ21に中継される。このとき、ルータ11のNATには、逆方向のパケットを中継する設定として、通信端末20(すなわち、ルータ21[IPG2、GP21])から、ルータ11[IPG1、GP13]に届いたパケットを、通信端末10[IPL1、LP1]に中継するための設定が行われる。
通信端末10から送信されたP2P開始要求メッセージは、ルータ11を介して、ルータ21によって受信される。ここで、ルータ21には、上述したように、宅内端末11(すなわち、ルータ11[IPG1、GP13])から、ルータ21[IPG2、GP21]に届いたパケットを、通信端末20[IPL2、LP2]に中継するための設定が行われている。このため、ルータ21は、通信端末10から送信されたP2P開始要求メッセージを通信端末20に中継することができる。
また、通信端末20において、通信制御部207は、通信端末10からP2P開始要求メッセージを受信すると、ステップS302で通信端末10から受信したIP/ポート通知メッセージに含まれるアドレス情報[IPG1、GP13]に向けて、再度P2P開始要求メッセージを送信する(ステップS403)。通信端末20から送信されたP2P開始要求メッセージは、ルータ21によって、ルータ11に中継される。ここで、ルータ11には、上述したように、通信端末20(すなわち、ルータ21[IPG2、GP21])から、ルータ11[IPG1、GP13]に届いたパケットを、通信端末10[IPL1、LP1]に中継するための設定が行われている。このため、ルータ11は、通信端末20から送信されたP2P開始要求メッセージを通信端末10に中継することができる。これによって、通信端末10と通信端末20との間でのP2P通信路が確立される。
以上のように本発明の一実施形態に係る通信端末10は、サーバ30との間で所定のメッセージを送受信し、送受信したメッセージに基づいてルータ11の中継特性を調査する。通信端末10は、ルータ11の中継特性がPort Reuseである場合に、他の通信端末20とのP2P通信で使用する通信端末自身のポート番号を少なくとも含むアドレス情報を、ルータが使用するアドレス情報として決定する。これによって、通信端末10は、ルータ11の中継特性がPort Reuseであれば、サーバ30を用いたルータ11が使用するアドレス情報を決定するための手順を簡略化できる。
また、通信端末10は、ルータ11の中継特性がPort Reuseであり、かつSymmetric NATである場合に、ルータ11が使用するポート番号を予測するための手順を省略することができる。故に、通信端末10は、他の通信端末20とのP2P通信路の確立時に、より短時間かつ少ないトラフィックで、高い接続性を実現することができる。
なお、図4において、NAT調査フェーズ(ステップS100、S200)は、次に行われるP2P通信ポート交換フェーズ(ステップS300)の前準備として、各端末が事前に行っておくものであり、必ずしも図4に示した方法で実施されなくてもよい。
また、一度P2P通信を行った端末間で、再びP2P通信を行う場合においては、前回調査したルータの中継特性がPort Reuseであれば、以降のNAT調査フェーズを省略してもよい。
また、図6においては、最初に通信端末10がIP/ポート通知メッセージを送信しているが、図5A及び図5Bに示すP2P通信ポートを決定するタイミングによっては、最初に通信端末20がIP/ポート通知メッセージを送信する場合もあり、必ずしも図6に示す順序で処理が行われるわけではない。
また、図6において、通信端末10及び通信端末20は、IP/ポート通知メッセージで1つのIP/ポートの組み合わせしか相手端末に通知していないが、複数のIP/ポートの組合せを通知することによって、P2P通信路確立の接続性を高めてもよい。
また、図7においては、最初に通信端末20がP2P通信開始要求メッセージを送信しているが、図6に示すIP/ポート通知メッセージを受信するタイミングによっては、最初に通信端末10がP2P通信開始要求メッセージを送信する場合もあり、必ずしも図7に示す順序で処理が行われるわけではない。
本発明の通信端末及び通信方法は、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う場合等に有用である。
本発明の一実施形態に係る通信システムのネットワーク構成の一例を示す図
Port Reuseの性質を持ったルータ11を説明する図
通信端末10の構成の一例を示すブロック図
通信端末20の構成の一例を示すブロック図
サーバ30の構成の一例を示すブロック図
本発明の一実施形態に係る通信システムにおけるP2P通信路確立時の動作を説明する図
通信端末10におけるNAT調査フェーズ(ステップS100)の詳細な動作を示すフローチャート
通信端末20におけるNAT調査フェーズ(ステップS200)の詳細な動作を示すフローチャート
P2P通信ポート決定処理(ステップS109)の詳細な動作を示すフローチャート
P2P通信ポート交換フェーズ(ステップS300)の詳細な動作を示すフローチャート
P2P通信路確立フェーズ(ステップS400)の詳細な動作を示すフローチャート
NATの種類について説明する図
STUNを用いた手法によってP2P通信を実現する場合の端末間のシーケンスを示す図
ルータ1がSymmetric NATである場合に発生する問題を説明する図
ルータ2がSymmetric NATである場合に発生する問題を説明する図
特許文献1に開示されている従来の手法によるP2P通信路の確立手順を示すシーケンス図
符号の説明
10、20 通信端末(宅内端末)
11、21 ルータ
30 サーバ
100、200 プライベートネットワーク
300 グローバルネットワーク
101、201 アドレス情報調査要求部
102、202 アドレス情報受信部
103、203 通信ポート決定部
104、204 中継特性判断部
105、205 中継情報送信部
106、206 中継情報受信部
301 アドレス情報調査部
302 アドレス情報送信部
303 中継情報転送部
304 通信部