本発明の通信端末に係る実施形態によれば、相手側端末のホスト名をデータの送信先に指定することで、相手側端末と通信(例えば、データの送信)を行うことができる。尚、相手側端末は、通信端末が属するネットワーク網と同一のネットワーク網に属していてもよい。或いは、相手側端末は、通信端末が属するネットワーク網とルータを介して直接的に接続されるネットワーク網(つまり、通信端末が属するネットワーク網との間に1つのルータが介在するネットワーク網)に属していてもよい。或いは、相手側端末は、通信端末が属するネットワーク網とルータを介して間接的に接続されるネットワーク網(つまり、通信端末が属するネットワーク網との間に複数のルータが介在する又は更に他のネットワーク網が介在するネットワーク網)に属していてもよい。
取得手段は、アドレス解決サーバに対して相手側端末のホスト名を提示することで、アドレス解決サーバより、相手側端末のホスト名に対応する第2アドレス束を取得する。ここに、本実施形態に係る「アドレス解決サーバ」とは、ホスト名をアドレス束に変換するサーバを示す趣旨である。このようなアドレス解決サーバにより、通信端末(或いは、通信端末のユーザ)は、相手側端末のホストアドレス等を事前に認識する必要はなくなる。また、本実施形態に係る「アドレス束」とは、アドレス解決サーバが属するグローバルネットワーク網から端末(つまり、通信端末ないしは相手側端末)に至るまでの間のネットワーク経路を示す情報を意味する広い趣旨であって、ネットワーク経路を特定することができる限りはどのような情報であってもよい。典型的には、「アドレス束」は、アドレス解決サーバが属するグローバルネットワーク網から端末(つまり、通信端末ないしは相手側端末)に至るまでの間のネットワーク経路に存在する各種機器及び各種端末等のアドレス(例えば、IPアドレス等のホストアドレスや、MACアドレス等の機器アドレス)を一群として含むアドレス束である。
認識手段は、取得手段により取得される第2アドレス束及びアドレス解決サーバが属するグローバルネットワーク網から当該通信端末に至るまでの間のネットワーク経路を示す第1アドレス束の夫々に基づいて、通信端末と相手側端末との間のネットワーク上の位置関係を認識する。具体的には、例えば、認識手段は、通信端末が属するネットワーク網と相手側端末が属するネットワーク網の位置関係等を認識する。
尚、認識手段の動作に用いられる第1アドレス束は、上述した取得手段の動作によりアドレス解決サーバから取得されてもよい。或いは、後述する調査手段の動作(つまり、通信端末自身の動作)により取得されてもよい。或いは、その他の何らかの手段により取得されてもよい。
決定手段は、認識手段により認識された通信端末と相手側端末との間のネットワーク上の位置関係に基づいて、相手側端末との間の通信に使用するホストアドレス(つまり、データの送信先となるホストアドレス)を決定する。具体的には、例えば、通信端末と相手側端末とが同一のネットワーク網に属していると認識手段により認識されている場合には、相手側端末のホストアドレスをそのまま用いて相手側端末と通信を行うことができると考えられる。このため、この場合には、決定手段は、相手側端末のホストアドレスを、相手側端末との間の通信に使用するホストアドレスとして決定する。或いは、通信端末と相手側端末とが異なるネットワーク網に属していると認識手段により認識されている場合には、相手側端末のホストアドレスを用いるだけでは、相手側端末と通信を行うことができないと考えられる。このため、この場合には、決定手段は、相手側端末が属するネットワーク網に位置するルータの上位側ホストアドレス(例えば、WAN側ホストアドレス)を、相手側端末との間の通信に使用するホストアドレスとして決定する。或いは、通信端末と相手側端末とがその他の位置関係にある場合であっても、決定手段は、当該位置関係に応じて、相手側端末との間の通信を好適に行うことができるホストアドレスを決定することができる。
これにより、相手側端末がどのようなネットワーク網に属している場合であっても(言い換えれば、通信端末と相手側端末とがどのような位置関係にある場合であっても)、通信端末は、相手側端末との通信に必要なホストアドレスを好適に特定することができる。その結果、通信端末は、相手側端末との間の通信を好適に行うことができる。
加えて、本実施形態によれば、アドレス解決サーバに対して上述した動作を行うためのソフトウェアを組み込むと共に、端末(つまり、通信端末や相手側端末)に対して上述した動作を行うためのソフトウェアを組み込めば、上述した動作を行うことができる。従って、既存のネットワークに対して、新たなハードウェアを導入する必要がないという実践上大変有利な効果を享受することができる。つまり、上述した動作を行う通信端末(更には、アドレス解決サーバ)を低コストで導入することができるという実践上大変有利な効果を享受することができる。
この態様によれば、第1アドレス束には、アドレス解決サーバが属するグローバルネットワーク網から通信端末に至るまでの間のネットワーク経路に存在するルータの上位側ホストアドレス及び通信端末のホストアドレスが、アドレス解決サーバに近い側から順に又はアドレス解決サーバから遠い側から順に配列されたアドレス束が含まれている。同様に、第2アドレス束には、アドレス解決サーバが属するグローバルネットワーク網から相手側端末に至るまでの間のネットワーク経路に存在するルータの上位側ホストアドレス及び相手側端末のホストアドレスが、アドレス解決サーバに近い側から順に又はアドレス解決サーバから遠い側から順に配列されたアドレス束が含まれている。つまり、各アドレス束には、ネットワーク網の階層構造に対応する形式でアドレスが含まれている。その結果、第1アドレス束に含まれるルータの上位側ホストアドレスと第2アドレス束に含まれるルータの上位側ホストアドレスを比較したり、或いは通信端末のホストアドレスと相手側端末のホストアドレスとを比較したりすることで、認識手段は、通信端末と相手側端末との間のネットワーク上の位置関係を好適に認識することができる。特に、認識手段は、通信端末と相手側端末とが、どの程度の階層まで同一のネットワーク網に属しているかを好適に認識することができる。
このように構成すれば、認識手段は、通信端末と相手側端末とが、どの程度の階層まで同一のネットワーク網に属しているかを好適に認識することができる。具体的には、例えば、同一階層のホストアドレス(例えば、ルータの上位側ホストアドレス)が同一であれば、認識手段は、その階層までは通信端末と相手側端末とが同一のネットワーク網に属していると認識することができる。従って、この場合は、認識手段は、更に次の階層(下の階層ないしはアドレス解決サーバから遠ざかる方向の階層)のホストアドレスの比較を行う。他方で、同一階層のホストアドレスが異なっていれば、認識手段は、その階層から、通信端末と相手側端末とが異なるネットワーク網に属することになると認識することができる。つまり、認識手段は、その階層から、通信端末の上位側に位置するルータと相手側端末の上位側に位置するルータとが異なるネットワーク網に属することになると認識することができる。従って、この場合は、相手側端末の上位側に位置するルータの上位側ホストアドレスを、相手側端末との間の通信に用いるアドレスとして決定すれば、相手側端末と好適に通信することができる。
このように構成すれば、同一階層のホストアドレスが異なっていれば、認識手段は、その階層から、通信端末と相手側端末とが異なるネットワーク網に属することになると認識することができる。つまり、認識手段は、その階層から、通信端末の上位側に位置するルータと相手側端末の上位側に位置するルータとが異なるネットワーク網に属することになると認識することができる。従って、相手側端末の上位側に位置するルータの上位側ホストアドレスを、相手側端末との間の通信に用いるアドレスとして決定すれば、相手側端末と好適に通信することができる。
この態様によれば、通信端末自身によって調査されたアドレス束をアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
このように構成すれば、後に具体例を参照しながら詳述するように、通信端末自身が好適にアドレス束を調査することができる。その結果、通信端末自身によって調査されたアドレス束をアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
このように構成すれば、後に具体例を参照しながら詳述するように、アドレス解決サーバが属するグローバルネットワーク網と通信端末との間のネットワーク経路に複数のルータが存在する場合にも、通信端末自身が好適にアドレス束を調査することができる。その結果、通信端末自身によって調査されたアドレス束をアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
このように構成すれば、後に具体例を参照しながら詳述するように、外部のアドレス調査サーバの動作によって取得されたルータの上位側ホストアドレス等を含むアドレス束をアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
このように構成すれば、ルータの上位側ホストアドレスに加えて又は代えてルータの下位側ホストアドレス(例えば、LAN側ホストアドレス)を含むアドレス束を登録しても、上述した動作を相応に行うことができる。
このように構成すれば、後に具体例を参照しながら詳述するように、外部の他の通信端末の動作によって取得されたルータの上位側ホストアドレス等を含むアドレス束をアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
この態様によれば、後に具体例を参照しながら詳述するように、自身が取得したルータの上位側ホストアドレス等を含むアドレス束を、他の通信端末に対応するアドレス束としてアドレス解決サーバに登録することができる。このため、アドレス束を用いた上述の動作を好適に行うことができる。
本発明のアドレス解決サーバに係る実施形態によれば、格納手段に格納されているアドレス束(つまり、相手側端末に対応するアドレス束)を、相手側端末との通信を行おうとしている通信端末に対して送信することができる。従って、通信端末は、上述したように、相手側端末との間の通信に使用するホストアドレスを決定することができる。その結果、上述した各種効果を好適に享受することができる。
この態様によれば、通信端末は、第1アドレス束に含まれるルータの上位側ホストアドレス(例えば、WAN側ホストアドレス)と第2アドレス束に含まれるルータの上位側ホストアドレス(例えば、WAN側ホストアドレス)を比較したり、或いは通信端末のホストアドレスと相手側端末のホストアドレスとを比較したりすることで、通信端末と相手側端末との間のネットワーク上の位置関係を好適に認識することができる。
本発明のコンピュータプログラムに係る第1実施形態によれば、当該コンピュータプログラムを格納するROM、CD−ROM、DVD−ROM、ハードディスク等の記録媒体から、当該コンピュータプログラムをコンピュータに読み込んで実行させれば、或いは、当該コンピュータプログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明の通信端末に係る実施形態を比較的簡単に実現できる。
本発明のコンピュータプログラムに係る第2実施形態によれば、当該コンピュータプログラムを格納するROM、CD−ROM、DVD−ROM、ハードディスク等の記録媒体から、当該コンピュータプログラムをコンピュータに読み込んで実行させれば、或いは、当該コンピュータプログラムを、通信手段を介してコンピュータにダウンロードさせた後に実行させれば、上述した本発明のアドレス解決サーバに係る実施形態を比較的簡単に実現できる。
尚、上述した本発明のアドレス解決サーバに係る実施形態における各種態様に対応して、本発明のコンピュータプログラムに係る第2実施形態も各種態様を採ることが可能である。
本発明のコンピュータプログラム製品に係る第1実施形態によれば、当該コンピュータプログラム製品を格納するROM、CD−ROM、DVD−ROM、ハードディスク等の記録媒体から、当該コンピュータプログラム製品をコンピュータに読み込めば、或いは、例えば伝送波である当該コンピュータプログラム製品を、通信手段を介してコンピュータにダウンロードすれば、上述した本発明の通信端末に係る実施形態を比較的容易に実施可能となる。更に具体的には、当該コンピュータプログラム製品は、上述した本発明の通信端末に係る実施形態として機能させるコンピュータ読取可能なコード(或いはコンピュータ読取可能な命令)から構成されてよい。
尚、上述した本発明の通信端末に係る実施形態における各種態様に対応して、本発明のコンピュータプログラム製品に係る第1実施形態も各種態様を採ることが可能である。
本発明のコンピュータプログラム製品に係る第2実施形態は、上述した本発明のアドレス解決サーバに係る実施形態(但し、その各種態様を含む)に備えられたコンピュータにより実行可能なプログラム命令を明白に具現化し、該コンピュータを、前記格納手段及び前記送信手段として機能させる。
本発明のコンピュータプログラム製品に係る第2実施形態によれば、当該コンピュータプログラム製品を格納するROM、CD−ROM、DVD−ROM、ハードディスク等の記録媒体から、当該コンピュータプログラム製品をコンピュータに読み込めば、或いは、例えば伝送波である当該コンピュータプログラム製品を、通信手段を介してコンピュータにダウンロードすれば、上述した本発明のアドレス解決サーバに係る実施形態を比較的容易に実施可能となる。更に具体的には、当該コンピュータプログラム製品は、上述した本発明のアドレス解決サーバに係る実施形態として機能させるコンピュータ読取可能なコード(或いはコンピュータ読取可能な命令)から構成されてよい。
尚、上述した本発明のアドレス解決サーバに係る実施形態における各種態様に対応して、本発明のコンピュータプログラム製品に係る第2実施形態も各種態様を採ることが可能である。
以上説明したように、本発明の再生装置に係る実施形態によれば、取得手段と、認識手段と、決定手段とを備える。本発明のアドレス解決サーバに係る実施形態によれば、格納手段と、送信手段とを備える。本発明のコンピュータプログラムに係る第1実施形態によれば、コンピュータを本発明の通信端末に係る実施形態として機能させる。本発明のコンピュータプログラムに係る第2実施形態によれば、コンピュータを本発明のアドレス解決サーバに係る実施形態として機能させる。従って、異なる端末との間の通信を比較的容易に且つ相対的に低コストで行うことができる。
以下、本発明の実施例を図面に基づいて説明する。
(1)基本構成
初めに、図1から図4を参照して、本実施例に係る通信システム1の基本構成について説明する。
(1−1)全体構成
初めに、図1を参照して、本実施例に係る通信システム1の全体構成について説明する。ここに、図1は、本実施例に係る通信システム1の全体構成を概念的に示すブロック図である。
図1に示すように、本実施例に係る通信システム1は、データの送受信を行う複数の通信端末100(具体的には、通信端末100a、通信端末100b、通信端末100c、通信端末100d及び通信端末100e)と、通信端末100からのアドレス解決要求に応じてホスト名をアドレス束221に変換すると共に該アドレス束221を通信端末100に送信するアドレス解決サーバ200と、異なるネットワークを接続する複数のNATルータ300(具体的には、NATルータ300a、NATルータ300b及びNATルータ300c)とを備えている。
また、これらの機器は、グローバルネットワーク401やローカルネットワーク402(具体的には、ローカルネットワーク402a、ローカルネットワーク402b及びローカルネットワーク402c)を構成している。尚、グローバルネットワーク401やローカルネットワーク402は、有線或いは無線のいずれの形態を採ってもよいし、その一部を有線とし、他の一部を無線としてもよい。更に、専用回線であってもよいし、一般公衆回線或いは電話回線等であってもよいし、パケット網であってもよいし、回線交換網であってもよい。つまりは、グローバルネットワーク401やローカルネットワーク402は、データの送受信が可能なネットワークであればどのようなネットワークであってもよい。
グローバルネットワーク401には、グローバルIPアドレスが「98.76.54.32」であり且つホスト名が「A」である通信端末100aと、アドレス解決サーバ200とが接続されている。また、グローバルネットワーク401には、WAN側のグローバルIPアドレスが「123.45.67.89」であるNATルータ300aが、WAN側のネットワークポートを介して接続されている。
ローカルネットワーク402aには、ローカルIPアドレスが「192.168.0.3」であり且つホスト名が「B」である通信端末100bが接続されている。また、ローカルネットワーク402aには、LAN側のローカルIPアドレスが「192.168.0.1」であるNATルータ300aが、LAN側のネットワークポートを介して接続されている。また、ローカルネットワーク402aには、WAN側のローカルIPアドレスが「192.168.0.2」であるNATルータ300bが、WAN側のネットワークポートを介して接続されている。また、ローカルネットワーク402aには、WAN側のローカルIPアドレスが「192.168.0.9」であるNATルータ300cが、WAN側のネットワークポートを介して接続されている。
ローカルネットワーク402bには、ローカルIPアドレスが「192.168.1.99」であり且つホスト名が「C」である通信端末100cと、ローカルIPアドレスが「192.168.1.1」であり且つホスト名が「D」である通信端末100dとが接続されている。また、ローカルネットワーク402bには、LAN側のローカルIPアドレスが「192.168.1.1」であるNATルータ300bが、LAN側のネットワークポートを介して接続されている。
ローカルネットワーク402cには、ローカルIPアドレスが「192.168.1.100」であり且つホスト名が「E」である通信端末100eが接続されている。また、ローカルネットワーク402cには、LAN側のローカルIPアドレスが「192.168.1.1」であるNATルータ300cが、LAN側のネットワークポートを介して接続されている。
尚、このような通信システム1の一例として、マンション等の集合住宅に設けられる通信システムが一例としてあげられる。この場合、例えば、グローバルネットワーク401がインターネットに相当し、ローカルネットワーク402aがマンション全体のローカルネットワークに相当し、且つローカルネットワーク402b及び402cの夫々がマンション内の各部屋のローカルネットワークに相当する。
(1−2)通信端末の基本構成
続いて、図2を参照して、本実施例に係る通信システム1が備える通信端末100の基本構成について説明する。ここに、図2は、本実施例に係る通信システム1が備える通信端末100の基本構成を概念的に示すブロック図である。
図2に示すように、通信端末100は、本発明における「取得手段」の一具体例を構成するアドレス取得部101と、本発明における「認識手段」の一具体例を構成するネットワーク構成認識部102と、本発明における「決定手段」の一具体例を構成するアドレス決定部103と、CPU104と、メモリ105と、通信部106とを備えている。
アドレス取得部101は、通信相手となる通信端末100のホスト名をアドレス解決サーバ200に対して提示することで、アドレス解決サーバ200から、通信相手となる通信端末100に対応するアドレス束221を取得する。尚、アドレス束221については、後に詳述する(図4参照)。
ネットワーク構成認識部102は、アドレス取得部101によって取得されたアドレス束221に基づいて、通信端末100自身と通信相手となる通信端末100とのネットワーク上の位置関係(言い換えれば、通信システム内における位置関係)を調査、認識する。尚、ネットワーク構成認識部102の動作の詳細については、後に詳述する(図5や図9等参照)。
アドレス決定部103は、ネットワーク構成認識部102における認識結果に基づいて、通信相手となる通信端末100との間の通信を行うために使用されるIPアドレス(つまり、データの送信先のIPアドレス)を決定する。尚、アドレス決定部103の動作の詳細については、後に詳述する(図5や図9等参照)。
CPU104は、アドレス取得部101、ネットワーク構成認識部102、アドレス決定部103及び通信部106と、バス110を介して接続され、各種制御手段に指示を行うことで、通信端末100全体の制御を行う。通常、CPU104が動作するためのソフトウェア又はファームウェアは、メモリ105に格納されている。
メモリ105は、通信端末100におけるデータ処理全般において使用される。具体的には、メモリ105は、通信端末100としての動作を行うためのプログラム(即ち、ファームウェアプログラム)が格納されるROM領域と、データが一時に格納される又はファームウェアプログラム等の動作に必要な変数が格納されるRAM領域などから構成される。
通信部106は、通信端末100により行われるグローバルネットワーク401やローカルネットワーク402を介した通信(例えば、HTTP等による通信)を制御する。
(1−3)アドレス解決サーバの基本構成
続いて、図3を参照して、本実施例に係る通信システム1が備えるアドレス解決サーバ200の基本構成について説明する。ここに、図3は、本実施例に係る通信システム1が備えるアドレス解決サーバ200の基本構成を概念的に示すブロック図である。
図3に示すように、アドレス解決サーバ200は、本発明における「格納手段」の一具体例を構成するアドレス管理テーブル格納部201と、本発明における「送信手段」の一具体例を構成するアドレス送信部202と、CPU203と、メモリ204と、通信部205とを備えている。
アドレス管理テーブル格納部201は、通信システム1内に含まれる複数の通信端末100の夫々に対応するアドレス束221を含むアドレス管理テーブル220を格納する。このようなアドレス管理テーブル格納部201は、典型的には、ハードディスクや半導体メモリ等の記録媒体を含んで構成される。
ここで、図4を参照して、アドレス管理テーブル220について説明する。ここに、図4は、アドレス管理テーブル220を概念的に示すデータ構造図である。
図4に示すように、アドレス管理テーブル220には、通信システム1内に含まれる複数の通信端末100の夫々に対応するアドレス束221が含まれる。より具体的には、アドレス管理テーブル220には、通信端末100aに対応するアドレス束221と、通信端末100bに対応するアドレス束221と、通信端末100cに対応するアドレス束221と、通信端末100dに対応するアドレス束221と、通信端末100eに対応するアドレス束221とが含まれる。
アドレス束221には、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100に至るまでの間のネットワーク経路を特定することが可能な情報が含まれる。具体的には、例えば、アドレス束221は、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100に至るまでの間のネットワーク経路に存在するNATルータ300のWAN側のIPアドレス及び通信端末100のIPアドレスが含まれる。
より具体的には、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100aに至るまでの間のネットワーク経路には、アドレス管理サーバ200と通信端末100aが含まれている。このため、通信端末100aに対応するアドレス束221には、通信端末100aのグローバルIPアドレスである「98.76.54.32」が含まれる。また、図4に示す例では、通信端末100aに対応するアドレス束221には、通信端末100aのグローバルIPアドレスに加えて、通信端末100aが通信に用いるポート番号である「55555」が含まれている。従って、通信端末100aに対応するアドレス束221は、「98.76.54.32:55555」というデータ配列を含んでいる。
同様に、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100bに至るまでの間のネットワーク経路には、アドレス管理サーバ200とNATルータ300aと通信端末100bが含まれている。このため、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」と通信端末100bのローカルIPアドレスである「192.168.0.3」とが含まれる。また、これらのアドレスは、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100bに至るまでの間のネットワーク経路の上位側から下位側に向かうように順に配列された状態で、アドレス束221に含まれている。つまり、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」と通信端末100bのローカルIPアドレスである「192.168.0.3」とが、この順に配列されるように含まれている。また、図4に示す例では、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスに加えて、NATルータ300aが通信端末100bに対する通信を転送するときに用いるポート番号である「40000」が、NATルータ300aのWAN側のグローバルIPアドレスに対応付けられるように含まれている。同様に、通信端末100bに対応するアドレス束221には、通信端末100bのローカルIPアドレスに加えて、通信端末100bが通信に用いるポート番号である「54321」が、通信端末100bのローカルIPアドレスに対応付けられるように含まれている。従って、通信端末100bに対応するアドレス束221は、「123.45.67.89:40000−192.168.0.3:54321」というデータ配列を含んでいる。
同様に、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100cに至るまでの間のネットワーク経路には、アドレス管理サーバ200とNATルータ300aとNATルータ300b通信端末100cが含まれている。このため、通信端末100cに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」と通信端末100cのローカルIPアドレスである「192.168.1.99」とが含まれる。また、これらのアドレスは、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100cに至るまでの間のネットワーク経路の上位側から下位側に向かうように順に配列された状態で、アドレス束221に含まれている。つまり、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」と通信端末100cのローカルIPアドレスである「192.168.1.99」とが、この順に配列されるように含まれている。また、図4に示す例では、通信端末100cに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスに加えて、NATルータ300aが通信端末100cに対する通信を転送するときに用いるポート番号である「40001」が、NATルータ300aのWAN側のグローバルIPアドレスに対応付けられるように含まれている。同様に、通信端末100cに対応するアドレス束221には、NATルータ300bのWAN側のローカルIPアドレスに加えて、NATルータ300bが通信端末100cに対する通信を転送するときに用いるポート番号である「44444」が、NATルータ300bのWAN側のローカルIPアドレスに対応付けられるように含まれている。同様に、通信端末100cに対応するアドレス束221には、通信端末100cのローカルIPアドレスに加えて、通信端末100cが通信に用いるポート番号である「54321」が、通信端末100cのローカルIPアドレスに対応付けられるように含まれている。従って、通信端末100cに対応するアドレス束221は、「123.45.67.89:40001−192.168.0.2:44444−192.168.1.99:54321」というデータ配列を含んでいる。
同様に、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100dに至るまでの間のネットワーク経路には、アドレス管理サーバ200とNATルータ300aとNATルータ300b通信端末100dが含まれている。このため、通信端末100dに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」と通信端末100dのローカルIPアドレスである「192.168.1.100」とが含まれる。また、これらのアドレスは、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100dに至るまでの間のネットワーク経路の上位側から下位側に向かうように順に配列された状態で、アドレス束221に含まれている。つまり、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」と通信端末100dのローカルIPアドレスである「192.168.1.100」とが、この順に配列されるように含まれている。また、図4に示す例では、通信端末100dに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスに加えて、NATルータ300aが通信端末100dに対する通信を転送するときに用いるポート番号である「40002」が、NATルータ300aのWAN側のグローバルIPアドレスに対応付けられるように含まれている。同様に、通信端末100dに対応するアドレス束221には、NATルータ300bのWAN側のローカルIPアドレスに加えて、NATルータ300bが通信端末100dに対する通信を転送するときに用いるポート番号である「44445」が、NATルータ300bのWAN側のローカルIPアドレスに対応付けられるように含まれている。同様に、通信端末100dに対応するアドレス束221には、通信端末100dのローカルIPアドレスに加えて、通信端末100dが通信に用いるポート番号である「54321」が、通信端末100dのローカルIPアドレスに対応付けられるように含まれている。従って、通信端末100dに対応するアドレス束221は、「123.45.67.89:40002−192.168.0.2:44445−192.168.1.100:54321」というデータ配列を含んでいる。
同様に、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100eに至るまでの間のネットワーク経路には、アドレス管理サーバ200とNATルータ300aとNATルータ300c通信端末100eが含まれている。このため、通信端末100eに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300cのWAN側のローカルIPアドレスである「192.168.0.9」と通信端末100eのローカルIPアドレスである「192.168.1.100」とが含まれる。また、これらのアドレスは、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100eに至るまでの間のネットワーク経路の上位側から下位側に向かうように順に配列された状態で、アドレス束221に含まれている。つまり、通信端末100bに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」とNATルータ300cのWAN側のローカルIPアドレスである「192.168.0.9」と通信端末100eのローカルIPアドレスである「192.168.1.100」とが、この順に配列されるように含まれている。また、図4に示す例では、通信端末100eに対応するアドレス束221には、NATルータ300aのWAN側のグローバルIPアドレスに加えて、NATルータ300aが通信端末100eに対する通信を転送するときに用いるポート番号である「40003」が、NATルータ300aのWAN側のグローバルIPアドレスに対応付けられるように含まれている。同様に、通信端末100eに対応するアドレス束221には、NATルータ300cのWAN側のローカルIPアドレスに加えて、NATルータ300cが通信端末100eに対する通信を転送するときに用いるポート番号である「33333」が、NATルータ300cのWAN側のローカルIPアドレスに対応付けられるように含まれている。同様に、通信端末100eに対応するアドレス束221には、通信端末100eのローカルIPアドレスに加えて、通信端末100eが通信に用いるポート番号である「54321」が、通信端末100eのローカルIPアドレスに対応付けられるように含まれている。従って、通信端末100eに対応するアドレス束221は、「123.45.67.89:40002−192.168.0.9:33333−192.168.1.100:54321」というデータ配列を含んでいる。
尚、図4に示す例では、アドレス束として、アドレス管理サーバ200が属するグローバルネットワーク401から通信端末100に至るまでの間のネットワーク経路に存在するNATルータ300のWAN側のIPアドレス及び通信端末100のIPアドレス(更には、通信端末100やNATルータ300が通信に用いるポート番号)が含まれているが、後に詳述するように、これらのIPアドレスやポート番号に加えて又は代えて、更に他の情報(例えば、後述するNATルータ300のLAN側のIPアドレスや、通信端末100及びNATルータ300のMACアドレス)が含まれていてもよい。
再び図3において、アドレス送信部202は、通信端末100からの要求に応じて、アドレス管理テーブル格納部201に格納されているアドレス管理テーブル220から所望のアドレス束221を抽出すると共に、該抽出されたアドレス束221を通信端末100に対して送信する。
CPU203は、アドレス管理テーブル格納部201、アドレス送信部202、及び通信部205と、バス210を介して接続され、各種制御手段に指示を行うことで、通信端末100全体の制御を行う。通常、CPU203が動作するためのソフトウェア又はファームウェアは、メモリ204に格納されている。
メモリ204は、アドレス管理サーバ200におけるデータ処理全般において使用される。具体的には、メモリ204は、アドレス管理サーバ200としての動作を行うためのプログラム(即ち、ファームウェアプログラム)が格納されるROM領域と、データが一時に格納される又はファームウェアプログラム等の動作に必要な変数が格納されるRAM領域などから構成される。
通信部205は、アドレス管理テーブル200により行われるグローバルネットワーク401やローカルネットワーク402を介した通信(例えば、HTTP等による通信)を制御する。
(2)動作例
続いて、図5を参照して、本実施例に係る通信システム1の動作の流れを説明する。ここに、図5は、本実施例に係る通信システム1の動作の流れを概念的に示すフローチャートである。
図5に示すように、まず、データの送信元となる通信端末100(以降、便宜的に、“送信元通信端末100”と称する)が備えるアドレス取得部101の動作により、送信元通信端末100に対応するアドレス束221及びデータの送信先となる通信端末100(以降、便宜的に、“送信先通信端末100”と称する)に対応するアドレス束221の夫々が、アドレス解決サーバ200から取得される(ステップS101)。このとき、送信元通信端末100は、送信先通信端末100のホスト名を提示して、送信先通信端末100に対応するアドレス束221の送信をアドレス解決サーバ200に対して要求する。その結果、アドレス解決サーバ200が備えるアドレス送信部202は、送信元通信端末100からの要求に応じて、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々をアドレス管理テーブル格納部201から読み出すと共に、読み出したアドレス束221を送信元通信端末100に対して送信する。
尚、図6や図8等を参照しながら後に詳述するように、送信元通信端末100に対応するアドレス束221については、アドレス調査部107(図6参照)やアドレス調査サーバ500(図8参照)を利用することで、送信元通信端末100自身が調査することができる。このため、送信元通信端末100自身が送信元通信端末100に対応するアドレス束221を調査する場合には、図5に示すステップS101においては、送信元通信端末100に対応するアドレス束221はアドレス解決サーバ200から取得されなくともよい。言い換えれば、図5に示すステップS101においては、送信元通信端末100に対応するアドレス束221がアドレス解決サーバ200から取得されることに代えて、送信元通信端末100自身が送信元通信端末100に対応するアドレス束221を調査することで送信元通信端末100に対応するアドレス束221を取得されるように構成してもよい。
続いて、送信元通信端末100が備えるネットワーク構成認識部102の動作により、ステップS101において取得された送信元通信端末100に対応するアドレス束221の左端のIPアドレス(つまり、アドレス解決サーバ200(或いは、アドレス解決サーバ200が属するグローバルネットワーク401)に最も近い側のIPアドレス)と、ステップS101において取得された送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが異なるか否かが判定される(ステップS102)。
ステップS102における判定の結果、送信元通信端末100に対応するアドレス束221の左端のIPアドレスと送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが異なると判定された場合には(ステップS102:Yes)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の左端のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS103)。その後、ステップS103において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方、ステップS102における判定の結果、送信元通信端末100に対応するアドレス束221の左端のIPアドレスと送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが同一であると判定された場合には(ステップS102:No)、続いて、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、更に次段のIPアドレスが存在するか否かが判定される(ステップS105)。つまり、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、左端のIPアドレスに続くIPアドレス(以降、適宜“第2段目のIPアドレス”と称する)が存在するか否かが判定される。
ステップS105における判定の結果、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、更に次段のIPアドレス(つまり、第2段目のIPアドレス)が存在すると判定された場合には(ステップS105:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221の第2段目のIPアドレスと送信先通信端末100に対応するアドレス束221の第2段目のIPアドレスとが異なるか否かが判定される(ステップS106)。
ステップS106における判定の結果、送信元通信端末100に対応するアドレス束221の第2段目のIPアドレスと送信先通信端末100に対応するアドレス束221の第2段目のIPアドレスとが異なると判定された場合には(ステップS106:Yes)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の第2段目のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS103)。その後、ステップS107において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方、ステップS106における判定の結果、送信元通信端末100に対応するアドレス束221の第2段目のIPアドレスと送信先通信端末100に対応するアドレス束221の第2段目のIPアドレスとが異なると判定された場合には(ステップS106:No)、ステップS105へと戻り、ステップS106における判定動作の対象となるIPアドレスが送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に存在しなくなるまで、ステップS105及びステップS106の動作が繰り返される。その結果、送信元通信端末100に対応するアドレス束221の更に次段のIPアドレス(つまり、第3段目のIPアドレス、第4段目のIPアドレス、・・・)と送信先通信端末100に対応するアドレス束221の更に次段のIPアドレスとが同一となる場合には、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の更に次段のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS107)。その後、ステップS107において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方で、ステップS105における判定の結果、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、更に次段のIPアドレスが存在しないと判定された場合には(ステップS105:No)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の左端のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS108)。この動作は、NATルータ300がヘアピン対応ルータである可能性がある場合に行われることが好ましい。
その後、送信元通信端末100が備えるCPU100の制御の下に、ステップS108において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が可能か否か判定される(ステップS109)。NATルータ300がヘアピン対応ルータであれば、データの送信は可能である。
ステップS109の判定の結果、送信元通信端末100から送信先通信端末100へとデータの送信が可能であると判定された場合には(ステップS109:Yes)、そのままデータの送信が継続される(ステップS104)。他方で、ステップS109の判定の結果、送信元通信端末100から送信先通信端末100へとデータの送信が可能でないと判定された場合には(ステップS109:No)、データの送信を行うことなく、動作を終了する。
ここで、より明確な説明のために、図1に示す通信システム1に含まれる通信端末100cから、通信端末100a、通信端末100b、通信端末100d及び通信端末100eの夫々に対してデータを送信する場合の動作例について説明する。
(2−1)通信端末100cから通信端末100aへのデータの送信
通信端末100cから通信端末100aへとデータを送信する場合には、通信端末100cは、通信端末100aのホスト名である「A」をアドレス解決サーバ200に提示することで、通信端末100cに対応するアドレス束221及び通信端末100aに対応するアドレス束221の夫々をアドレス解決サーバ200から取得する。
その後、通信端末100cは、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100aに対応するアドレス束221の左端のIPアドレスである「98.76.54.32」とを比較する。その結果、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100aに対応するアドレス束221の左端のIPアドレスである「98.76.54.32」とが異なるIPアドレスであるため、通信端末100cは、通信端末100aに対応するアドレス束221の左端のIPアドレスである「98.76.54.32」を、通信端末100cが通信端末100aとの間の通信を行うために用いられるIPアドレスとして決定する。更には、通信端末100cは、通信端末100aに対応するアドレス束221の左端のIPアドレスに対応するポート番号である「55555」を、通信端末100cが通信端末100aとの間の通信を行うために用いられる送信先ポート番号として決定する。
その後、通信端末100cは、「98.76.54.32」というIPアドレスを送信先アドレスに設定し且つ「55555」というポート番号を送信先ポート番号に設定した上で、通信端末100aに対してデータを送信する。その結果、通信端末100cから送信されたデータは、NAT300b及びNAT300aを介して通信端末100aへと到達する。従って、通信端末100cから通信端末100aへのデータの送信を好適に行うことができる。
(2−2)通信端末100cと通信端末100bとの間の通信
通信端末100cから通信端末100bへとデータを送信する場合には、通信端末100cは、通信端末100bのホスト名である「B」をアドレス解決サーバ200に提示することで、通信端末100cに対応するアドレス束221及び通信端末100bに対応するアドレス束221の夫々をアドレス解決サーバ200から取得する。
その後、通信端末100cは、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100bに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とを比較する。その結果、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100bに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とが同一のIPアドレスであるため、通信端末100cは、更に次段のIPアドレスの比較を行う。具体的には、通信端末100cは、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100bに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.3」とを比較する。その結果、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100bに対応するアドレス束221の左端のIPアドレスである「192.168.0.3」とが異なるIPアドレスであるため、通信端末100cは、通信端末100bに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.3」を、通信端末100cが通信端末100bとの間の通信を行うために用いられるIPアドレスとして決定する。更には、通信端末100cは、通信端末100bに対応するアドレス束221の第2段目のIPアドレスに対応するポート番号である「54321」を、通信端末100cが通信端末100bとの間の通信を行うために用いられる送信先ポート番号として決定する。
その後、通信端末100cは、「192.168.0.3」というIPアドレスを送信先アドレスに設定し且つ「54321」というポート番号を送信先ポート番号に設定した上で、通信端末100bに対してデータを送信する。その結果、通信端末100cから送信されたデータは、NAT300bを介して通信端末100bへと到達する。従って、通信端末100cから通信端末100bへのデータの送信を好適に行うことができる。
尚、いわゆる既存のDNSサーバを備える通信システムでは、通信端末100bのホスト名である「B」をDNSサーバに提示することで得られる通信端末100bのIPアドレスは、通信端末100bが属するローカルネットワーク402aとグローバルネットワーク401とを直接的に接続するNATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」である。この場合、通信端末100cは、「123.45.67.89」というIPアドレスを送信先アドレスに設定した上で、通信端末100bに対してデータを送信する。しかしながら、このデータは、NATルータ300aまでは到達するものの、その後にNATルータ300aから通信端末100bには転送されない。従って、既存のDNSサーバを備える通信システムでは、通信端末100cから通信端末100bへとデータを送信するためには、背景技術において説明したように、各ローカルネットワーク402にDNSサーバを設けるか又は特別なハードウェアである中継センタを設ける必要がある。
しかしながら、本実施例では、上述したように、各ローカルネットワーク402にDNSサーバを設けるか又は特別なハードウェアである中継センタを設けることなく、通信端末100cから通信端末100bへとデータを送信することができる。より具体的には、既存のDNSサーバに対して上述したアドレス管理サーバ200としての動作を行うためのソフトウェアを組み込むと共に、既存の通信端末に対して上述した通信端末100としての動作を行うためのソフトウェアを組み込めば、上述した動作を行うことができるため、既存の通信システムに対して新たなハードウェアを導入する必要がないという実践上大変有利な効果を享受することができる。つまり、上述した動作を行う通信端末100やアドレス解決サーバ200を低コストで導入することができるという実践上大変有利な効果を享受することができる。
(2−3)通信端末100cと通信端末100dとの間の通信
通信端末100cから通信端末100dへとデータを送信する場合には、通信端末100cは、通信端末100dのホスト名である「D」をアドレス解決サーバ200に提示することで、通信端末100cに対応するアドレス束221及び通信端末100dに対応するアドレス束221の夫々をアドレス解決サーバ200から取得する。
その後、通信端末100cは、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100dに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とを比較する。その結果、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100dに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とが同一のIPアドレスであるため、通信端末100cは、更に次段のIPアドレスの比較を行う。具体的には、通信端末100cは、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100dに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」とを比較する。その結果、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100dに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」とが同一のIPアドレスであるため、通信端末100cは、更に次段のIPアドレスの比較を行う。具体的には、通信端末100cは、通信端末100cに対応するアドレス束221の第3段目のIPアドレスである「192.168.1.99」と通信端末100dに対応するアドレス束221の第3段目のIPアドレスである「192.168.1.100」とを比較する。その結果、通信端末100cに対応するアドレス束221の第3段目のIPアドレスである「192.168.1.99」と通信端末100dに対応するアドレス束221の第3段目のIPアドレスである「192.168.1.100」とが異なるIPアドレスであるため、通信端末100cは、通信端末100dに対応するアドレス束221の第3段目のIPアドレスである「192.168.1.100」を、通信端末100cが通信端末100dとの間の通信を行うために用いられるIPアドレスとして決定する。更には、通信端末100cは、通信端末100dに対応するアドレス束221の第3段目のIPアドレスに対応するポート番号である「54321」を、通信端末100cが通信端末100dとの間の通信を行うために用いられる送信先ポート番号として決定する。
その後、通信端末100cは、「192.168.1.100」というIPアドレスを送信先アドレスに設定し且つ「54321」というポート番号を送信先ポート番号に設定した上で、通信端末100dに対してデータを送信する。その結果、通信端末100cから送信されたデータは、直接通信端末100dへと到達する。
尚、いわゆる既存のDNSサーバを備える通信システムでは、通信端末100dのホスト名である「D」をDNSサーバに提示することで得られる通信端末100dのIPアドレスは、通信端末100dが属するローカルネットワーク402bとグローバルネットワーク401とを間接的に接続するNATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」である。この場合、通信端末100cは、「123.45.67.89」というIPアドレスを送信先アドレスに設定した上で、通信端末100dに対してデータを送信する。しかしながら、このデータは、NATルータ300aまでは到達するものの、その後にNATルータ300aから通信端末100dには転送されない。しかしながら、本実施例では、上述したように、各ローカルネットワーク402にDNSサーバを設けるか又は特別なハードウェアである中継センタを設けることなく、通信端末100cから通信端末100dへとデータを送信することができる。つまり、上述した動作を行う通信端末100やアドレス解決サーバ200を低コストで導入することができるという実践上大変有利な効果を享受することができる。
(2−4)通信端末100cと通信端末100eとの間の通信
通信端末100cから通信端末100eへとデータを送信する場合には、通信端末100cは、通信端末100eのホスト名である「E」をアドレス解決サーバ200に提示することで、通信端末100cに対応するアドレス束221及び通信端末100eに対応するアドレス束221の夫々をアドレス解決サーバ200から取得する。
その後、通信端末100cは、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100eに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とを比較する。その結果、通信端末100cに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」と通信端末100eに対応するアドレス束221の左端のIPアドレスである「123.45.67.89」とが同一のIPアドレスであるため、通信端末100cは、更に次段のIPアドレスの比較を行う。具体的には、通信端末100cは、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100eに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.9」とを比較する。その結果、通信端末100cに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.2」と通信端末100eに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.9」とが異なるIPアドレスであるため、通信端末100cは、通信端末100eに対応するアドレス束221の第2段目のIPアドレスである「192.168.0.9」を、通信端末100cが通信端末100eとの間の通信を行うために用いられるIPアドレスとして決定する。更には、通信端末100cは、通信端末100eに対応するアドレス束221の第2段目のIPアドレスに対応するポート番号である「33333」を、通信端末100cが通信端末100eとの間の通信を行うために用いられる送信先ポート番号として決定する。
その後、通信端末100cは、「192.168.0.9」というIPアドレスを送信先アドレスに設定し且つ「33333」というポート番号を送信先ポート番号に設定した上で、通信端末100eに対してデータを送信する。その結果、通信端末100cから送信されたデータは、NATルータ300b及びNATルータ300cを介して通信端末100eへと到達する。
尚、いわゆる既存のDNSサーバを備える通信システムでは、通信端末100eのホスト名である「E」をDNSサーバに提示することで得られる通信端末100eのIPアドレスは、通信端末100eが属するローカルネットワーク403bとグローバルネットワーク401とを間接的に接続するNATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」である。この場合、通信端末100cは、「123.45.67.89」というIPアドレスを送信先アドレスに設定した上で、通信端末100eに対してデータを送信する。しかしながら、このデータは、NATルータ300aまでは到達するものの、その後にNATルータ300aから通信端末100eには転送されない。しかしながら、本実施例では、上述したように、各ローカルネットワーク402にDNSサーバを設けるか又は特別なハードウェアである中継センタを設けることなく、通信端末100cから通信端末100eへとデータを送信することができる。つまり、上述した動作を行う通信端末100やアドレス解決サーバ200を低コストで導入することができるという実践上大変有利な効果を享受することができる。
(3)アドレス束の調査・登録方法
続いて、図6から図8を参照して、アドレス解決サーバ200が備えるアドレス管理テーブル格納部201に格納されるアドレス束221の調査・登録方法について説明する。
(3−1)第1の調査・登録方法
初めに、図6を参照して、アドレス解決サーバ200が備えるアドレス管理テーブル格納部201に格納されるアドレス束221の第1の調査・登録方法について説明する。ここに、図6は、アドレス束221の第1の調査・登録方法を実行する通信端末100−1の基本構成を概念的に示すブロック図である。尚、上述した通信端末100と同一の構成については、同一の参照符号を付してその詳細な説明については省略する。
図6に示すように、通信端末100−1は、上述した通信端末100と同様に、アドレス取得部101と、ネットワーク構成認識部102と、アドレス決定部103と、CPU104と、メモリ105と、通信部106とを備えている。
通信端末100−1は特に、アドレス束221の第1の調査・登録方法を実行するために、本発明における「調査手段」の一具体例を構成するアドレス調査部107と、本発明における「登録手段」の一具体例を構成するアドレス登録部108とを備えている。
ここで、第1の調査・登録方法を実行する場合には、通信システム1中に含まれるNATルータ300が、UPnP(Universal Plug and Play)対応ルータであるものとする。逆に言えば、通信システム1中に含まれるNATルータ300が、UPnP(Universal Plug and Play)対応ルータである場合には、第1の調査・登録方法を実行することで、アドレス束221を調査すると共に当該調査の結果得られたアドレス束221をアドレス管理テーブル格納部201に格納する(つまり、登録する)ことができる。従って、以下では、通信システム1中に含まれるNATルータ300が、UPnP(Universal Plug and Play)対応ルータであることを前提として説明を進める。
この場合、アドレス調査部107は、以下に示す動作を行う。まず、アドレス調査部107は、アドレス解決サーバ200のIPアドレスを引数に設定した「traceroute」コマンドを実行する。その結果、アドレス調査部107は、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでのネットワーク経路に存在するNATルータ300のLAN側のIPアドレスを取得することができる。
続いて、アドレス調査部107は、UPnPにより、通信端末100−1に最も近い側のNATルータ300(以降、通信端末100−1にn番目に近いNATルータ300を、適宜“第n段目のNATルータ300”と称する)のWAN側のIPアドレスを取得する。また、NATルータ300のWAN側のIPアドレスを取得する際に、NATルータ300の上位側からの要求が当該通信端末100−1に届くように、NATルータ300の性的ルーティング設定を同時に行ってもよい。
アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでの間のネットワーク経路に存在するNATルータ300が1つだけである場合には、上述の動作によって取得された第1段目のNATルータ300のWAN側のIPアドレス及び通信端末100−1自身のIPアドレスが、アドレス登録部108の動作により、上述したアドレス束221の形式に変換される。その後、アドレス登録部108の動作により、アドレス束221がアドレス解決サーバ200へと送信される。その結果、アドレス解決サーバ200へと送信されたアドレス束221は、アドレス管理テーブル220の一部としてアドレス管理テーブル格納部201に格納される。
一方で、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでの間のネットワーク経路に存在するNATルータ300が複数である場合には、上述した動作に加えて更に以下の動作が継続して行われる。
続いて、アドレス調査部107は、第1段目のNATルータ300の動作モードをルータモードからブリッジモードへと切り替える。その結果、通信端末100−1の状態は、第1段目のNATルータ300が他のネットワークとの境界となるネットワーク(例えば、ローカルネットワーク)に属していた状態から、第1段目のNATルータ300の更に1段上位に位置する第2段目のNATルータ300が他のネットワークとの境界となるネットワークに属している状態へと切り替わる。つまり、通信端末100−1と第1段目のNATルータ300とが属していたネットワークは、第2段目のNATルータ300が属しているネットワークと統合される。
その後、アドレス調査部107は、DHCP(Dynamic Host Configuration Protocol)を用いて、第2段目のNATルータ300から、第2段目のNATルータ300が属しているネットワークにおけるIPアドレスを取得する。これにより、通信端末100−1は、第2段目のNATルータ300が属しているネットワーク内におけるアクセスが可能となる。
続いて、その結果、アドレス調査部107は、UPnPコマンドにより、第2段目のNATルータ300のWAN側のIPアドレスを取得する。また、NATルータ300のWAN側のIPアドレスを取得する際に、NATルータ300の上位側からの要求が当該通信端末100−1に届くように、NATルータ300の性的ルーティング設定を同時に行ってもよい。
以降、第k(但し、kは2以上の整数)段目のNATルータ300の更に1段上位の第k+1段目のNATルータ300が存在する場合には、アドレス調査部107は、第k段目のNATルータ300の動作モードをルータモードからブリッジモードへと切り替え、DHCPを用いて、第k+1段目のNATルータ300から、第k+1段目のNATルータ300が属しているネットワークにおけるIPアドレスを取得し、UPnPコマンドが実行されることで、第k+1段目のNATルータ300のWAN側のIPアドレスを取得する。
他方で、第2段目のNATルータ300の更に1段上位の第3段目のNATルータ300が存在しない場合には、アドレス調査部107は、第1段目のNATルータ300の動作モードをブリッジモードからルータモードへと切り替える。同様に、第k(但し、kは2以上の整数)段目のNATルータ300の更に1段上位の第k+1段目のNATルータ300が存在しない場合には、アドレス調査部107は、第k−1段目から第1段目のNATルータ300の夫々の動作モードをブリッジモードからルータモードへと切り替える。
続いて、アドレス調査部107は、DHCPを用いて、第1段目のNATルータ300から、第1段目のNATルータ300が属しているネットワークにおけるIPアドレスを取得する。その後、アドレス調査部107は、「ipconfig」コマンドを用いて、通信端末100−1自身のIPアドレスを取得する。
以上のような動作により、アドレス調査部107は、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでのネットワーク経路に存在する一又は複数のNATルータ300の夫々のWAN側のIPアドレス及び通信端末100−1のIPアドレスを取得することができる。このように取得された一又は複数のNATルータ300の夫々のWAN側のIPアドレス及び通信端末100−1のIPアドレスは、アドレス登録部108の動作により、上述したアドレス束221の形式に変換される。その後、アドレス登録部108の動作により、アドレス束221がアドレス解決サーバ200へと送信される。その結果、アドレス解決サーバ200へと送信されたアドレス束221は、アドレス管理テーブル220の一部としてアドレス管理テーブル格納部201に格納される。
尚、上述した説明では、通信端末100−1に近い側に位置するNATルータ300から順にWAN側IPアドレスを取得する例について説明している。しかしながら、通信端末100−1に遠い側に位置する(言い換えれば、グローバルネットワーク401に近い側に位置する)NATルータ300から順にWAN側IPアドレスを取得するように構成してもよい。
具体的には、通信端末100−1とグローバルネットワーク401との間にk個のNATルータが存在する場合には、以下に示す動作によってk個のNATルータ300の夫々のWAN側IPアドレスが取得されてもよい。この場合、まず、アドレス調査部107は、アドレス解決サーバ200のIPアドレスを引数に設定した「traceroute」コマンドを実行する。続いて、アドレス調査部107は、第1段目のNATルータ300から第k−1段目のNATルータ300の夫々の動作モードをルータモードからブリッジモードへと切り替える。その後、アドレス調査部107は、DHCP(Dynamic Host Configuration Protocol)を用いて、第k段目のNATルータ300から、第k段目のNATルータ300が属しているネットワークにおけるIPアドレスを取得する。その後、アドレス調査部107は、UPnPコマンドにより、第k段目のNATルータ300のWAN側のIPアドレスを取得する。続いて、アドレス調査部107は、第k−1段目のNATルータ300の動作モードをブリッジモードからルータモードへと切り替える。その後、アドレス調査部107は、DHCP(Dynamic Host Configuration Protocol)を用いて、第k−1段目のNATルータ300から、第k−1段目のNATルータ300が属しているネットワークにおけるIPアドレスを取得する。その後、アドレス調査部107は、UPnPコマンドにより、第k−1段目のNATルータ300のWAN側のIPアドレスを取得する。以降、このような動作が第1段目のNATルータ300の動作モードがルータモードに切り替えられるまで繰り返される。その結果、アドレス調査部107は、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでのネットワーク経路に存在する一又は複数のNATルータ300の夫々のWAN側のIPアドレス及び通信端末100−1のIPアドレスを取得することができる。
尚、上述した各種コマンド(例えば、「traceroute」コマンドや「ipconfig」コマンド)は一例であって、これらのコマンドと同等の機能を実現する他のコマンド(例えば、「tracert」コマンドや「tracepath」コマンド等)を用いてもよい。或いは、これらのコマンドを実行することに代えて、これらのコマンドと同等の機能を実現する固有の処理部を通信端末100−1に実装してもよい。いずれにせよ、上述した動作を実現する何らかの処理部を利用すれば、アドレス束221の調査・登録を好適に行うことができる。
ここで、より明確な説明のために、図1に示す通信システム1に含まれる通信端末100cが図6に示す構成を有すると共に当該通信端末100c(つまり、100−1c)がアドレス束221を調査・登録する場合の動作例について説明する。
まず、通信端末100−1cが備えるアドレス調査部107は、アドレス解決サーバ200のIPアドレスを引数に設定した「traceroute」コマンドを実行する。その結果、アドレス調査部107は、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1cに至るまでのネットワーク経路に存在するNATルータ300のLAN側のIPアドレスを取得することができる。つまり、アドレス調査部107は、NATルータ300aのLAN側のローカルIPアドレスである「192.168.0.1」とNATルータ300bのLAN側のローカルIPアドレスである「192.168.1.1」とを取得する。
続いて、アドレス調査部107は、UPnPコマンドにより、第1段目のNATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」を取得する。
続いて、アドレス調査部107は、第1段目のNATルータ300bの動作モードをルータモードからブリッジモードへと切り替える。その結果、通信端末100−1cと通信端末100dと第1段目のNATルータ300bとが属していたローカルネットワーク402bは、通信端末100bと第2段目のNATルータ300aとが属しているローカルネットワーク401と統合される。
その後、アドレス調査部107は、DHCPを用いて、ローカルネットワーク402aにおけるローカルIPアドレスを取得する。続いて、アドレス調査部107は、UPnPコマンドにより、第2段目のNATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」を取得する。
続いて、アドレス調査部107は、第1段目のNATルータ300bの動作モードをブリッジモードからルータモードへと切り替える。その後、アドレス調査部107は、DHCPを用いて、ローカルネットワーク402bにおけるローカルIPアドレスを取得する。その後、アドレス調査部107は、「ipconfig」コマンドを用いて、通信端末100−1c自身のローカルIPアドレスである「192.168.1.99」を取得する。
以上のような動作により、通信端末100−1cが備えるアドレス調査部107は、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」と、NATルータ300bのWAN側のローカルIPアドレスである「192.168.0.2」と、通信端末100−1cのローカルIPアドレスである「192.168.1.99」とを取得することができる。その結果、図4に示したアドレス束221が生成される。
このように、第1の調査・登録方法によれば、通信端末100−1自身によってアドレス束221を取得することができる。その結果、アドレス束221をアドレス解決サーバ200が備えるアドレス管理テーブル格納部201に確実に登録することができる。
(3−2)第2の調査・登録方法
続いて、図7を参照して、アドレス解決サーバ200が備えるアドレス管理テーブル格納部201に格納されるアドレス束221の第2の調査・登録方法について説明する。ここに、図7は、第2の調査・登録方法が実行された結果取得されるアドレス束221を含むアドレス管理テーブル220を概念的に示すデータ構造図である。
既存のネットワーク中に存在するNATルータ300は、その全てがUPnP対応ルータであるとは限らない。この場合、第1の調査・登録方法によって、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1に至るまでのネットワーク経路に存在する一又は複数のNATルータ300の夫々のWAN側のIPアドレスの全てを取得することは困難であるとも考えられる。
従って、NATルータ300がUPnP非対応ルータを含む場合には、図7(a)に示すように、通信端末100のMAC(Media Access Control)アドレスをアドレス束221に含めるように構成してもよい。或いは、図7(b)に示すように、NATルータ300のLAN側のIPアドレスをアドレス束221に含めるように構成してもよい。尚、図7(b)では、括弧書きによってNATルータ300のLAN側のIPアドレスを括ることで、NATルータ300のWAN側のIPアドレスと区別して表現している。
この場合であって、上述した効果を相応に享受することができる。尚、アドレス束221がMACアドレスやNATルータ300のLAN側のIPアドレスを含んでいる場合には、通信端末100は、図5に示すフローチャートを多少変えたフローに従って動作することが好ましい。この動作については、後に詳述する(図9等参照)。
尚、NATルータ300がUPnP対応ルータを含む場合においても、通信端末100のMAC(Media Access Control)アドレスやNATルータ300のLAN側のIPアドレスをアドレス束221に含めるように構成してもよいことは言うまでもない。
(3−3)第3の調査・登録方法
続いて、図8を参照して、アドレス解決サーバ200が備えるアドレス管理テーブル格納部201に格納されるアドレス束221の第3の調査・登録方法について説明する。ここに、図8は、第3の調査・登録方法を実行する通信システム2の基本構成を概念的に示すブロック図である。
既存のネットワーク中に存在するNATルータ300は、その全てがUPnP対応ルータであるとは限らない。この場合、第1の調査・登録方法によって、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100に至るまでのネットワーク経路に存在する一又は複数のNATルータ300の夫々のWAN側のIPアドレスの全てを取得することは困難であるとも考えられる。
従って、NATルータ300がUPnP非対応ルータを含む場合には、図8に示すように、通信システム2に対して、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100に至るまでのネットワーク経路に存在する一又は複数のNATルータ300のうちの最上位のNATルータ300(つまり、グローバルネットワーク401に属するNATルータ300)のWAN側のIPアドレス(言い換えれば、通信端末100c−1自身のグローバルIPアドレス)を取得可能なアドレス調査サーバ500を、グローバルネットワーク401上に(言い換えれば、アドレス解決サーバ200が属するネットワーク上に)に新たに設けるように構成してもよい。
ここで、より明確な説明のために、図8に示す通信システム2に含まれる通信端末100cが、アドレス調査サーバ500を利用してアドレス束221を取得・登録する場合の動作例について説明する。
まず、通信端末100−1cが備えるアドレス調査部107は、アドレス解決サーバ200のIPアドレスを引数に設定した「traceroute」コマンドを実行する。その結果、アドレス調査部107は、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100−1cに至るまでのネットワーク経路に存在するNATルータ300のLAN側のIPアドレスを取得することができる。つまり、アドレス調査部107は、NATルータ300aのLAN側のローカルIPアドレスである「192.168.0.1」とNATルータ300bのLAN側のローカルIPアドレスである「192.168.1.1」とを取得する。
続いて、アドレス調査部107は、「ipconfig」コマンドを用いて、通信端末100−1c自身のローカルIPアドレスである「192.168.1.99」を取得する。
続いて、アドレス調査部107は、アドレス調査サーバ500に問い合わせを行うことで、通信端末100c−1自身のグローバルIPアドレス(つまり、最上位のNATルータ300aのWAN側のグローバルIPアドレス)を取得する。このような要求を受けるため、アドレス調査サーバ500は、NATルータ300aのWAN側のグローバルIPアドレスを取得することが好ましい。
以上のような動作により、通信端末100−1cが備えるアドレス調査部107は、NATルータ300aのWAN側のグローバルIPアドレスである「123.45.67.89」と、NATルータ300bのLAN側のローカルIPアドレスである「192.168.1.1」と、通信端末100−1cのローカルIPアドレスである「192.168.1.99」とを取得することができる。その結果、図7(b)に示したアドレス束221が生成される。
このように、第3の調査・登録方法によれば、アドレス調査サーバ500を利用してアドレス束221を取得することができる。その結果、アドレス束221をアドレス解決サーバ200が備えるアドレス管理テーブル格納部201に登録することができる。
尚、図8に示す例では、アドレス調査サーバ500を独立して設ける例について説明している。しかしながら、アドレス調査サーバ500を独立して設けることに代えて、アドレス調査サーバ500と同様の動作を行う機能ブロックを、アドレス解決サーバ200に追加してもよい。
或いは、通信端末100に対して、アドレス調査サーバ500と同様の機能を行う機能ブロックを追加してもよい。この場合、例えばアドレス束221を調査・登録しようとしている通信端末100は、当該通信端末100以外の他の通信端末100に問い合わせを行うことで、他の通信端末100との間に位置するNATルータ300のWAN側のグローバルIPアドレス)を取得することができる。
(3−4)第4の調査・登録方法
続いて、アドレス解決サーバ200が備えるアドレス管理テーブル格納部201に格納されるアドレス束221の第4の調査・登録方法について説明する。
上述した説明では、通信端末100自身の動作によって、アドレス束221を生成する動作について説明している。しかしながら、一般的なNATルータ300では、WEBブラウザ等を用いたNATルータ用の設定画面を用いて、NATルータ300のWAN側のIPアドレスをユーザが調べることができる。このため、このようなNATルータ用の設定画面が存在することを考慮して、通信端末100のユーザの手によって、アドレス解決サーバ200が属するグローバルネットワーク401から通信端末100に至るまでのネットワーク経路に存在する一又は複数のNATルータ300の夫々のWAN側のIPアドレスを取得するように構成してもよい。
(3−5)LAN側アドレスやMACアドレスを登録した場合の動作例
上述したように、アドレス束221がMACアドレスやNATルータ300のLAN側のIPアドレスを含んでいる場合には、通信端末100は、図5に示すフローチャートとは異なるフローに従って動作することが好ましい。この動作について、図9から図12を参照して説明を進める。ここに、図9から図12は、アドレス束221がMACアドレスやNATルータ300のLAN側のIPアドレスを含んでいる場合の通信システム1の動作を概念的に示すフローチャートである。尚、図5に示すフローチャートと同様の動作については、同一の参照符号を付してその詳細な説明については省略する。
図9に示すように、まず、送信元通信端末100が備えるアドレス取得部101の動作により、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々が、アドレス解決サーバ200から取得される(ステップS101)。
続いて、送信元通信端末100が備えるネットワーク構成認識部102の動作により、ステップS101において取得された送信元通信端末100に対応するアドレス束221の左端のIPアドレスと、ステップS101において取得された送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが異なるか否かが判定される(ステップS102)。
ステップS102における判定の結果、送信元通信端末100に対応するアドレス束221の左端のIPアドレスと送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが異なると判定された場合には(ステップS102:Yes)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の左端のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS103)。その後、ステップS103において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方、ステップS102における判定の結果、送信元通信端末100に対応するアドレス束221の左端のIPアドレスと送信先通信端末100に対応するアドレス束221の左端のIPアドレスとが同一であると判定された場合には(ステップS102:No)、図10に示すように、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、更に次段のIPアドレス(以降、適宜“第m(但し、mは2以上の整数)段目のIPアドレス”と称する)が存在するか否かが判定される(ステップS105)。
ステップS105における判定の結果、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、第m段目のIPアドレスが存在しないと判定された場合には(ステップS105:No)、図11に示すように、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221の左端のIPアドレスが、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS108)。この動作は、NATルータ300がヘアピン対応ルータである可能性がある場合に行われることが好ましい。
その後、送信元通信端末100が備えるCPU100の制御の下に、ステップS108において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が可能か否か判定される(ステップS109)。NATルータ300がヘアピン対応ルータであれば、データの送信は可能である。
ステップS109の判定の結果、送信元通信端末100から送信先通信端末100へとデータの送信が可能であると判定された場合には(ステップS109:Yes)、そのままデータの送信が継続される(ステップS104)。他方で、ステップS109の判定の結果、送信元通信端末100から送信先通信端末100へとデータの送信が可能でないと判定された場合には(ステップS109:No)、データの送信を行うことなく、動作を終了する。
再び図10において、他方で、ステップS105における判定の結果、送信元通信端末100に対応するアドレス束221及び送信先通信端末100に対応するアドレス束221の夫々の中に、第m段目のIPアドレスが存在すると判定された場合には(ステップS105:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの少なくとも一方が、NATルータ300のLAN側のIPアドレスであるか否かが判定される(ステップS201)。
ステップS201における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの少なくとも一方が、NATルータ300のLAN側のIPアドレスであると判定された場合には(ステップS201:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスが、NATルータ300のLAN側のIPアドレスであるか否かが判定される(ステップS202)。
ステップS202における判定の結果、送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスが、NATルータ300のLAN側のIPアドレスでないと判定された場合には(ステップS202:No)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレス(つまり、送信先通信端末100のローカルIPアドレス)が、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS207)。その後、ステップS207において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方で、ステップS202における判定の結果、送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスが、NATルータ300のLAN側のIPアドレスであると判定された場合には(ステップS202:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの双方が、NATルータ300のLAN側のIPアドレスであるか否かが判定される(ステップS203)。
ステップS203における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの双方が、NATルータ300のLAN側のIPアドレスでないと判定された場合には(ステップS203:No)、図11のステップS108、ステップS109及びステップS104の動作が行われる。但し、ここでは、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレスを引数とするARP(Address Resolution Protocol)を利用することで送信先通信端末100のMACアドレスを取得してもよい。この場合、取得したMACアドレスが送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のMACアドレスと同一である場合には、図11のステップS108、ステップS109及びステップS104の動作を行うことに代えて、送信先通信端末100のIPアドレス(つまり、送信先通信端末100のローカルIPアドレス)を送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われてもよい(ステップS207)。
他方で、ステップS203における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの双方が、NATルータ300のLAN側のIPアドレスであると判定された場合には(ステップS203:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが異なるか否かが判定される(ステップS204)。
ステップS204における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが異なると判定された場合には(ステップS204:Yes)、図11のステップS108、ステップS109及びステップS104の動作が行われる。
他方で、ステップS204における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが同一であると判定された場合には(ステップS204:No)、ステップS105へ戻り、アドレス束221中に含まれる更に次段のIPアドレスを対象にして、ステップS201以降の動作が行われる。
他方で、ステップS201における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレス及び送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスの双方が、NATルータ300のLAN側のIPアドレスでないと判定された場合には(ステップS201:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが異なるネットワークに属するものであるか否かが判定される(ステップS205)。
ステップS205における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが異なるネットワークに属すると判定された場合には(ステップS205:Yes)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレス(つまり、送信先通信端末100のローカルIPアドレス)が、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS207)。その後、ステップS207において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方で、ステップS205における判定の結果、送信元通信端末100に対応するアドレス束221中の第m段目のIPアドレスと送信先通信端末100に対応するアドレス束221中の第m段目のIPアドレスとが異なるネットワークに属さないと判定された場合には(ステップS205:No)、続いて、送信元通信端末100が備えるネットワーク構成認識部102の動作により、アドレス束221の更に前段に(つまり、第m−1段目から第1段目に)、NATルータ300のLAN側アドレスが含まれているか否かが判定される(ステップS206)。
ステップS206における判定の結果、アドレス束221の更に前段に(つまり、第m−1段目から第1段目に)、NATルータ300のLAN側アドレスが含まれていないと判定された場合には(ステップS206:No)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレス(つまり、送信先通信端末100のローカルIPアドレス)が、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS207)。その後、ステップS207において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
他方で、ステップS206における判定の結果、アドレス束221の更に前段に(つまり、第m−1段目から第1段目に)、NATルータ300のLAN側アドレスが含まれていると判定された場合には(ステップS206:Yes)、図12に示すように、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレスを引数とするARP(Address Resolution Protocol)を利用することで送信先通信端末100のMACアドレスが取得される(ステップS208)。
続いて、送信元通信端末100が備えるネットワーク構成認識部102の動作により、送信先通信端末100のMACアドレスが取得されたか否かが判定される(ステップS209)。
ステップS209における判定の結果、送信先通信端末100のMACアドレスが取得されなかったと判定された場合には(ステップS209:No)、図11のステップS108、ステップS109及びステップS104の動作が行われる。
他方で、ステップS209における判定の結果、送信先通信端末100のMACアドレスが取得されたと判定された場合には(ステップS209:Yes)、送信元通信端末100が備えるネットワーク構成認識部102の動作により、ステップS208において取得されたMACアドレスが送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のMACアドレスと同一であるか否かが判定される(ステップS210)。
ステップS210における判定の結果、ステップS208において取得されたMACアドレスが送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のMACアドレスと同一でないと判定された場合には(ステップS210:No)、図11のステップS108、ステップS109及びステップS104の動作が行われる。
他方で、ステップS210における判定の結果、ステップS208において取得されたMACアドレスが送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のMACアドレスと同一であると判定された場合には(ステップS210:Yes)、送信元通信端末100が備えるアドレス決定部103の動作により、送信先通信端末100に対応するアドレス束221に含まれる送信先通信端末100のIPアドレス(つまり、送信先通信端末100のローカルIPアドレス)が、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスとして決定される(ステップS207)。その後、ステップS207において決定されたIPアドレスを送信先アドレスに設定した上で、送信元通信端末100から送信先通信端末100へとデータの送信が行われる(ステップS104)。
以上のような動作を行うことで、アドレス束221がMACアドレスやNATルータ300のLAN側のIPアドレスを含んでいる場合であっても、送信元通信端末100が送信先通信端末100との間の通信を行うために用いられるIPアドレスを好適に決定することができる。その結果、上述した各種効果を好適に享受することができる。
本発明は、上述した実施例に限られるものではなく、請求の範囲及び明細書全体から読み取れる発明の要旨或いは思想に反しない範囲で適宜変更可能であり、そのような変更を伴う通信端末、アドレス解決サーバ、及びコンピュータプログラムもまた本発明の技術的範囲に含まれるものである。