JPWO2006049251A1 - 通信端末及び通信方法 - Google Patents

通信端末及び通信方法 Download PDF

Info

Publication number
JPWO2006049251A1
JPWO2006049251A1 JP2006542446A JP2006542446A JPWO2006049251A1 JP WO2006049251 A1 JPWO2006049251 A1 JP WO2006049251A1 JP 2006542446 A JP2006542446 A JP 2006542446A JP 2006542446 A JP2006542446 A JP 2006542446A JP WO2006049251 A1 JPWO2006049251 A1 JP WO2006049251A1
Authority
JP
Japan
Prior art keywords
router
port number
communication terminal
communication
address information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006542446A
Other languages
English (en)
Other versions
JP4667390B2 (ja
Inventor
望絵 濱本
望絵 濱本
古門 健
健 古門
山本 学
学 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006049251A1 publication Critical patent/JPWO2006049251A1/ja
Application granted granted Critical
Publication of JP4667390B2 publication Critical patent/JP4667390B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

異なるプライベートネットワークに接続された通信端末との間で、P2P通信路を確立することができる通信端末を提供する。 通信端末(10)は、ルータ(11)を介して、サーバ(30)とメッセージを送受信することで、ルータ(11)の中継特性を調査する。通信端末(10)は、調査したルータ(11)の中継特性がPort Reuseであれば、通信端末(20)とP2P通信で使用する自身のポート番号を少なくとも含むアドレス情報を、ルータのアドレス情報として決定する。通信端末(10)は、決定したルータ(11)のアドレス情報を通信端末(20)と交換する。通信端末(10)は、交換したアドレス情報に基づいて、通信端末(20)との間でP2P通信路を確立する。

Description

本発明は、通信端末及び通信方法に関し、より特定的には、ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末及び通信方法に関する。
ネットワーク全体で一意に決定され、一対一(ピア・ツー・ピア。以降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及びS10において、通信端末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及びS20において、通信端末20が、同じポート番号[LP2]からサーバ30の2つのポート番号[SP0、SP1]に対して、ポート番号調査要求メッセージを送信する理由は、図5Aを用いて通信端末10に対して行った説明と同様である。
次に、通信端末20において、アドレス情報受信部202は、通信部208を介して、ポート番号調査応答1メッセージ、及びポート番号調査応答2メッセージを受信すると、中継特性判断部20に受信メッセージを渡す。中継特性判断部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]に届いたパケットを、通信端末0[IPL、LP]に中継するための設定が行われる。
通信端末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通信ポートを決定するタイミングによっては、最初に通信端末0が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 通信部

Claims (10)

  1. ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、前記ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末であって、
    前記グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで、前記ルータの中継特性を調査して、前記他のネットワーク上の通信端末と一対一の相互接続で使用する前記ルータのアドレス情報を決定するアドレス情報決定部と、
    前記アドレス情報決定部によって決定された前記ルータのアドレス情報を、前記他のネットワーク上の通信端末との間で互いに交換するアドレス情報交換部と、
    前記アドレス情報交換部で交換された前記ルータのアドレス情報に基づいて、前記他のネットワーク上の通信端末との間で一対一の相互接続を行う通信制御部と、
    前記通信端末の全ての通信を行う通信部とを備え、
    前記アドレス情報決定部は、前記ルータの中継特性がPort Reuseである場合に、前記他のネットワーク上の通信端末と一対一の相互接続で使用する前記通信端末自身のポート番号を少なくとも含むアドレス情報を、前記ルータのアドレス情報として決定する、通信端末。
  2. 前記アドレス情報決定部は、
    前記ルータを介して、前記サーバに所定のメッセージを送信することで、前記ルータのアドレス情報を要求するアドレス情報要求部と、
    前記要求に対する応答として、前記サーバから前記ルータのアドレス情報を受信するアドレス情報受信部と、
    前記アドレス情報受信部が受信した前記ルータのアドレス情報に基づいて、前記ルータの中継特性を判断する中継特性判断部と、
    前記中継特性判断部が判断した前記ルータの中継特性に基づいて、前記他のネットワーク上の通信端末と一対一の相互接続で使用する前記通信端末自身のポート番号を決定するポート番号決定部とを含む、請求項1に記載の通信端末。
  3. 前記アドレス情報調査要求部は、前記通信端末の所定のポート番号から、前記サーバの第1のポート番号に向けて第1のポート番号調査要求メッセージと、前記サーバの第2のポート番号に向けて第2のポート番号調査要求メッセージとを連続して送信し、
    前記アドレス情報受信部は、前記サーバから、前記第1のポート番号調査要求メッセージに対する応答である第1のポート番号調査応答メッセージと、前記第2のポート番号調査要求メッセージに対する応答である第2のポート番号調査応答メッセージとを受信し、
    前記中継特性判断部は、前記アドレス情報受信部が受信した前記第1のポート番号調査応答メッセージと、前記第2のポート番号調査応答メッセージとに基づいて、前記ルータの中継特性を判断する、請求項2に記載の通信端末。
  4. 前記第1のポート番号調査応答メッセージには、前記ルータのIPアドレスと、前記第1のポート番号調査要求メッセージを前記サーバに中継したときの前記ルータの送信元ポート番号とが含まれており、
    前記第2のポート番号調査応答メッセージには、前記ルータのIPアドレスと、前記第2のポート番号調査要求メッセージを前記サーバ中継したとき前記ルータの送信元ポート番号とが含まれており、
    前記中継特性判断部は、前記第1のポート番号調査要求メッセージを送信したときの通信端末のポート番号と、前記第1のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号とが一致する場合に、前記ルータの中継特性がPort Reuseであると判断する、請求項3に記載の通信端末。
  5. 前記中継特性判断部は、
    前記第1のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号と、前記第2のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号とが一致する場合に、前記ルータの中継特性がCone系のNAT機能を持っていると判断し、
    前記第1のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号と、前記第2のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号とが一致しない場合に、前記ルータの中継特性がSymmetric NAT機能を持っていると判断する、請求項4に記載の通信端末。
  6. 前記通信ポート決定部は、前記中継特性判断部によって、前記ルータの中継特性がPort Reuseでなく、かつCone系のNAT機能を持っていると判断された場合に、前記第1のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号を、前記他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる、請求項5に記載の通信端末。
  7. 前記通信ポート決定部は、前記中継特性判断部によって、前記ルータの中継特性がPort Reuseでなく、かつSymmetric NATの機能を持っていると判断された場合に、前記第2のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号と、前記第1のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号との差分を、前記第2のポート番号調査応答メッセージに含まれる前記ルータの送信元ポート番号に加算したポート番号を、前記他のネットワーク上の通信端末と一対一の相互接続で使用するポート番号として用いる、請求項5に記載の通信端末。
  8. 前記アドレス情報交換部は、
    前記サーバを介して、前記他のネットワーク上の通信端末と一対一の相互接続に使用する前記ルータのアドレス情報を設定したメッセージを、前記他のネットワーク上の通信端末に送信する中継情報送信部と、
    前記サーバを介して、自通信端末と一対一の相互接続に使用するアドレス情報が設定されたメッセージを、前記他のネットワーク上の通信端末から受信する中継情報送信部とを含む、請求項1に記載の通信端末。
  9. 前記通信制御部は、前記通信部を介して、前記アドレス情報交換部によって交換されたアドレス情報宛てに、一対一の相互接続の開始を要求するメッセージを送信し、前記他のネットワーク上の通信端末から一対一の相互接続の開始を要求するメッセージを受信した場合に、前記他のネットワーク上の通信端末との間で一対一の相互接続を行う、請求項1に記載の通信端末。
  10. ルータによってグローバルネットワークと接続されたプライベートネットワーク上に存在し、前記ルータを介して他のネットワーク上の通信端末と一対一の相互接続を行う通信端末が実行する通信方法であって、
    前記グローバルネットワーク上にあるサーバとの間で所定のメッセージを送受信することで前記ルータの中継特性を調査し、
    前記ルータの中継特性がPort Reuseである場合に、前記他のネットワーク上の通信端末と一対一の相互接続で使用する前記通信端末自身のポート番号を少なくとも含むアドレス情報を、前記ルータのアドレス情報として決定し、
    前記決定されたルータのアドレス情報を、前記他のネットワーク上の通信端末との間で互いに交換し、
    前記交換されたアドレス情報に基づいて、前記他のネットワーク上の通信端末との間で一対一の相互接続を行う、通信方法。
JP2006542446A 2004-11-08 2005-11-04 通信端末及び通信方法 Expired - Fee Related JP4667390B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004323354 2004-11-08
JP2004323354 2004-11-08
PCT/JP2005/020304 WO2006049251A1 (ja) 2004-11-08 2005-11-04 通信端末及び通信方法

Publications (2)

Publication Number Publication Date
JPWO2006049251A1 true JPWO2006049251A1 (ja) 2008-05-29
JP4667390B2 JP4667390B2 (ja) 2011-04-13

Family

ID=36319251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542446A Expired - Fee Related JP4667390B2 (ja) 2004-11-08 2005-11-04 通信端末及び通信方法

Country Status (4)

Country Link
US (1) US7558249B2 (ja)
JP (1) JP4667390B2 (ja)
CN (1) CN101053218B (ja)
WO (1) WO2006049251A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090313386A1 (en) * 2006-09-22 2009-12-17 Moe Hamamoto Communication apparatus, communication method and communication system
JP4411332B2 (ja) 2007-03-20 2010-02-10 パナソニック株式会社 Ip通信装置及びip通信システム並びにこれらのip通信方法
US20080273600A1 (en) * 2007-05-01 2008-11-06 Samsung Electronics Co., Ltd. Method and apparatus of wireless communication of uncompressed video having channel time blocks
US8837435B2 (en) * 2007-10-31 2014-09-16 Samsung Electronics Co., Ltd. Method and system for medium access control in communication networks
US8811420B2 (en) * 2009-01-05 2014-08-19 Samsung Electronics Co., Ltd. System and method for contention-based channel access for peer-to-peer connection in wireless networks
EP2526731A4 (en) 2010-01-19 2016-06-01 Nokia Technologies Oy ADVANCED N UD B-CENTRALIZED RESOURCE UTILIZATION FOR DEVICE AND CELLULAR DEVICE COMMUNICATION USERS
WO2012046390A1 (ja) * 2010-10-07 2012-04-12 パナソニック株式会社 通信装置、通信方法、集積回路、およびプログラム
KR101263783B1 (ko) * 2010-12-27 2013-05-13 삼성에스디에스 주식회사 릴레이 서버를 이용한 데이터 전송 시스템 및 방법
JP5397440B2 (ja) * 2011-09-14 2014-01-22 ブラザー工業株式会社 カラオケ装置、カラオケシステム
US9838460B2 (en) * 2012-05-29 2017-12-05 Google Llc Tool for sharing applications across client devices
JP5904965B2 (ja) * 2013-03-25 2016-04-20 西日本電信電話株式会社 通信装置及び通信システム
CN104253755A (zh) * 2013-06-27 2014-12-31 讯舟科技股份有限公司 用于网络终端装置间建立连线的方法
CN110971375B (zh) * 2018-09-30 2021-06-15 华为技术有限公司 一种通信方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004104357A (ja) * 2002-09-06 2004-04-02 Sony Corp ネットワークシステムおよび通信方法、情報処理装置および方法、並びにプログラム
JP2004180003A (ja) * 2002-11-27 2004-06-24 Kitt Peak:Kk 通信ネットワークシステムおよび通信の接続方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272650B2 (en) * 2001-04-17 2007-09-18 Intel Corporation Communication protocols operable through network address translation (NAT) type devices
JP2003318917A (ja) 2002-04-26 2003-11-07 Sony Corp 無線通信システム、無線通信端末および無線通信システムへの参加方法
US9497168B2 (en) * 2002-07-30 2016-11-15 Avaya Inc. Method and apparatus for supporting communications between a computing device within a network and an external computing device
US7899932B2 (en) * 2003-01-15 2011-03-01 Panasonic Corporation Relayed network address translator (NAT) traversal
CN100502386C (zh) * 2003-11-03 2009-06-17 中兴通讯股份有限公司 多媒体系统静态地址转换方法
JP4269226B2 (ja) * 2003-11-14 2009-05-27 ソニー株式会社 情報通信システムおよび方法、情報処理装置および方法、プログラム並びに記録媒体
TWI245192B (en) * 2003-12-11 2005-12-11 Inst Information Industry Method, system and storage medium for passing through network address translation device
US7457293B2 (en) * 2004-04-05 2008-11-25 Panasonic Corporation Communication apparatus, method and program for realizing P2P communication
US7543064B2 (en) * 2004-09-30 2009-06-02 Logitech Europe S.A. Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004104357A (ja) * 2002-09-06 2004-04-02 Sony Corp ネットワークシステムおよび通信方法、情報処理装置および方法、並びにプログラム
JP2004180003A (ja) * 2002-11-27 2004-06-24 Kitt Peak:Kk 通信ネットワークシステムおよび通信の接続方法

Also Published As

Publication number Publication date
US20080112417A1 (en) 2008-05-15
WO2006049251A1 (ja) 2006-05-11
CN101053218A (zh) 2007-10-10
US7558249B2 (en) 2009-07-07
JP4667390B2 (ja) 2011-04-13
CN101053218B (zh) 2011-07-20

Similar Documents

Publication Publication Date Title
JP4667390B2 (ja) 通信端末及び通信方法
US9137027B2 (en) Bootstrapping in peer-to-peer networks with network address translators
US8224985B2 (en) Peer-to-peer communication traversing symmetric network address translators
US8693392B2 (en) Peer-to-peer communication system and method
EP1890424B1 (en) System and method for data communication
JP2005086467A (ja) セッション制御装置、情報通信端末、サーバ、及び端末
DK2803177T3 (en) DEVICE AND METHOD FOR IMPLEMENTING A DATA TRANSMISSION NETWORK USED IN REMOTE MANAGEMENT
JP4741964B2 (ja) 通信装置、通信システム及び通信方法
US20100008260A1 (en) Method for configuring control tunnel and direct tunnel in ipv4 network-based ipv6 service providing system
JP2004120547A (ja) インターネットに接続するサーバ、機器および通信システム
JPWO2008035578A1 (ja) 通信装置、通信方法及び通信システム
JP2008236297A (ja) Ip通信装置及びip通信システム並びにこれらのip通信方法
JP2009010606A (ja) トンネル接続システム、トンネル管理サーバ、トンネル接続装置、及びトンネル接続方法
JP2008147738A (ja) 通信方法、通信システム、機器、並びに端末
EP2367326B1 (en) Communication system, server, and communication method
JP4740683B2 (ja) Ip通信装置及びそれを備えた構内ネットワークシステム並びにip通信装置の制御方法
WO2008051028A1 (en) Network address translation control system and method for providing multilateral-bidirectional audio communication service
Seemann et al. Decentralized Hole Punching
JP2007104438A (ja) 宅外アクセスシステム、サーバ、および通信方法
KR101394579B1 (ko) Ip 네트워크에서의 직접 통신 제공 방법
Matama et al. Enhancing route optimization for napt traversal in cyphonic: Design and implementation
WO2018142526A1 (ja) 中継装置、通信システム、及び通信方法
JP3743502B2 (ja) 通信システム、通信方法、ネットワーク装置
JP5904965B2 (ja) 通信装置及び通信システム
CA2579331A1 (en) Peer-to-peer communication system and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080917

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101220

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140121

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees