説明

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

【課題】NAT種別や規則性を迅速に判定してP2P通信を開始させることができる通信システム、端末装置、通信方法、通信プログラムを提供する
【解決手段】NAT装置の配下にある端末装置では、他のNAT装置の配下にある相手端末装置とP2P通信を開始させる場合、NAT装置のNAT種別の取得を要求する種別要求パケットが通信制御装置に対して送信される(S123)。通信制御装置では、記憶されているNAT種別が選択され、端末装置に対して返信される。端末装置では、通信制御装置から送信されるNAT種別を受信した場合(S125:YES)、受信したNAT種別に基づいて相手方の端末装置と所定の通信が行われる。これによって、異なるNAT装置に接続する相手方の端末装置とP2P通信を行うことが可能な状態となる。相手方の端末装置との間でP2P通信が開始される(S127)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は通信システム、端末装置、通信方法、通信プログラムに関する。より詳細には、異なるNAT装置の配下にある他の端末装置との間で通信を行う通信システム、端末装置、通信方法、通信プログラムに関する。
【背景技術】
【0002】
NAT(Network Address Translation)機能を備えた装置(NATルータなど。以下「NAT装置」という。)は、インターネット側からLAN側に向かう方向のパケットを受信した場合、NAT装置に記憶されているポート番号宛てのパケットのみLAN側に転送し、その他のポート番号宛てのパケットはブロックする。従って、異なるNAT装置の配下の端末装置同士でP2P(Peer to Peer)通信を行うためには、NAT装置に記憶されているポート番号を認識することが必要となる。
【0003】
NAT装置に記憶されるポート番号は、所定の規則性に基づいて更新される。またパケットを転送するか否かの判断方法は、NAT装置の種別(Cone Nat、Symmetric NATなど)等によって異なる。従って、NAT装置に記憶されているポート番号を認識して端末装置間でP2P通信を行うためには、NAT装置の種別(Cone Nat、Symmetric NATなど)が特定される必要がある。NAT装置の種別が特定された後、特定された種別毎に適切な通信手順(UDP Hole Punching等)が選択され実行される。これによって、更新後のポート番号が特定されるので、端末装置同士でP2P通信が可能となる。
【0004】
NAT装置の種別を特定する為の方法としては、例えばRFC(Request for Comments)3489に記載されている方法が挙げられる。また、RFC3489に準拠しつつ改良を加えることによって、NAT装置の種別を正確に判定する通信装置が提案されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−151142号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら上述の方法では、端末装置とサーバとの間で複数のパケットの送受信を行うことによってNAT種別が判定されるため、NAT種別や、ポート番号が規則的に更新される場合の規則性を判定するまでに多くの時間を要してしまう。このため、端末装置間でP2P通信が可能となるまでに時間がかかってしまうという問題点がある。
【0007】
本発明の目的は、NAT種別や規則性を迅速に判定してP2P通信を開始させることができる通信システム、端末装置、通信方法、及び通信プログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明の第一態様に係る通信システムは、外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、前記端末装置は、自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時における前記ポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とのうち少なくとも一方を特定する特定手段と、前記特定手段によって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記通信制御装置に対して送信する第一送信手段とを備え、前記通信制御装置は、前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを受信する第一受信手段と、前記第一受信手段において受信された前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを対応付けて記憶手段に記憶する記憶制御手段と、を備え、前記端末装置はさらに、通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信手段を備え、前記通信制御装置はさらに、前記端末装置から送信された前記NAT特定情報と前記取得要求信号とを受信する第二受信手段と、前記第二受信手段において受信された前記NAT特定情報と前記取得要求信号とに基づいて、前記記憶手段を参照し、受信した前記NAT特定情報に対応付けられている前記種別情報と前記規則情報とのうち少なくとも一方がある場合、前記取得要求信号を送信した前記端末装置に対して送信する第三送信手段とを備え前記端末装置はさらに、前記第二送信手段によって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信手段と、前記第三受信手段において受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信手段とを備えている。
【0009】
第一態様に係る通信システムでは、端末装置は、自身NAT装置の種別情報及び規則情報のうち少なくとも一方を、通信制御装置から取得することができる。端末装置は、取得した情報に基づいて、相手端末装置と通信を行うことができる。端末装置は、種別情報や規則情報を取得するために必要な通信処理を行わずに済むので、時間を要することなく迅速に種別情報や規則情報を取得することができる。従って端末装置は、相手端末装置との通信を開始するまでに必要な時間を短縮できる。
【0010】
また、第一態様において、前記端末装置は、前記規則情報を取得するために前記通信制御装置との間で行う通信であって、前記通信制御装置に対して第一信号を複数送信し、送信した前記第一信号の其々に対して前記通信制御装置から返信される第二信号を受信する通信を行う第二通信手段を備え、前記特定手段は、前記第二通信手段において受信した其々の前記第二信号の宛先ポート番号を抽出し、抽出した前記宛先ポート番号の差分を算出することによって、前記規則情報を特定してもよい。これによって端末装置は、通信制御装置と通信を行うことによって、規則情報を特定することができる。また、通信制御装置との間で複数の信号の送受信を行うことによって規則情報を特定することができるので、簡易な方法によって迅速に規則情報を特定できる。
【0011】
また、第一態様において、前記通信制御装置は、前記第一受信手段において前記端末装置から前記規則情報を受信した場合に、前記規則情報を統計的に解析する解析手段を備え、前記記憶制御手段は、前記解析手段によって解析された前記規則情報である解析済規則情報を新たな前記規則情報として前記記憶手段に記憶してもよい。このように、規則情報を統計的に解析することによって、規則情報の誤差やノイズの影響を小さくできる。これによって規則情報の精度が高まるので、この規則情報に基づいて通信を行う端末装置は、確実に相手端末装置と通信を行うことができる。
【0012】
また、第一態様において、前記端末装置は、前記第二通信手段による通信時におけるネットワークの使用帯域を取得する第一取得手段を備え、前記第一送信手段は、前記第一取得手段によって取得された前記使用帯域、前記種別情報、前記規則情報、及び前記NAT特定情報を送信し、前記通信制御装置は、前記第一受信手段において、前記使用帯域、前記種別情報、前記規則情報、及び前記NAT特定情報を受信し、前記解析手段は、前記第一受信手段において受信された前記使用帯域と前記規則情報とを統計的に解析してもよい。このように、使用帯域と規則情報を統計的に解析することによって、使用帯域に依存する誤差やノイズの影響を小さくできる。これによって、さらに規則情報の精度を高めることができる。端末装置は、より確実に相手端末装置と通信を行うことができる。
【0013】
また、第一態様において、前記端末装置は、SNMP(Simple Network Management Protocol)に基づき、前記自身NAT装置を特定する前記NAT特定情報を取得する第二取得手段を備え、前記第一送信手段は、前記第二取得手段において取得された前記NAT特定情報を前記自身NAT装置の前記NAT特定情報として前記通信制御装置に対して送信してもよい。これによって端末装置は、SNMPに基づいて自身NAT装置から直接NAT特定情報を取得することができる。取得されたNAT特定情報をキーとして、種別情報や規則情報を通信制御装置から取得することができる。自身NAT装置が取り替えられ、自身NAT装置のNAT特定情報が変更された場合であっても、変更後のNAT特定情報を端末装置に設定し直す手間を省くことができる。
【0014】
また、第一態様において、前記端末装置は、前記自身NAT装置が、他の前記NAT装置を介して前記外部ネットワークに接続している状態である多段NAT状態であるか否かを判断する多段判断手段を備え、前記第二送信手段は、前記多段判断手段において前記多段NAT状態であると判断された場合には、前記NAT特定情報と前記取得要求信号とを送信しないこととしてもよい。多段NAT状態である場合、直接接続するNAT装置の種別情報に基づいて通信を開始させても、相手端末装置と通信できない場合がある。これに対して端末装置は、多段NAT状態である場合に種別情報を取得しないので、相手端末装置との通信が開始されてしまって通信が失敗してしまう不具合を防止できる。
【0015】
本発明の第二態様に係る端末装置は、外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置であって、自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時における前記ポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とを特定する特定手段と、前記特定手段によって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記外部ネットワークに接続する通信制御装置に対して送信する第一送信手段と、通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信手段と、前記第二送信手段によって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信手段と、前記第三受信手段において受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信手段とを備えている。
【0016】
第二態様に係る端末装置は、自身NAT装置の種別情報及び規則情報のうち少なくとも一方を、通信制御装置から取得することができる。端末装置は、取得した情報に基づいて、相手端末装置と通信を行うことができる。端末装置は、種別情報や規則情報を取得するために必要な通信処理を行わずに済むので、時間を要することなく迅速に種別情報や規則情報を取得することができる。従って端末装置は、相手端末装置との通信を開始するまでに必要な時間を短縮できる。
【0017】
また、第二態様において、前記規則情報を取得するために前記通信制御装置との間で行う通信であって、前記通信制御装置に対して第一信号を複数送信し、送信した前記第一信号の其々に対して前記通信制御装置から返信される第二信号を受信する通信を行う第二通信手段を備え、前記特定手段は、前記第二通信手段において受信した其々の前記第二信号の宛先ポート番号を抽出し、抽出した前記宛先ポート番号の差分を算出することによって、前記規則情報を特定してもよい。これによって端末装置は、通信制御装置と通信を行うことによって、規則情報を特定することができる。また、通信制御装置との間で複数の信号の送受信を行うことによって規則情報を特定することができるので、簡易な方法によって迅速に規則情報を特定できる。
【0018】
本発明の第三態様に係る通信方法は、外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、前記端末装置間で通信を行う通信方法であって、前記端末装置において、自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時における前記ポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とのうち少なくとも一方を特定する特定ステップと、前記端末装置において、前記特定ステップによって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記通信制御装置に対して送信する第一送信ステップと、前記通信制御装置において、前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを受信する第一受信ステップと、前記通信制御装置において、前記第一受信ステップにおいて受信された前記NAT特定情報と、前記規則情報と前記種別情報ととのうち少なくとも一方と対応付けて記憶手段に記憶する記憶制御ステップと、前記端末装置において、通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信ステップと、前記通信制御装置において、前記端末装置から送信された前記NAT特定情報と前記取得要求信号とを受信する第二受信ステップと、前記通信制御装置において、前記第二受信ステップにおいて受信された前記NAT特定情報と前記取得要求信号とに基づいて、前記記憶手段を参照し、受信した前記NAT特定情報に対応付けられている前記種別情報と前記規則情報とのうち少なくとも一方がある場合、前記取得要求信号を送信した前記端末装置に対して送信する第三送信ステップと、前記端末装置において、前記第二送信ステップによって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信ステップと、前記第三受信ステップにおいて受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信ステップとを備えている。
【0019】
第三態様に係る通信方法は、自身NAT装置の種別情報及び規則情報のうち少なくとも一方を、通信制御装置から取得することができる。端末装置は、取得した情報に基づいて、相手端末装置と通信を行うことができる。端末装置は、種別情報や規則情報を取得するために必要な通信処理を行わずに済むので、時間を要することなく迅速に種別情報や規則情報を取得することができる。従って端末装置は、相手端末装置との通信を開始するまでに必要な時間を短縮できる。
【0020】
本発明の第四態様に係る通信プログラムは、端末装置の各処理手段としてコンピュータを駆動する。これによって通信プログラムは、端末装置の各処理手段としてコンピュータを機能させることができる。
【図面の簡単な説明】
【0021】
【図1】通信システム1の概要を示す模式図である。
【図2】通信制御装置5の電気的構成を示すブロック図である。
【図3】NAT情報テーブル241を示す模式図である。
【図4】NAT装置8の電気的構成を示すブロック図である。
【図5】端末装置11の電気的構成を示すブロック図である。
【図6】第一端末装置処理を示すフローチャートである。
【図7】第一端末装置処理を示すフローチャートである。
【図8】第一端末装置処理を示すフローチャートである。
【図9】NAT特定情報取得処理を示すフローチャートである。
【図10】規則情報特定処理を示すフローチャートである。
【図11】第二端末装置処理を示すフローチャートである。
【図12】通信制御処理を示すフローチャートである。
【図13】統計的解析の方法を説明する図である。
【発明を実施するための形態】
【0022】
以下、本発明に係る通信システム1について、図面を参照して説明する。これらの図面は、本発明が採用しうる技術的特徴を説明するために用いられるものである。記載されている端末の構成、各種処理のフローチャートなどは、それのみに限定する趣旨ではなく、単なる説明例である。
【0023】
図1を参照し、通信システム1の概要について説明する。通信システム1は、通信制御装置5、NAT装置6,7(以下、これらを区別しない場合、「NAT装置8」という。)、及び端末装置9,10(以下、これらを区別しない場合、「端末装置11」という。)を少なくとも備えている。通信制御装置5とNAT装置8とは、インターネット15に接続している。NAT装置8は、配下のLAN12,13(以下、これらを区別しない場合、「LAN14」という。)に接続している。端末装置11は、LAN14に接続している。図1に示す例では、NAT装置6の配下のLAN12に端末装置9が接続している。NAT装置7の配下のLAN13に端末装置10が接続している。
【0024】
通信制御装置5は、端末装置11間でのP2P(Peer to Peer)通信を可能とするために必要な情報(NAT種別や規則情報など、詳細は後述する。)を、端末装置11に提供する。通信制御装置5としては、例えば呼制御サーバやSTUNサーバが使用できる。端末装置11は、通信制御装置5から提供される情報に基づいて、他の端末装置11との間でP2P通信を行うことができる。端末装置11としては、例えばPC(パーソナルコンピュータ)が使用できる。NAT装置8は、NAT(Network Address Translation)機能を備えた装置である。NAT装置8は、受信パケットの転送の許否を決定する場合の決定方法に基づいて、Full Cone NAT、Address-Restricted Cone NAT、Port-Restricted Cone NAT、及び、Symmetric NATに分類される(以下、これらの種別を「NAT種別」という。)。またNAT装置8は、所定の規則性(以下「更新規則」という。)に基づいてポートマッピングを行う。
【0025】
端末装置11間でP2P通信を行う際、送受信されるパケットがNAT装置8においてブロックされてしまう場合がある。NAT装置8は、インターネット15側からパケットを受信した場合、所定のパケットのみLAN14側に転送し、それ以外のパケットは転送しないためである。端末装置11は、NAT装置8のNAT種別や更新規則を認識し、NAT装置8においてブロックされないような宛先アドレスやポート番号をパケットにセットして通信を行う必要がある。
【0026】
本実施の形態では、通信制御装置5がNAT情報テーブルを管理している。NAT情報テーブルには、NAT装置8のNAT種別と、更新規則を特定可能な情報(「規則情報」という。)とが格納されている。端末装置11は、P2P通信を開始する場合に、通信制御装置5と通信を行うことによって、自身が直接接続するNAT装置8のNAT種別と規則情報とを取得する。端末装置11は、取得したNAT種別と規則情報とに基づいて、パケットの宛先アドレスやポート番号を特定し、通信を行う。NAT装置8から直接NAT種別と更新規則とを特定する場合に必要となる多数の通信が不要となるので、端末装置11は迅速にNAT種別及び規則情報を取得できる。これによって通信システム1では、端末装置11間のP2P通信を迅速に開始させることができる。
【0027】
なお、図1におけるインターネット15が、本発明の「外部ネットワーク」に相当し、LAN14が本発明の「内部ネットワーク」に相当する。なお本発明は、外部ネットワークとしてインターネット15の他に従来周知の様々なネットワーク(LAN、WAN、専用回線など)が使用できる。同様に、内部ネットワークとしてLAN14の他に従来周知のネットワーク(インターネット、WAN、専用回線など)が使用できる。
【0028】
図2を参照し、通信制御装置5の電気的構成について説明する。通信制御装置5は、CPU21、ROM22、RAM23、HDD24を備えている。CPU21は、NAT装置8や端末装置11との通信を制御する。ROM22には、Bootプログラムや初期設定パラメータが少なくとも記憶される。RAM23には、CPU21の処理時に発生する一時的なデータが少なくとも記憶される。HDD24には、CPU21のプログラムや、後述するNAT情報テーブルが少なくとも記憶される。CPU21は、ROM22、RAM23、及びHDD24と電気的に接続している。CPU21は、ROM22、RAM23、及びHDD24の記憶領域にアクセスできる。
【0029】
通信制御装置5は、入力ドライバ25を備えている。入力ドライバ25は、キーボード251を介して入力された情報を検出する。CPU21は、入力ドライバ25と電気的に接続している。入力ドライバ25は、キーボード251と電気的に接続する。CPU21は、キーボード251を介して入力された情報を認識できる。通信制御装置5は、表示ドライバ26を備えている。表示ドライバ26は、ディスプレイ261に像を表示させるための制御を行う。CPU21は、表示ドライバ26と電気的に接続している。表示ドライバ26は、ディスプレイ261と電気的に接続する。CPU21は、ディスプレイ261に所望の像を表示させることができる。
【0030】
通信制御装置5は、通信モジュール27を備えている。通信モジュール27は、インターネット15を介した通信を可能とする。CPU21は、通信モジュール27と電気的に接続している。CPU21は、インターネット15を介して通信を行うことができる。通信制御装置5は、ディスクドライブ28を備えている。ディスクドライブ28は、記憶媒体281に記憶された情報にアクセスする為の駆動装置である。CPU21は、ディスクドライブ28と電気的に接続している。CPU21は、ディスクドライブ28に記憶媒体281が挿入された状態で、記憶媒体281に記憶された情報にアクセスできる。記憶媒体281には、例えば、CPU21が実行するプログラムが記憶される。通信制御装置5の導入時には、プログラムが記憶媒体281からHDD24にセットアップされる。
【0031】
図3を参照し、HDD24に記憶されるNAT情報テーブルの一例であるNAT情報テーブル241について説明する。NAT情報テーブル241には、通信システム1内にあるNAT装置8を特定するNAT特定情報(機種名、プログラムのバージョン番号(以下単に「バージョン」という。))、NAT種別、規則情報(ポート番号が変更される場合の変更幅の最小値、第1四分位値、中央値、第3四分位置、最大値)、帯域使用率、及び登録者の情報が格納されている。
【0032】
NAT特定情報のうち機種名としては、対応するNAT装置8の機種名が格納される。バージョンとしては、対応するNAT装置8のROM52(図4参照)に記憶されているプログラムのバージョン番号が格納される。NAT特定情報(機種名及びバージョン)は、通信制御装置5の管理者によってキーボード251を介して入力される。規則情報として格納される各値の詳細は後述する。帯域使用率としては、LAN14にて許容される最大データレートに対する実際のデータレートの割合が格納される。NAT種別、規則情報、及び帯域使用率は、端末装置11から受信される。登録者としては、NAT種別、規則情報、及び帯域使用率を送信した端末装置11のMACアドレスが格納される。なお、NAT種別、規則情報、及び帯域使用率が通信制御装置5の管理者によって直接入力された場合、管理者の氏名が登録者として格納される。
【0033】
例えば図3に示す例では、機種名「WR−X1234」「ZZZ−WR123」を有する二種類のNAT装置に関する情報が、NAT情報テーブル241に格納されている。双方のNAT装置に関する情報について説明する。例えば機種名が「WR−X1234」であるNAT装置のうちバージョンが「1.0」であるNAT装置(2411)は、NAT種別が「Full Cone NAT」である。規則情報には情報が格納されない。帯域使用率は「0.0%」、登録者が「管理者A」である。また例えば、機種名が「ZZZ−WR123」であるNAT装置のうちバージョンが「1.2」であるNAT装置(2412)は、NAT種別が「Symmetric NAT」、最小値が「1」、第1四分位値が「1」、中央値が「2」、第3四分位値が「4」、最大値が「7」、帯域使用率が「9.5%」、登録者が「MAC:C」である。図3に示すように、NAT種別が「Symmetric NAT」である場合には規則情報が格納される。なお図3では、Address-Restricted Cone NATを「ARC NAT」と表記し(2413)、Address-Restricted Cone NATを「PRC NAT」と表記している(2414)。以後、上述の各項目の情報を総称して「NAT情報」という。
【0034】
図4を参照し、NAT装置8の電気的構成について説明する。NAT装置8は、CPU51、ROM52、RAM53、フラッシュメモリ57を備えている。CPU51は、通信制御装置5や端末装置11との通信を制御する。ROM52には、CPU51のプログラムが少なくとも記憶される。RAM53には、CPU51の処理時に発生する一時的なデータが少なくとも記憶される。フラッシュメモリ57には、ポート番号が履歴情報として記憶される。CPU51は、ROM52、RAM53、及びフラッシュメモリ57と電気的に接続している。CPU51は、ROM52、RAM53、及びフラッシュメモリ57の記憶領域にアクセスできる。
【0035】
NAT装置8は、表示部54を備えている。表示部54は、NAT装置8の状態等を表示することができる。CPU51は、表示部54と電気的に接続している。CPU51は、表示部54に所望の情報を表示させることができる。表示部54としては、例えばLEDが使用できる。NAT装置8は、入力部55を備えている。入力部55は、ユーザによるNAT装置8への入力操作を受け付ける。CPU51は、入力部55と電気的に接続している。CPU51は、入力部55を介して入力された情報を認識できる。入力部55としては、例えばスイッチやタッチセンサが使用できる。
【0036】
NAT装置8は、通信モジュール58を備えている。通信モジュール58は、インターネット15を介した通信を可能とする。CPU51は、通信モジュール58と電気的に接続している。CPU51は、インターネット15を介して通信を行うことができる。NAT装置8は、通信モジュール59を備えている。通信モジュール59は、LAN14を介した通信を可能とする。CPU51は、通信モジュール59と電気的に接続している。CPU51は、LAN14を介して通信を行うことができる。
【0037】
図5を参照し、端末装置11の電気的構成について説明する。端末装置11は、CPU81、ROM82、RAM83、HDD84を備えている。CPU81は、NAT装置8や通信制御装置5との通信を制御する。ROM82には、Bootプログラムや初期パラメータが少なくとも記憶される。RAM83は、CPU81の処理時に発生する一時的なデータが少なくとも記憶される。HDD84は、CPU81のプログラムが少なくとも記憶される。CPU81は、ROM82、RAM83、及びHDD84と電気的に接続している。CPU81は、ROM82、RAM83、及びHDD84の記憶領域にアクセスできる。
【0038】
端末装置11は、入力ドライバ85を備えている。入力ドライバ85は、キーボード851を介して入力された情報を検出する。CPU81は、入力ドライバ85と電気的に接続している。入力ドライバ85は、キーボード851と電気的に接続する。CPU81は、キーボード851を介して入力された情報を認識できる。端末装置11は、表示ドライバ86を備えている。表示ドライバ86は、ディスプレイ861に像を表示させるための制御を行う。CPU81は、表示ドライバ86と電気的に接続している。表示ドライバ86は、ディスプレイ861と電気的に接続する。CPU81は、ディスプレイ861に所望の像を表示させることができる。
【0039】
端末装置11は、通信モジュール87を備えている。通信モジュール87は、LAN14を介した通信を可能とする。CPU81は、通信モジュール87と電気的に接続している。CPU81は、LAN14を介して通信を行うことができる。端末装置11は、ディスクドライブ88を備えている。ディスクドライブ88は、記憶媒体881に記憶された情報にアクセスする為の駆動装置である。CPU81は、ディスクドライブ88と電気的に接続している。CPU81は、ディスクドライブ88に記憶媒体881が挿入された状態で、記憶媒体881に記憶された情報にアクセスできる。記憶媒体881には、例えば、CPU81が実行するプログラムが記憶される。端末装置11の導入時には、プログラムが記憶媒体881からHDD84にセットアップされる。
【0040】
図6〜図10を参照し、端末装置11のCPU81において実行される第一端末装置処理について説明する。第一端末装置処理は、端末装置11の電源が投入された場合に、CPU81によって起動され実行される。第一端末装置処理では、端末装置11と直接接続するNAT装置8のNAT種別及び規則情報が取得され、通信制御装置5に登録させるために通信制御装置5に送信される。以下では、NAT装置6のNAT種別及び規則情報が端末装置9によって取得され、通信制御装置5に送信される場合を想定している。端末装置9のCPU81において実行される第一端末装置処理について説明する。
【0041】
図6に示すように、はじめに、NAT装置6におけるインターネット15側のIPアドレス(以下「GIP」という。)及びポート番号(以下「GPort」という。)を含む応答パケットの返信を要求する要求パケットが、通信制御装置5に対して送信される。なお、端末装置6と通信制御装置5との間にNAT装置が介在しない場合には、端末装置6におけるインターネット15との接続部分のIPアドレス及びポート番号が、GIP及びGPortに相当することになる。要求パケットは、通信制御装置5のポート番号(第一ポート)に対して送信される(S11)。次いで、応答パケットを受信したかが判断される(S13)。応答パケットを受信できない場合(S13:NO)、NAT種別や規則情報を特定できないので、端末装置10との間でP2P通信を行うことができないことになる。P2P通信を行うことができない旨を示すフラグ情報がRAM83に一時的に記憶される(S23)。そして第一端末装置処理を終了する。
【0042】
一方、通信制御装置5から応答パケットを受信した場合(S13:YES)、受信した応答パケットに含まれているGIP及びGPortが、応答パケットから抽出される。自身のIPアドレスと抽出されたGIPとが一致し、且つ、自身が要求パケットを送信した場合に使用されたポート番号と、抽出されたGPortとが一致するかが判断される(S15)。一致しない場合(S15:NO)、NAT装置6が通信制御装置5との間に介在していることになるので、そのままS31(図7参照)の処理に進む。
【0043】
自身のIPアドレスと、応答パケットから抽出されたGIPとが一致し、且つ、自身が要求パケットを送信した場合に使用されたポート番号と、応答パケットから抽出されたGPortとが一致した場合(S15:YES)、要求パケットが通信制御装置5に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、通信制御装置5の第一ポートに対して送信される。応答パケットは、S13において受信された応答パケットとは別のIPアドレス及びポート番号から送信するように、通信制御装置5に要求される(S17)。そして応答パケットを受信したかが判断される(S19)。応答パケットを受信できない場合(S19:NO)、NAT種別や規則情報を特定できないので、端末装置10との間でP2P通信を行うことができないことになる。P2P通信を行うことができない旨を示すフラグ情報がRAM83に一時的に記憶される(S23)。そして第一端末装置処理を終了する。
【0044】
通信制御装置5から応答パケットを受信した場合(S19:YES)、端末装置9と通信制御装置5との間にNAT装置は介在していないことになる。NAT装置が介在していないことを示すフラグ情報がRAM83に一時的に記憶される(S21)。そして第一端末装置処理を終了する。
【0045】
図7のS31の処理では、自身がLAN12を介して接続するNAT装置6のNAT特定情報等を取得する処理(NAT特定情報取得処理)が実行される(S31)。図9を参照し、NAT特定情報取得処理について説明する。はじめに、NAT特定情報、NAT装置8のMACアドレスとIPアドレス、及び、LAN12の帯域使用率の取得が試みられる。これらの情報は、NAT装置6との間でSMNP(Simple Network Management Protocol)に基づいた通信を行うことによって、NAT装置6から直接取得される(S71)。取得に失敗した場合(S73:NO)、NAT特定情報等の取得に失敗した旨を示すフラグ情報がRAM83に一時的に記憶される(S83)。そしてNAT特定情報取得処理を終了し、第一端末装置処理(S31:図7)に戻る。
【0046】
SMNPに基づく通信によってNAT特定情報等が取得された場合(S73:YES)、NAT装置6が他のNAT装置を介してインターネット15に接続した状態(以下「多段NAT状態」という。)であるかが判定される(S75)。多段NAT状態か否かの判定は、例えば以下のようにして実行される。S13(図6参照)の処理で受信された応答パケットに含まれているGIPと、S71の処理で取得されたNAT装置6のIPアドレスとが比較される。相違する場合、NAT装置6は多段NAT状態となっていると判定される。一致する場合、NAT装置6は直接インターネット15に接続しており、多段NAT状態ではないと判定される。
【0047】
多段NAT状態と判定された場合(S76:YES)、多段NAT状態である旨を示すフラグ情報がRAM83に一時的に記憶される(S85)。そしてNAT特定情報取得処理を終了し、第一端末装置処理(S31:図7)に戻る。
【0048】
一方、多段NAT状態でないと判定された場合(S76:NO)、NAT種別及び規則情報を要求する種別要求パケットが、通信制御装置5に対して送信される(S77)。種別要求パケットは、S71の処理で取得されたNAT特定情報とともに送信される。そして、通信制御装置5から返信される応答パケットの受信が監視される(S79)。応答パケットを受信できない場合(S79:NO)、NAT特定情報取得処理を終了し、第一端末装置処理(S31:図7)に戻る。応答パケットを受信した場合(S79:YES)、応答パケットに含まれているNAT種別が、RAM83に一時的に記憶される。また、NAT種別がSymmetric NATである場合、NAT種別と共に応答パケットに含まれている規則情報が、RAM83に一時的に記憶される(S81)。そしてNAT特定情報取得処理を終了し、第一端末装置処理(S31:図7)に戻る。
【0049】
図7に示すように、NAT特定情報取得処理(S31)の後、NAT特定情報取得処理によってNAT種別が取得できたかが判断される(S33)。すなわち、S81においてRAM83にNAT種別が記憶されている場合、NAT特定情報取得処理においてNAT種別が取得されていることになる(S33:YES)。この場合、通信制御装置5には既にNAT装置6のNAT種別が記憶されていることになるので、そのまま第一端末装置処理を終了する。
【0050】
一方、NAT種別がRAM83に記憶されていない場合(S33:NO)、通信制御装置5にNAT装置6のNAT種別が記憶されていないということになる。従って、NAT装置6のNAT種別を調査して通信制御装置5に登録する為に、以下の処理が実行される。
【0051】
要求パケットが通信制御装置5に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、通信制御装置5の第一ポートに対して送信される。応答パケットは、S13(図6参照)において受信された応答パケットとは別のIPアドレス及びポート番号から送信するように、通信制御装置5に要求される(S35)。そして、応答パケットを受信したかが判断される(S37)。応答パケットを受信した場合(S37:YES)、通信制御装置5との間にNAT装置6が介在しているが、応答パケットの送信元のIPアドレス及びポート番号(通信制御装置5において応答パケット送信時に使用されたIPアドレス及びポート番号)が異なる場合であっても、NAT装置6は応答パケットを転送していることになる。従ってNAT装置6のNAT種別がFull Cone NATであると特定される。特定されたNAT種別を示すフラグ情報が、RAM83に一時的に記憶される(S57)。そしてS61(図8参照)の処理に進む。
【0052】
一方、応答パケットを受信できない場合(S37:NO)、要求パケットが通信制御装置5に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、通信制御装置5のポート番号であって、第一ポートとは異なるポート番号(第二ポート)に対して送信される(S39)。そして、応答パケットを受信したかが判断される(S41)。応答パケットを受信した場合(S41:YES)、S13(図6参照)において受信された応答パケットに含まれているGIP及びGPortと、今回受信した応答パケットに含まれているGIP及びGPortとが比較される(S43)。双方が一致する場合(S43:YES)、次いで要求パケットが通信制御装置5に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、第一ポートに対して送信される。応答パケットは、S41において受信された応答パケットと同じIPアドレスであり、且つ、S41において受信された応答パケットとは異なるポート番号から送信するように、通信制御装置5に要求される(S45)。そして、応答パケットを受信したかが判断される(S47)。応答パケットを受信した場合(S47:YES)、応答パケットの送信元のポート番号(通信制御装置5にて応答パケット送信時に使用されたポート番号)が異なる場合であっても、NAT装置6は応答パケットを転送していることになる。従ってNAT装置6のNAT種別がAddress-Restricted Cone NATであると特定される。特定されたNAT種別を示すフラグ情報が、RAM83に一時的に記憶される(S49)。そしてS61(図8参照)の処理に進む。
【0053】
一方、応答パケットを受信できない場合(S47:NO)、応答パケットの送信元のポート番号(通信制御装置5にて応答パケット送信時に使用されたポート番号)が異なると、NAT装置6は応答パケットを転送しないということになる。従ってNAT装置6のNAT種別がPort-Restricted Cone NATであると特定される。特定されたNAT種別を示すフラグ情報が、RAM83に一時的に記憶される(S55)。そしてS61(図8参照)の処理に進む。
【0054】
一方、S41の処理において応答パケットを受信できない場合(S41:NO)や、S43の処理においてIPアドレスとポート番号のうち少なくとも一方が一致しない場合(S43:NO)、NAT装置6のNAT種別がSymmetric NATであると特定される。特定されたNAT種別を示すフラグが、RAM83に一時的に記憶される(S51)。次いで、NAT装置6の更新規則を特定可能な規則情報を特定するために、規則情報特定処理(S53)が実行される。
【0055】
規則情報特定処理について、図10を参照して説明する。要求パケットが通信制御装置5に対して送信され、応答パケットを自身に対して返信するように要求される。要求パケットは、通信制御装置5のポート番号であって、第一ポート及び第二ポートとは異なる1つ以上のポート(第三ポート)に対して送信される(S101)。そして応答パケットを受信したかが判断される(S103)。1つ以上のポートに対して要求パケットを送信し、応答パケットをより多く受信することによって、後述する統計的解析の精度を高めている。応答パケットを受信できない場合(S103:NO)、規則情報を特定できないので、規則情報を特定できない旨を示すフラグ情報がRAM83に一時的に記憶される(S113)。そして規則情報特定処理を終了し、第一端末装置処理(S53:図7)に戻る。
【0056】
応答パケットを受信した場合(S103:YES)、通信制御装置5に第一ポート〜第三ポート以外のポート番号が準備されているかが判断される(S105)。第一ポート〜第三ポート以外のポート番号が準備されている場合(S105:YES)、S101の処理に戻る。そして、未だ使用されていないポート番号に対して要求パケットを送信するために、上述の処理が繰り返し実行される。
【0057】
通信制御装置5に準備されている全てのポート番号宛てに要求パケットを送信した場合(S105:NO)、受信した応答パケットに含まれているGPortに基づき、以下の解析が実行される。一の応答パケットに含まれているGPortと、次に受信された応答パケットに含まれているGPortとの差分値が其々算出される。算出された差分値のうち、最小値、第1四分位値、中央値、第2四分位値、及び最大値が抽出される(S107)。抽出された各値は、規則情報としてRAM83に一時的に記憶される(S109)。そして規則情報特定処理を終了し、第一端末装置処理(S53:図7)に戻る。
【0058】
図7に示すように、規則情報特定処理(S51)が終了した後、規則情報特定処理において規則情報が特定されたかが、RAM83に記憶されている情報に基づいて判断される(S59)。規則情報が特定された場合(S59:YES)、S61(図8参照)の処理に進む。一方、規則情報が特定されなかった場合(S59:NO)、そのまま第一端末装置処理を終了する。
【0059】
図8のS61の処理では、S31(図7参照)の処理によってNAT特定情報等が取得されたかが、RAM83に記憶されている情報に基づいて判断される(S61)。NAT特定情報等が取得されなかった場合(S61:NO)、そのまま第一端末装置処理を終了する。
【0060】
NAT特定情報等が取得されている場合(S61:YES)、次いで、NAT装置6が多段NAT状態であるかが、RAM83に記憶されている情報に基づいて判断される(S63)。NAT装置6が多段NAT状態となっている場合(S63:YES)、そのまま第一端末装置処理を終了する。
【0061】
多段NAT状態でない場合(S63:NO)、NAT装置6のNAT種別を通信制御装置5から取得しているかが、RAM83に記憶されている情報に基づいて判断される(S65)。NAT種別を通信制御装置5から受信している場合(S65:YES)、既にNAT種別が通信制御装置5に記憶されていることになるので、そのまま第一端末装置処理を終了する。
【0062】
通信制御装置5からNAT種別を受信していない場合(S65:NO)、NAT装置6のNAT種別が通信制御装置5に記憶されていない可能性がある。RAM83に記憶されているNAT装置6のNAT種別が、S71(図9参照)において取得されたNAT特定情報等とともに、通信制御装置5に対して送信される(S67)。NAT種別がSymmetric NATである場合には、NAT種別と規則情報とが、NAT特定情報等とともに通信制御装置5に対して送信される(S67)。そして第一端末装置処理を終了する。
【0063】
図11を参照し、端末装置11のCPU81において実行される第二端末装置処理について説明する。第二端末装置処理は、端末装置11のキーボード851を介し、他の端末装置11とのP2P通信を開始させるための操作がなされた場合に、CPU81において起動され実行される。第二端末装置処理では、他の端末装置11とのP2P通信を開始する為の処理が実行される。以下では、端末装置10との通信を開始させる操作が端末装置9に対してなされた場合を想定している。端末装置9のCPU81において実行される第二端末装置処理について説明する。
【0064】
図11に示すように、はじめに、端末装置9が端末装置10とP2P通信を行うことが可能な状態であるかが、RAM83に記憶されている情報に基づいて判断される(S121)。第一端末装置処理(S23、図6参照)において、P2P通信が不可能であると判断されている場合には(S121:NO)、端末装置10とP2P通信を行うことができないので、そのまま第二端末装置処理を終了する。
【0065】
端末装置10とのP2P通信が可能であると判断されている場合(S121:YES)、自身が直接接続するNAT装置6のNAT種別及び規則情報を要求する種別要求パケットが、通信制御装置5に対して送信される(S123)。種別要求パケットは、S71(図9参照)の処理で取得されたNAT特定情報とともに送信される。そして、通信制御装置5から返信される応答パケットの受信が監視される(S125)。応答パケットを受信できない場合(S125:NO)、種別要求パケットを送信してからの経過時間が監視される(S131)。経過時間が所定時間未満である場合(S131:NO)、S125の処理に戻り、応答パケットの受信が継続して監視される。経過時間が所定時間以上となった場合(S131:YES)、端末装置10とのP2P通信を開始させることなく第二端末装置処理を終了する。
【0066】
応答パケットを受信した場合(S125:YES)、応答パケットに含まれているNAT種別が、RAM83に一時的に記憶される。また、NAT種別がSymmetric NATである場合、NAT種別と共に応答パケットに含まれている規則情報が、RAM83に一時的に記憶される。記憶されたNAT種別及び規則情報に基づいて、端末装置10との間でP2P通信が開始される(S127)。
【0067】
端末装置9と端末装置10との間のP2P通信は、例えば以下のようにして開始される。通信制御装置5を経由して端末装置10に対して、NAT装置6のNAT種別(または規則情報)と、NAT装置6の基準ポート番号とが通知される。端末装置10では、受信したNAT装置6のNAT種別(または規則情報)と、自身が直接接続するNAT装置7のNAT種別(または規則情報)とに基づいて、最適な通信開始手段が選択される。通信開始手順としては、例えばUDP Hole PunchingやUDP Multi Hole Punching等が使用可能である。選択された通信開始手段に基づき通信が行われることによって、端末装置9,10間でP2P通信を行うためのポート番号がNAT装置6,7に記憶される。端末装置9,10では、記憶されたポート番号宛てにパケットが送信される。NAT装置6,7では、これらのパケットはブロックせず転送する。これによって、端末装置9と端末装置10との間でP2P通信が可能となる。以上のように、自身と直接接続するNAT装置のNAT種別及び規則情報のうち少なくともいずれかと、通信相手の端末装置と接続するNAT装置のNAT種別及び規則情報のうち少なくともいずれかとに基づき、P2P通信を開始させるために必要な通信開始手順が選択される。選択された通信開始手順に基づいて通信が行われることによって、NAT装置はパケットを転送可能となるので、端末装置間でP2P通信を行うことが可能となる。
【0068】
例えば、NAT装置6、7のNAT種別がAddress Restricted Cone NATである場合には、UDP Hole PunchingによってP2P通信が可能となる。端末装置10はパンチパケットを送信し、NAT装置7にポート番号を記憶させる。端末装置9では、NAT装置7に記憶されたポート番号宛てにパケットが送信される。この通信が双方向で行われることによって、端末装置9,10間でP2P通信が行われる。
【0069】
例えば、NAT装置6、7のNAT種別がSymmetric NATである場合、UDP Multi Hole PunchingによってP2P通信が可能となる。端末装置10は、複数のパンチパケットを送信し、NAT装置7に複数のポート番号を記憶させる。端末装置9は、NAT装置7に記憶されたポート番号を検索するために、宛先ポート番号の異なる複数のパケット(検索パケット)を端末装置10に対して送信する。NAT装置7を通過した検索パケットの宛先ポート番号が、NAT装置7に記憶されているポート番号ということになるので、以後端末装置9では、このポート番号宛てにパケットが送信される。この通信が双方向で行われることによって、端末装置9,10間でP2P通信が行われる。
【0070】
受信した規則情報は、ポート番号を検索するために送信される検索パケットの宛先ポート番号を決定する場合に使用される。例えば以下のようにして宛先ポート番号が決定される。端末装置10から、通信制御装置5を経由して端末装置9に対して、NAT装置7のNAT種別(Symmetric NAT)、規則情報(最小値、第1四分位値、中央値、第3四分位値、最大値)、及び基準ポート番号が通知されたとする。端末装置9では、基準ポート番号(P)に最小値(X1)を加算した値(P+X1)から、基準ポート番号(P)に最大値(X2)を加算した値(P+X2)までの値を、検索パケットの宛先ポート番号として決定する。このようにして作成された検索パケットが、端末装置9から端末装置10に対して送信される。決定された宛先ポート番号は、NAT装置7に記憶されているポート番号である可能性が高い(詳細は後述する)ので、端末装置9から送信されるパケットが端末装置10に到達する確率が高くなる。このため、パケットの送信数を最小に抑えつつ端末装置9,10間でP2Pを開始させることができる。
【0071】
なお、パンチパケットの宛先ポート番号の決定方法は上述の方法に限定されず、他の方法によって算出してもよい。例えば、基準ポート番号(P)に第1四分位値(X3)を加算した値(P+X3)から、基準ポート番号に第3四分位値(X4)を加算した値(P+X4)までの値を設定してもよい。
【0072】
P2P通信が開始された(S127)後、キーボード851を介し、実行中のP2P通信を終了させる操作がなされたかが監視される(S129:NO)。通信終了操作がなされた場合(S129:YES)、実行中のP2P通信を終了させるための処理が実行され(S130)、その後第二端末装置処理を終了する。
【0073】
図12を参照し、通信制御装置5のCPU21において実行される通信制御処理について説明する。通信制御処理は、通信制御装置5の電源が投入された場合において、CPU21において起動され実行される。通信制御処理では、端末装置11から受信したNAT種別や規則情報が、HDD24に記憶されたNAT情報テーブルに格納される。また通信制御処理では、端末装置11からの要求に応じ、NAT種別や規則情報を端末装置11に対して送信する。なお通信制御装置5には、NAT特定情報(機種名、バージョン)が予めキーボード251を介して管理者によって入力されているものとする。従って、HDD24に記憶されたNAT情報テーブルには、NAT特定情報が予め格納されている。
【0074】
図12に示すように、通信制御処理が起動されると、はじめに、種別要求パケットとNAT特定情報等とを端末装置11から受信したかが判断される(S132)。受信していない場合(S132:NO)、NAT特定情報等とNAT種別(及び規則情報)とを端末装置11から受信したかが判断される(S151)。受信していない場合(S151:NO)、S132の処理に戻り、上述の処理が繰り返される。
【0075】
NAT特定情報等とNAT種別(及び規則情報)とを受信した場合(S151:YES)、受信したNAT特定情報が参照され、同一のNAT特定情報がNAT情報テーブルに記憶されているかが判断される(S153)。記憶されている場合(S153:YES)、受信したNAT種別(及び規則情報)が、NAT情報テーブルのうち同一であるとされたNAT特定情報に対応付けて記憶される(S155)。また、受信した帯域使用率とMACアドレスとが、NAT情報テーブルのうち同一であるとされたNAT特定情報に対応付けて記憶される(S155)。そしてS132の処理に戻り、上述の処理が繰り返される。同一のNAT特定情報がNAT情報テーブルに記憶されていない場合(S153:NO)、そのままS132の処理に戻り、上述の処理が繰り返される。上述の処理が繰り返されることによって、例えば図5に示すようなNAT情報テーブル241が作成される。
【0076】
S132の処理において、種別要求パケットとNAT特定情報等とを端末装置11から受信したと判断された場合(S132:YES)、受信したNAT情報のうちNAT特定情報と一致する情報が、NAT情報テーブルに記憶されているかが判断される(S133)。一致するNAT特定情報がNAT情報テーブルに記憶されていない場合(S133:NO)、該当する情報が登録されていない旨を端末装置11に対して通知するエラーパケットが、端末装置11に対して返信される(S139)。そしてS132の処理に戻り、上述の処理が繰り返される。
【0077】
受信したNAT特定情報と同一の情報がNAT情報テーブルに記憶されている場合(S133:YES)、送信元の端末装置11が信頼できる者であるかが判断される(S135)。端末装置11は、信頼できる端末装置11のMACアドレスを登録者リストに登録し管理しているものとする。NAT情報テーブルに登録者として記憶されたMACアドレスと一致するMACアドレスが、登録者リストに登録されているかが判断される。登録されていない場合(S135:NO)、端末装置11を信頼することができないので、端末装置11に対してエラーパケットが返信される(S139)。そしてS132の処理に戻り、上述の処理が繰り返される。
【0078】
一方、登録者リストに端末装置11のMACアドレスが登録されている場合(S135:YES)、種別要求パケットを送信した端末装置11は信頼できる端末装置であると判断される。NAT情報テーブルのうち、受信したNAT特定情報に対応付けられているNAT種別が参照され、Symmetric NATであるかが判断される(S137)。NAT種別がSymmetric NATでない場合(S137:NO)、参照されたNAT種別を含む応答パケットが端末装置11に対して送信される(S143)。そしてS132の処理に戻り、上述の処理が繰り返される。
【0079】
一方、NAT種別がSymmetric NATである場合(S137:YES)、NAT情報テーブルに記憶されている規則情報が統計的に解析され、帯域使用率に応じた規則情報が特定される(S141)。例えば以下のようにして解析が行われる。
【0080】
図13を参照し、規則情報の統計的解析手法の一例について説明する。NAT情報テーブルに記憶されている規則情報は、最小値、第1四分位値、中央値、第3四分位値、及び最大値毎に分類される。分類されたそれぞれの規則情報に対し、線形近似が適用され、近似直線が求められる。線形近似の手法としては、例えば最小二乗法が使用できる。図13に示す例では、最小値の近似直線101、第1四分位値の近似直線102、中央値の近似直線103、第3四分位値の近似直線104、及び、最大値の近似直線105が其々模式的に示されている。
【0081】
次いで、算出された近似直線に基づいて、帯域使用率に対応した規則情報が特定される。特定方法について、図13の例を参照して説明する。例えば、種別要求パケットと共に受信された帯域使用率が、図13中Aであったとする。直線101上の値のうち帯域使用率がAである場合の値111が、端末装置11に応答する場合の最小値とされる。同様に、直線102上の値のうち帯域使用率がAである場合の値112が第1四分位値とされる。直線103上の値のうち帯域使用率がAである場合の値113が中央値とされる。直線104上の値のうち帯域使用率がAである場合の値114が第3四分位値とされる。直線105上の値のうち帯域使用率がAである場合の値115が最大値とされる。以上のようにして、規則情報が求められる。端末装置9,10では、NAT種別と規則情報とに基づいて所定の通信が行われることによって、端末装置9,10間でP2P通信が可能となる。
【0082】
端末装置9と端末装置10との間のパケットエラー率(パケットが相手方に到達しない確率)は、ネットワークの帯域使用率に依存する。帯域使用率が大きくなるに従い、パケットエラー率は大きくなる傾向がある。例えば、NAT装置7にポート番号を記憶させるために端末装置10から送信されたパケットが相手方に到達しなかった場合、端末装置10からパケットが再送される。このため、NAT装置7に記憶されるポート番号が更新される。端末装置6では、NAT装置7に記憶された更新後のポート番号を検索するために、検索パケットが送信される。ここで本実施の形態では、端末装置6では、上述のようにして求められた規則情報に基づいて検索パケットの宛先ポート番号が決定され、検索パケットが送信される。このため、NAT装置7に記憶されるポート番号が帯域使用率によって変化した場合であっても、端末装置6はNAT装置7に記憶されたポート番号を特定することができる。
【0083】
次いで、規則情報が乱数であるかが判断される(S145)。例えば、第3四分位値から第1四分位値を減算した値が所定の閾値以上であるか否かを判断することによって、規則情報が乱数であるかが判断される。規則情報が乱数であると判断された場合(S145:YES)、規則情報は端末装置11に返信せず、NAT種別(Symmetric NAT)のみ返信する(S143)。一方、規則情報が乱数でないと判断された場合(S145:NO)、上述した統計的解析によって得られた規則情報(最小値〜最大値)が、NAT種別と共に端末装置11に対して送信される(S149)。そして通信制御処理を終了する。
【0084】
以上説明したように、端末装置9は、NAT装置6のNAT種別及び規則情報を、通信制御装置5から取得することができる。端末装置11は、取得した情報に基づいて、端末装置10と通信を行うことができる。端末装置9は、時間を要することなく迅速に種別情報や規則情報を取得することができるので、端末装置10との通信が開始されるまでに必要な時間を短縮することができる。
【0085】
端末装置6は、通信制御装置5と複数のパケットの送受信を行うことによって(図10参照)、規則情報を特定することができるので、容易且つ迅速に規則情報を特定できる。
【0086】
通信制御装置5は、受信した規則情報を統計的に解析することによって、規則情報の誤差やノイズの影響を小さくできる。これによって規則情報の精度を高めることができるので、端末装置9は確実に端末装置10とP2P通信を開始させることができる。特に本実施の形態では、帯域使用率毎に規則情報を定めることができるので、帯域使用率に依存する誤差やノイズの影響を小さくすることができる。
【0087】
端末装置6は、SNMPに基づいてNAT装置6から直接NAT特定情報を取得することができる。例えばNAT装置6が別の機器に取り換えられた場合であっても、NAT装置6のNAT特定情報の設定を変更し直す手間を省くことができる。
【0088】
図7のS33〜S59においてNAT種別を特定する処理、及び、S53の処理において規則情報を特定する処理を行うCPU81が本発明の「特定手段」に相当する。図8のS67の処理を行うCPU81が本発明の「第一送信手段」に相当する。図12のS151の処理を行うCPU21が本発明の「第一受信手段」に相当し、S155の処理を行うCPU21が本発明の「記憶制御手段」に相当する。図11のS123の処理を行うCPU81が本発明の「第二送信手段」に相当する。図12のS132の処理を行うCPU21が本発明の「第二受信手段」に相当し、S143、S149の処理を行うCPU21が本発明の「第三送信手段」に相当する。図11のS125の処理を行うCPU81が本発明の「第三受信手段」に相当し、S127の処理を行うCPU81が本発明の「第一通信手段」に相当する。
【0089】
図10のS101、S103の処理を行うCPU81が本発明の「第二通信手段」に相当する。図12のS141の処理を行うCPU21が本発明の「解析手段」に相当する。図9のS71の処理を行うCPU81が本発明の「第一取得手段」「第二取得手段」に相当する。図8のS63の処理を行うCPU81が本発明の「多段判断手段」に相当する。
【0090】
図7のS33〜S59においてNAT種別を特定する処理、及び、S53の処理において規則情報を特定する処理が本発明の「特定ステップ」に相当する。図8のS67の処理が本発明の「第一送信ステップ」に相当する。図12のS151の処理が本発明の「第一受信ステップ」に相当し、S155の処理が本発明の「記憶制御ステップ」に相当する。図11のS123の処理が本発明の「第二送信ステップ」に相当する。図12のS132の処理が本発明の「第二受信ステップ」に相当し、S143、S149の処理が本発明の「第三送信ステップ」に相当する。図11のS125の処理が本発明の「第三受信ステップ」に相当し、S127の処理が本発明の「第一通信ステップ」に相当する。
【0091】
なお、本発明は上記実施の形態に限定されるものではなく、種々の変更が可能である。上述の実施の形態では、規則情報として、最小値、第1四分位値、中央値、第3四分位値、及び最大値を帯域使用率毎に特定していた。しかしながら本発明はこの方法に限定されない。例えば、帯域使用率毎に算出した平均値や確率分布に基づいて規則情報を特定してもよい。また、本実施の形態では、線形近似直線を求めることによって規則情報を特定したが、例えば特定の関数で近似してもよい。
【0092】
上述の実施の形態では、LAN14の帯域使用率をSMNPに基づいた通信によって取得していたが、本発明はこの方法に限定されない。端末装置9,10がLAN14のパケットをキャプチャすることによって帯域使用率を求めてもよい。また、上述の実施の形態では、LAN14の帯域使用率に基づいて規則情報を特定したが、例えばインターネット15の帯域使用率に基づいて規則情報を特定してもよい。
【0093】
上述の実施の形態では、第一端末装置処理(図6等参照)は端末装置9,10の電源投入時に起動する構成としたが、例えば、第一端末装置処理は所定の周期で繰り返し実行されてもよい。これによって、NAT装置6,7のNAT情報が変更された場合であっても、変更後のNAT情報を迅速に認識して通信制御装置5に登録することができる。
【符号の説明】
【0094】
1 通信システム
5 通信制御装置
6,7,8 NAT装置
9,10,11 端末装置
12,13,14 LAN
15 インターネット
21 CPU
81 CPU

