JP2006295909A - 通信装置、通信システム及び通信方法 - Google Patents

通信装置、通信システム及び通信方法 Download PDF

Info

Publication number
JP2006295909A
JP2006295909A JP2006070586A JP2006070586A JP2006295909A JP 2006295909 A JP2006295909 A JP 2006295909A JP 2006070586 A JP2006070586 A JP 2006070586A JP 2006070586 A JP2006070586 A JP 2006070586A JP 2006295909 A JP2006295909 A JP 2006295909A
Authority
JP
Japan
Prior art keywords
port number
relay
nat
terminal
packet
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
JP2006070586A
Other languages
English (en)
Other versions
JP2006295909A5 (ja
JP4741964B2 (ja
Inventor
Moe Hamamoto
望絵 濱本
Takeshi Kokado
健 古門
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 Holdings Corp
Original Assignee
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2006070586A priority Critical patent/JP4741964B2/ja
Publication of JP2006295909A publication Critical patent/JP2006295909A/ja
Publication of JP2006295909A5 publication Critical patent/JP2006295909A5/ja
Application granted granted Critical
Publication of JP4741964B2 publication Critical patent/JP4741964B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

【課題】ルータのNAT特性を、1つのIPアドレスを有する1台のサーバ1台のみと通信することによって調査することができ、調査されたNAT特性を利用して、効率的にP2P通信路の確立を行う通信装置を提供する。
【解決手段】端末100は、サーバ001の複数のポートが宛先ポートに設定された複数のポート番号調査要求パケットを送信する。端末100は、サーバ001から受信したポート番号調査応答パケットを参照して、ポート番号調査要求パケットの各々にルータ101によるアドレス変換後の複数のポート番号を取得する。端末100は、取得したアドレス変換後のポート番号に基づいて、ルータ101のNAT特性を判別する。端末100及び200は、判断されたNAT特性を利用することによって、効率的にP2P通信路を確立する。
【選択図】図1

Description

本発明は、通信装置、通信システム及び通信方法に関し、より特定的には、異なる2つのプライベートネットワーク間にP2P通信路を確立することができる通信装置、通信システム及び通信方法に関する物である。
一般に、ネットワークに接続される通信端末を識別するために、通信端末にはIPアドレスが付される。接続されるネットワーク全体で一意に決定され、一対一の通信(ピア・ツー・ピア通信:以下、「P2P通信」という)を可能とするIPアドレスを、グローバルIPアドレスという。また、特定のネットワーク内だけで一意に決定され、他のネットワークとのP2P通信に直接使用することができないIPアドレスを、ローカルIPアドレスという。ローカルIPアドレスによって通信端末が相互に識別されるネットワークを、プライベートネットワークという。
プライベートネットワークに接続される通信端末(ローカルIPアドレスを有する通信端末)が、グローバルネットワークに接続される通信機器(グローバルIPアドレスを有する通信端末)と通信するためには、一般に、プライベートネットワークとグローバルネットワークとの間に、ネットワークアドレス変換(Network Address Translation:以下、「NAT」という)の機能、あるいは、ネットワークアドレスポート変換(Network Address Port Translation:以下、「NAPT」という)機能を有する通信機器(ルータ)が接続される。尚、以降においては、説明の簡略化のために、NATとNAPTとを併せて「NAT」という。
ところが、ルータが有するNAT機能によって、プライベートネットワークと、グローバルネットワークとの間を単にルータ等の通信機器によって中継するだけでは、それぞれ異なるプライベートネットワークに接続される2つの通信機器は、P2P通信のためのパケットを交換することができない。
そこで、各々がルータを介して異なるプライベートネットワークに接続されている2つの端末が、ルータのNATを越えてP2P通信路を確立するための手法として、STUN(Simple Traversal UDP through NAT:RFC3489)を利用する方法が知られている。尚、以下の説明においては、「パケット」とは、「UDPパケット」のことをいう。
まず、STUNを利用するP2P通信路確立手法の説明に先立ち、図18A〜図18Eを参照しながら、NATの種類について説明する。尚、プライベートネットワークは、家庭内、すなわち宅内のネットワークとして構築される場合に限らず、企業内のネットワークとして構築される場合もある。以下においては、説明の便宜上、プライベートネットワークが宅内ネットワークである場合を想定するが、下記の説明は、企業において構築される大規模なプライベートネットワークにも同様に当てはまる。また、ある宅内のプライベートネットワークから見た場合に、当該宅内ネットワークとは異なるネットワークのことを、宅外ネットワーク、あるいは、外部ネットワークという。更に、説明の便宜のために、IPアドレスIPとポート番号Pとの組み合わせを、(IP、P)と表現する。
図18Aは、Full Cone NATと呼ばれるNATを説明するための図である。
Full Cone NAT特性を有するルータは、あるプライベートアドレスを有する宅内端末の特定のポート番号からある宅外端末へと送信されるパケットに対して、常に同一のポート番号を割り当てる。例えば、ルータは、宅内端末A(IPa、Pa)が送信したパケットに常にポート番号[Pb]を割り当て、当該パケットを外部ネットワークに接続される宅外端末Cへと転送する。また、Full Cone NAT特性を有するルータは、外部ネットワークに接続された宅外端末が(IPb、Pb)宛に送信した全てのパケットを、宅内端末(IPa、Pa)へと転送する。したがって、ルータは、宅外端末D(IPd、Pd)が(IPb、Pb)宛に送信したパケットも、宅内端末A(IPa、Pa)に転送する。
図18Bは、Restricted Cone NAT(以下、「R NAT」という)と呼ばれるNATを説明するための図である。
R NAT特性を有するルータは、ある宅内端末A(IPa、Pa)が宅外ネットワークに向けて送信したパケットに対して、常に同一のポート番号[Pb]を割り当てる。ただし、R NAT特性を有するルータは、宅外端末Aが送信したパケットの送信先である宅外端末C(IPアドレスIPcを有する)が(IPb、Pb)宛てに送信したパケットのみを宅内端末A(IPa、Pa)へと転送する点で、Full Cone NAT特性を有するルータとは異なっている。したがって、ルータは、宅内端末Aが送信したパケットの宛先でない宅外端末Dが、(IPb、Pb)へと送信したパケットを宅内端末Aへと転送しない。尚、R NAT特性を有するルータは、受信したパケットの発信元IPアドレスが[IPc]であれば、全ての発信元ポート番号のパケットを宅内端末Aへと転送する。したがって、ルータは、宅外端末Cのポート[Pc2]から(IPb、Pb)へと送信したパケットをも宅内端末Aへと転送する。
図18Cは、Port Restricted Cone NAT(以下、「PR NAT」という)と呼ばれるNAT特性を説明するための図である。
PR NAT特性を有するルータは、ある宅内端末A(IPa、Pa)が宅外ネットワークに向けて送信したパケットに対して、常に同一のポート番号[Pb]を割り当てる。ただし、PR NAT特性を有するルータは、宅内端末Aが発信したパケットの宛先(IPc1、Pc1)から(IPb、Pb)へと送信されたパケットのみを宅内端末A(IPa、Pa)へと転送する点で、R NAT特性を有するルータとは相違する。したがって、ルータは、宅外端末Dの発信元(IPd、Pd)から発信されたパケットのみならず、宅外端末の発信元(IPc2、Pc2)から送信されたパケットをも破棄する。
以下においては、上記のFull Cone NAT、R NAT、PR NATを総称して「Cone NAT」という。
図18Dは、Adress Sensitive Symmetric NAT(以下、「AS NAT」という)と呼ばれるNATを説明するための図である。
AS NAT特性を有するルータは、宅内端末Aが発信したパケットの宛先IPアドレスの各々に異なるポート番号を割り当てる。例えば、宅内端末A(IPa、Pa)から宅外端末C(IPc、Pc)へと送信されたパケットには、ポート番号[Pb1]を割り当て、宅内端末A(IPa、Pa)から、宅外端末とは異なるIPアドレスを有する宅外端末D(IPd、Pd)へと送信されたパケットには、ポート番号[Pb2]を割り当てる。また、AS NAT特性を有するルータは、あるポート番号に割り当てられた宅外端末から送信されたパケットのみを宅内端末A(IPa、Pa)へ転送し、当該ポート番号に割り当てられていない宅外端末から送信されたパケットを全て破棄する。例えば、ルータは、IPアドレス[IPc]を有する宅外端末Cから、(IPb、Pb)宛に送信されたパケットを宅内端末A(IPa、Pa)へと転送するが、IPアドレス[IPd]を有する宅外端末Dから、(IPb、Pb)宛に送信されたパケットを破棄する。尚、R NAT特性を有するルータは、(IPb、Pb)宛に送信されたパケットの発信元IPアドレスが[IPc]であれば、全ての発信元ポート番号を有するパケットを宅内端末Aへと転送する。
図18Eは、Port Sensitive Symmetric NAT(以下、「PS NAT」という)と呼ばれるNATを説明するための図である。
PS NAT特性を有するルータは、宅内端末Aが送信したパケットの宛先IPアドレス及び宛先ポート番号の組み合わせの各々に、異なるポート番号を割り当て、当該受信パケットをネットワークへと送出する。例えば、ルータは、宅内端末A(IPa、Pa)から発信されたパケットの宛先(IPc、Pc0)には、ポート番号[Pb0]を割り当て、宛先(IPc、Pc1)には、ポート番号[Pb1]を割り当て、宛先(IPc、Pc2)には、ポート番号[Pb2]を割り当てる。また、ルータは、あるポート番号に割り当てられた宅外端末から送信されたパケットを宅内端末Aへと転送するが、当該ポート番号に割り当てた宅外端末以外から送信されたパケットを全て破棄する。したがって、ルータは、発信元(IPc、Pc1)からポート番号[Pb1]を宛先として送信されたパケットを宅内端末Aへと転送するが、発信元(IPc、Pc2)及び発信元(IPd、Pd1)からポート番号[Pb1]へと送信されたパケットを全て破棄する。
以下においては、上記のAS NAT及びPS NATを総称して、「Symmetric NAT」という。
また、上述したCone NATやSymmetric NATとは別に、宅内端末の発信元ポート番号と同じポート番号を用いてNATの設定を行う性質を有するルータが知られている。
図19Aは、Port Reuse特性の概略を説明するための図である。
図19Aに示されるように、ルータは、宅内端末Aのポート番号[Pa]を発信元とするパケットにポート番号[Pa]を割り当て、宅内端末Aのポート番号[Pb]を発信元とするパケットにポート番号[Pb]を割り当て、宅内端末Aのポート番号[Pc]を発信元とするパケットにポート番号[Pc]を割り当てる。このように、通信装置が、ある発信元ポート番号を含むパケットに、当該発信元ポート番号と同一のポート番号を割り当てる特性のことを、「Port Reuse」という。
Port Reuseは、上記のNAT特性とは異なる特性である。したがって、Port Reuse特性を有する通信装置は、必ず上述のNAT特性のいずれかを備える。
図19Bは、Port Reuse特性を有するルータの機能を説明するための図である。
図19Bに示されるルータが「Port Reuse特性及びFull Cone NAT特性」を備える場合、発信元IPアドレス及び発信元ポート番号に(IPa、Pa)が設定されたパケットに対して、ルータは、常にポート番号[Pa]を割り当て、当該パケットを外部ネットワークへと送出する。また、ルータは、外部ネットワークに接続された宅外端末が宛先(IPb、Pa)へと発信した全てのパケットを宅内端末Aに転送する。
次に、ルータのNATを越えてP2P通信路を確立するために、STUNを利用する方法について説明する。
各々がルータを介して異なるプライベートネットワークに接続される2つの通信端末の間にP2P通信路を確立するためには、各端末は、パケットに、宛先IPアドレスと宛先ポート番号とを設定することが必要である。しかしながら、上述のように、ルータが有するNAT特性に応じて、アドレス変換方法が異なるので、通信端末は、ルータのNAT特性を考慮した上で、パケットの宛先を設定する必要がある。
そこで、P2P通信路を確立するためには、まず、STUNに規定される方法に従って、通信端末が接続されているルータのNAT特性が調査される。より詳細には、STUNにおいては、通信端末は、異なるIPアドレスを有する2つのサーバの各々へとテスト用パケットを送信する。そして、ルータが当該テスト用パケットの各々に割り当てたポート番号が一致するか否かを判断することによって、ルータのNAT特性がCone NATであるか、または、Symmetric NATであるかが判断される。
以下、図20A〜図20B及び図21を参照しながら、STUNによるNAT特性の調査方法を説明する。
図20Aは、STUN−TestIの概略を示す図である。
TestIにおいては、宅内端末Aは、発信元が(IPa、Pa)であるパケットを、サーバ1(IPc、Pc1)へと送信する。サーバ1は、宅内端末Aから発信されたパケットを参照して、発信元ポート番号に[Pc1]が設定され、かつ、宛先ポート番号にルータが割り当てた[Pb]が設定されたパケットを送信する。
図20Bは、STUN−TestIIの概略を示す図である。
TestIIにおいては、宅内端末Aは、発信元を(IPa、Pa)とし、宛先をサーバ1の(IPc、Pc1)とするパケットを送信する。これに対して、サーバ2が、発信元に(IPd、Pd1)が設定され、かつ、宛先ポート番号にルータが割り当てた[Pb]が設定されたパケットを送信する。
図20Cは、STUN−TestIIIの概略を示す図である。
TestIIIにおいては、宅内端末Aは、発信元を(IPa、Pa)とし、宛先をサーバ1の(IPc、Pc1)とするパケットを送信する。サーバ1は、発信元ポート番号に[Pc1]とは異なる[Pc2]が設定され、かつ、宛先ポート番号にポート番号[Pb]が設定されたパケットを送信する。
図21は、STUNによってNAT特性を調査するためのフローチャートである。
まず、宅内端末Aは、上記のTestIを実行する(ステップS2501)し、サーバ1から応答を受信したか否かを判断する(ステップS2502)。宅内端末Aは、サーバ1からの応答を受信した場合には、ステップS2504に進み、それ以外の場合は、宅内端末Aは、サーバ1とのUDP通信が不能であると判断する(ステップS2503)。
宅内端末Aがサーバ1からの応答を受信した場合(ステップS2501でYes)、宅内端末Aは、受信した応答パケットに含まれるアドレス変換後のIPアドレス[IPb]と、自身のIPアドレス[IPa]が一致するか否かを判断する(ステップS2504)。宅内端末Aは、応答パケットに含まれるIPアドレス[IPb]と、自身のIPアドレス[IPa]とが一致する場合には、ステップS2505に進み、それ以外の場合には、ステップS2909へ進む。IPアドレス[IPb]及び[IPa]が一致することは、宅内端末Aがルータを介さずに外部ネットワークに接続されており、宅内端末A及びサーバ1の間でNATが行われていないことを示す。
ステップS2504でYesである場合、宅内端末Aは、TestIIを実行する(ステップS2505)し、サーバ2からの応答を受信したか否かを判断する(ステップS2506)。宅内端末Aは、サーバ2からの応答を受信した場合には(ステップS2506でYes)、送信先端末(サーバ1)以外の通信端末からもパケットを受信することが可能、すなわち、ネットワークに対してオープンであると判断する(ステップS2508)。一方、宅内端末Aは、サーバ2からの応答を受信しない場合(ステップS2506でNo)、宅内端末Aは、UDPファイアウォールによってパケットの送受信が制限されていると判断する(ステップS2507)。
TestIの結果、IPアドレス[IPb]及び[IPa]が一致しない場合には(ステップS2504でNo)、宅内端末Aは、TestIIを実行し(ステップS2509)、パケットの宛先とは異なるサーバ2からの応答を受信したか否かを判断する(ステップS2510)。宅内端末Aがサーバ2からの応答を受信した場合には(ステップS2510でYes)、宅内端末Aが接続されるルータは、Full Cone NAT特性を有すると判断する(ステップS2511)。一方、宅内端末Aがサーバ2からの応答を受信しなかった場合には(ステップS2510でNo)、宅内端末Aは、サーバ2に対してTestIを実行する(ステップS2512)。ここで、宅内端末Aからの送信パケットにルータが割り当てるポート番号を[Pb’]とする。宅内端末Aは、ステップS2512においてサーバ2から受信した応答パケットに含まれ、NATによって設定されたIPアドレスとポート番号との組み合わせ(IPb、Pb’)と、ステップS2501においてサーバ1から受信した応答パケットに含まれ、NATによって設定されたIPアドレスとポート番号との組み合わせ(IPb、Pb)とが一致するか否かを判断する(ステップS2513)。宅内端末Aは、(IPb、Pb’)が(IPb、Pb)と一致すると判断した場合には(ステップS2513でYes)、ステップS2515へ進む。宅内端末Aは、(IPb、Pb’)及び(IPb、Pb)が一致しないと判断した場合には(ステップS2513でNo)、自身が接続されるルータがSymmetric NAT特性を有すると判断する(ステップS2514)。
ステップS2513においてYesである場合、宅内端末Aは、TestIIIを実行し(ステップS2515)、サーバ1から応答を受信したか否かを判断する(ステップS2516)。宅内端末Aは、サーバ1から応答を受信した場合(ステップS2516でYes)、自身が接続されるルータがR NAT特性を有すると判断し(ステップS2517)、それ以外の場合には、自身が接続されるルータがPR NAT特性を有すると判断する(ステップS2518)。
上述のように、STUNに規定された方法においては、図21に示される処理フローに従い、図20A〜図20Cに示される3種類のテストを実行することによって、NATの特性が調査される。
また、STUNによってNAT特性を調査した結果、2つの通信端末が共にCone NAT特性を有するルータに接続されている場合、更に当該2つの通信端末間にP2P通信路を確立する手法も知られている。以下、図22を参照しながら、STUNを利用するP2P通信路確立手法について説明する。
図22は、STUNを利用するP2P通信路確立方法を示すシーケンス図である。
まず、端末1は、IPアドレス及びポート番号の登録を要求するためのIP/ポート登録要求パケットを、ルータ1を介してサーバへ送信する(ステップS201)。ルータ1は、端末1から受信したパケットの発信元を(IPL1、LP1)から(IPG1、GP1)へとアドレス変換し、アドレス変換されたパケットをサーバ1へ送信する。サーバは、ルータ2から受信したパケットに含まれる発信元IPアドレスIPG1及び発信元ポート番号GP1を登録する(ステップS202)。
同様に、端末2は、IP/ポート登録要求パケットを、ルータ2を介してサーバへ送信する(ステップS203)。ルータ2は、端末2から受信したパケットの発信元を(IPL2、LP2)から(IPG2、GP2)へとアドレス変換し、アドレス変換されたパケットをサーバ2へ送信する。サーバは、ルータ2から受信したパケットに含まれる発信元IPアドレスIPG1及び発信元ポート番号GP1を登録する(ステップS204)。
次に、端末2は、端末1とP2P通信するために、端末1にアクセスするためのIP/ポート取得要求をサーバへ送信する(ステップS205)。サーバは、端末2からのIP/ポート取得要求に応答して、ルータ1が端末1の発信元(IPL1、LP1)に割り当てたIPアドレス及びポート番号の組み合わせ(IPG1、GP1)を含むIP/ポート取得応答パケットを端末2へ返送する(ステップS206)。
端末2は、サーバから受信したパケットを参照して、端末1にアクセスするためのIPアドレス及びポート番号(IPG1、GP1)を取得する。そこで、端末2は、(IPG1、GP1)を宛先とするP2P開始要求パケットを送信する(ステップS207)。
ここで、端末2から送信されたP2P開始要求パケットへのルータ1の対応は、ルータ1が備えるNAT特性に応じて異なる。
まず、ルータ1がFull Cone NAT(図18A)を実行する場合、ルータ1が端末2から送信されたP2P要求パケットを端末1へと転送することによって、端末1と端末2との間にP2P通信路が確立する。
次に、ルータ1がR NAT(図18B)またはPR NAT(図18C)を実行する場合、ルータ1は、端末2から送信されたP2P開始要求パケットを破棄する。したがって、当該P2P開始要求パケットは、端末1(IPL1、LP1)へ転送されることはない。
ここで注目すべきは、Cone NAT特性を有するルータ2は、発信元に(IPL2、LP2)が設定され、かつ、宛先に(IPG1、GP1)が設定されたパケットをルータ1へと転送することによって、ルータ1からの応答パケットを受け付けることができるようにNATを設定する点である。すなわち、ルータ2がFull Cone NATを実行する場合には、ルータ2は、全ての宅外端末がルータ2(IPG2、GP2)へと発信したパケットを端末2(IPL2、LP2)に転送するようにNATを設定する。ルータ2がR NAT特性を有する場合には、ルータ2は、発信元IPアドレスが[IPG1]であるパケットを端末2(IPL2、LP2)に転送するようにNATを設定する。ルータ2がPR NAT特性を有する場合には、発信元IPアドレス及び発信元ポート番号が(IPG1、GP1)であるパケットを端末2(IPL2、LP2)に転送するようにNATを設定する。この結果、次に、発信元IPアドレス及び発信元ポート番号が(IPG1、GP1)であるパケットをルータ2が受信すれば、ルータ2は、当該パケットを端末2に転送することができ、よって、端末1及び端末2の間にP2P通信路が確立される。
そこで、端末1は、端末2にアクセスするためのパケットを、IP/ポート取得要求としてサーバへ送信する(ステップS208)。サーバは、端末1からのIP/ポート取得要求に応答して、ルータ2が端末1の発信元(IPL1、LP1)に割り当てたIPアドレス及びポート番号(IPG2、GP2)を含むパケットを、IP/ポート取得応答として端末2に返信する(ステップS209)。
端末1は、サーバから受信したIP/ポート取得応答を参照して、端末2のIPアドレス及びポート番号(IPL2、PL2)に割り当てられているルータ2のIPアドレス及びポート番号(IPG2、GP2)を取得する。
次に、端末1は、発信元が(IPL1、LP1)に設定されたP2P開始要求パケットを端末2へと送信する(ステップS210)。上述したように、この段階においては、ルータ2は、発信元IPアドレス及び発信元ポート番号が(IPL1、LP1)であるパケットを破棄することなく、端末2へと転送する。一方、ルータ1は、発信元に(IPL1、LP1)が設定されたパケットを、ルータ2へと転送することによって、ルータ2からの応答パケットを受け付けることができるようにNATを設定することができる。すなわち、ルータ1がR NATを実行する場合には、ルータ1は、発信元IPアドレスが[IPG2]であるパケットを端末1(IPL1、LP1)に転送するように設定する。ルータ1がPR NATを実行する場合には、発信元IPアドレス及び発信元ポート番号が(IPG2、GP2)であるパケットを端末2(IPL2、LP2)に転送するように設定する。
したがって、端末2が、端末1からのP2P開始要求パケットに応答して、P2P開始応答パケットを端末1に送信すると(ステップS211)、端末1及び端末2の間にP2P通信路が確立される。
上記のような手法によれば、異なるプライベートネットワークに接続される2つの通信端末が共にCone NAT特性を有するルータに接続されている場合には、当該2つの通信端末間にP2P通信路を確立することが可能である。
しかしながら、2つの通信端末がSymmetric NATを介して接続されている場合には、STUNを利用する手法によって、P2P通信路を確立することができない。以下、この理由を説明する。
図23は、Symmetric NAT特性を有するルータを介して接続される2つの通信端末に、STUNを利用するP2P通信路確立方法を適用した場合の処理手順を示すシーケンス図である。より特定的には、図23に示される例においては、あるプライベートネットワークに接続される端末1は、Symmetric NATを実行するルータ1を介して外部ネットワークに接続されている。
まず、ステップS301〜S304において、図22に示されるステップS201〜S204と同様に、端末1及び端末2の各々は、サーバへとIP/ポート登録要求パケットを送信することによって、IPアドレス及びポート番号をサーバに登録する。
次に、端末2は、端末1とP2P通信するために用いるIPアドレス及びポート番号を取得するために、IP/ポート取得要求パケットをサーバへ送信する(ステップS305)。サーバは、端末2からのIP/ポート取得要求に応答して、ルータ1によって発信元IPアドレス及び発信元ポート番号(IPL1、LP1)に割り当てられたIPアドレス及びポート番号(IPG1、GP1)を含むIP/ポート取得応答パケットを端末2へ返送する(ステップS306)。
端末2は、サーバから受信したパケットを参照して、端末1にアクセスするためのIPアドレス及びポート番号(IPG1、GP1)を取得する。そこで、端末2は、(IPG1、GP1)を宛先とするパケットを、P2P開始要求として送信する(ステップS207)。
ここで、ルータ1がSymmetric NAT特性を有する場合、ルータ1は、P2P開始要求パケットを端末1(IPL1、LP1)に転送することなく破棄する。また、上述したように、Cone NATを実行するルータ2は、発信元に(IPL2、LP2)が設定され、かつ、宛先に(IPG1、GP1)が設定されたパケットをルータ1へと転送することによって、ルータ1からの応答パケットを受け付けることができるようにNATを設定する。
次に、端末1は、端末2にアクセスするためのパケットを、IP/ポート取得要求としてサーバへ送信する(ステップS308)。サーバは、端末1からのIP/ポート取得要求に応答して、ルータ2が端末2の発信元IPアドレス及び発信元ポート番号(IPL2、LP2)に割り当てたIPアドレス及びポート番号(IPG2、GP2)を含むパケットを、IP/ポート取得応答として端末2に返信する(ステップS309)。
端末1は、サーバから受信したIP/ポート取得応答を参照して、端末2のIPアドレス及びポート番号(IPL2、PL2)に割り当てられているルータ2のIPアドレス及びポート番号(IPG2、GP2)を取得する。
次に、端末1は、発信元を(IPL1、LP1)とするパケットを、P2P開始要求として、端末2へと送信する(ステップS310)。しかしながら、ルータ1は、Symmetric NAT特性を有するため、パケットの宛先毎に異なるポート番号を割り当てる。したがって、ルータ1は、端末1から受信したP2P開始要求パケットには、[GP1]とは異なるポート番号[GP3]を割り当て、当該パケットをルータ2へと転送する。
ここで、ルータ2がFull Cone NAT特性またはR NAT特性を有する場合には、ルータ2は、受信したP2P開始要求パケットを端末2(IPL2、LP2)に転送するので、端末1及び端末2の間にP2P通信路が確立される。
しかしながら、ルータ2がPR NATまたはSymmetric NAT特性を有する場合には、ルータ2は、受信したP2P開始要求パケットを端末2に転送することなく破棄するため、端末1及び端末2の間におけるP2P通信路の確立に失敗する。
図24は、Symmetric NAT特性を有するルータを介して接続される2つの通信端末に、STUNを利用するP2P通信路確立方法を適用した場合の処理手順を示すシーケンス図である。より特定的には、図24に示される例においては、あるプライベートネットワークに接続される端末2は、Symmetric NATを実行するルータ2を介して外部ネットワークに接続されている。
まず、ステップS401〜S404において、図22に示されるステップS201〜S204と同様に、端末1及び端末2の各々は、サーバへとIP/ポート登録要求パケットを送信することによって、IPアドレス及びポート番号をサーバに登録する。
次に、端末2は、端末1とP2P通信するためのIPアドレス及びポート番号を取得するために、IP/ポート取得要求パケットをサーバへ送信する(ステップS405)。サーバは、端末2からのIP/ポート取得要求に応答して、ルータ1によって発信元IPアドレス及び発信元ポート番号(IPL1、LP1)に割り当てられたIPアドレス及びポート番号(IPG1、GP1)を含むIP/ポート取得応答パケットを端末2へ返送する(ステップS406)。
端末2は、サーバから受信したパケットを参照して、端末1にアクセスするためのIPアドレス及びポート番号(IPG1、GP1)を取得する。そこで、端末2は、(IPG1、GP1)を宛先とするパケットを、P2P開始要求として送信する(ステップS407)。
ここで、ステップS407において端末2から送信されたP2P開始要求パケットの宛先は、ステップS403において端末2から送信されたIP/ポート登録要求パケットの宛先と異なる。したがって、Symmetric NATを実行するルータ2は、当該P2P開始要求パケットに、ポート番号[GP2]とは異なるポート番号[GP3]を割り当てる。すなわち、ルータ2は、ルータ2(IPG2、GP3)を宛先として端末1が送信したパケットを、端末2(IPL2、LP2)へと転送するように設定する。
それ故に、端末1がサーバから端末2へアクセスするためのIPアドレス及びポート番号(IPG2、GP2)を取得した後に(ステップS408〜S409)、宛先IPアドレス及び宛先ポート番号(IPG2、GP2)を宛先とするP2P開始要求パケットを送信しても、ルータ2は、当該P2P開始要求パケットを破棄する。したがって、端末1及び端末2の間におけるP2P通信路の確立に失敗する。
以上説明したように、ルータ1またはルータ2の少なくとも一方がSymmetric NATを実行する場合、STUNを利用するP2P通信路確立方法が成功する可能性は高いとは言い難い。
上記のSTUNの問題点に対し、従来、Symmetric NATを含む全てのNATの中で、任意の2つのNATの組み合わせに対して、P2P通信路を確立する方法が知られている(例えば、特許文献1参照)。
特許文献1に記載されているP2P通信路確立方法においては、ある通信端末は、P2P通信の接続先となる通信端末がP2P開始要求パケットを送信する際に使用するルータのポート番号を複数予測する。当該ある通信端末は、予測したポート番号を宛先ポートとするパケットを複数送信する。当該ある通信端末が接続されるルータは、接続先通信端末から送信されるパケットを受信することができるポート番号を複数を設定するため、P2P通信路の確立が成功する可能性を向上することができる。以下、更なる詳細について説明する。
図25は、上記特許文献に記載されている従来のP2P通信路確立方法を示すシーケンス図である。図25に示される例においては、ルータ1及びルータ2は共に、Symmetric NAT特性を有する。
まず、ステップS501〜S504において、図22に示されるステップS201〜S204と同様に、端末1及び端末2の各々は、サーバへとIP/ポート登録要求パケットを送信することによって、IPアドレス及びポート番号をサーバに登録する。
次に、端末2は、端末1とP2P通信するために、P2P通信要求パケットをサーバに送信する(ステップS505)。ステップS505において、端末2は、発信元ポート番号を、ステップS503においてIP/ポート登録要求パケットの送信に使用したポート番号[LP2]からポート番号[LP2+a]へと変更する(ただし、aは、任意の整数である)。端末2が新たなポート番号[LP2+a]を発信元ポートとして使用する理由は、発信元ポート番号の変更に伴って、ルータ2が発信元(IPL2、LP2+a)に新たなポート番号[GP2+b]を割り当てると予測されるからである(ただし、bは、任意の整数であって、かつ、ルータ2において定められている増分値である)。
サーバは、P2P通信要求パケットを受信すると、受信したパケットを参照して、ルータ2が発信元(IPL2、LP2+a)に割り当てたIPアドレス及びポート番号(IPG2、GP2+b)を含むパケットを、IP/ポート通知として端末1に送信する(ステップS506)。
端末1は、サーバから送信されたIP/ポート通知パケットを受信すると、端末2にP2P通信を許可するか否かを判断し、判断結果をサーバに通知する(ステップS507)。ステップS507において、端末1は、発信元ポート番号を、ステップS501でIP/ポート登録要求パケットの送信に使用した[LP1]から[LP1+c]へと変更する(ただし、cは、任意の整数である)。端末1が新たなポート番号[LP1+c]を発信元ポートとして使用する理由は、ルータ1が発信元(IPL、LP1+c)に新たなポート番号[GP1+d]を割り当てると予測されるからである(ただし、dは、任意の整数であって、ルータ1において定められている増分値である)。
続いて、端末1は、受信したIP/ポート通知パケットから取得したIPアドレス及びポート番号(IPG2、GP2+b)に基づき、宛先に(IPG2、GP2+b+n)が設定されたP2P開始要求パケットをサーバに送信する(ステップS508)。ただし、nは、任意の整数である。
端末1は、ステップS507及びS508の各々において、きわめて短時間の間に連続してパケットを送信する。したがって、ステップS507において送信されたパケットの発信元ポート番号[LP1+c]が[GP1+d]へと変換される場合、ルータ1におけるNATの設定に従い、ステップS508において送信されたパケットの発信元ポート番号[LP1+c+1]は、[GP1+d+1]へと変換される。
更に、ステップS508において端末1がパケットを送信した結果、ルータ1は、応答パケットを受信することができるように設定を変更する。すなわち、ルータ2が端末1から送信されたパケットの発信元(IPL1、LP1+c+1)を(IPG1、GP1+d+1)に変換して、当該パケットをルータ2(IPG2、GP2+b+n)へと転送した後には、ルータ1は、送信元が(IPG2、GP2+b+n)であるパケットを端末1(IPL1、LP1+c+1)へと転送することができる。尚、端末1が、取得した宛先ポート番号から任意の整数値nだけインクリメントされたポート番号へとパケットを送信する理由については後述する。
一方、サーバは、ステップS507において端末1から送信されたP2P通信許可パケットを受信すると、ルータ1のIPアドレス及びポート番号(IPG1、GP1+d)を含む通信許可パケットを端末2に送信する(ステップS509)。
次に、端末2は、端末1にアクセスするためのIPアドレス及びポート番号(IPG1、GP1+d)を受信するとすぐに、端末1へとP2P開始要求パケットを送信する(ステップS510)。ステップS510において、端末2は、発信元ポート番号を[LP1+a+1]から1ずつインクリメントしながら、ルータ1のポート番号[GP1+d+1]を宛先ポートとするn個のP2P開始要求パケットを送出する。ルータ2は、端末2から送信されたn個のP2P開始要求パケットの各々の発信元ポート番号を、それぞれ、[GP2+b+m]〜[GP2+m+n−1]に変換する。ここで、nは、ステップS508〜S510が実行される間の若干の経過時間において、ルータ1に接続される他の端末(図示せず)から送信されるパケットによってNATの設定が変更される可能性を考慮して定められる値である。また、mは、n以下の整数である。
結果として、ステップS508において端末1から送信されたパケットの宛先ポート番号[GP2+b+n]は、[GP2+b+m]〜[GP2+b+m+n−1]のいずれか1つと一致する。それ故に、ルータ1は、受信したn個のP2P開始要求パケットの1つを端末1へと転送する(ステップS510−2)。図25においては、ポート番号[GP2+b+n]及び[GP2+b+m+2]が一致した場合の例が示されている。
端末1は、ルータ1から転送されたP2P開始要求パケットを受信すると、P2P開始応答パケットを返信する(ステップS511)。ステップS510−2においてNATの設定が調整されたルータ2は、端末1から送信されたP2P開始応答パケットを端末2へと転送すると、端末1と端末2の間にP2P通信路が確立される。
特開2004−180003号公報
上記のように、各々が異なるプライベートネットワークに接続される2つの通信端末間にP2P通信路を確立する方法として、STUNを利用する方法と、上記特許文献1に開示される方法とが知られている。
しかしながら、これらの従来の方法には、それぞれ次のような問題点がある。
まず、STUNを利用する方法においては、第1に、通信端末が接続されるNAT特性を調査するために、IPアドレスが互いに異なる2台のサーバが必要である。したがって、現実的には、サーバの運用及び保守に要するコストの面で問題がある。第2に、STUNによる方法は、2つの通信端末のいずれか一方が、Cone NAT以外のNAT特性を有するルータに接続されている場合には、P2P通信路を確立することができない。
次に、上記特許文献1に開示される手法においては、確かに、通信端末が接続されるルータのNAT特性(すなわち、Cone NATまたはSymmetric NAT)に依存することなく、P2P通信路の確立が成功する可能性が向上する。より詳細には、端末2が次にパケットを送出した際に、端末1は、サーバから通知されたルータ2のWAN側ポート番号に基づいて、ルータ1内で割り当てられる可能性のあるポート番号を予測する。端末2は、ルータ2によって割り当てられるポート番号と、端末1に予測されるポート番号とが一致する可能性を高めるために、複数個のパケットを送出する。
しかしながら、2つの通信端末の両方がFull Cone NAT特性を有するルータに接続されている場合には、容易にポート番号を予測することができるため、一方の通信端末から複数個のパケットを送出する必要はない。逆に、一方の通信端末が複数個のパケットを送出することによって、次のような問題が生じる。第1に、複数の無駄なパケットを送出することによって、通信路確立に要する時間が増加する。第2に、通信端末に接続されるルータが侵入検知機能を有する場合には、当該ルータが、通信に使用されないポート番号を宛先とする複数のパケットを受信した際に、受信パケットが不正アクセスを企むパケットであると誤検知する可能性がある。侵入検知機能を有するルータは、不正アクセスを検知すると、受信したパケットを全て破棄するので、ルータに接続される通信端末が通信不能となる虞があり、結果として接続性が低下する。
それ故に、本発明は、NATの特性を1つのIPアドレスを有する1台のサーバを用いて調査することができる通信装置、通信方法及び通信システムを提供することを目的とする。更に、調査されたNAT特性に基づいて、NAT特性に応じた最適な接続手順によって、P2P通信路を確立することができる通信装置、通信システム及び通信方法を提供することを目的とする。これにより、2つの端末同士を接続する際に、接続時間及び接続性を改善する。
本発明の第1の局面は、NAT(ネットワークアドレス変換)機能を有する第1の中継装置を介してサーバに接続される通信装置に向けられている。当該通信装置は、発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットをサーバに送信する第1の送信処理と、発信元ポート番号が第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス情報調査要求パケットをサーバに送信する第2の送信処理とを、任意の順序で実行するアドレス情報調査要求送信部と、第1及び第2の送信処理の間に、サーバとは異なる宛先に、発信元ポート番号が第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信する通信準備要求送信部と、第1の中継装置のNAT機能によって、アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、サーバから受信するアドレス情報受信部と、受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、第1の中継装置のNAT特性を判断する中継特性判断部とを備える。
第1の局面によって規定される通信装置は、サーバから返送されるアドレス情報パケットを参照して、第1の中継装置によって設定されたポート番号を取得する。したがって、当該通信装置は、1台のサーバと通信することによって、第1の中継装置のNAT特性を判別することができる。
第2の局面は、NAT(ネットワークアドレス変換)機能を有する第1の中継装置を介してサーバに接続される通信端末が通信するための通信方法に向けられている。当該通信方法は、発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットをサーバに送信する第1の送信処理と、発信元ポート番号が第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス情報調査要求パケットをサーバに送信する第2の送信処理とを、任意の順序で実行し、第1及び第2の送信処理の間に、サーバとは異なる宛先に、発信元ポート番号が第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信し、第1の中継装置のNAT機能によって、アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、サーバから受信し、受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、第1の中継装置のNAT特性を判断することを含む。
第2の局面によって規定される通信方法は、サーバから返送されるアドレス情報パケットを参照して、端末装置が第1の中継装置によって設定されたポート番号を取得することを可能とする。したがって、当該通信装置は、1台のサーバと通信することによって、第1の中継装置のNAT特性を判別することができる。
第3の局面は、サーバと、NAT(ネットワークアドレス変換)機能を有する第1の中継装置と、NAT機能を有する第2の中継装置と、第1の中継装置を介してサーバに接続される第1の通信装置と、第2の中継装置を介してサーバに接続される第2の通信装置とを備える通信システムに向けられている。
当該通信システムに含まれる第1及び第2の通信装置の各々は、発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットをサーバに送信する第1の送信処理と、発信元ポート番号が第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス調査情報要求パケットをサーバに送信する第2の送信処理とを、任意の順序で実行するアドレス情報調査要求送信部と、第1及び第2の送信処理の間に、サーバとは異なる宛先に、発信元ポート番号が第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信する通信準備要求送信部と、各々が接続されている中継装置のNAT機能によって、アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、サーバから受信するアドレス情報受信部と、受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、各々が接続されている中継装置のNAT特性を判断する中継特性判断部とを備えていれば良い。
一方、当該通信システムに含まれるサーバは、第1及び第2の通信装置の各々から送信されたアドレス情報調査要求パケットに含まれる中継ポート番号を取り出すアドレス情報調査部と、取り出された中継ポート番号をデータ部に含むアドレス情報調査要求応答パケットを送信するアドレス情報送信部とを備えていれば良い。
第3の局面によって規定される通信システムは、第1及び第2の通信装置の各々は、サーバとパケットを交換することによって、各々が接続されている中継装置の特性を判断すると共に、判断結果をサーバを介して接続先通信装置に通知する。したがって、第1及び第2の通信装置の各々は、自身が接続される中継装置のNAT特性と、接続先通信装置に接続されている中継装置のNAT特性との両方を取得することができる。
本発明に係る通信装置、通信システム及び通信方法によれば、1つのIPアドレスを有するサーバと通信を行うことによって、ルータのNAT特性を調査することができる。
また、本発明に係る通信装置、通信システム及び通信方法によれば、調査されたルータのNAT特性に応じた最適な接続シーケンスに従って、P2P通信路を効率的に確立することが可能となる。
加えて、本発明に係る通信装置、通信システム及び通信方法によれば、互いに異なるプライベートネットワークに接続された通信端末同士がP2P通信路を確立する際に、「接続時間の短縮」、「通信不能状態の回避」及び「接続性の向上」を実現することが可能となる。
図1は、本発明の実施形態に係る通信システムの全体構成を示すブロック図である。
グローバルネットワーク00及びプライベートネットワーク01は、グローバルIPアドレス[IPG1]を有するルータ101を介して接続されている。また、グローバルネットワーク00及びプライベートネットワーク02は、グローバルIPアドレス[IPG2]を有するルータ201を介して接続されている。グローバルネットワーク00には、グローバルIPアドレス[IPS]を有するサーバ001が接続されている。プライベートネットワーク01には、ローカルIPアドレス[IPL1]を有する端末100が接続されている。プライベートネットワーク02には、ローカルIPアドレス[IPL2]を有する端末200が接続されている。
図2Aは、図1に示される端末100の概略構成を示すブロック図である。
端末100は、アドレス情報調査要求送信部1001と、アドレス情報受信部1002と、直接通信準備要求送信部1003と、中継特性判断部1004と、中継情報送信部1005と、中継情報受信部1006と、通信制御部1007と、通信部1008とを備える。
アドレス情報調査要求送信部1001は、ルータ101のNAT機能によって、端末100から送信されるパケットに設定されるポート番号を調査するために、ポート番号調査要求パケットをサーバ001に送信する。より詳細には、アドレス情報調査要求送信部1001は、宛先ポート番号が異なる少なくとも2つのパケットを送信する第1の送信処理と、発信元ポート番号が第1の送信処理で使用されたものとは異なる少なくとも1つのパケットを送信する第2の送信処理とを実行する。第1の送信処理において、アドレス情報調査要求送信部1001は、発信元ポートが同一であり、かつ、宛先ポート番号が相違する2つのパケットを送信することがより好ましい。また、第1及び第2の送信処理の実行順序は、任意で良い。
アドレス情報受信部1002は、ポート番号調査要求パケットに応答してサーバ001から返送されるポート番号調査応答パケットをサーバ001から受信する。ポート番号調査応答パケットは、ルータ101のNAT機能によって設定されたポート番号をデータ部に含む。
直接通信準備要求送信部1003は、P2P通信に使用するポートをルータ101上に用意するために、第1及び第2の送信処理の一方が実行されてから他方が実行されるまでの間に、グローバルネットワーク00に接続される他の端末にP2P通信準備パケットを送信する。
中継特性判断部1004は、アドレス情報受信部1002によって受信されたポート番号調査応答パケットのデータ部に含まれているポート番号に基づいて、ルータ101のNAT特性を判別する。
中継情報送信部1005は、中継特性判断部1004によって判断されたルータ101のNAT特性をサーバ経由で接続先の端末200に通知するために、NAT情報通知パケットをサーバに送信する。
中継情報受信部1006は、接続先装置によって送信されたNAT情報通知パケットを受信する。受信されたNAT情報通知パケットは、接続先の端末200に接続されているルータ201のNAT特性を特定するために必要な情報を含んでいる。
通信制御部1007は、端末100が接続されているルータ101のNAT特性と、通信先の端末200が接続されているルータ201のNAT特性との組み合わせに基づいて、予め用意された複数のシーケンスから、P2P通信を確立するための最適なシーケンスを選択し実行する。
通信部1008は、上記の各部において生成されたパケットをプライベートネットワーク01へと送出し、また、端末100宛てのパケットをプライベートネットワーク01経由で受信する。
図2Bは、図1に示される端末200の概略構成を示すブロック図である。
端末200は、アドレス情報調査要求送信部2001と、アドレス情報受信部2002と、直接通信準備要求送信部2003と、中継特性判断部2004と、中継情報送信部2005と、中継情報受信部2006と、通信制御部2007と、通信部2008とを備える。アドレス情報調査要求送信部2001〜通信部2008の各々の機能は、図2Aに示されるアドレス情報調査要求送信部1001〜通信部1008の各々の機能と同様であるので、ここでは、説明を繰り返さない。
図2Cは、図1に示されるサーバ001の概略構成を示すブロック図である。
サーバ001は、アドレス情報調査部0011と、アドレス情報送信部0012と、中継情報転送部0013と、通信部0014を備える。
アドレス情報調査部0011は、端末100及び200の各々からポート番号調査要求パケットを受信すると、受信したパケットのヘッダに含まれる発信元ポート番号を取り出す。アドレス情報調査部0011が取り出した発信元ポート番号は、ルータ101または201のNAT機能によって設定された値である。アドレス情報調査部0011は、取り出されたポート番号をアドレス情報送信部0012に出力する。
アドレス情報送信部0012は、アドレス情報調査部0011から受け取ったポート番号をデータ部に含むポート番号調査応答パケットを生成し、生成したパケットを端末に返信する。
中継情報転送部0013は、2つの端末の一方からNAT情報通知パケットを受信すると、受信したNAT情報通知パケットを他方の端末に転送する。
通信部0014は、各部において生成されたパケットをグローバルネットワーク00へと送出し、また、サーバ001宛てのパケットをグローバルネットワーク00経由で受信する。
ここで、本実施形態に係る通信システムにおける制御シーケンスについて説明する。
図3は、本実施形態に係る通信システムがP2P通信路を確立するために実行する処理の概略を示すシーケンス図である。
図3に示されるように、本実施形態に係るP2P通信路確立方法は、4つのフェーズ、すなわち、NAT特性調査フェーズS801、準備フェーズS802、情報交換フェーズS803及びP2P通信路確立フェーズから構成される。
NAT特性調査フェーズS801において、端末100は、サーバ001と通信し、端末100に接続されているルータ101のNAT特性(例えば、Cone NATまたはSymmetric NAT)を調査する。また、端末100は、ルータ101がPort Reuse特性を有しているか否かを調査する。同様に、端末200は、サーバ001と通信し、ルータ101のNAT特性と、Port Reuse特性の有無とを調査する。
準備フェーズS802において、端末100は、自身が接続されているルータ101にパケットを送信し、端末200と通信するために使用するルータ101のポートを開く。同様に、端末200は、ルータ201にパケットを送信し、端末100と通信するために使用するルータ201のポートを開く。
情報交換フェーズS803において、端末100及び200の各々は、NAT特性調査フェーズにおいて判別したNAT特性と、P2P通信路を確立するために必要な情報とを、サーバ001経由で交換する。
P2P通信路確立フェーズS804において、端末100及び200の各々は、情報交換フェーズS803において取得した情報に基づいて、相互にパケットを送信し、P2P通信路を確立する。
尚、図3においては、図示の都合上、NAT特性調査フェーズS801及び準備フェーズS802の順序が特定されているが、NAT特性調査フェーズS801及び準備フェーズS802は、情報交換フェーズS803の前に完了していれば良い。
以下、上記4つのフェーズについて、更に詳細に説明する。
<NAT特性調査フェーズおよび準備フェーズ>
図4Aは、図3に示されるNAT特性調査フェーズ及び準備フェーズにおける処理の詳細を示すシーケンス図である。
まず、端末100は、ポート番号調査要求1をサーバ001へ送信する(ステップS901)。より詳細には、アドレス情報調査要求送信部1001は、発信元ポート番号に端末100のポート番号[LP1]が設定され、かつ、宛先ポート番号にサーバ001のポート番号[SP0]が設定されたポート番号調査要求パケット1を送信する。
次に、サーバ001は、端末100から送信されたポート番号調査要求1に応答して、ポート番号調査応答1を端末に返送する(ステップS902)。より詳細には、通信部0014は、ポート番号調査要求パケット1を受信し、受信したパケットをアドレス情報調査部0011へと転送する。アドレス情報調査部0011は、転送されたパケットのヘッダを参照して、発信元ポート番号、すなわち、ルータ101によって設定されたポート番号[GP11]を取り出し、取り出した発信元ポート番号[GP11]をアドレス情報送信部0012へ出力する。
アドレス情報送信部0012は、アドレス情報調査部から受け取ったルータ101のポート番号[GP11]を含むポート番号調査応答パケット1を生成し、生成したパケットを通信部0014に出力する。通信部0014は、アドレス情報送信部0012から受け取ったパケットを端末100へと返送する。端末100において、通信部1008は、ポート番号調査応答パケット1を受信すると、受信したパケットをアドレス情報受信部1002へ転送する。
次に、端末100は、ポート番号調査要求2をサーバ001へ送信する(ステップS903)。より詳細には、アドレス情報調査要求送信部1001は、端末100のポート番号[LP1]が発信元ポート番号に設定され、かつ、サーバ001のポート番号[SP1]を宛先ポート番号に設定されたポート番号調査要求パケット2を送信する。
次に、サーバ001は、端末100から送信されたポート番号調査要求2に応答して、ポート番号調査応答2を端末に返送する(ステップS904)。より詳細には、通信部0014は、ポート番号調査要求パケット2を受信し、受信したパケットをアドレス情報調査部0011へと転送する。アドレス情報調査部0011は、転送されたパケットのヘッダを参照して、発信元ポート番号、すなわち、ルータ101のポート番号[GP12]を取り出し、取り出した発信元ポート番号[GP12]をアドレス情報送信部0012へ出力する。
次に、端末100は、P2P通信準備パケットを端末200に送信する(ステップS905)。より詳細には、端末100は、端末200とP2P通信する際に使用するポート番号[GP13]を用意するために、端末200のIPアドレス及びポート番号を宛先とするパケットをルータ101へ送信する。端末100は、端末200のIPアドレス及びポート番号を予め取得していても良い。また、サーバ001がポート番号調査応答パケット1または2に端末200のIPアドレス及びポート番号を設定し、端末100は、受信したポート番号調査応答パケットを参照して、端末200のIPアドレス及びポート番号を取得しても良い。
ここで、端末100が送信するパケットの宛先ポート番号は、実際にルータ201が使用しているポート番号(例えば、端末200がサーバ001と通信している際に、ルータ201が端末200のパケットに割り当てているポート番号)であることが好ましい。というのも、ルータ201が侵入検知機能を有する場合、ルータ201が通信に使用していないポート番号が宛先ポート番号に設定されたP2P通信準備パケットを端末100から受信すると、当該パケットを不正アクセスパケットであると誤検知する可能性がある。ルータ201は、不正アクセスパケットを検知すると、端末100から送信された後続のパケットを全て破棄するため、端末100は、端末200と通信不能となる虞がある。
あるいは、端末100は、P2P通信準備パケットがルータ201に届かないように当該パケットのTTL(Time To Live)の値を調整しても良い。端末100がP2P通信準備パケットを送信するのは、自身が接続されるルータ101に、端末200とのP2P通信のためのポート番号を用意するためであり、必ずしもルータ201にP2P通信準備パケットが届く必要はない。そこで、端末100は、P2P通信準備パケットがルータ101に到達し、かつ、ルータ201に到達しないように、TTLの値を調整すれば良い。
ステップS905において、ルータ101は、端末200からルータ201を介してルータ101(IPG1、GP13)へと送信されたパケットを受け付けることができるように、NATを設定する。ルータ101がNATを設定する方法は、NAT特性(図18A〜図18E)に応じて異なるが、ここでの説明を省略する。
次に、端末100は、ポート番号調査要求3をサーバ001へ送信する(ステップS906)。より詳細には、アドレス情報調査要求送信部1001は、端末100のポート番号[LP2]が発信元ポート番号に設定され、かつ、サーバ001のポート番号[SP0]を宛先ポート番号に設定されたパケットを、ポート番号調査要求3として送信する。
サーバ001は、端末100から送信されたポート番号調査要求3に応答して、ポート番号調査応答3を端末100に返送する(ステップS907)。より詳細には、通信部0014は、ポート番号調査要求パケット2を受信し、受信したパケットをアドレス情報調査部0011へと転送する。アドレス情報調査部0011は、転送されたパケットのヘッダを参照して、発信元ポート番号、すなわち、ルータ101のポート番号[GP14]を取り出し、取り出した発信元ポート番号[GP14]をアドレス情報送信部0012へ出力する。
端末100は、ポート番号調査応答パケット1〜3を受信すると、ルータ101のNAT特性を判断する(ステップS908)。より詳細には、端末100において、中継特性判断部1004は、ポート番号調査応答パケット1〜3に含まれるルータ101の3つのポート番号[GP11]、[GP12]及び[GP14]に基づいて、次の処理フローに従ってルータ101のNAT特性を判断する。
図4Bは、図4Aに示されるステップS908の処理の詳細を示すフローチャートである。
中継特性判断部1004は、まず、取得したポート番号[GP11]と[GP12]とが一致するか否かを判断する(ステップS909)。ポート番号[GP11]が[GP12]に一致する場合(ステップS909でYes)、中継特性判断部1004は、ステップS911へ進む。一方、ポート番号[GP11]が[GP12]に一致しない場合(ステップS909でNo)、中継特性判断部1004は、ルータ101のNATがPS NATであると判断し(ステップS910)、ステップS914へ進む。
[GP11]が[GP12]に一致する場合(ステップS909でYes)、中継特性判断部1004は、取得したポート番号[GP12]と[GP14]との差の絶対値βを算出し、βが1であるか否かを判断する(ステップS911)。中継特性判断部1004は、βが1である場合には、ルータ101のNATがCone NATとであると判断し(ステップS912)、ステップS914へ進む。それ以外の場合には、中継特性判断部1004は、ルータ101のNATがCone若しくはAS NAT特性のいずれかを有すると判断し(ステップS913)、ステップS914へ進む。
更に、中継特性判断部1004は、ステップS902で取得したルータ101のポート番号[GP11]が、ステップS901で送信したポート番号調査要求パケット1の発信元ポート番号[LP1]に一致するか否かを判断する(ステップS914)。[GP11]が[LP1]に一致する場合(ステップS914)、中継特性判断部1004は、ルータ101がPort Reuse特性を有すると判断し(ステップS915)、NAT特性判断処理を終了する。それ以外の場合には、中継特性判断部1004は、NAT特性判断処理を終了する。
尚、ルータ101がPort Reuseを有するか否かを厳密に判断するために、中継特性判断部1004は、更に、ポート番号[GP14]が[LP2]に一致するか否かを判断しても良い。この場合、中継特性判断部1004は、[GP11]が[LP1]に一致し、かつ、[GP14]が[LP2]に一致する場合に、ルータ101がPort Reuse特性を有していると判断する。また、ルータ101がPort Reuse特性を有するか否かを緩やかに判断するために、[GP11]が[LP1]に一致すること、あるいは、[GP14]が[LP2]に一致することのいずれか一方を確認した場合に、中継特性判断部1004は、ルータ101がPort Reuse特性を有すると判断しても良い。また、ステップS914〜S915においてPort Reuse特性を判断する処理を、ステップS909の前に行っても良い。
以上のNAT特性判断処理を通じて、端末100は、ルータ101のNAT特性を調査することができる。
ここで、上記のNAT機能特性判断処理の具体例を説明する。
図5Aは、図4Aに示されるステップS910を説明するための図である。
中継特性判断部1004が、ステップS909においてNoと判断すること、すなわち、「GP11]が[GP12]と異なることは、宛先ポート番号[SP0]及び[SP1]の各々に対応して、ルータ101が異なるポート番号を割り当てたことを示す。したがって、中継特性判断部1004は、ルータ101がPS NAT特性を有すると判断することができる。
図5Bは、図4Aに示されるステップS912を説明するための図である。
中継特性判断部1004が、ステップS911においてYesと判断すること、すなわち、[GP12]と[GP14]との差の絶対値βが1であると判断することは、P2P通信準備パケットの宛先ポート番号にルータが割り当てたポート番号[GP13]が、[GP11]及び[GP12]に一致することを示す。したがって、中継特性判断部1004は、ルータ101がCone NAT特性を有すると判断することができる。
図5C及び図5Dの各々は、図4Aに示されるステップS913を説明するための図である。
中継特性判断部1004が、ステップS911においてNoと判断する場合、すなわち、[GP12]と[GP14]との差の絶対値βが1でないと判断する場合、P2P通信準備パケットの宛先ポート番号にルータが割り当てたポート番号[GP13]が、[GP11]及び[GP12]に一致する場合(図5C)と、一致しない場合(図5D)とがある。したがって、中継特性判断部1004は、ルータ101がCone若しくはAS NAT特性のいずれかを有すると判断する。
尚、端末200は、図4A及び図4Bに示されるものと同様の手順に従って、ルータ201のNAT特性を調査し、ルータ201は、P2P通信で使用するためのポートを開く。
また、図4Aは、説明の便宜上、NAT特性調査フェーズ(ステップS901〜S904、ステップS906〜S908)と準備フェーズ(ステップS902)とを併せて示しているが、NAT特性調査フェーズと、準備フェーズとが互いに分離されていても良い。
更に、ステップS913において、中継特性判断部1004が、βが1でない場合に、Cone NATとAS NATとを区別していないのは、後述するP2P通信路確立フェーズにおいて、両者を区別することなく処理することが可能であるからである。しかしながら、端末100は、Cone NATとAS NATとを区別するために、次に示す処理を更に実行しても良い。
まず、端末100において、アドレス情報調査要求送信部1001は、サーバ001のIPアドレス[IPS]とは異なるIPアドレスが宛先アドレスに設定され、かつ、ポート番号[LP1]が発信元アドレスに設定されたパケットを、ポート番号調査要求として更に送信する。アドレス情報受信部は、ポート番号調査要求パケットに対する応答パケットを受信し、ルータ101がポート番号調査要求パケットに割り当てたポート番号[GP15]が[GP11]と一致するか否かを判断する。中継特性判断部1004は、[GP15]が[GP11]に一致する場合は、ルータ101がCone NAT特性を有すると判断することができ、それ以外の場合は、ルータ101がAS NAT特性を有すると判断することができる。
更に、NAT特性調査フェーズ及び準備フェーズは、必ずしも本実施形態に示される順序で実行される必要はない。したがって、端末100及び200は、後続の情報交換フェーズの前に、NAT特性調査フェーズ及び準備フェーズを完了していれば、本実施形態と異なる順序で各ステップを実行しても良い。
<情報交換フェーズ>
図6は、図3に示される情報交換フェーズにおける処理の詳細を示すシーケンス図である。
まず、端末200は、自身が接続されているルータ201のNAT特性を示すNAT情報をサーバ001へ通知する(ステップS1001)。より詳細には、中継情報送信部2005は、NAT特性調査フェーズにおいて取得したルータ201のNAT特性を示すNAT情報をデータ部に含むパケットを生成し、生成したパケットを通信部2008を介してサーバ001へ送信する。
NAT情報は、(a)Cone NAT特性、(b)Cone若しくはAS NAT特性、(c)PS NAT特性のいずれであるかを示す情報と、(d)Port Reuse特性の有無を示す情報とを含んでいる。
また、NAT情報は、NAT特性に応じて、下記に示すパラメータを更に含む。
(a)NAT特性がConeである場合、NAT情報は、ポート番号[GP22](=[GP24])の値を少なくとも含む。
(b)NAT特性がCone若しくはASである場合、NAT情報は、ポート番号[GP22]及び[GP24]の値を少なくとも含む。
(c)NAT特性がPSである場合、NAT情報は、ポート番号[GP21]及び[GP22]との差αと、ポート番号[GP24]を少なくとも含む。
(d)上記(a)〜(c)に加えて、NATがPort Reuse特性を有する場合、端末200が次のP2P通信路確立フェーズで新たに開くことを予定するポート番号[LP4]を少なくとも含む。ルータ201がSymmetric NAT特性を有する場合には、ポート番号[LP4]は、新たな番号である必要があるが、ルータ201がCone NAT特性を有する場合は、ポート番号[LP4]は、[GP21]〜[GP24]のいずれかであっても良い。
サーバ001は、NAT情報通知パケットを受信すると、受信したNAT情報通知パケットを端末100へと転送する(ステップS1002)。より詳細には、サーバ001において、中継情報転送部0013は、端末200から送信されたNAT情報通知パケットを通信部0014を介して受信し、受信したNAT情報通知パケットを通信部0014を介して端末100へ送信する。
次に、端末100は、自身が接続されているルータ101のNAT特性を示すNAT情報をサーバ001へ通知する(ステップS1003)。より詳細には、中継情報送信部1005は、NAT特性調査フェーズにおいて取得したルータ101のNAT特性を示すNAT情報を含むパケットを生成し、生成したパケットを通信部1008を介してサーバ001へ送信する。端末100がサーバ001へと送信するNAT情報は、端末200がサーバ001へと送信するものと同様であるので、ここでの説明を繰り返さない。
サーバ001は、NAT情報通知パケットを受信すると、受信したNAT情報通知パケットを端末200へと転送する(ステップS1004)。より詳細には、サーバ001において、中継情報転送部0013は、端末100から送信されたNAT情報通知パケットを通信部0014を介して受信し、受信したNAT情報通知パケットを通信部0014を介して端末200へ送信する。
尚、本実施形態においては、端末100及び200の各々は、NAT特性と、当該NAT特性に応じたパラメータとをNAT情報としてサーバ001へ通知しているが、3つのポート番号(ポート番号[GP11]、[GP12]及び[GP14]、または、ポート番号[GP21]、[GP22]及び[GP24])をサーバ001へ通知しても良い。この場合、端末100及び200の各々は、サーバ001から取得した3つのポート番号に基づいて、図4Bに示される処理フローに従って、ルータ101及び201のそれぞれのNAT特性を判断し、かつ、αの値を計算すれば良い。あるいは、サーバ001が、端末100及び200の各々から取得した3つのポート番号に基づいて、図4Bに従って、ルータ101及び201の各々のNAT特性をそれぞれ判断し、判断されたルータ101及び201のNAT特性をそれぞれ端末200及び100に通知しても良い。
また、上記の説明において、NAT情報は、項目(a)〜(d)に例示される情報を含んでいるが、他の情報を含んでいても良い。例えば、NAT情報は、Δ1=|[GP12]−[GP11]|と、Δ2=|[GP14]−[GP12]|によって規定される2つの値を含んでも良い。この場合、中継特性判断部は、Δ1及びΔ2の値を取得して、Δ1=0かつΔ2=0が満たされる場合に、ルータがCone NAT特性を有すると判断し、Δ2>1が満たされる場合に、ルータがAS NAT特性を有すると判断し、Δ1≠0が満たされる場合に、ルータがPS NAT特性を有すると判断しても良い。
また、NAT情報は、端末100、端末200及びサーバ001の少なくとも1つがルータのNAT特性を判別するために有用な情報であれば、上述される以外の情報を含んでいても良い。
更に、本実施形態においては、端末200が先にNAT情報通知パケットを送信しているが、端末100が先にNAT情報通知パケットを送信しても良い。
<P2P通信路確立フェーズ>
図7は、図3に示されるP2P通信路確立フェーズにおいて、端末100が実行する処理を示すフローチャートである。P2P通信路確立フェーズにおいて、端末100及び200は、情報交換フェーズにおいて取得したパラメータを用いて、P2P通信路の確立を図る。
まず、通信制御部1007は、ルータ201がCone NAT特性を有するか否かを判断する(ステップS1201)。通信制御部1007は、ルータ201がCone NAT特性を有すると判断する場合には(ステップS1201でYes)、後述するステップS1207へ進み、ルータ201のポート番号[GP22]が宛先ポート番号に設定されたP2P開始要求パケットを送信する。
ルータ201がCone NAT特性を有しない場合(ステップS1201でNo)、通信制御部1007は、ルータ201がCone若しくはAS NAT特性の両方の可能性があるか否かを判断する(ステップS1202)。通信制御部1007は、ルータ201がCone若しくはAS NATの両方の可能性があると判断する場合には(ステップS1202でYes)、後述するステップS1208へ進み、[GP22]以上かつ[GP24]未満の範囲の値が宛先ポート番号に設定された複数のP2P通信開始要求パケットを送信する。
ルータ201がCone若しくはAS NAT特性のいずれも有していない場合(ステップS1202でNo)、通信制御部1007は、ルータ201がPort Reuse特性を有するか否かを判断する(ステップS1203)。ルータ201がPort Reuse特性を有する場合(ステップS1203でYes)、通信制御部1007は、ルータ201のNATの特性を考慮することなく、ポート番号[LP4]が宛先ポート番号に設定されたP2P開始要求パケットを送信する。ルータ201がPort Reuse特性を有しない場合(ステップS1203でNo)、通信制御部1007は、ステップS1204へ進む。
通信制御部1007がステップS1204に到達するのは、ルータ201がCone NAT特性及びAS NAT特性のいずれも備えていない場合、すなわち、ルータ201がPS NAT特性を有する場合である。ルータ201がPS NATである場合、端末100は、以下に示すように、自身が接続されるルータ101の特性を考慮して、処理を選択する必要がある。
通信制御部1007は、ルータ101がCone NAT特性を有すると特定されるか否かを判断する(ステップS1204)。ルータ101がCone NAT特性を有する場合(ステップS1204でYes)、通信制御部1007は、後述するステップS1210へ進み、ポート番号[GP24+α2]が宛先ポート番号に設定されたP2P開始要求パケットを送信する。
ルータ101がCone NAT特性を有すると特定されない場合(ステップS1204でNo)、通信制御部1007は、ルータ101がCone若しくはAS NAT特性のいずれかを有しているか否かを判断する(ステップS1205)。ルータ101がCone若しくはAS NAT特性のいずれかを有する場合(ステップS1205でYes)、通信制御部1007は、後述するステップS1211へ進み、[GP24+α2]以上かつ[GP24+(n−1)×α2]未満の範囲の値が宛先ポート番号に設定された複数のP2P開始要求パケットを送信する(ただし、nは任意の正の整数である)。
ルータ101がCone NAT特性及びAS NAT特性のいずれも有していない場合(ステップS1205でNo)、通信制御部1007は、ルータ101がPS NAT特性を有しているか否かを判断する(ステップS1206)。ルータ101がPS NAT特性を有している場合(ステップS1206でYes)、通信制御部1007は、後述するステップS1212へ進み、ポート番号[GP24+α2]が宛先ポート番号に設定されたP2P通信開始パケットを送信する。ルータ101がPS NAT特性を有していない場合には、リターンする。
尚、P2P通信路確立フェーズにおいて、端末200の通信制御部2007が実行する処理は、端末200が実行する処理と同様であるので、詳細な説明を省略する。
また、図7に示されるシーケンス図においては、各判断処理の順序が一例として特定されているが、各判断処理は、図7に示される以外の順序で実行されても良い。例えば、ルータがPort Reuse特性を有しているか否かの判断(ステップS1203)を最初に実行しても良い。
以下、上述したステップS1207〜S1212の各々の詳細を説明する。
<接続シーケンス1:ルータ201がCone NATである場合>
図8は、図7に示される接続シーケンス1の詳細を示す図である。尚、図8においては、説明の簡略化のために、ルータ101がCone NAT特性を有する場合を想定する。
上述したように、端末100は、情報交換フェーズ(図6)のステップS1001及びS1002において端末200から通知された情報に基づき、端末200が接続されるルータ201がCone NAT特性を有することと、NAT特性調査フェーズ及び準備フェーズにおいて、ルータ201が開いたポート番号[GP22]及び[GP24]とを把握する。ルータ201がCone NAT特性を有するので、端末100は、端末200がP2P通信に使用するルータ201のポート番号が[GP22]であると予測することができる。
そこで、通信制御部1007は、発信元ポート番号に[LP1]が設定され、かつ、宛先ポート番号に[GP22]が設定されたパケットを、P2P開始要求として送信する(ステップS1301)。尚、ルータ101は、端末100から送信されたパケットにポート番号[GP13]を割り当てる。
この段階では、ルータ201は、端末100から送信された宛先ポート番号が[GP22]に設定されたパケットを転送するようにNATを設定していないため、ルータ201は、ステップS1301において送信されたP2P開始要求パケットを破棄し、端末200に転送しない。この段階において、ルータ101は、発信元ポート番号にルータ201のポート番号[GP22]が設定され、かつ、宛先IPアドレス及び宛先ポート番号に(IPG1、GP13)が設定されたパケットを、端末100(IPL1、LP1)へ転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて端末100から通知された情報に基づき、端末100が接続されるルータ101がCone NAT特性を有することを示す情報と、NAT特性調査フェーズ及び準備フェーズにおいて、ルータ101が開いたポート番号[GP12]及び[GP14]とを示す情報とを取得する。端末200は、ルータ101のNAT特性に関する情報を取得すると、ルータ101がCone NAT特性を有することに基づき、ルータ101がP2P通信に使用するポート番号が[GP12]であることを予測し、すぐに、発信元ポート番号に[LP1]が設定され、宛先ポート番号に[GP12]が設定されたパケットを、P2P開始要求として送信する(ステップS1302)。尚、ルータ101は、Cone NAT特性を有するため、ポート番号[GP12]は、[GP13]と同じである。
ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100において、通信制御部1007は、ルータ101から転送されたP2P開始要求パケットに応答して、通信部1008を介して、P2P開始応答パケットを端末200へ送信する(ステップS1303)。
ルータ201がCone NAT特性を有する場合、上記の処理手順に従って、端末100及び200の間にP2P通信路を確立することができる。
<接続シーケンス2:ルータ201がCone若しくはAS NAT特性のいずれかを有する場合>
図9Aは、図7に示される接続シーケンス2の詳細を示す図であり、図9Bは、図9Aに示されるポート番号を示す図である。尚、図9Aにおいては、説明の簡略化のために、ルータ101がCone NAT特性を有する場合を想定する。
まず、前述の図5Aに示される状況を端末200に適用すると、ルータ201がCone NAT特性を有する場合、ルータ201がP2P通信に割り当てるポート番号は、[GP22]であることが予測される。
次に、前述の図5Dに示される状況を端末200に適用すると、ルータ201がAS NAT特性を有する場合、ルータ201がP2P通信に割り当てるポート番号は、[GP22]と[GP24]との間のいずれか1つのポート番号である。
そこで、端末100において、通信制御部1007は、発信元ポート番号に[LP1]が設定され、かつ、宛先ポート番号に[GP22]以上かつ[GP24]未満であるポート番号がそれぞれ設定された複数のP2P開始要求パケットを送信する(ステップS1401)。ルータ101は、準備フェーズにおいて用意したポート番号[GP13]を全てのP2P開始要求パケットに割り当てる。
ステップS1401においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[GP22]以上[GP24−1]以下の各々のポート番号が設定されたパケットを受信するようにNATを設定していない。したがって、この段階においては、ルータ201は、受信したP2P開始要求パケットの各々を破棄し、端末200へと転送しない。尚、ルータ101は、宛先に(IPG1、GP13)が設定され、かつ、発信元ポート番号に[GP22]〜[GP24−1]の範囲の各ポート番号が設定されたパケットの各々を、端末100(IPL1、LP1)へ転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて端末100から通知された情報に基づき、端末100が接続されるルータ101がCone NAT特性を有することを示す情報と、NAT特性調査フェーズ及び準備フェーズにおいて、ルータ101が開いたポート番号[GP12]及び[GP14]とを示す情報とを取得している。
端末200は、ルータ101のNAT特性に関する情報を取得すると、ルータ101がCone NAT特性を有することに基づき、ルータ101がP2P通信に使用するポート番号が[GP12]であることを予測し、すぐに、発信元ポート番号に[LP1]が設定され、宛先ポート番号に[GP12]が設定されたパケットを、P2P開始要求として送信する(ステップS1402)。尚、ルータ101は、Cone NAT特性を有するため、ポート番号[GP12]は、[GP13]と同じである。
ルータ101は、上述したステップS1401において、P2P開始要求パケットを送信することによって、発信元ポート番号が[GP22+n]であるパケットを受け付けることができるように既にNATを設定している(ここで、[GP22]≦[GP22+n]<[GP24]、かつ、[GP22+n]=[GP23]の関係が成立する)。
したがって、ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100において、通信制御部1007は、ルータ101から転送されたP2P開始要求パケットに応答して、通信部1008を介して、P2P開始応答パケットを端末200へ送信する(ステップS1403)。
ルータ201がCone若しくはAS NAT特性のいずれか特定されない場合には、上記の処理手順に従って、端末100及び200の間にP2P通信路を確立することができる。
尚、変形例として、上記のステップS1401の代わりに、次のような処理を実行しても良い。
図10は、ルータのポート番号割り当て間隔を説明するための図である。
上記の図9Aに示される例においては、端末100は、宛先ポート番号を[GP22]以上かつ[GP24]未満の範囲内で1ずつインクリメントしながら、P2P開始要求パケットを送信しているが、次の理由により、宛先ポート番号の増分は、1でなくても良い。
例えば、ある種のルータは、受信したパケットの宛先ポート番号が、予め定められたポート番号割り当て規則に適合するか否かを判定することによって、不正侵入を検知する機能を有する。仮に、ルータ201がこの種の侵入検知機能を有する場合、ルータ201が端末100から宛先ポート番号を1ずつインクリメントしながら送信されたP2P開始要求パケットを受信すると、侵入検知機能が作動する可能性がある。侵入検知機能の作動によって、端末100が端末200と通信が通信不能に陥ることが考えられる。
そこで、ルータ201が侵入検知機能を有する場合を考慮して、端末200が、ルータ201に割り当てられるポート番号の差分を予め取得しておくことが考えられる。
より詳細には、図10に示されるように、NAT特性調査フェーズにおいて、ルータ201がCone若しくはAS NAT特性のいずれかを有すると判断した場合に、アドレス情報調査要求送信部2001は、宛先ポート番号にサーバ001のあるポート番号(例えば[SP0])が設定された2以上のポート番号調査要求パケットを、発信元ポート番号を1ずつインクリメントしながら、送信する。
サーバ001は、受信したポート番号調査要求パケットの各々に応答して、ルータ201によって変換された発信元ポート番号を含む応答パケットを端末200に送信する。端末200において、中継情報送信部2005は、サーバ001から送信された応答パケットの各々を参照して、ルータ201によってポート番号調査応答パケットの各々に割り当てられたポート番号の増分を調べる。端末200は、ポート番号の増分の最小値を、ポート割り当て間隔(Δ)として、NAT情報通知パケットによって端末100に送信する。
端末100の通信制御部1007は、ステップS1401において、宛先ポート番号を、[GP22]以上[GP24]未満の範囲で、ポート割り当て間隔Δずつインクリメントしながら複数のP2P開始要求パケットを送信すれば良い。
<接続シーケンス3:ルータ201がPort Reuse特性を有する場合>
図11は、図7に示される接続シーケンス3の詳細を示す図である。尚、図11においては、説明の簡略化のために、ルータ101もまたPort Reuse特性を有する場合を想定する。
上述したように、端末100は、情報交換フェーズ(図6)のステップS1001及びS1002において端末200から通知された情報に基づき、端末200が接続されるルータ201がPort Reuse特性を有することと、NAT特性調査フェーズ及び準備フェーズにおいて、ルータ201がP2P通信のために開く予定のポート番号[LP4]を示す情報を取得している。ルータ201は、Port Reuse特性を有するため、発信元ポート番号に[LP4]が設定されたパケットを端末100が送信すると、ルータ201は、当該パケットの転送のためにポート番号[LP4]を割り当てることが予想される。
そこで、通信制御部1007は、ステップS1003及びS1004において端末200に通知したポート番号[LP3]が発信元ポート番号に設定され、宛先ポート番号に[LP4]が設定されたP2P開始要求パケットを送信する(ステップS1501)。ルータ101は、Port Reuse特性を有するので、P2P開始要求パケットの発信ポート番号[LP3]と同一のポート番号を、P2P開始要求パケットに割り当てる。
ステップS1501においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[LP4]が設定されたパケットを端末200に転送することができるようにNATを設定していない。したがって、ルータ201は、P2P開始要求パケットを破棄し、当該パケットを端末200に転送しない。一方、ルータ101は、P2P開始要求パケットを転送することによって、宛先に(IPG1、LP3)が設定され、かつ、宛先ポート番号に[LP4]が設定されたパケットを、端末100(IPL1、LP3)に転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて端末100から通知された情報に基づき、端末100が接続されるルータ101がPort Reuse特性を有することを示す情報と、端末100のポート番号[LP3]を示す情報とを取得している。
端末200は、ルータ101のNAT特性に関する情報を取得するとすぐに、通信制御部2007は、宛先ポート番号に[LP3]が設定されたP2P開始要求パケットを送信する(ステップS1502)。
ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100において、通信制御部1007は、ルータ101から転送されたP2P開始要求パケットに応答して、通信部1008を介して、P2P開始応答パケットを端末200へ送信する(ステップS1503)。
ルータ201がPort Reuse特性を有する場合、上記の処理手順に従って、端末100及び200の間にP2P通信路を確立することができる。
尚、図11に示されるシーケンス図においては、端末100が端末200より先にP2P開始要求を送信しているが、端末200が端末100より先にP2P開始要求を送信しても良い。
また、P2P通信路確立フェーズにおいて、P2P通信路の確立に成功する可能性を向上させるために、情報交換フェーズにおいて、端末100及び200は、複数のポート番号を相互に通知しても良い。
<接続シーケンス4:ルータ201がPS NAT特性を有し、かつ、ルータ101がCone NAT特性を有する場合>
図12Aは、図7に示される接続シーケンス4の詳細を示す図であり、図12Bは、図12Aに示されるポート番号を示す図である。
上述したように、端末100は、情報交換フェーズ(図6)のステップS1001及びS1002において、端末200が接続されるルータ201がPS NAT特性を有することと、ルータ201が開いたポート番号[GP24]と、ルータ201のポート割り当て間隔αの値とを含むNAT特性情報を取得する。PS NATにおいては、新たにポートを開くたびに、ポート番号がαずつ増加するので、端末100は、ルータ201がP2P通信に使用するポートが[GP24+α]であることを予測することができる。
そこで、端末100の通信制御部1007は、宛先ポート番号に[GP24+α]が設定され、かつ、発信元ポート番号に[LP1]が設定されたP2P開始要求パケットを送信する(ステップS1601)。ルータ101は、Cone NAT特性を有するので、P2P通信開始パケットに、準備フェーズにおいて用意したポート番号[GP13]を割り当てる。
ステップS1601においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[GP24+α]が設定されたパケットを端末200に転送するようにNATを設定していないので、ルータ201は、受信したパケットを破棄し、端末200に転送しない。一方、ルータ101は、宛先に(IPG1、GP13)が設定され、かつ、発信元ポート番号に[GP24+α]が設定されたパケットを、端末100(IPL1、LP1)に転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて、端末100が接続されるルータ101がCone NAT特性を有することと、ルータ101が開いたポートの番号[GP12]及び[GP14]とを含むNAT特性情報を取得している。
端末200は、ルータ101のNAT特性に関する情報を取得すると、ルータ101がCone NAT特性を有することに基づき、ルータ101がP2P通信に使用するポート番号が[GP12]であることを予測し、すぐに、発信元ポート番号に[LP1]が設定され、かつ、宛先ポート番号に[GP12]が設定されたP2P開始要求パケットを送信する(ステップS1602)。尚、ルータ101は、Cone NAT特性を有するため、ポート番号[GP12]は、[GP13]と同じである。
ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100において、通信制御部1007は、ルータ101から転送されたP2P開始要求パケットに応答して、通信部1008を介して、P2P開始応答パケットを端末200へ送信する(ステップS1603)
ルータ201がPS NAT特性を有し、かつ、ルータ101がCone NAT特性を有する場合、上記の処理手順に従って、端末100及び200の間にP2P通信路を確立することができる。
尚、本実施形態においては、端末100は、宛先ポート番号が[GP24+α]である1つのP2P開始要求パケットを送信しているが、複数のP2P開始要求パケットを送信しても良い。例えば、NAT情報通知フェーズにおいて、端末100が端末200と情報を交換している間に、端末200の他のアプリケーションが先にルータ201のポート番号[GP24+α]を占有する可能性が考えられる。この可能性を考慮して、P2P通信路確立の確実性を向上させるために、[GP24+α]に加えて、[GP24+2α]及び[GP24+3α]のように、αずつインクリメントされた宛先ポート番号を有する複数のP2P開始要求パケットを送信しても良い。
また、ステップS1601における処理に、次のような変形例を適用しても良い。
図12Cは、端末及びルータ間のポート番号の関係を示す図である。
図12Cに示されるように、端末100は、[GP24]から意図的に大きくずらされた[GP24+nα](ただし、nは整数である)が発信ポート番号に設定されたP2P通信開始要求を送信する。例えば、nは、5に設定されている。その後、端末200は、宛先ポート番号に[GP12]が設定されたn個の要求パケットを送信する。端末200から送信されたn個の要求パケットのうち、発信元ポート番号が[GP24+nα]に変換された1つのパケットがルータ101によって端末100に転送され、これにより、P2P通信路が確立する。
<接続シーケンス5:ルータ201がPS NAT特性を有し、かつ、ルータ101がCone若しくはAS NAT特性のいずれを有するか特定されない場合>
図13Aは、図7に示される接続シーケンス5の詳細を示す図であり、図13Bは、図13Aに示されるポート番号を示す図である。
端末100は、情報交換フェーズにおいて、ルータ201がPS NATであることと、ルータ201のポート割り当て間隔αの値と、ルータ201のポート番号[GP24]とを含むNAT特性情報を取得している。
ルータ101がCone若しくはAS NAT特性のいずれかを有する場合、前述の理由により端末200の通信制御部2007は、宛先ポート番号に[GP12]以上[GP14]未満の範囲に含まれるポート番号の各々が設定されるn個のP2P開始要求パケットを送信すると考えられる。ルータ201は、PS NAT特性を有するので、端末200がP2P開始要求パケットを送信するたびに、ルータ201は、パケットの各々にポート割り当て間隔αずつインクリメントされたポート番号を割り当てる。つまり、ルータ201は、P2P開始要求パケットの各々の送信元ポート番号を、[GP24+α]〜[GP24+nα]に変換する。このような理由により、端末100の通信制御部1007は、宛先ポート番号に[GP24+α]〜[GP24+nα]の各々が設定されたn個のP2P開始要求パケットを送信する(ステップS1701)。この時、ルータ101は、準備フェーズにおいて用意したポート番号[GP13]を全てのP2P開始要求パケットに割り当てる。
ステップS1701においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[GP24+α]〜[GP24+nα]に設定されたパケットを端末200に転送するようにNATを設定していない。したがって、ルータ201は、宛先ポート番号に[GP24+α]〜[GP24+nα]が設定されたn個のP2P開始要求パケットを破棄し、当該パケットを端末200に転送しない。一方、ルータ101は、n個のP2P開始要求パケットを転送することによって、宛先に(IPG1、GP13)が設定され、かつ、発信元ポート番号に[GP24+α]〜[GP24+nα]のいずれかが設定されたパケットを端末100(IPL1、LP1)に転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて、ルータ101がCone若しくはAS NAT特性のいずれかであることと、端末100がNAT特性調査フェーズおよび準備フェーズにおいて開いたポートの番号[GP12]及び[GP14]とを含むNAT特性情報を取得している。
端末200の通信制御部2007は、宛先ポート番号に[LP1]が設定され、かつ、発信元ポート番号に[GP12]以上[GP14]未満の値が設定されたn個のP2P開始要求パケット(ただし、n=[GP14]―[GP12])を送信する(ステップS1702)。
ルータ101は、端末200から送信されたn個のP2P開始要求パケットのうち、ルータ201のNATによって宛先ポート番号にポート番号[GP13]が設定されたパケットのみを端末100に転送する。端末100は、ルータ101によって転送されたP2P開始要求パケットを受信すると、P2P開始応答パケットを端末200に送信する(ステップS1703)。
ルータ201がPS NAT特性を有し、かつ、ルータ101がCone若しくはAS NAT特性のいずれを有するか特定されない場合には、上述の処理にしたがって、端末100及び200の間にP2P通信路を確立することができる。
尚、本実施形態においては、端末100は、n個(すなわち、[GP14]―[GP12])のP2P開始要求パケットを送信しているが、端末100が送信するP2P開始要求パケットの数は、n個でなくても良い。例えば、NAT特性調査フェーズにおいて、ルータ201がポート[GP24]を開いた後、端末100及び200が相互にNAT情報を交換している間に、端末200上の他のアプリケーションが、[GP24+α]以上[GP24+nα]以下の範囲にある複数のポートのうちいくつかを占有する可能性が考えられる。この可能性を考慮し、P2P通信路確立の確実性を高めるために、端末100は、ルータ201のポート番号[GP24+α]〜[GP24+(n+m)α]を宛先ポート番号に設定した(n+m)個のP2P開始要求パケット(ただし、mは整数である)を送信しても良い。
<接続シーケンス6:ルータ101及び201の両方がPS NAT特性を有する場合の接続シーケンス>
図14Aは、図7に示される接続シーケンス6の詳細を示す図であり、図14Bは、図14Aに示されるポート番号を示す図である。
端末100は、情報交換フェーズにおいて、ルータ201がPS NATであることと、ルータ201のポート割り当て間隔α2の値と、ルータ201のポート番号[GP24]とを含むNAT特性情報を取得している。
PS NATは、パケットにポート番号を割り当てるたびに、ポート割り当て間隔αずつインクリメントする。したがって、端末100は、端末200がP2P通信のために使用するポート番号が[GP24+α2]であると予測することができる。
そこで、通信制御部1007は、宛先ポート番号に[GP24+α2]が設定され、かつ、発信元ポート番号に[LP1]が設定されたP2P開始要求パケットを送信する(ステップS1801)。ルータ101もまたPS NAT特性を有するため、ルータ101は、P2P開始要求パケットにポート番号[GP14+α1]を割り当てる(ただし、α1は、ルータ101のポート割り当て間隔である)。
ステップS1801においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[GP24+α2]が設定されたパケットを端末200に転送するようにNATを設定していない。したがって、ルータ201は、P2P開始要求パケットを破棄し、当該パケットを端末200に転送しない。一方、ルータ101は、宛先に(IPG1、GP14+α1)が設定され、発信元ポート番号に[GP24+α2]が設定されたパケットを、端末100(IPL1、LP1)に転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて、ルータ101がPS NAT特性を有し手いることと、ポート割当て間隔α1の値と、ポート番号[GP14]とを含むNAT特性情報を取得している。端末200は、ルータ101がP2P通信に使用するポート番号が[GP14+α1]であると予測し、宛先ポート番号に[GP14+α1]が設定され、発信元ポート番号に[LP1]が設定されたP2P開始要求パケットを送信する(ステップS1802)。
ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100は、ルータ101によって転送されたP2P開始要求パケットを受信すると、P2P開始応答パケットを端末200に送信する(ステップS1803)。
ルータ101及び201が共にPS NAT特性を有する場合には、上述の処理にしたがって、端末100及び200の間にP2P通信路を確立することができる。
尚、本実施の形態においては、端末100は、宛先ポート番号に[GP24+α2]が設定された1つP2P開始要求パケットを送信しているが、端末100は、複数のP2P開始要求パケットを送信しても良い。端末100は、P2P通信路確立に成功する可能性を高めるために、例えば[GP24+2×α2]及び[GP24+3×α2]のように、α2ずつインクリメントされたポート番号が宛先ポート番号に設定された複数のP2P開始要求パケットを送信しても良い。
また、本実施形態においては、パケットにポートを割り当てる度に、割り当てられるポート番号が増加するルータが示されているが、本発明は、パケットにポートを割り当てる度に、割り当てられるポートが減少するルータにも同様に適用することができることは、言うまでもない。この場合、ポート番号割り当て間隔は、2つのポート番号の差の絶対値を算出することによって得られる。
(その他の変形例)
上述の実施形態に係る通信システムは、次のように構成されても良い。
端末100及び200は、最初にP2P通信路を確立した際に判断したNAT特性を記憶しておき、記憶されるNAT特性を再利用することによって、2回目以降にP2P通信路を確立する際に、NAT特性調査フェーズを省略しても良い。また、端末100及び200は、NAT調査フェーズの処理を実行することなくP2P通信路確立処理を進め、P2P通信路の確立に失敗したときに初めて、NAT特性調査フェーズの処理を実行しても良い。
このような構成によれば、端末100及び200がNAT特性を調査する回数が低減されるので、2回目以降のP2P通信路確立処理を効率的に実行することができる。
更に、端末100及び200が一旦調査されたルータのNAT特性を記憶する場合、端末100及び200は、次のような手順に従って、記憶されているNAT特性が変化していないことを確認すれば良い。端末100及び200の各々は、P2P通信路確立フェーズの期間または端末100及び200がP2P通信している期間に、接続先装置のポート番号を含むパケットを当該接続先装置に送信する。また、サーバ001は、サーバ001との通信のためにルータ101が使用するポート番号含むパケットを、端末100及び200の各々に送信する。端末100及び200は、接続先装置から通知されたポート番号と、サーバ001との通信のためにされるルータのポート番号とを比較することによって、NAT特性を確認することができる。
更に、端末装置100及び200は、NAT特性調査フェーズにおいて、自身が接続されるルータがCone若しくはAS NAT特性のいずれかを有すると判断した場合、Cone NAT特性またはAS NAT特性のいずれを有するかを特定しても良い。以下、P2P通信路確立フェーズにおいて、端末100及び200の各々が、自身のルータがConeまたはAS NAT特性のいずれを有するかを判断するための処理について説明する。
図15Aは、ルータ101のNAT特性がCone若しくはAS NAT特性のいずれであるかを特定する処理を含む接続シーケンス図であり、図15Bは、図15Aに示されるポート番号を示す図である。
端末100は、情報交換フェーズにおいて、ルータ201がCone NAT特性を有することと、ルータ201のポート番号[GP22]を含むNAT特性情報を取得している。ルータ201がCone NAT特性を有するので、端末100は、端末200がP2P通信に使用するルータ201のポート番号が[GP22]であると予測することができる。
そこで、通信制御部1007は、発信元ポート番号に[LP1]が設定され、かつ、宛先ポート番号に[GP22]が設定されたパケットを、P2P開始要求として送信する(ステップS2001)。尚、ルータ101は、端末100から送信されたパケットにポート番号[GP13]を割り当てる。
ステップS2001においてP2P開始要求パケットが送信された段階では、ルータ201は、ルータ201は、端末100から送信された宛先ポート番号が[GP22]に設定されたパケットを転送するようにNATを設定していない。したがって、ルータ201は、受信したP2P開始要求パケットを破棄し、当該パケットを端末200に転送しない。この段階において、ルータ101は、発信元ポート番号にルータ201のポート番号[GP22]が設定され、かつ、宛先IPアドレス及び宛先ポート番号に(IPG1、GP13)が設定されたパケットを、端末100(IPL1、LP1)へ転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて、端末100が接続されるルータ101がCone若しくはAS NAT特性のいずれかを有することを示す情報と、NAT特性調査フェーズ及び準備フェーズにおいて、ルータ101が開いたポート番号[GP12]及び[GP14]とを示すNAT特性情報を取得している。
端末200は、ルータ101のNAT特性に関する情報を取得すると、発信元ポート番号に[LP1]が設定され、かつ、宛先ポート番号に[GP12]以上[GP14]未満の値が設定された複数のP2P開始要求パケットを送信する(ステップS2002)。
端末200から送信された複数のP2P開始要求パケットのうち、ルータ101は、ルータ201によって宛先ポート番号に[GP13]に設定された1つのパケットのみを端末100に転送する。端末100は、ルータ101によって転送されたP2P開始要求パケットを受信すると、P2P開始応答パケットを端末200に送信する(ステップS2003)。
ルータ101がCone若しくはAS NAT特性のいずれかを有し、かつ、ルータ201がCone NAT特性を有する場合には、上述の処理にしたがって、端末100及び200の間にP2P通信路を確立することができる。
次に、端末200の通信制御部2007は、端末100からP2P開始応答パケットを受信すると、当該パケットの発信元ポート番号、すなわち、ルータ101のポート番号[GP13]を取り出し、取り出したポート番号[GP13]を含む通知パケットを端末100に送信する(ステップS2004)。
端末100の中継特性判断部1004は、端末200から送信された通知パケットを参照して、ルータ101のポート番号[GP13]と、NAT特性調査フェーズにおいて調査したポート番号[GP12]とを比較する(ステップS2005)。比較した結果、中継特性判断部1004は、[GP13]が[GP12]に等しい場合には(ステップS2005でYes)、ルータ101がCone NAT特性を有すると判断する(ステップS2006)。それ以外の場合には(ステップS2005)、中継特性判断部1004は、ルータ101がAS NAT特性を有すると判断する(ステップS2006)。
次に、中継特性判断部1004は、ポート番号[GP13]と[GP12]との差を、ルータ101のポート割り当て間隔Δとして、所定の記憶部に格納する(ステップS2008)。
図16は、一旦調査されたNAT特性が記憶されている場合における処理を示す接続シーケンス図である。
端末100は、ルータ101を既に調査したので、NAT特性調査フェーズにおける処理を省略し、準備フェーズにおける処理を実行する。
<準備フェーズ>
まず、端末100において、アドレス情報調査要求送信部1001は、発信元ポート番号に端末100のポート番号[LP1]が設定され、かつ、宛先ポート番号にサーバ001のポート番号[SP0]が設定されたポート番号調査要求パケットを送信する(ステップS2101)。
サーバ001において、アドレス情報調査部0011は、ポート番号調査要求パケットの発信元ポート番号、すなわち、ルータ101のポート番号[GP11]を含むポート番号調査応答パケットを、通信部0014を介して送信する(ステップS2102)。
次に、端末100において、直接通信準備要求送信部1003は、宛先に端末200のIPアドレス及びポート番号が設定されたP2P通信準備パケットを送信することによって、端末200とP2P通信するために使用するポート番号[GP12]をルータ101上に準備する(ステップS2103)。ルータ101は、端末200からルータ101(IPG1、GP12)に送信されたパケットを受け付けることができるようにNATを設定する。
同様に、端末200は、NAT特性調査フェーズにおける処理を省略して、準備フェーズにおける処理(ステップS2104〜S2106)を実行する。ルータ201は、端末100からルータ201(IPG1、GP22)に送信されたパケットを受け付けることができるようにNATを設定する。
<情報交換フェーズ>
次に、端末200は、ルータ201のNAT特性についての情報を含むNAT情報通知パケットをサーバ001に送信する(ステップS2107)。NAT情報は、ルータ201がPort Reuse特性を有するか否かに応じて、下記のように、異なる情報を含む。
(e)ルータ201がPort Reuse特性を有していない場合、NAT情報は、ルータ201のNAT特性と、ルータ201のポート番号[GP21]とを少なくとも含む。また、前回のP2P通信の際に、ルータ201がAS NAT特性を有すると判断された場合には、NAT情報は、中継特性判断部2004が記憶したポート割り当て間隔Δの値を更に含む。
(f)ルータ201がPort Reuse特性を有する場合、NAT情報は、端末200が次のP2P通信路確立フェーズで新たに開くことを予定するポート番号[LP4]を少なくとも含む。
次に、サーバ100において、中継情報転送部0013は、端末200から送信されたNAT情報通知パケットを受信すると、受信したNAT情報通知パケットを、通信部0014を介して、端末100に転送する(ステップS2108)。
同様に、端末100において、中継情報送信部1005は、ルータ101のNAT特性についての情報を含むNAT情報通知パケットをサーバ001に送信する(ステップS2109)。NAT情報は、ルータ101がPort Reuse特性を有するか否かに応じて、下記のように、異なる情報を含む。
(g)ルータ101がPort Reuse特性を有していない場合、NAT情報は、ルータ101のNAT特性と、ルータ101のポート番号[GP11]とを少なくとも含む。また、前回のP2P通信の際に、ルータ101がAS NAT特性を有すると判断された場合には、NAT情報は、中継特性判断部1004が記憶したポート割り当て間隔Δの値を更に含む。
(h)ルータ101がPort Reuse特性を有する場合、NAT情報は、端末100が次のP2P通信路確立フェーズで新たに開くことを予定するポート番号[LP3]を少なくとも含む。
次に、サーバ100において、中継情報転送部0013は、端末100から送信されたNAT情報通知パケットを受信すると、受信したNAT情報通知パケットを、通信部0014を介して、端末200に転送する(ステップS2110)。
尚、本実施形態においては、端末200が端末100より先にNAT情報通知パケットを送信しているが、端末100が端末200より先にNAT情報通知パケットを送信しても良い。
<接続フェーズ>
以下においては、説明の簡略化のために、ルータ101がCone NAT特性を有し、かつ、ルータ201がAS NAT特性を有する場合を想定する。
端末100の通信制御部1007は、ルータ201がAS NAT特性を有することと、ルータ201のポート番号[GP21]と、ルータ201のポート割り当て間隔Δとを含むNAT情報通知パケットに基づいて、端末200が端末100とP2P通信する際に、ルータが使用するポート番号が[GP21+Δ]であることを予測する。通信制御部1007は、通信部1008を介して、宛先ポート番号に[GP21+Δ]が設定されたP2P開始要求パケットをルータ201に送信する(ステップS2111)。尚、ルータ101は、P2P開始要求パケットにポート番号[GP12]を割り当てる。
ステップS2111においてP2P開始要求パケットが送信された時点では、ルータ201は、宛先ポート番号に[GP21+Δ]が設定されたパケットを端末200に転送するようにNATを設定していない。したがって、ルータ201は、受信したP2P開始要求パケットを破棄し、当該パケットを端末200に転送しない。一方、ルータ101は、P2P開始要求パケットを転送することによって、宛先に(IPG1、GP12)が設定され、かつ、発信元ポート番号に[GP21+Δ]が設定されたパケットを端末100(IPL1、LP1)に転送するようにNATを設定する。
一方、端末200は、情報交換フェーズにおいて、ルータ101がCone NAT特性を有していることと、ルータ101のポート番号[GP11]とを含むNAT特性情報を取得している。端末200は、ルータ101がP2P通信に使用するポート番号が[GP11]であると予測し、宛先ポート番号に[GP11]が設定され、発信元ポート番号に[LP1]が設定されたP2P開始要求パケットを送信する(ステップS2112)。尚、ルータ101は、Cone NAT特性を有するので、[GP12]は、[GP11]と同一である。
ルータ101は、端末200から送信されたP2P開始要求パケットを端末100に転送する。端末100は、ルータ101によって転送されたP2P開始要求パケットを受信すると、P2P開始応答パケットを端末200に送信する(ステップS2113)。
尚、P2P通信路確立フェーズ(ステップS2111〜S2113)において、端末100及び200がP2P通信路の確立に失敗した場合、端末100及び200の各々は、NAT特性調査フェーズから再度接続処理を繰り返せば良い。
また、図7に示されるフローチャートにおいて、2つの端末のうちの一方は、他方の端末に接続されているルータがPS NAT特性を有する場合(ステップS1204〜S1206)にのみ、自身に接続されているルータのNAT情報通知パケット情報特性を判断しているが、常に、自身に接続されているルータのNAT特性を判断しても良い。この場合、2つの端末の各々は、NAT特性の組み合わせ毎に、接続シーケンスを選択すれば良い。
尚、本実施形態においては、説明の簡略化のために、端末100及びサーバ001が1台のルータ101によって接続されている例を中心に示したが、端末100及びサーバ001は、複数のルータを介して接続されていても良い。また、端末200及びサーバ001間に配置されるルータの数も同様である。この点を以下に説明する。
図17Aは、端末が3つのルータを介してグローバルネットワークに接続されている例を示す図である。
図17Aに示されるように、端末100は、Cone NAT特性を有するルータ1〜3を介してグローバルネットワーク00に接続されている。端末100が発信元ポート番号に[LP1]が設定されたパケットを送信すると、当該パケットは、ルータ1のポートRP11、ルータ2のポートRP21、ルータ3のポートRP31を通って、ネットワーク00に到達する。この場合、グローバルネットワーク00に接続されるサーバは、見かけ上、端末100が1台のCone NAT特性を有するルータを介して自身に接続されていると見なすことができる。
図17Bは、端末が3つのルータを介してグローバルネットワークに接続されている他の例を示す図である。
図17Bに示されるように、端末100は、Cone NAT特性を有するルータ1と、PS NAT特性を有するルータ2と、Cone NAT特性を有するルータ3とを介してグローバルネットワーク00に接続されている。端末100が発信元ポート番号に[LP1]が設定されたパケットを送信すると、当該パケットは、ルータ1のポートPR11を通じてルータ2に到達する。ルータ2は、PS NAT特性を有するので、受信したパケットに異なるポートRP21、RP22及びRP23を割り当て、パケットをルータ3に転送する。ルータ3がCone NAT特性を有する場合であっても、送信元ポート番号が異なるパケットの各々は、ルータ3の異なるポートを通じてグローバルネットワークに転送されるので、グローバルネットワーク00に接続されるサーバは、見かけ上、端末100が1台のPS NAT特性を有するルータを介して自身に接続されていると見なすことができる。
このように、端末及びサーバが複数のルータを介して接続されていても、グローバルネットワーク00から見える見かけ上のNAT特性に基づいて、接続シーケンスを選択することによって、2台の端末間にP2P通信路を確立することができる。
尚、上記の実施形態に係る通信装置の機能ブロック(図2A及び図2B)は、記憶装置(ROM、RAM、ハードディスク等)に格納された上述の処理手順をコンピュータに実行させることができるプログラムを、コンピュータに実行させることによっても実現できる。このコンピュータは、携帯端末装置に組み込まれたコンピュータを含む概念である。この場合、当該プログラムは、記録媒体を介して記憶装置内に格納された後に実行されても良いし、記憶媒体から直接実行されても良い。また、上記の実施形態に係る通信装置の機能ブロックは、集積回路として実現されても良い。
本発明に係る通信装置、通信方法および通信システムは、1つのIPアドレスを有する1台のサーバとのみ通信することによって、ルータのNAT特性を調査することができる。したがって、本発明は、例えば、異なるプライベートネットワークに属する2台の端末の間でP2P通信を行う家電製品、通信機器等に有用である。
本発明の実施形態に係る通信システムの全体構成を示すブロック図 図1に示される端末の概略構成を示すブロック図 図1に示される端末の概略構成を示すブロック図 図1に示されるサーバの概略構成を示すブロック図 本実施形態に係る通信システムがP2P通信路を確立するために実行する処理の概略を示すシーケンス図 図3に示されるNAT特性調査フェーズ及び準備フェーズにおける処理の詳細を示すシーケンス図 図4Aに示されるステップS908の処理の詳細を示すフローチャート 図4Aに示されるステップS910を説明するための図 図4Aに示されるステップS912を説明するための図 図4Aに示されるステップS913を説明するための図 図4Aに示されるステップS913を説明するための図 図3に示される情報交換フェーズにおける処理の詳細を示すシーケンス図 図6に示されるP2P通信路確立フェーズにおいて、端末が実行する処理を示すフローチャート 図7に示される接続シーケンス1の詳細を示す図 図7に示される接続シーケンス2の詳細を示す図 図9Aに示されるポート番号を示す図 ルータのポート番号割り当て間隔を説明するための図 図7に示される接続シーケンス3の詳細を示す図 図7に示される接続シーケンス4の詳細を示す図 図12Aに示されるポート番号を示す図 端末及びルータ間のポート番号の関係を示す図 図7に示される接続シーケンス5の詳細を示す図 図13Aに示されるポート番号を示す図 図7に示される接続シーケンス6の詳細を示す図 図14Aに示されるポート番号を示す図 ルータのNAT特性がCone若しくはAS NAT特性のいずれであるかを特定する処理を含む接続シーケンス図 図15Aに示されるポート番号を示す図 一旦調査されたNAT特性が記憶されている場合における処理を示す接続シーケンス図 端末が3つのルータを介してグローバルネットワークに接続されている例を示す図 端末が3つのルータを介してグローバルネットワークに接続されている他の例を示す図 Full Cone NATと呼ばれるNATを説明するための図 Restricted Cone NAT(R NAT)と呼ばれるNATを説明するための図 Port Restricted Cone NAT(PR NAT)と呼ばれるNAT特性を説明するための図 Adress Sensitive Symmetric NAT(AS NAT)と呼ばれるNATを説明するための図 Port Sensitive Symmetric NAT(PS NAT)と呼ばれるNATを説明するための図 Port Reuse特性の概略を説明するための図 Port Reuse特性を有するルータの機能を説明するための図 STUN−TestIの概略を示す図 STUN−TestIIの概略を示す図 STUN−TestIIIの概略を示す図 STUNによってNAT特性を調査するためのフローチャート STUNを利用するP2P通信路確立方法を示すシーケンス図 Symmetric NAT特性を有するルータを介して接続される2つの通信端末に、STUNを利用するP2P通信路確立方法を適用した場合の処理手順を示すシーケンス図 Symmetric NAT特性を有するルータを介して接続される2つの通信端末に、STUNを利用するP2P通信路確立方法を適用した場合の処理手順を示すシーケンス図 従来のP2P通信路確立方法を示すシーケンス図
符号の説明
00 グローバルネットワーク
01、02 プライベートネットワーク
001 サーバ
100、200 (宅内)端末
101、201 ルータ
0011 アドレス情報調査部
0012 アドレス情報送信部
0013 中継情報転送部
1001、2001 アドレス情報調査要求送信部
1002、2002 アドレス情報受信部
1003、2003 直接通信準備要求送信部
1004、2004 中継特性判断部
1005、2005 中継情報送信部
1006、2006 中継情報受信部
1007、2007 通信制御部
1008、2008 通信部

Claims (20)

  1. NAT(ネットワークアドレス変換)機能を有する第1の中継装置を介してサーバに接続される通信装置であって、
    発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットを前記サーバに送信する第1の送信処理と、発信元ポート番号が前記第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス情報調査要求パケットを前記サーバに送信する第2の送信処理とを、任意の順序で実行するアドレス情報調査要求送信部と、
    前記第1及び第2の送信処理の間に、前記サーバとは異なる宛先に、発信元ポート番号が前記第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信する通信準備要求送信部と、
    前記第1の中継装置のNAT機能によって、前記アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、前記サーバから受信するアドレス情報受信部と、
    前記受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、前記第1の中継装置のNAT特性を判断する中継特性判断部とを備える、通信装置。
  2. 前記アドレス情報調査要求送信部は、
    前記第1の送信処理において、
    宛先ポート番号に前記サーバの第1のポート番号が設定され、かつ、発信元ポート番号に第1のローカルポート番号が設定された第1のアドレス情報調査要求パケットと、
    宛先ポート番号に前記第1のポート番号とは異なる第2のポート番号が設定され、かつ、発信元ポート番号に前記第1のローカルポート番号が設定された第2のアドレス情報調査要求パケットとを送信し、
    前記第2の送信処理において、
    宛先ポート番号に前記第1のポート番号が設定され、かつ、発信元ポート番号に前記第1のローカルポート番号とは異なる第2のローカルポート番号が設定された第3のアドレス情報調査要求パケットとを送信し、
    前記アドレス情報受信部は、
    前記第1のアドレス情報調査要求パケットに応答して返送され、第1の中継ポート番号を含む第1のアドレス情報パケットと、
    前記第2のアドレス情報調査要求パケットに応答して返送され、第2の中継ポート番号を含む第2のアドレス情報パケットと、
    前記第3のアドレス情報調査要求パケットに応答して返送され、第3の中継ポート番号を含む第3のアドレス情報パケットとを受信し、
    前記中継特性判断部は、前記第1〜第3の中継ポート番号の少なくとも2つに基づいて、前記第1の中継装置のNAT特性を判断することを特徴とする、請求項1に記載の通信装置。
  3. 前記サーバには、NAT機能を有する第2の中継装置を介して、接続先通信装置が接続されており、
    前記通信装置は、
    前記判断されたNAT特性を示す情報を含む第1の中継情報パケットを前記サーバに送信する中継情報送信部と、
    前記第2の中継装置のNAT特性を示す情報を含む第2の中継情報パケットを、前記サーバから受信する中継情報パケット受信部と、
    前記接続先通信装置にピア・ツー・ピア通信の開始を要求するために、前記第1及び第2の中継装置のNAT特性に基づいて、前記接続先通信装置に開始要求パケットを送信する通信制御部とを更に備える、請求項2に記載の通信装置。
  4. 前記中継情報送信部は、前記中継特性判断部が前記第1及び第2の中継ポート番号が不一致であると判断した場合に、前記第3の中継ポート番号と、前記第1及び第2の中継ポート番号の差分値をデータ部に含む前記第1の中継情報パケットを送信することを特徴とする、請求項3に記載の通信装置。
  5. 前記中継情報送信部は、前記中継特性判断部が、前記第1及び第2の中継ポート番号が同じ値であると判断し、かつ、前記第3の中継ポート番号と前記同じ値との差分値が1であると判断した場合に、前記第2の中継ポート番号をデータ部に含む前記第1の中継情報パケットを送信することを特徴とする、請求項3に記載の通信装置。
  6. 前記中継情報送信部は、前記中継特性判断部が、前記第1及び第2の中継ポート番号が同じ値であると判断し、かつ、前記第3の中継ポート番号と前記同じ値との差分値が1より大きいと判断した場合に、前記第3の中継ポート番号をデータ部に含む前記第1の中継情報パケットを送信することを特徴とする、請求項3に記載の通信装置。
  7. 前記中継情報送信部は、前記中継特性判断部が、前記第1の中継ポート番号及び前記第1のローカルポート番号が一致すると判断した場合に、第4のローカルポート番号をデータ部に含む前記第1の中継情報パケットを送信することを特徴とする、請求項3に記載の通信装置。
  8. 前記中継情報送信部は、前記判断されたNAT特性を特定する情報をデータ部に含む前記第1の中継情報パケットを送信することを特徴とする、請求項3に記載の通信装置。
  9. 前記第2の中継情報パケットは、前記第2の中継装置のNAT特性を特定する情報と、前記サーバから通知された第4〜第6の中継ポート番号及び第5のローカルポート番号のうち少なくとも1つとをデータ部に含み、
    前記通信制御部は、前記第2の中継情報パケットに含まれる情報に基づいて、予め定められた複数の接続シーケンスの中から1つを選択することを特徴とする、請求項3に記載の通信装置。
  10. 前記第2の中継情報パケットは、前記第4及び第5の中継ポート番号が一致し、かつ、前記第4及び第5の中継ポート番号の差分値が1であることを示す情報と、前記第5の中継ポート番号とをデータ部に含み、
    前記通信制御部は、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、宛先ポート番号に前記第5の中継ポート番号が設定された開始要求パケットを送信することを特徴とする、請求項9に記載の通信装置。
  11. 前記第2の中継情報パケットは、前記第4及び第5の中継ポート番号が一致し、かつ、前記第4及び第5の中継ポート番号との差分値が1より大きいことを示す情報と、前記第5及び第6の中継ポート番号とをデータ部に含み、
    前記通信制御部は、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、前記第5の中継ポート番号以上で前記第6の中継ポート番号未満である範囲の値が宛先ポート番号に設定された複数の開始要求パケットを前記接続先通信装置に送信することを特徴とする、請求項9に記載の通信装置。
  12. 前記第2の中継情報パケットは、前記第2の中継装置が、前記接続先通信装置のローカルポート番号と同一のポート番号を使用することを示す情報と、前記第5のローカルポート番号とをデータ部に含み、
    前記通信制御部は、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、宛先ポート番号に前記第5のローカルポート番号が設定された開始要求パケットを送信することを特徴とする、請求項9に記載の通信装置。
  13. 前記第2の中継情報パケットは、前記第4及び第5の中継ポート番号が不一致であることを示す情報と、前記第6の中継ポート番号と、前記第4及び第5の中継ポート番号の差分値とをデータ部に含み、
    前記通信制御部は、前記中継特性判断部が、前記第1及び第2の中継ポート番号が同じ値であると判断し、かつ、前記第3の中継ポート番号と前記同じ値との差分値が1であると判断した場合に、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、宛先ポート番号に、前記第6の中継ポート番号と、前記第4及び第5の中継ポート番号の差分値とを加算した値が設定された開始要求パケットを送信することを特徴とする、請求項9に記載の通信装置。
  14. 前記第2の中継情報パケットは、前記第4及び第5の中継ポート番号が不一致であることを示す情報と、前記第6の中継ポート番号と、前記第4及び第5の中継ポート番号の差分値とをデータ部に含み、
    前記通信制御部は、前記中継特性判断部が前記第1及び第2の中継ポート番号が同じ値であると判断し、かつ、前記第3の中継ポート番号と前記同じ値との差分値が1より大きいと判断した場合に、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、宛先ポート番号に、前記第6の中継ポート番号が前記第4及び第5の中継ポート番号の差分値ずつインクリメントされた値がそれぞれ設定された複数の開始要求パケットを送信することを特徴とする、請求項9に記載の通信装置。
  15. 前記第2の中継情報パケットは、前記第4及び第5の中継ポート番号が不一致であることを示す情報と、前記第6の中継ポート番号と、前記第4及び第5の中継ポート番号の差分値とをデータ部に含み、
    前記通信制御部は、前記第1及び第2の中継ポート番号が不一致であると判断した場合に、発信元ポート番号に前記第1のローカルポート番号が設定され、かつ、宛先ポート番号に、前記第6の中継ポート番号と、前記第4及び第5の中継ポート番号の差分値とを加算した値が設定された開始要求パケットを送信することを特徴とする、請求項8に記載の通信装置。
  16. 前記通信制御部は、前記第1の中継装置のNAT特性に基づいて、発信元ポート番号に前記第4のローカルポート番号が設定された開始要求パケットを送信することを特徴とする、請求項7に記載の通信装置。
  17. 前記通信準備要求送信部は、前記通信準備パケットが前記第1の中継装置に到達し、かつ、前記第2の中継装置には到達しないように、前記通信準備パケットのヘッダに含まれるTTL(Time To Live)の値を調整することを特徴とする、請求項3に記載の通信装置。
  18. 前記中継特性判断部は、前記第1及び第2の中継装置の各々のNAT特性を保持し、
    前記通信制御部は、前記接続先通信装置と次に通信する際に、前記保持されているNAT特性に基づいて、前記接続開始要求パケットを前記接続先通信装置に送信することを特徴とする、請求項3に記載の通信装置。
  19. NAT(ネットワークアドレス変換)機能を有する第1の中継装置を介してサーバに接続される通信端末が通信するための通信方法であって、
    発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットを前記サーバに送信する第1の送信処理と、発信元ポート番号が前記第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス情報調査要求パケットを前記サーバに送信する第2の送信処理とを、任意の順序で実行し、
    前記第1及び第2の送信処理の間に、前記サーバとは異なる宛先に、発信元ポート番号が前記第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信し、
    前記第1の中継装置のNAT機能によって、前記アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、前記サーバから受信し、
    前記受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、前記第1の中継装置のNAT特性を判断する、通信方法。
  20. 通信システムであって、
    サーバと、
    NAT(ネットワークアドレス変換)機能を有する第1の中継装置と、
    NAT機能を有する第2の中継装置と、
    前記第1の中継装置を介して前記サーバに接続される第1の通信装置と、
    前記第2の中継装置を介して前記サーバに接続される第2の通信装置とを備え、
    前記第1及び第2の通信装置の各々は、
    発信元ポート番号が同一であり、かつ、宛先ポート番号が相違する少なくとも2つのアドレス情報調査要求パケットを前記サーバに送信する第1の送信処理と、発信元ポート番号が前記第1の送信処理で使用した発信元ポート番号とは異なる少なくとも1つのアドレス調査情報要求パケットを前記サーバに送信する第2の送信処理とを、任意の順序で実行するアドレス情報調査要求送信部と、
    前記第1及び第2の送信処理の間に、前記サーバとは異なる宛先に、発信元ポート番号が前記第1及び第2の送信処理において使用したいずれかの発信元ポート番号と同一である通信準備パケットを送信する通信準備要求送信部と、
    各々が接続されている中継装置のNAT機能によって、前記アドレス情報調査要求パケットの発信元ポートアドレスから変換された中継ポート番号をデータ部に含む少なくとも3つのアドレス情報パケットを、前記サーバから受信するアドレス情報受信部と、
    前記受信したアドレス情報パケットに含まれる中継ポート番号に基づいて、各々が接続されている中継装置のNAT特性を判断する中継特性判断部とを含み、
    前記サーバは、
    前記第1及び第2の通信装置の各々から送信された前記アドレス情報調査要求パケットに含まれる前記中継ポート番号を取り出すアドレス情報調査部と、
    前記取り出された中継ポート番号をデータ部に含むアドレス情報調査要求応答パケットを送信するアドレス情報送信部とを含む、通信システム。

JP2006070586A 2005-03-18 2006-03-15 通信装置、通信システム及び通信方法 Active JP4741964B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006070586A JP4741964B2 (ja) 2005-03-18 2006-03-15 通信装置、通信システム及び通信方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005078876 2005-03-18
JP2005078876 2005-03-18
JP2006070586A JP4741964B2 (ja) 2005-03-18 2006-03-15 通信装置、通信システム及び通信方法

Publications (3)

Publication Number Publication Date
JP2006295909A true JP2006295909A (ja) 2006-10-26
JP2006295909A5 JP2006295909A5 (ja) 2009-02-05
JP4741964B2 JP4741964B2 (ja) 2011-08-10

Family

ID=37415915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006070586A Active JP4741964B2 (ja) 2005-03-18 2006-03-15 通信装置、通信システム及び通信方法

Country Status (1)

Country Link
JP (1) JP4741964B2 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008289109A (ja) * 2007-04-20 2008-11-27 Panasonic Corp Ip通信装置及びip通信装置によるnat種別の判定方法
WO2009044532A1 (ja) * 2007-10-03 2009-04-09 Panasonic Corporation 通信装置
JP2010535004A (ja) * 2007-07-27 2010-11-11 株式会社ソニー・コンピュータエンタテインメント 協調的nat振る舞いディスカバリ
JP2010541476A (ja) * 2007-10-05 2010-12-24 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー Natタイプに基づくシームレスなホスト移行
JP2011514100A (ja) * 2008-03-05 2011-04-28 株式会社ソニー・コンピュータエンタテインメント 複数同時接続のためのシンメトリックnatの通過
WO2012008078A1 (ja) * 2010-07-15 2012-01-19 パナソニック株式会社 ラージスケールnat検出装置、アプリケーション切替装置、ラージスケールnat検出方法およびアプリケーション切替方法
US8144704B2 (en) 2007-03-20 2012-03-27 Panasonic Corporation IP communication apparatus and IP communication method of such apparatus
WO2012046390A1 (ja) * 2010-10-07 2012-04-12 パナソニック株式会社 通信装置、通信方法、集積回路、およびプログラム
JP2012524466A (ja) * 2009-04-17 2012-10-11 スリング メディア,インク. ネットワーク上で通信する装置間の接続を確立するシステムならびに方法
JP2013138398A (ja) * 2011-11-28 2013-07-11 Panasonic Corp 通信機器間の接続確立方法、通信機器、及びサーバ装置
US9015225B2 (en) 2009-11-16 2015-04-21 Echostar Technologies L.L.C. Systems and methods for delivering messages over a network
US9113185B2 (en) 2010-06-23 2015-08-18 Sling Media Inc. Systems and methods for authorizing access to network services using information obtained from subscriber equipment
US9178923B2 (en) 2009-12-23 2015-11-03 Echostar Technologies L.L.C. Systems and methods for remotely controlling a media server via a network
US9275054B2 (en) 2009-12-28 2016-03-01 Sling Media, Inc. Systems and methods for searching media content
KR20160084683A (ko) * 2015-01-06 2016-07-14 엘지전자 주식회사 Symmetric NAT(Network Address Translation) 기반의 네트워크 시스템 및 서버의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006253824A (ja) * 2005-03-08 2006-09-21 Toshiba Corp 通信装置、通信方法および通信プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006253824A (ja) * 2005-03-08 2006-09-21 Toshiba Corp 通信装置、通信方法および通信プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6010066760, 波多 浩明, "VoIP導入のケーススタディ Part5 グローバルアドレスとポート番号がわからない! SIPのNAT越え問題を解", NETWORK WORLD、Windows Server World 2004年2月号別冊, 20040201, 第9巻、第2号, pp.42−44 *
JPN6010066762, 及川 卓也, "WindowsのIPv6機能を強化するAdvanced Networking Pack for Windows XP", IPv6 magazine、iNTERNET magazine 2nd STAGE別冊, 20031218, 第7号, pp.44−57 *

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8144704B2 (en) 2007-03-20 2012-03-27 Panasonic Corporation IP communication apparatus and IP communication method of such apparatus
JP2008289109A (ja) * 2007-04-20 2008-11-27 Panasonic Corp Ip通信装置及びip通信装置によるnat種別の判定方法
US8565190B2 (en) 2007-07-27 2013-10-22 Sony Computer Entertainment Inc. NAT traversal for mobile network devices
JP2010535004A (ja) * 2007-07-27 2010-11-11 株式会社ソニー・コンピュータエンタテインメント 協調的nat振る舞いディスカバリ
USRE47566E1 (en) 2007-07-27 2019-08-06 Sony Interactive Entertainment Inc. NAT traversal for mobile network devices
CN107257389A (zh) * 2007-07-27 2017-10-17 索尼电脑娱乐公司 协同nat行为发现
WO2009044532A1 (ja) * 2007-10-03 2009-04-09 Panasonic Corporation 通信装置
JP2010541476A (ja) * 2007-10-05 2010-12-24 ソニー コンピュータ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー Natタイプに基づくシームレスなホスト移行
TWI491229B (zh) * 2007-10-05 2015-07-01 Sony Comp Entertainment Us 基於網路位址轉譯類型之順暢的主機遷移
JP2011514100A (ja) * 2008-03-05 2011-04-28 株式会社ソニー・コンピュータエンタテインメント 複数同時接続のためのシンメトリックnatの通過
US8838810B2 (en) 2009-04-17 2014-09-16 Sling Media, Inc. Systems and methods for establishing connections between devices communicating over a network
US9225785B2 (en) 2009-04-17 2015-12-29 Sling Media, Inc. Systems and methods for establishing connections between devices communicating over a network
JP2012524466A (ja) * 2009-04-17 2012-10-11 スリング メディア,インク. ネットワーク上で通信する装置間の接続を確立するシステムならびに方法
US9015225B2 (en) 2009-11-16 2015-04-21 Echostar Technologies L.L.C. Systems and methods for delivering messages over a network
US10021073B2 (en) 2009-11-16 2018-07-10 Sling Media L.L.C. Systems and methods for delivering messages over a network
US9178923B2 (en) 2009-12-23 2015-11-03 Echostar Technologies L.L.C. Systems and methods for remotely controlling a media server via a network
US9275054B2 (en) 2009-12-28 2016-03-01 Sling Media, Inc. Systems and methods for searching media content
US10097899B2 (en) 2009-12-28 2018-10-09 Sling Media L.L.C. Systems and methods for searching media content
US9113185B2 (en) 2010-06-23 2015-08-18 Sling Media Inc. Systems and methods for authorizing access to network services using information obtained from subscriber equipment
WO2012008078A1 (ja) * 2010-07-15 2012-01-19 パナソニック株式会社 ラージスケールnat検出装置、アプリケーション切替装置、ラージスケールnat検出方法およびアプリケーション切替方法
US8761170B2 (en) 2010-10-07 2014-06-24 Panasonic Corporation Communication device, communication method, integrated circuit, and program
WO2012046390A1 (ja) * 2010-10-07 2012-04-12 パナソニック株式会社 通信装置、通信方法、集積回路、およびプログラム
JP2013138398A (ja) * 2011-11-28 2013-07-11 Panasonic Corp 通信機器間の接続確立方法、通信機器、及びサーバ装置
KR20160084683A (ko) * 2015-01-06 2016-07-14 엘지전자 주식회사 Symmetric NAT(Network Address Translation) 기반의 네트워크 시스템 및 서버의 동작 방법
KR102233635B1 (ko) * 2015-01-06 2021-03-31 엘지전자 주식회사 Symmetric NAT(Network Address Translation) 기반의 네트워크 시스템 및 서버의 동작 방법

Also Published As

Publication number Publication date
JP4741964B2 (ja) 2011-08-10

Similar Documents

Publication Publication Date Title
JP4741964B2 (ja) 通信装置、通信システム及び通信方法
JPWO2008035578A1 (ja) 通信装置、通信方法及び通信システム
JP4667390B2 (ja) 通信端末及び通信方法
US8224985B2 (en) Peer-to-peer communication traversing symmetric network address translators
EP2148518B1 (en) Packet communication method using node identifier and locator
JP2014197774A (ja) 通信機器、通信システム、通信機器の制御方法およびプログラム
RU2007139515A (ru) Межсетевой роуминг и разрешение веб-служб для устройств
JP3835462B2 (ja) 情報処理装置、及びバブルパケット送信方法
KR20100032891A (ko) 이동 환경에서의 인터랙티브 접속 체크 수행
US11621917B2 (en) Transparent multiplexing of IP endpoints
JP6525261B2 (ja) 通信システム、通信装置およびvpn構築方法
US20170207921A1 (en) Access to a node
WO2006121278A1 (en) Method and apparatus for relaying remote access from a public network to a local network
US10812383B2 (en) Communication apparatus and communication method
JP2006345347A (ja) 通信装置、ネットワーク構成調査方法、およびプログラム
KR101394579B1 (ko) Ip 네트워크에서의 직접 통신 제공 방법
JP2007104438A (ja) 宅外アクセスシステム、サーバ、および通信方法
Li et al. Assessing locator/identifier separation protocol interworking performance through RIPE Atlas
JP2010283594A (ja) 通信装置及び通信可能性判定方法
JP2009206876A (ja) サービス公開システム、通信中継装置、およびサービス公開装置
Kang et al. IPv6 anycast routing aware of a service flow
JP2005318121A (ja) セッション管理装置
Large-Scale et al. Check for updates
CN117499366A (zh) 一种实现点对点通信的nat穿透方法及装置
JP2007251374A (ja) パケット中継装置および方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081212

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101118

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110107

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110318

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110404

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: 20110419

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: 20110509

R150 Certificate of patent or registration of utility model

Ref document number: 4741964

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140513

Year of fee payment: 3