【特許請求の範囲】
【請求項1】
外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、
前記端末装置は、自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時におけるポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とのうち少なくとも一方を特定する特定手段と、
前記特定手段によって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記通信制御装置に対して送信する第一送信手段とを備え、
前記通信制御装置は、前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを受信する第一受信手段と、
前記第一受信手段において受信された前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを対応付けて記憶手段に記憶する記憶制御手段と、
を備え、
前記端末装置はさらに、通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信手段を備え、
前記通信制御装置はさらに、前記端末装置から送信された前記NAT特定情報と前記取得要求信号とを受信する第二受信手段と、
前記第二受信手段において受信された前記NAT特定情報と前記取得要求信号とに基づいて、前記記憶手段を参照し、受信した前記NAT特定情報に対応付けられている前記種別情報と前記規則情報とのうち少なくとも一方がある場合、前記取得要求信号を送信した前記端末装置に対して送信する第三送信手段とを備え
前記端末装置はさらに、前記第二送信手段によって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信手段と、
前記第三受信手段において受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信手段と
を備えたことを特徴とする通信システム。
【請求項2】
前記端末装置は、
前記規則情報を取得するために前記通信制御装置との間で行う通信であって、前記通信制御装置に対して第一信号を複数送信し、送信した前記第一信号の其々に対して前記通信制御装置から返信される第二信号を受信する通信を行う第二通信手段を備え、
前記特定手段は、
前記第二通信手段において受信した其々の前記第二信号の宛先ポート番号を抽出し、抽出した前記宛先ポート番号の差分を算出することによって、前記規則情報を特定することを特徴とする請求項1に記載の通信システム。
【請求項3】
前記通信制御装置は、
前記第一受信手段において前記端末装置から前記規則情報を受信した場合に、前記規則情報を統計的に解析する解析手段を備え、
前記記憶制御手段は、
前記解析手段によって解析された前記規則情報である解析済規則情報を新たな前記規則情報として前記記憶手段に記憶することを特徴とする請求項2に記載の通信システム。
【請求項4】
前記端末装置は、
前記第二通信手段による通信時におけるネットワークの使用帯域を取得する第一取得手段を備え、
前記第一送信手段は、
前記第一取得手段によって取得された前記使用帯域、前記種別情報、前記規則情報、及び前記NAT特定情報を送信し、
前記通信制御装置は、
前記第一受信手段において、前記使用帯域、前記種別情報、前記規則情報、及び前記NAT特定情報を受信し、
前記解析手段は、
前記第一受信手段において受信された前記使用帯域と前記規則情報とを統計的に解析することを特徴とする請求項3に記載の通信システム。
【請求項5】
前記端末装置は、
SNMP(Simple Network Management Protocol)に基づき、前記自身NAT装置を特定する前記NAT特定情報を取得する第二取得手段を備え、
前記第一送信手段は、
前記第二取得手段において取得された前記NAT特定情報を前記自身NAT装置の前記NAT特定情報として前記通信制御装置に対して送信することを特徴とする請求項1から4のいずれかに記載の通信システム。
【請求項6】
前記端末装置は、
前記自身NAT装置が、他の前記NAT装置を介して前記外部ネットワークに接続している状態である多段NAT状態であるか否かを判断する多段判断手段を備え、
前記第二送信手段は、
前記多段判断手段において前記多段NAT状態であると判断された場合には、前記NAT特定情報と前記取得要求信号とを送信しないことを特徴とする請求項1から5のいずれかに記載の通信システム。
【請求項7】
外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置であって、
自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時におけるポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とを特定する特定手段と、
前記特定手段によって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記外部ネットワークに接続する通信制御装置に対して送信する第一送信手段と、
通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信手段と、
前記第二送信手段によって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信手段と、
前記第三受信手段において受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信手段と
を備えたことを特徴とする端末装置。
【請求項8】
前記規則情報を取得するために前記通信制御装置との間で行う通信であって、前記通信制御装置に対して第一信号を複数送信し、送信した前記第一信号の其々に対して前記通信制御装置から返信される第二信号を受信する通信を行う第二通信手段を備え、
前記特定手段は、
前記第二通信手段において受信した其々の前記第二信号の宛先ポート番号を抽出し、抽出した前記宛先ポート番号の差分を算出することによって、前記規則情報を特定することを特徴とする請求項7に記載の端末装置。
【請求項9】
外部ネットワークに接続するNAT装置の配下の内部ネットワークに接続する端末装置と、前記外部ネットワークに接続する通信制御装置とを少なくとも含む通信システムにおいて、前記端末装置間で通信を行う通信方法であって、
前記端末装置において、自身が属する前記内部ネットワークに接続する前記NAT装置である自身NAT装置のポートマッピング時におけるポート番号の更新規則に関する規則情報と、前記自身NAT装置を種別する種別情報とのうち少なくとも一方を特定する特定ステップと、
前記端末装置において、前記特定ステップによって特定された前記規則情報と前記種別情報とのうち少なくとも一方と、前記自身NAT装置を特定するNAT特定情報とを、前記通信制御装置に対して送信する第一送信ステップと、
前記通信制御装置において、前記NAT特定情報と、前記規則情報と前記種別情報とのうち少なくとも一方とを受信する第一受信ステップと、
前記通信制御装置において、前記第一受信ステップにおいて受信された前記NAT特定情報と、前記規則情報と前記種別情報ととのうち少なくとも一方と対応付けて記憶手段に記憶する記憶制御ステップと、
前記端末装置において、通信相手の前記端末装置である相手端末装置と通信するために、前記自身NAT装置の前記種別情報と前記規則情報とのうち少なくとも一方の取得を要求する取得要求信号を、前記自身NAT装置のNAT特定情報とともに前記通信制御装置に対して送信する第二送信ステップと、
前記通信制御装置において、前記端末装置から送信された前記NAT特定情報と前記取得要求信号とを受信する第二受信ステップと、
前記通信制御装置において、前記第二受信ステップにおいて受信された前記NAT特定情報と前記取得要求信号とに基づいて、前記記憶手段を参照し、受信した前記NAT特定情報に対応付けられている前記種別情報と前記規則情報とのうち少なくとも一方がある場合、前記取得要求信号を送信した前記端末装置に対して送信する第三送信ステップと、
前記端末装置において、前記第二送信ステップによって送信された前記取得要求信号に応じて前記通信制御装置から送信される前記種別情報と前記規則情報とのうち少なくとも一方を受信する第三受信ステップと、
前記第三受信ステップにおいて受信された前記種別情報と前記規則情報とのうち少なくとも一方を用いて前記相手端末装置と通信を行う第一通信ステップと
を備えたことを特徴とする通信方法。
【請求項10】
請求項7又は8に記載の端末装置の各処理手段としてコンピュータを駆動するための通信プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−77920(P2011−77920A)
【公開日】平成23年4月14日(2011.4.14)
【国際特許分類】
【出願番号】特願2009−228510(P2009−228510)
【出願日】平成21年9月30日(2009.9.30)
【出願人】(000005267)ブラザー工業株式会社 (13,856)
【Fターム(参考)】