以下、本発明を図示する実施形態に基づいて説明する。なお、ここで述べる実施形態は、PCT/JP2016/055960に基づく優先権主張を伴う国際出願PCT/JP2017/006131(以下、先願となる国際出願と呼ぶ)に記載された発明(以下、先願基本発明と呼ぶ)を基礎として、この先願基本発明に接続仲介装置を介した迂回通信の機能を付加することにより、「端末装置間の直接通信に支障がある場合にも、両者間での通信を支障なく行うことが可能になる」という固有の付加的な作用効果が得られるようにしたものである。
このような事情から、ここでは、先願基本発明を基礎とした本発明の実施形態を、本発明の好ましい一実施形態として述べることにする。そこで、以下の§1〜§4において、まず、先願基本発明の説明を行い、§5以降において、本発明に固有の特徴について述べることにする。したがって、以下の§1〜§4で述べる内容(図1〜図20に示す内容)は、実質的に先願となる国際出願PCT/JP2017/006131に記載された実施形態と同じものである。
<<< §1. 先願基本発明の第1の実施形態 >>>
<1−1. 先願基本発明の第1の実施形態の構成>
図1は、先願基本発明の第1の実施形態に係るネットワーク通信システムの全体構成を示すブロック図である。図示のとおり、このネットワーク通信システムは、接続仲介装置100と複数の端末装置200A〜200Dによって構成されており、これらの各装置はいずれもネットワークN(この例では、インターネット)を介して相互に接続することが可能である。
図では、説明の便宜上、4台の端末装置200A〜200Dを用いた例を示すことにするが、実用上は、より多数の端末装置を利用するのが一般的である。各端末装置200A〜200Dは、共通の構成を有する同一の装置である。そこで、ここでは、この共通の端末装置について言及する場合は符号200を用いて示し、相互に区別する必要がある場合には、符号末尾にA〜Dを付して示すことにする。端末装置200の内部構成要素を示す各符号についても同様である。
結局、このネットワーク通信システムは、ネットワークNを介して相互に接続可能な複数の端末装置200A〜200Dと、これら複数の端末装置間の接続を仲介する接続仲介装置100と、を備えたシステムということになる。端末装置200としては、パソコン、携帯電話、タブレット型端末など、ネットワークNに接続して通信を行う機能を有する様々な電子機器を利用することができる。一方、接続仲介装置100は、これら各端末装置200A〜200DからネットワークNを介してアクセスを受けるサーバコンピュータによって構成されている。
各端末装置200A〜200Dには、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置100は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。ここでは、図示のとおり、端末装置200A,200B,200C,200Dには、それぞれ「0010」,「0020」,「0030」,「0040」なる端末IDが付与されているものとする。
なお、先願基本発明を実施する上で、端末IDは、個々の端末装置を相互に識別することができる情報であれば、どのような情報であってもかまわない。図示の例では、4台の端末装置しか用いられていないため、「0010」のような4桁の数字を端末IDとして用いれば十分であるが、各端末装置を相互に識別するためには、ユニークなIDを用いる必要があるので、実用上は、より桁数の多い数字もしくは数字とアルファベットの組み合わせを用いるのが好ましい。具体的には、個々の端末装置に内蔵されているCPUのシリアル番号、通信インターフェイスに付与されたMACアドレス、携帯電話を端末装置として用いる場合は電話番号やSIMカードのシリアル番号、などを端末IDとして用いることが可能である。
各端末装置200A〜200Dには、それぞれ自己のネットワーク上での所在を示す所在アドレスが付与されている。図示の例の場合、端末装置200A,200B,200C,200Dには、それぞれAD1,AD2,AD3,AD4なる所在アドレスが付与されている。所在アドレスとしては、ネットワーク上で当該端末装置の所在を一義的に決定できるアドレスであれば、どのようなアドレスを用いてもよい。図示の例のように、ネットワークNとしてインターネットを用い、通信プロトコルとしてIPを利用する場合は、個々の端末装置200のネットワークN上での所在を示す所在アドレスとして、グローバルIPアドレスもしくはNAT−IDを用いるのが好ましい。
端末IDが、個々の端末装置を相互に識別するために必要な情報であるのに対して、所在アドレスは、ネットワークNを介して個々の端末装置をアクセスするために必要な情報である。しかも多くの端末装置の場合、所在アドレスは常に一定ではなく、時事刻々と変化する。たとえば、携帯電話やモバイルパソコンなどの携帯型端末装置の場合、移動とともに交信相手となる基地局が変化するため、所在アドレスも時間的に変化する。また、デスクトップ型パソコンのような定点設置型の端末装置の場合も、プロバイダから付与されるIPアドレスなどが更新されるため、やはり所在アドレスが時間的に変化するのが一般的である。
後述するように、先願基本発明に用いる端末装置200は、自己のネットワーク上での所在を示す所在アドレスを、ネットワークNを介して接続仲介装置100に通知する機能を有している。このため、接続仲介装置100は、各端末装置200A〜200Dの最新アドレスを常に把握することができ、必要に応じて、各端末装置200A〜200Dにアクセスすることが可能である。
図示のとおり、接続仲介装置100には、アドレステーブル格納部110、アドレステーブル更新部120、通信先アドレス返信部130が設けられている。前述したとおり、この接続仲介装置100は、実際には、サーバコンピュータなどのコンピュータによって構成される。したがって、図に個々のブロックとして示されている各構成要素は、実際には、コンピュータに専用のプログラムを組み込むことにより構築されることになる。
アドレステーブル格納部110には、各端末装置200A〜200Dのそれぞれについて、端末IDと所在アドレスとを対応づけたアドレステーブルTが格納されており、アドレステーブル更新部120は、各端末装置200A〜200Dからの通知に基づいて、このアドレステーブルTの内容を更新する処理を行う。また、通信先アドレス返信部130は、各端末装置200A〜200Dから接続仲介依頼があると、アドレステーブルTを参照することにより、通信先アドレスを返信する処理を行う。
図には、アドレステーブルTとして、4台の端末装置200A〜200Dのそれぞれについて、端末IDと所在アドレスとの対応関係を示す情報が格納されている。具体的には、端末装置200Aについては端末ID「0010」と所在アドレス「AD1」とが対応づけられ、端末装置200Bについては端末ID「0020」と所在アドレス「AD2」とが対応づけられ、端末装置200Cについては端末ID「0030」と所在アドレス「AD3」とが対応づけられ、端末装置200Dについては端末ID「0040」と所在アドレス「AD4」とが対応づけられている。
続いて、図2を参照しながら、端末装置200の詳細構成および個々の構成要素の具体的な処理動作を説明する。図示のとおり、端末装置200には、接続仲介依頼部210、通信要求受付部220、通信先セッション確立部230、通信開始要求部240、自己アドレス通知部250、通信元セッション確立部260が設けられている。
この端末装置200も、実際には、種々のコンピュータ(携帯電話などの機器も含む)によって構成され、図に個々のブロックとして示されている各構成要素は、実際には、コンピュータに専用のプログラムを組み込むことにより構築される。なお、実際の端末装置200には、この他にも種々の構成要素が組み込まれている。たとえば、端末装置200がスマートフォンであれば、様々なアプリケーションプログラムを組み込むことにより、様々な処理機能をもった構成要素が付加されることになるが、ここでは、先願基本発明に直接関係する構成要素のみを図にブロックとして示すことにし、その他の構成要素についての説明は省略する。もちろん、端末装置200には、ユーザからの指示入力や文字入力を行う入力インターフェイスや、ユーザに情報を提示するためのディスプレイなどの構成要素も備わっているが、これらの構成要素についての説明も省略する。
結局、図2において、端末装置200内に6つのブロックとして描かれている構成要素は、先願基本発明に係る端末装置200において必須の機能要素ということになる。このブロック図には、各ブロック間の信号の流れを示す矢印として、太線矢印、細線矢印、白抜矢印の3通りの矢印が用いられている。ここで、太線矢印は、端末装置200と接続仲介装置100との間でやりとりされる、通信セッション確立前の信号の流れを示しており、細線矢印は、一対の端末装置200の間でやりとりされる、通信セッション確立前の信号の流れを示している。そして、白抜矢印は、一対の端末装置200の間でやりとりされる、通信セッション確立後の信号の流れを示している。
また、図2では、端末装置200内の6つの構成要素が、楕円、矩形、二重矩形という3通りのブロックを用いて描かれているが、これは、各構成要素の役割分担を示すための便宜である。具体的には、楕円ブロックで示されている構成要素は、端末装置200が「アドレス通知」の処理を実行するための構成要素であり、矩形ブロックで示されている構成要素は、端末装置200が「通信元」として機能する場合に必要な処理を実行する構成要素であり、二重矩形ブロックで示されている構成要素は、端末装置200が「通信先」として機能する場合に必要な処理を実行する構成要素である。
本願において、「通信元」および「通信先」という用語は、2台の端末装置が相互に通信を行う場合に、これら2台を区別するために用いる用語であり、自発的に通信を開始するための処理を行う側を「通信元」と呼び、この「通信元」からの働きかけに応じて、当該「通信元」と通信を行うために必要な処理を行う側を「通信先」と呼んでいる。たとえば,2台の端末装置を電話として使う場合、発呼側の装置が「通信元」であり、着呼側の装置が「通信先」になる。「通信元」の端末装置は、特定の「通信先」を指定して、自発的に通信を開始するための処理を行うことになる。
もちろん、端末装置200は、「通信元」になったり「通信先」になったりする。「通信元」になったときには、図2に矩形ブロックで示されている構成要素による処理が行われ、「通信先」になったときには、図2に二重矩形ブロックで示されている構成要素による処理が行われる。以下、端末装置200の6つの構成要素の各機能を順に説明する。
上述したように、楕円ブロックで示されている自己アドレス通知部250は、「アドレス通知」の処理を実行するための構成要素であり、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置100に対して通知する処理を実行する。所在アドレスとしてIPアドレスを用いるのであれば、自己アドレス通知部250は、現時点で自己に付与されたIPアドレスをネットワークNを介して接続仲介装置100に通知する処理を行うことになる。
通常、インターネットに接続可能な端末装置200には、インターネットプロバイダから所定のグローバルIPアドレスが付与されるので、自己アドレス通知部250は、端末装置200に付与されたグローバルIPアドレスを、所在アドレスとして接続仲介装置100に対して通知すればよい。また、ルータのNAT機能を利用して、プライベートIPアドレスが付与されている場合には、NAT−IDを所在アドレスとして接続仲介装置100に対して通知すればよい。所在アドレスを通知する際には、端末IDを同時に送信するようにする。
図1に示すアドレステーブル更新部120は、このような通知を受けて、アドレステーブルTの更新を行う。たとえば、端末装置200Aから接続仲介装置100に対して、端末ID「0010」と所在アドレス「AD1」とが通知された場合、アドレステーブル更新部120は、端末ID「0010」と所在アドレス「AD1」とを対応づけてアドレステーブルTに格納する処理を行う。
前述したとおり、一般的な端末装置200の場合、所在アドレスが時間的に変化する。したがって、実用上は、自己アドレス通知部250には、所定周期で繰り返して、現時点の自己(端末装置200)の所在アドレスを通知する機能をもたせておくのが好ましい。たとえば、自己アドレス通知部250が1分おきに繰り返し通知を行うようにすれば、アドレステーブルTは1分おきに最新の情報に更新されることになる。
あるいは、自己アドレス通知部250には、自己(端末装置200)の所在アドレスが変更になったときに、現時点の所在アドレスを通知する機能をもたせておくようにしてもよい。すなわち、初めて所在アドレスが付与された段階で、当該所在アドレスを初期状態のアドレスとして通知させ、その後は、所在アドレスが変更になるたびに新たな所在アドレスを通知させるようにすればよい。もちろん、所定周期で繰り返し通知する運用と、所在アドレスが変更になったときに通知する運用とを組み合わせてもかまわない。
次に、図2に矩形ブロックで示されている4つの構成要素について説明する。上述したように、これら4つの構成要素は、端末装置200が「通信元」として機能する場合に必要な処理を実行する。
まず、通信要求受付部220は、自己を通信元として、通信先の別な端末装置に対する通信要求を受け付ける処理を行う。たとえば、端末装置200(通信元)のユーザが、特定の相手に電話をかけたい場合、当該相手が所持する別な端末装置(通信先)に対して通信を行いたい旨の通信要求を行うことになる。この通信要求は、たとえば、図示されていない入力インターフェイスを介したユーザの操作入力(たとえば、タッチパネル上での操作)として与えられ、相手先の端末装置を特定するための何らかの情報を含むものになる。
接続仲介依頼部210は、通信要求受付部220によって通信要求が受け付けられたときに、接続仲介装置100に対して、通信先の別な端末装置の端末IDを特定するための通信先特定情報を含む接続仲介依頼を送信する。ここで、接続仲介依頼に含まれる通信先特定情報は、通信先の別な端末装置の端末IDであってもよいし、当該端末IDを特定することが可能な別な情報であってもかまわない(詳細は、§3−1で述べる)。
こうして、接続仲介依頼部210から送信された接続仲介依頼は、ネットワークNを介して接続仲介装置100へと伝達される(前述したように、図における太線矢印は、端末装置200と接続仲介装置100との間でやりとりされる、通信セッション確立前の信号の流れを示している)。すると、接続仲介装置100からは、図に太線矢印で示すように、通信先となる別な端末装置のネットワーク上での所在を示す通信先アドレスが返信されてくる。これは、図1に示す通信先アドレス返信部130の機能によるものである。
すなわち、通信先アドレス返信部130は、端末装置200の接続仲介依頼部210から、接続仲介依頼が送信されてきたときに、アドレステーブルTを参照して、接続仲介依頼に含まれている通信先特定情報によって特定される端末IDに対応づけられている所在アドレスを通信先アドレスとして返信する処理を行う。もちろん、返信の相手先は、接続仲介依頼を行った端末装置200である。要するに、通信先アドレス返信部130は、通信元の端末装置から通信先を特定した接続仲介依頼があると、アドレステーブルTを用いて、当該通信先の現時点での所在アドレスを検索し、これを通信元の端末装置に返信する処理を行うことになる。
このように、接続仲介依頼部210によって接続仲介依頼を行うと、接続仲介装置100からは、通信先の別な端末装置のネットワーク上での所在を示す通信先アドレスが返信されてくる。こうして返信されてきた通信先アドレスは、通信開始要求部240によって受信される。通信開始要求部240は、この通信先アドレスにネットワークNを介してアクセスして通信開始要求を行う。図に細線矢印で示すとおり、この通信開始要求は、1台の端末装置200(通信元)から別な1台の端末装置200(通信先)に宛てた信号ということになる。
このように、通信開始要求部240によって、通信先の別な端末装置に対して通信開始要求を送信すると、当該通信先の別な端末装置からは、この通信開始要求に応じて、通信開始受諾確認が返信されてくる(図の右側の細線矢印:この返信処理については、通信先の別な端末装置の通信先セッション確立部230の処理として後述する)。こうして返信されてきた通信開始受諾確認は、通信元セッション確立部260によって受信される。通信元セッション確立部260は、この通信開始受諾確認を受信したら、当該通信先の別な端末装置との間に通信セッションを確立して通信を開始する。図2の右端に描かれた白抜矢印は、このようにして通信セッションが確立した後の両端末間の信号(通信パケット)の流れを示している。
以上、図2に矩形ブロックで示されている4つの構成要素、すなわち、端末装置200が「通信元」として機能する場合に処理を実行する構成要素について説明したが、続いて、図2に二重矩形ブロックで示されている構成要素、すなわち、端末装置200が「通信先」として機能する場合に処理を実行する構成要素について説明する。
図2において、二重矩形ブロックで示されている構成要素は、通信先セッション確立部230である。この通信先セッション確立部230は、通信元の別な端末装置から、自己を通信先とする通信開始要求がなされたら(図の左側の下向き細線矢印)、当該通信元の別な端末装置に対して通信開始受諾確認を送信し(図の左側の上向き細線矢印)、当該通信元の別な端末装置との間に通信セッションを確立して通信を開始する。図2の左端に描かれた白抜矢印は、このようにして通信セッションが確立した後の両端末間の信号(通信パケット)の流れを示している。
結局、通信元端末装置と通信先端末装置との間の通信セッション確立後の通信は、通信元端末装置の通信元セッション確立部260と通信先端末装置の通信先セッション確立部230との間で行われることになる。別言すれば、図2の右端の白抜矢印は、ネットワークNを介して、図2の左端の白抜矢印に連なることになる。
<1−2. 第1の実施形態における具体的な通信手順>
これまで、図1および図2を参照しながら、先願基本発明の第1の実施形態に係るネットワーク通信システムの構成要素である接続仲介装置100および端末装置200の各構成要素およびその機能を説明した。ここでは、この第1の実施形態に係るネットワーク通信システムにおける通信手順を、具体例に即して説明することにする。
図3は、図2に示す端末装置における自己アドレス通知部250の機能を示すブロック図である。図の上段には接続仲介装置100が示され、図の下段には2組の端末装置200A,200Bが示されている。ここでは、端末装置200C,200Dの図示は省略するが、自己アドレス通知部250の機能は同じである。なお、前述したとおり、接続仲介装置100と各端末装置200A,200Bとの間の情報のやりとり(太線矢印で示す)は、実際にはネットワークNを介して行われるが、ここでは説明の便宜上、ネットワークNの図示は省略する。
図3に示す端末装置200A,200Bは、図2に示す端末装置200と同様に6つの構成要素を有している。すなわち、端末装置200Aは、構成要素210A〜260Aを有し、端末装置200Bは、構成要素210B〜260Bを有しており、これら各構成要素は、図2に示す構成要素210〜260と同一のものである(符号末尾のA,Bは、いずれの端末装置の構成要素であるかを区別するために付したものである)。なお、この図3は、端末装置200A,200Bの自己アドレス通知機能を説明するための図であるので、自己アドレス通知部250A,250B以外の構成要素のブロックは破線で示してある。
自己アドレス通知部250A,250Bは、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置100内のアドレステーブル更新部120に対して通知する処理を行う。図3には、自己アドレス通知部250Aからアドレステーブル更新部120への通知として、「0010:AD1」なるデータが送信されている例が示されているが、これは、自己の端末ID「0010」とともに自己の現時点での所在アドレス「AD1」を送信していることを示している。同様に、自己アドレス通知部250Bからアドレステーブル更新部120への通知として、「0020:AD2」なるデータが送信されている例が示されているが、これは、自己の端末ID「0020」とともに自己の現時点での所在アドレス「AD2」を送信していることを示している。
各端末装置200A,200Bの自己アドレス通知部250A,250Bから、このような通知を受けたアドレステーブル更新部120が、当該通知に基づいて、アドレステーブルTの内容を更新する処理を行う点は、既に§1−1で述べたとおりである。また、自己アドレス通知部250A,250Bが、所定周期で繰り返して、もしくは、所在アドレスが変更になったときに、現時点の所在アドレスを通知する処理を行う点も§1−1で述べたとおりである。
このように、自己アドレス通知部250が行う所在アドレスの通知処理は、端末装置間の通信を開始するための直接的な処理ではないが、いつでも通信を開始できるようにするための準備処理ということができる。この通知処理を行うことにより、接続仲介装置100内のアドレステーブルTを最新の状態に保つことができ、実際に、特定の端末装置間で通信を行う必要が生じたときに、接続仲介装置100による正しい仲介処理が実現できるのである。
続いて、特定の端末装置間で実際に通信を開始する際の処理手順を説明する。図4は、図1に示すネットワーク通信システムにおいて、通信元端末装置200Aと通信先端末装置200Bとの間の通信セッション確立の手順を示すブロック図である。この図4においても、図の上段には接続仲介装置100が示され、図の下段には2組の端末装置200A,200Bが示されている。ここでも、接続仲介装置100と端末装置200Aとの間の情報のやりとり(太線矢印で示す)や、端末装置200A,200B間の情報のやりとり(細線矢印で示す)は、実際にはネットワークNを介して行われるが、説明の便宜上、ネットワークNの図示は省略する。
また、ここでは、説明の便宜上、端末装置200Aを通信元、端末装置200Bを通信先とした場合の手順を説明する。このため、図4では、通信元端末装置200A内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)のみを実線で示し、通信先端末装置200B内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)のみを実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。
一方、図5は、図4のブロック図に示されている通信セッション確立手順を時系列で説明する流れ図である。以下、図4のブロック図を参照しながら、図5の流れ図に従って、第1の実施形態における具体的な通信手順を説明する。なお、図4のブロック図において、各矢印に付された符号S1〜S7は、図5の流れ図における各ステップS1〜S7に対応するものである。逆に、図5の流れ図の各ステップにおいて、括弧書きで示された符号は、図4のブロック図における特定のブロックに対応するものであり、当該ステップの内容に関連する特定の構成要素を示すものである。
まず、ステップS1において、通信要求受付処理が行われる。これは、図4に示す通信要求受付部220Aによって行われる処理であり、たとえば、通信元端末装置200AのユーザAが、通信先端末装置200BのユーザBに対して電話をしたい、という場合に、ユーザAの操作入力に基づいて行われる処理である。たとえば、各端末装置200A,200Bが携帯電話であり、端末IDとして、それぞれの電話番号を用いている場合は、ユーザAは端末装置200Aに対して、端末装置200Bの端末ID(電話番号)を入力する操作を伴う通信要求S1を行えばよい。すなわち、端末装置200Aの通信要求受付部220Aは、自己を通信元として、通信先の別な端末装置200Bに対する通信要求S1を受け付ける処理を行うことになる。
なお、通信要求受付部220Aが通信要求S1を受け付けるのは、必ずしもユーザAが電話をかけるための操作入力を行った場合に限られるわけではない。たとえば、ユーザA,Bが通信対戦型のゲームをプレイしている場合は、当該ゲーム用のアプリケーションプログラムから通信要求受付部220Aに対して通信要求S1が与えられることになる。あるいは、端末装置200A,200Bが何らかのビジネス処理を行うパソコンであり、パソコン200Aに組み込まれたビジネス処理用のアプリケーションプログラムが、パソコン200Bに対して自動的に定時報告を行うような場合、当該アプリケーションプログラムから通信要求受付部220Aに対して通信要求S1が与えられることになる。このように、先願基本発明における通信要求は、必ずしもユーザによって与えられるものではなく、端末装置に組み込まれているプログラムによって与えられる場合もある。
こうして、ステップS1において通信要求受付が行われると、続くステップS2において、接続仲介依頼が行われる。これは、図4に示す接続仲介依頼部210Aによって行われる処理であり、既に述べたとおり、接続仲介装置100に対して、通信先の別な端末装置200Bの端末IDを特定するための通信先特定情報を含む接続仲介依頼S2を送信する処理である。
なお、一般に、ネットワークを介して接続された二者間で情報の送受を行う場合、情報の送信側は自分のアドレスを受信側に伝達し、受信側は当該送信側アドレス宛にアクノレッジ信号を返信する処理を行う。したがって、接続仲介依頼部210Aから接続仲介依頼S2を送信する際には、自己の所在アドレス「AD1」が接続仲介装置100側に伝達されることになる。後述するステップS4における返信処理は、この所在アドレス「AD1」宛に行われる。
こうして、通信元端末装置200Aの接続仲介依頼部210Aから、接続仲介装置100へ接続仲介依頼が送信されてくると、ステップS3において、この接続仲介依頼を受けた通信先アドレス返信部130が、アドレステーブル格納部110に格納されているアドレステーブルを参照して、当該接続仲介依頼に含まれている通信先特定情報によって特定される端末ID(この例では、「0020」)に対応づけられている所在アドレスを通信先アドレスとして認識する。たとえば、その時点におけるアドレステーブルTが、図1に示すようなものであったとすると、端末ID「0020」に対応づけられているアドレス「AD2」が通信先アドレスとして認識される。
そこで、ステップS4において、通信先アドレス返信部130が、ステップS3で認識した通信先アドレス「AD2」を返信する処理を行う。もちろん、返信相手は、ステップS2において接続仲介依頼を行った通信元端末装置200Aである。前述したとおり、接続仲介依頼S2には通信元端末装置200Aの所在アドレス「AD1」の情報が含まれているので、通信先アドレス返信部130は、当該所在アドレス「AD1」宛に、通信先アドレス「AD2」を返信することができる。
こうして、通信先アドレス返信部130から通信先アドレス返信S4(通信先アドレス「AD2」を伝達する情報)が送信されてくると、当該通信先アドレス返信S4は、通信開始要求部240Aによって受信される。結局、通信元端末装置200Aが、接続仲介装置100に対して接続仲介依頼S2を行うと、この接続仲介依頼S2に応じて、接続仲介装置100から、通信先端末装置200Bのネットワーク上での所在を示す通信先アドレス「AD2」が返信されてくることになる。接続仲介装置100に用意されているアドレステーブルTは、常に最新の状態に更新されているので、返信されてきた通信先アドレス「AD2」は、通信先端末装置200Bの最新の所在アドレスということになる。
そこで、この通信先アドレス返信S4により、通信先アドレス「AD2」を取得した通信開始要求部240Aは、ステップS5において、通信先端末装置200Bに対して通信開始要求S5を行う。すなわち、ネットワークNを介して、通信先アドレス「AD2」宛にアクセスを行い、相手方に通信開始の要求を伝える。このとき、自己の所在アドレス(通信元アドレス「AD1」)も併せて伝達されることになる。
通信先アドレス「AD2」宛に行われた通信開始要求S5は、通信先端末装置200Bの通信先セッション確立部230Bによって受信される。通信先セッション確立部230Bは、通信元端末装置200Aから、自己(端末装置200B)を通信先とする通信開始要求S5がなされたら、まず、ステップS6において、ネットワークNを介して通信元端末装置200Aに対して通信開始受諾確認S6を送信する。そして、続くステップS7において、通信元端末装置200Aとの間に通信セッションを確立して通信S7を開始する。
一方、通信元端末装置200A宛に送信されてきた通信開始受諾確認S6は、通信元セッション確立部260Aによって受信される。そして、ステップS7では、この通信開始受諾確認S6を受信した通信元セッション確立部260Aが、通信先端末装置200Bとの間に通信セッションを確立して通信S7を開始する処理も行われる。要するに、通信元端末装置200A側では、通信開始要求S5に応じて、通信先端末装置200Bから通信開始受諾確認S6が返信されてきたら、当該通信先端末装置200Bとの間に通信セッションを確立して通信を開始する処理を行うことになる。
かくして、通信元端末装置200Aと通信先端末装置200Bとの間に通信セッションが確立され、両者間での通信S7が行われることになる。この図5に示す流れ図において、接続仲介装置100が行った処理は、ステップS3のアドレステーブル参照処理とステップS4の通信先アドレス返信処理だけである。すなわち、接続仲介装置100が行う仲介処理は、通信元端末装置200Aからの接続仲介依頼S2を受けて、アドレステーブルTを参照し(ステップS3)、得られた通信先アドレスを通信元端末装置200Aに対して返信する(ステップS4)だけである。接続仲介装置100がこのような仲介処理を行うだけで、通信元端末装置200Aと通信先端末装置200Bとの間に通信セッションが確立され、両者間での通信が開始することになる。
このように、先願基本発明の第1の実施形態に係るネットワーク通信システムでは、接続仲介装置100の処理負荷は極めて軽くなる。前述したように、SIPを利用して両端末間の接続仲介処理を行うシステムでは、従来型の中継処理に比べれば、その処理負荷は軽減されることになるが、両端末間にセッションが確立するまで関与する必要があり、多数の端末装置からの仲介依頼が集中すると、その処理負荷はかなり重くなってくる。これに対して、先願基本発明の第1の実施形態に係るシステムの場合、接続仲介装置100は、両端末間に通信セッションが確立するまで関与する必要はなく、通信元端末装置に対して通信先アドレスを伝達する処理を行えば足りる。このため、一対の端末装置間の接続を仲介する際の処理負荷を、より軽減することが可能になる。
このように、先願基本発明の第1の実施形態に係るネットワーク通信システムでは、接続仲介装置100が通信セッション確立まで関与しないため、接続仲介装置100は、両端末装置間に通信セッションが確立し、支障なく通信が行われているか否かを把握することはできない。そこで、もし必要があれば、通信セッション確立後に、通信元セッション確立部260Aもしくは通信先セッション確立部230Bから接続仲介装置100に対して、支障なく通信セッションが確立した旨の報告を行うようにしてもよい。
なお、上述の実施例では、通信先セッション確立部230Bが、通信元端末装置200Aから、自己を通信先とする通信開始要求S5がなされた時に、ステップS6において、当該通信元端末装置200Aに対して通信開始受諾確認を送信する、という説明を行ったが、場合によっては、通信開始要求S5を受諾せずに拒絶し、通信開始受諾確認を送信しないようにしてもよい(あるいは、通信開始受諾確認の代わりに、通信開始拒絶通知を送信するようにしてもよい)。すなわち、通信先セッション確立部230Bに何らかの条件判断機能をもたせておき、通信開始要求S5がなされた場合、所定の条件を満たしている場合に限り、通信開始受諾確認を送信する処理を行わせるようにすればよい。
たとえば、通信先端末装置200BのユーザBが、通信先セッション確立部230に対して、着信拒否の設定を行えるようにし、「着信拒否の設定がなされていない」という条件を満たす場合にのみ、通信開始受諾確認を送信する処理が行われるようにすればよい。また、通信開始要求S5に、通信元端末装置200Aを特定するための何らかの通信元特定情報(たとえば、端末ID)を含ませるようにしておけば、通信先セッション確立部230Bは、通信開始要求S5を行った通信元に応じて、当該要求を受諾したり拒絶したりする処理が可能になる。
たとえば、通信先セッション確立部230Bに、通信開始要求S5を常に拒絶する通信元リスト(いわゆるブラックリスト)や通信開始要求S5を常に受諾する通信元リスト(いわゆるホワイトリスト)を用意しておけば、通信先セッション確立部230Bは、当該リストを参照することにより、通信開始要求S5を受諾するか拒絶するかの判断を行うことができる。
また、§3−3で述べるように、セキュリティを向上させる変形例を採用する場合は、通信開始要求S5に何らかのセキュリティ上の問題が存在する場合には、これを拒絶する運用を採用することも可能である。
<<< §2.先願基本発明の第2の実施形態 >>>
<2−1. 先願基本発明の第2の実施形態の構成>
続いて、先願基本発明の第2の実施形態を説明する。図6は、この第2の実施形態に係るネットワーク通信システムの全体構成を示すブロック図である。図示のとおり、このネットワーク通信システムは、接続仲介装置300と複数の端末装置400A〜400Dによって構成されており、これらの各装置はいずれもネットワークN(この例では、インターネット)を介して相互に接続することが可能である。
ここでも、説明の便宜上、4台の端末装置400A〜400Dを用いた例を示すことにするが、実用上は、より多数の端末装置を利用するのが一般的である。各端末装置400A〜400Dは、共通の構成を有する同一の装置であり、この共通の端末装置について言及する場合は符号400を用いて示し、相互に区別する必要がある場合には、符号末尾にA〜Dを付して示すことにする。端末装置400の内部構成要素を示す各符号についても同様である。
この図6に示すネットワーク通信システムは、ネットワークNを介して相互に接続可能な複数の端末装置400A〜400Dと、これら複数の端末装置間の接続を仲介する接続仲介装置300と、を備えたシステムということになる。やはり端末装置400としては、パソコン、携帯電話、タブレット型端末など、ネットワークNに接続して通信を行う機能を有する様々な電子機器を利用することができる。また、接続仲介装置300は、これら各端末装置400A〜400DからネットワークNを介してアクセスを受けるサーバコンピュータによって構成されている。
各端末装置400A〜400Dには、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置300は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。端末IDとしては、前述したとおり、個々の端末装置を相互に識別することができる情報であれば、どのような情報を利用してもかまわない。ここでは、前述した第1の実施形態の場合と同様に、端末装置400A,400B,400C,400Dには、それぞれ「0010」,「0020」,「0030」,「0040」なる端末IDが付与されているものとする。
また、各端末装置400A〜400Dには、それぞれ自己のネットワーク上での所在を示す所在アドレスが付与されている。ここでも、前述した第1の実施形態の場合と同様に、端末装置400A,400B,400C,400Dに、それぞれAD1,AD2,AD3,AD4なる所在アドレスが付与されているものとする。この所在アドレスは、ネットワーク上で当該端末装置の所在を一義的に決定できるアドレスであれば、どのようなアドレスを用いてもよいが、実用上は、グローバルIPアドレスもしくはNAT−IDを用いればよい。前述したとおり、この所在アドレスは、時間的に変化する。
図示のとおり、接続仲介装置300には、アドレステーブル格納部310、アドレステーブル更新部320、通信元アドレス送信部330が設けられている。この接続仲介装置300は、実際には、サーバコンピュータなどのコンピュータによって構成される。したがって、図に個々のブロックとして示されている各構成要素は、実際には、コンピュータに専用のプログラムを組み込むことにより構築されることになる。
アドレステーブル格納部310は、図1に示すアドレステーブル格納部110と同じ構成要素であり、各端末装置400A〜400Dのそれぞれについて、端末IDと所在アドレスとを対応づけたアドレステーブルTを格納する機能を有する。図6に示すアドレステーブルTは、図1に示すアドレステーブルTと全く同じものである。アドレステーブル更新部320は、図1に示すアドレステーブル更新部120と同じ構成要素であり、各端末装置400A〜400Dからの通知に基づいて、アドレステーブルTの内容を更新する処理を行う。このように、図6に示す構成要素310,320は、実質的に図1に示す構成要素110,120と同じものであるため、ここでは詳細な説明は省略する。
一方、通信元アドレス送信部330は、図1に示す通信先アドレス返信部130に類似した機能を有する構成要素であるが、若干異なる動作を行う。すなわち、通信元アドレス送信部330は、各端末装置400A〜400Dから接続仲介依頼があると、アドレステーブルTを参照することにより通信先アドレスを認識し、当該通信先アドレス宛に、通信元アドレスを送信する処理を行う。この処理のより詳細な説明は後述する。
続いて、図7を参照しながら、端末装置400の詳細構成および個々の構成要素の具体的な処理動作を説明する。図示のとおり、端末装置400には、接続仲介依頼部410、通信要求受付部420、通信元セッション確立部430、通信開始要求部440、自己アドレス通知部450、通信先セッション確立部460が設けられている。
この端末装置400も、実際には、種々のコンピュータ(携帯電話などの機器も含む)によって構成され、図に個々のブロックとして示されている各構成要素は、実際には、コンピュータに専用のプログラムを組み込むことにより構築される。もちろん、この端末装置400にも、必要に応じて、図示されていない種々の構成要素や入出力インターフェイスが組み込まれているが、ここでは、先願基本発明に直接関係する構成要素のみを図にブロックとして示すことにし、その他の構成要素についての説明は省略する。
この図7においても、図2と同様に、各ブロック間の信号の流れを示す太線矢印は、端末装置400と接続仲介装置300との間でやりとりされる、通信セッション確立前の信号の流れを示しており、細線矢印は、一対の端末装置400の間でやりとりされる、通信セッション確立前の信号の流れを示している。そして、白抜矢印は、一対の端末装置400の間でやりとりされる、通信セッション確立後の信号の流れを示している。
また、図2と同様に、図7に楕円ブロックで示されている構成要素は、端末装置400が「アドレス通知」の処理を実行するための構成要素であり、矩形ブロックで示されている構成要素は、端末装置400が「通信元」として機能する場合に必要な処理を実行する構成要素であり、二重矩形ブロックで示されている構成要素は、端末装置400が「通信先」として機能する場合に必要な処理を実行する構成要素である。端末装置400が、「通信元」になったときには、図7に矩形ブロックで示されている構成要素による処理が行われ、「通信先」になったときには、図7に二重矩形ブロックで示されている構成要素による処理が行われる。以下、図7に示す端末装置400の6つの構成要素の各機能を順に説明する。
まず、楕円ブロックで示されている自己アドレス通知部450は、「アドレス通知」の処理を実行するための構成要素であり、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置300に対して通知する処理を実行する。この自己アドレス通知部450の機能は、図2に示す自己アドレス通知部250の機能と全く同じであるため、ここでは詳しい説明は省略する。図6に示すアドレステーブル更新部320は、この通知を受けて、アドレステーブルTの更新を行う。
次に、図7に矩形ブロックもしくは二重矩形ブロックで示されている5つの構成要素について説明する。上述したように、矩形ブロックで示されている3つの構成要素は、端末装置400が「通信元」として機能する場合に必要な処理を実行し、二重矩形ブロックで示されている2つの構成要素は、端末装置400が「通信先」として機能する場合に必要な処理を実行する。
まず、通信要求受付部420は、自己を通信元として、通信先の別な端末装置に対する通信要求を受け付ける処理を行う構成要素であり、図2に示す通信要求受付部220と全く同じ機能をもつ構成要素である。また、接続仲介依頼部410は、通信要求受付部420によって通信要求が受け付けられたときに、接続仲介装置300に対して、通信先の別な端末装置の端末IDを特定するための通信先特定情報を含む接続仲介依頼を送信する構成要素であり、図2に示す接続仲介依頼部210と全く同じ機能をもつ構成要素である。
こうして、接続仲介依頼部410から送信された接続仲介依頼は、ネットワークNを介して接続仲介装置300へと伝達される(図における太線矢印は、端末装置400と接続仲介装置300との間でやりとりされる、通信セッション確立前の信号の流れを示している)。すると、接続仲介装置300からは、図に太線矢印で示すように、通信元アドレスが送信されてくる。この通信元アドレスは、通信開始要求部440によって受信される。
ここで留意すべき点は、接続仲介装置300からの通信元アドレスの送信先は、接続仲介依頼を行った通信元の端末装置ではなく、通信先となる別な端末装置である点である。すなわち、図7に示す例において、矩形ブロックで示す接続仲介依頼部410は、通信元端末装置内の構成要素であるのに対して、二重矩形ブロックで示す通信開始要求部440は、別な通信先端末装置内の構成要素ということになる。したがって、上述の説明において、接続仲介依頼を発する接続仲介依頼部410と、これに応じて接続仲介装置300から送信されてくる通信元アドレスを受信する通信開始要求部440とは、それぞれ異なる端末装置400に所属していることになる。
要するに、図6に示されている通信元アドレス送信部330は、ある端末装置400の接続仲介依頼部から接続仲介依頼が送信されてきたときに、アドレステーブルTを参照して、当該接続仲介依頼に含まれている通信先特定情報によって特定される端末IDに対応づけられている所在アドレスに対して、当該接続仲介依頼を送信した通信元の端末装置の端末IDに対応づけられている所在アドレスを通信元アドレスとして送信する処理を行うことになる。
この通信元アドレス送信部330の処理機能をより明確にするため、ここでは、図6に示す端末装置400Bを通信元、端末装置400Aを通信先とした具体例(たとえば、端末装置400BのユーザBが発呼側となり、端末装置400AのユーザAを着呼側として電話をかけたような場合)について、上記手順を説明しよう。
この場合、通信元端末装置400Bから接続仲介装置300に対して、端末装置400Aを通信先として指定する接続仲介依頼が送信されることになる。当該接続仲介依頼を受けた通信元アドレス送信部330は、アドレステーブルTを参照することにより、通信先として指定された端末装置400Aの所在アドレス「AD1」を認識する。前述した第1の実施形態における通信先アドレス返信部130は、こうして認識した通信先の所在アドレスを通信元(接続仲介依頼の送信元)に返信する処理を行っていた。これに対して、図6に示す第2の実施形態における通信元アドレス送信部330は、認識した通信先の所在アドレス「AD1」に宛てて、通信元端末装置400Bの所在を示す通信元アドレス「AD2」(これは、接続仲介依頼の送信元のアドレスとして認識できる)を送信する。
結局、上例の場合、通信元端末装置400Bから接続仲介装置300に対して接続仲介依頼を行うと、接続仲介装置300から通信先端末装置400Aに対して通信元アドレス(通信元端末装置400Bの所在アドレス「AD2」)が送信されることになる。ここが、前述した第1の実施形態と大きく異なる点である。
こうして送信されてきた通信元アドレスは、図7に示すとおり、通信先端末装置400A内の通信開始要求部440によって受信される。通信開始要求部440は、この通信元アドレス(通信元端末装置400Bのアドレス)に対して通信開始要求を行う。すなわち、通信開始要求部440は、接続仲介装置300から、通信元の別な端末装置のネットワーク上での所在を示す通信元アドレスが送信されてきたときに、ネットワークNを介して、当該通信元アドレスにアクセスして通信開始要求を行うことになる。図に細線矢印で示すとおり、この通信開始要求は、1台の端末装置400(通信先)から別な1台の端末装置400(通信元)に宛てた信号ということになる。
一方、通信先の別な端末装置(上例の場合、端末装置400A)から通信開始要求がなされた端末装置(上例の場合、端末装置400B)は、当該通信開始要求を通信元セッション確立部430で受信する(図の左側の下向き細線矢印)。そして、この通信元セッション確立部430は、通信先の別な端末装置(上例の場合、端末装置400A)に対して通信開始受諾確認を返信し(図の左側の上向き細線矢印)、当該通信先の別な端末装置との間に通信セッションを確立して通信を開始する。図7の左端に描かれた白抜矢印は、このようにして通信セッションが確立した後の両端末間の信号(通信パケット)の流れを示している。
こうして、通信元端末装置400Bから通信先端末装置400Aに対して返信された通信開始受諾確認は、通信先端末装置400Aの通信先セッション確立部460によって受信される(図の右側の細線矢印)。通信先セッション確立部460は、この通信開始受諾確認を受信したら、通信元の別な端末装置400Bとの間に通信セッションを確立して通信を開始する。図7の右端に描かれた白抜矢印は、このようにして通信セッションが確立した後の両端末間の信号(通信パケット)の流れを示している。
かくして、通信元端末装置と通信先端末装置との間の通信セッション確立後の通信は、通信元端末装置の通信元セッション確立部430と通信先端末装置の通信先セッション確立部460との間で行われることになる。別言すれば、図7の左端の白抜矢印は、ネットワークNを介して、図7の右端の白抜矢印に連なることになる。
<2−2. 第2の実施形態における具体的な通信手順>
これまで、図6および図7を参照しながら、先願基本発明の第2の実施形態に係るネットワーク通信システムの構成要素である接続仲介装置300および端末装置400の各構成要素およびその機能を説明した。ここでは、この第2の実施形態に係るネットワーク通信システムにおける通信手順を、具体例に即して説明することにする。
まず、図7に示す端末装置における自己アドレス通知部450の機能であるが、これは図3を用いて説明した自己アドレス通知部250A,250Bの機能と全く同じであるため、ここでは説明を省略する。
そこで以下、特定の端末装置間で実際に通信を開始する際の処理手順を説明する。図8は、図6に示すネットワーク通信システムにおいて、通信元端末装置400Bと通信先端末装置400Aとの間の通信セッション確立の手順を示すブロック図である。この図8では、図の上段に接続仲介装置300が示され、図の下段に2組の端末装置400A,400Bが示されている。ここでも、接続仲介装置300と各端末装置400A,400Bとの間の情報のやりとり(太線矢印で示す)や、端末装置400A,400B間の情報のやりとり(細線矢印で示す)は、実際にはネットワークNを介して行われるが、説明の便宜上、ネットワークNの図示は省略する。
また、ここでは、説明の便宜上、端末装置400Bを通信元、端末装置400Aを通信先とした場合の手順を説明する。このため、図8では、通信元端末装置400B内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)のみを実線で示し、通信先端末装置400A内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)のみを実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。
一方、図9は、図8のブロック図に示されている通信セッション確立手順を時系列で説明する流れ図である。以下、図8のブロック図を参照しながら、図9の流れ図に従って、第2の実施形態における具体的な通信手順を説明する。なお、図8のブロック図において、各矢印に付された符号S11〜S17は、図9の流れ図における各ステップS11〜S17に対応するものである。逆に、図9の流れ図の各ステップにおいて、括弧書きで示された符号は、図8のブロック図における特定のブロックに対応するものであり、当該ステップの内容に関連する特定の構成要素を示すものである。
まず、ステップS11において、通信要求受付処理が行われる。これは、図8に示す通信要求受付部420Bによって通信要求を受け付ける処理であり、図5のステップS1で述べた処理と同様であるため説明は省略する。続くステップS12では、この通信要求に基づいて、接続仲介依頼S12が行われる。これは、図8に示す接続仲介依頼部410Bによって行われる処理であり、図5のステップS2で述べた処理と同様であるため説明は省略する。
こうして、通信元端末装置400Bの接続仲介依頼部410Bから、接続仲介装置300へ接続仲介依頼S12(図示の例では、通信先特定情報として、通信先端末装置400Aの端末ID「0010」が含まれている)が送信されてくると、ステップS13において、この接続仲介依頼S12を受けた通信元アドレス送信部330が、アドレステーブル格納部310に格納されているアドレステーブルを参照して、当該接続仲介依頼に含まれている通信先特定情報によって特定される端末ID(この例では、「0010」)に対応づけられている所在アドレスを通信先アドレスとして認識する(S13)。たとえば、その時点におけるアドレステーブルTが、図6に示すようなものであったとすると、端末ID「0010」に対応づけられているアドレス「AD1」が通信先アドレスとして認識される。
そこで、ステップS14において、通信元アドレス返信部330が、ステップS13で認識した通信先アドレス「AD1」宛に、接続仲介依頼S12を送信した通信元端末装置400Bの端末ID「0020」に対応づけられている所在アドレス「AD2」を通信元アドレスとして送信する(S14)。
前述したとおり、一般に、ネットワークを介して接続された二者間で情報の送受を行う場合、情報の送信側は自分のアドレスを受信側に伝達し、受信側は当該送信側のアドレス宛にアクノレッジ信号を返信する処理を行う。したがって、通信元アドレス送信部330は、接続仲介依頼S12を受信した時点で、その送信元である端末装置400Bの所在アドレス「AD2」を認識することができるので、通信元アドレス送信S14を行う際には、この認識した所在アドレス「AD2」をデータとして送信すればよい。
このように、通信元端末装置400Bが、接続仲介装置300に対して接続仲介依頼S12を行うと、この接続仲介依頼S12に応じて、接続仲介装置300から、通信先端末装置400A宛に(アドレステーブルTで検索した所在アドレス「AD1」宛に)、通信元端末装置400Bの所在を示す通信元アドレス「AD2」が送信されることになる。接続仲介装置300に用意されているアドレステーブルTは、常に最新の状態に更新されているので、通信元アドレス送信S14は、常に通信先端末装置400Aの最新の所在アドレスに対して行われることになる。
こうして、通信元アドレス送信部330から通信元アドレス送信S14(通信元アドレス「AD2」を伝達する情報)が送信されてくると、当該通信元アドレス送信S14は、通信先端末装置400Aの通信開始要求部440Aによって受信される。
この通信元アドレス送信S14により、通信元アドレス「AD2」を取得した通信開始要求部440Aは、ステップS15において、通信元端末装置400Bに対して通信開始要求S15を行う。すなわち、ネットワークNを介して、通信元アドレス「AD2」宛にアクセスを行い、相手方に通信開始の要求を伝える。このとき、自己の所在アドレス(通信元アドレス「AD1」)も併せて伝達されることになる。
通信元アドレス「AD2」宛に行われた通信開始要求S15は、通信元端末装置400Bの通信元セッション確立部430Bによって受信される。通信元セッション確立部430Bは、通信先端末装置400Aから、自己(端末装置400B)を通信元とする通信開始要求S15がなされたら、まず、ステップS16において、ネットワークNを介して通信先端末装置400Aに対して通信開始受諾確認S16を送信する。そして、続くステップS17において、通信先端末装置400Aとの間に通信セッションを確立して通信S17を開始する。
一方、通信先端末装置400A宛に送信されてきた通信開始受諾確認S16は、通信先セッション確立部460Aによって受信される。そして、ステップS17では、この通信開始受諾確認S16を受信した通信先セッション確立部460Aが、通信元端末装置400Bとの間に通信セッションを確立して通信S17を開始する処理も行われる。要するに、通信先端末装置400A側では、通信開始要求S15に応じて、通信元端末装置400Bから通信開始受諾確認S16が返信されてきたら、当該通信元端末装置400Bとの間に通信セッションを確立して通信を開始する処理を行うことになる。
かくして、通信元端末装置400Bと通信先端末装置400Aとの間に通信セッションが確立され、両者間での通信S17が行われることになる。この図9に示す流れ図において、接続仲介装置300が行った処理は、ステップS13のアドレステーブル参照処理とステップS14の通信元アドレス送信処理だけである。すなわち、接続仲介装置300が行う仲介処理は、通信元端末装置400Bからの接続仲介依頼S12を受けて、アドレステーブルTを参照し(ステップS13)、得られた通信先アドレスに宛てて、通信元アドレスのデータを送信する(ステップS14)だけである。接続仲介装置300がこのような仲介処理を行うだけで、通信元端末装置400Bと通信先端末装置400Aとの間に通信セッションが確立され、両者間での通信が開始することになる。
このように、先願基本発明の第2の実施形態に係るネットワーク通信システムでは、第1の実施形態に係るネットワーク通信システムと同様に、接続仲介装置300の処理負荷は極めて軽くなる。前述したように、SIPを利用して両端末間の接続仲介処理を行うシステムでは、従来型の中継処理に比べれば、その処理負荷は軽減されることになるが、両端末間にセッションが確立するまで関与する必要があり、多数の端末装置からの仲介依頼が集中すると、その処理負荷はかなり重くなってくる。これに対して、先願基本発明の第2の実施形態に係るシステムの場合、接続仲介装置300は、両端末間に通信セッションが確立するまで関与する必要はなく、通信先端末装置に対して通信元アドレスを伝達する処理を行えば足りる。このため、一対の端末装置間の接続を仲介する際の処理負荷を、より軽減することが可能になる。
このように、先願基本発明の第2の実施形態に係るネットワーク通信システムでは、接続仲介装置300が通信セッション確立まで関与しないため、接続仲介装置300は、両端末装置間に通信セッションが確立し、支障なく通信が行われているか否かを把握することはできない。そこで、もし必要があれば、通信セッション確立後に、通信元セッション確立部430Bもしくは通信先セッション確立部460Aから接続仲介装置300に対して、支障なく通信セッションが確立した旨の報告を行うようにしてもよい。
なお、上述の実施例では、通信先端末装置400Aの通信開始要求部440Aが、接続仲介装置300からの通信元アドレス送信S14を受信したときに、ステップS15において、自動的に通信開始要求S15を送信しているが、場合によっては、通信開始要求部440Aに何らかの条件判断機能をもたせておき、通信元アドレス送信S14を受信したときに、所定の条件を満たしている場合に限り、通信開始要求S15を送信するようにしてもよい。あるいは、所定の条件を満たしていない場合には、通信開始要求S15の代わりに、通信開始拒絶通知を送信するようにしてもよい。
たとえば、通信開始要求部440Aに、通信開始を常に拒絶する通信元リスト(いわゆるブラックリスト)や通信開始を常に許可する通信元リスト(いわゆるホワイトリスト)を用意しておけば、通信開始要求部440Aは、当該リストを参照することにより、通信元アドレス送信S14によって送信されてきた通信元アドレスが、ブラックリストに掲載されていた場合には、通信開始要求S15の送信を行わない処理をするか、通信開始拒絶通知を送信する運用を行うことができる。あるいは、通信元アドレスが、ホワイトリストに掲載されていた場合にのみ、通信開始要求S15を送信するような運用を行うことも可能である。
また、上述の実施例では、通信元セッション確立部430Bが、通信先端末装置400Aから、自己を通信元とする通信開始要求S15がなされた時に、ステップS16において、当該通信先端末装置400Aに対して通信開始受諾確認を送信する、という説明を行ったが、場合によっては、通信開始要求S15を受諾せずに拒絶し、通信開始受諾確認を送信しないようにしてもよい(あるいは、通信開始受諾確認の代わりに、通信開始拒絶通知を送信するようにしてもよい)。
たとえば、§3−4で述べるように、セキュリティを向上させる変形例を採用する場合は、通信開始要求S15に何らかのセキュリティ上の問題が存在する場合には、これを拒絶する運用を採用することも可能である。
<<< §3. 先願基本発明の第1および第2の実施形態の変形例 >>>
ここでは、§1で述べた先願基本発明の第1の実施形態および§2で述べた先願基本発明の第2の実施形態について、いくつかの変形例を述べる。
<3−1. 端末IDに関する変形例>
これまで述べてきたように、図1の接続仲介装置100内のアドレステーブル格納部110には、アドレステーブルTが格納されている。図6の接続仲介装置300内のアドレステーブル格納部310も同様である。このアドレステーブルTは、個々の端末装置のそれぞれについて、端末IDと所在アドレスとを対応づけたテーブルであり、通信先アドレス返信部130もしくは通信元アドレス送信部330は、受信した接続仲介依頼に含まれている通信先特定情報に基づいてアドレステーブルTを参照し、通信先の所在アドレスを取得する。
たとえば、図4に示す第1の実施形態の場合、接続仲介依頼S2には、通信先端末装置200Bの端末ID「0020」が通信先特定情報として含まれており、通信先アドレス返信部130は、アドレステーブルTを参照することにより、端末ID「0020」に対応する所在アドレス「AD2」を取得することができる。同様に、図8に示す第2の実施形態の場合、接続仲介依頼S12には、通信先端末装置400Aの端末ID「0010」が通信先特定情報として含まれており、通信元アドレス送信部330は、アドレステーブルTを参照することにより、端末ID「0010」に対応する所在アドレス「AD1」を取得することができる。
このように、これまで述べてきた実施形態では、接続仲介依頼に含ませる通信先特定情報として、通信先端末装置の端末IDを用いていた。この端末IDは、個々の端末装置を相互に識別するための情報であり、具体的には、個々の端末装置に内蔵されているCPUのシリアル番号、通信インターフェイスに付与されたMACアドレス、携帯電話として機能する端末装置の場合は電話番号やSIMカードのシリアル番号、などを端末IDとして用いることができる。
ただ、一般に、ユーザが、他のユーザの端末装置についての端末IDを記憶することは困難である。したがって、通信要求を行う際に、これらの端末IDを、ユーザ自身に直接入力させることは好ましくない。そこで、実用上は、通信要求を行う際に、端末IDで通信先を指定する代わりに、ユーザIDで通信先を指定させるようにするのが好ましい。端末IDが個々の端末装置を識別するためのIDであるのに対して、ユーザIDは個々のユーザを識別するためのIDである。一般的には、ユーザ名やニックネームをユーザIDとして用いることができる。
端末IDの代わりにユーザIDを用いて通信要求を行うことができるようにするには、通信要求受付部220,420内に、ユーザIDと端末IDとの対応表を用意しておけばよい。そして、ユーザが特定のユーザID(たとえば、ユーザ名)を指定して通信要求を行ったときに、通信要求受付部220,420が、用意されている対応表を利用してユーザIDを端末IDに変換して接続仲介依頼部210,410へ引き渡すようにすればよい。そうすれば、接続仲介依頼部210,410は、端末IDを含む接続仲介依頼を送信することができる。このようなユーザID(たとえば、ユーザ名)から端末ID(たとえば、電話番号)への変換処理機能は、一般的な携帯電話に「電話番号登録機能」として備わっている公知の機能であるため、ここでは詳しい説明は省略する。
端末IDの代わりにユーザIDを利用できるようにする別な方法として、ユーザIDと端末IDとの対応表を接続仲介装置100,300側に用意する方法を採ることもできる。たとえば、アドレステーブル格納部110,310内に、図1や図6に示すアドレステーブルTの代わりに、図10に示すようなアドレステーブルT1を格納しておくようにする。このアドレステーブルT1は、個々の端末装置のそれぞれについて、当該端末装置のユーザを特定するユーザIDと、当該端末装置の端末IDと、を対応づける情報を含むテーブルである。
図10では、説明の便宜上、ユーザIDとして、「John」,「Mary」のようなユーザ名を用いた例を示すが、実際には、テーブルに収録されている個々のユーザを相互に識別できるように、各ユーザのフルネームをユーザIDとして登録しておくようにし、もし同姓同名のユーザがいた場合には、相互に区別できるようなユーザIDを登録するようにする。実際には、端末装置200,400の自己アドレス通知部250,450に、このようなユーザIDを接続仲介装置100,300側に申告する機能を設けておき、アドレステーブル更新部120,320に、申告を受けたユーザIDをアドレステーブルT1に登録する機能を設けておけば、図10に示すようなアドレステーブルT1を用意することが可能になる。
アドレステーブルT1を用意しておけば、通信元となる端末装置側では、通信先となる端末装置の端末IDを認識する必要はない。たとえば、図4に示す例において、通信元端末装置200Aから通信先端末装置200Bに対して発呼する場合、通信元端末装置200AのユーザA(John)は、通信先端末装置200BのユーザBのユーザ名「Mary」(ユーザID)を通信先として指定した通信要求を行えばよい。この場合、端末ID「0020」の代わりに、「Mary」なるユーザIDを通信先特定情報として含む接続仲介依頼S2が、接続仲介依頼部210Aから接続仲介装置100へ送信されることになる。
このような接続仲介依頼S2を受信した通信先アドレス返信部130は、図10に示すアドレステーブルT1を参照することにより、通信先特定情報として含まれていたユーザ名「Mary」に対応する端末ID「0020」を認識することができ、更に、この端末ID「0020」をもつ通信先端末装置200Bの所在アドレス「AD2」を認識することができる。
図11は、ユーザIDの代わりにアカウントIDを用いたアドレステーブルT2を示す図である。ユーザIDが、個々のユーザを特定する情報であるのに対して、アカウントIDは、個々のユーザが開設したユーザアカウントを特定する情報である。たとえば、図示の例における「U11111」なるアカウントIDは、ユーザ「John」が開設したユーザアカウントを示すIDであり、「U22222」なるアカウントIDは、ユーザ「Mary」が開設したユーザアカウントを示すIDである。もちろん、個々のユーザは、必要があれば複数のアカウントを開設することが可能である。
端末装置200,400の自己アドレス通知部250,450に、このようなアカウントを開設するための申込機能を設けておき、アドレステーブル更新部120,320に、当該申込に応じて、所定のユーザアカウントを設定し、アカウントIDをアドレステーブルT2に登録する機能を設けておけば、図11に示すようなアドレステーブルT2を用意することが可能になる。
図4に示す例において、アドレステーブル格納部110内に図11に示すようなアドレステーブルT2を用意しておけば、接続仲介依頼部210Aは、端末ID「0020」の代わりに、「U22222」なるアカウントIDを通信先特定情報として含む接続仲介依頼S2を接続仲介装置100へ送信すればよい。
このように、先願基本発明において、接続仲介依頼部から送信される接続仲介依頼には、通信先となる別な端末装置の端末IDを特定する役割を果たす何らかの「通信先特定情報」が含まれていれば足りる。この「通信先特定情報」は、端末ID自身であってもよいし、上例のように、ユーザIDやアカウントIDであってもかまわない。
結局、この§3−1で述べた変形例を§1で述べた第1の実施形態に適用する場合は、図4に示す構成において、アドレステーブル格納部110に、個々の端末装置のそれぞれについて、当該端末装置のユーザを特定するユーザIDもしくはユーザアカウントを特定するアカウントIDと、当該端末装置の端末IDと、を対応づける情報を含むアドレステーブルT1(図10)もしくはT2(図11)を格納しておくようにする。また、接続仲介依頼部210Aは、通信先特定情報として、通信先の端末装置のユーザを特定するユーザIDもしくはユーザアカウントを特定するアカウントIDを用いた接続仲介依頼S2を送信するようにする。そして、通信先アドレス返信部130は、接続仲介依頼部210Aから接続仲介依頼S2が送信されてきたときに、アドレステーブルT1もしくはT2を参照して、接続仲介依頼S2に含まれていたユーザIDもしくはアカウントIDに対応づけられている端末IDを決定し、決定された端末IDに対応づけられている所在アドレスを通信先アドレスとして返信する処理を行うようにすればよい。
一方、この§3−1で述べた変形例を§2で述べた第2の実施形態に適用する場合は、図8に示す構成において、アドレステーブル格納部310に、個々の端末装置のそれぞれについて、当該端末装置のユーザを特定するユーザIDもしくはユーザアカウントを特定するアカウントIDと、当該端末装置の端末IDと、を対応づける情報を含むアドレステーブルT1(図10)もしくはT2(図11)を格納しておくようにする。また、接続仲介依頼部410Bは、通信先特定情報として、通信先の端末装置のユーザを特定するユーザIDもしくはユーザアカウントを特定するアカウントIDを用いた接続仲介依頼S12を送信するようにする。そして、通信元アドレス送信部330は、接続仲介依頼部410Bから接続仲介依頼S12が送信されてきたときに、アドレステーブルT1もしくはT2を参照して、接続仲介依頼S12に含まれていたユーザIDもしくはアカウントIDに対応づけられている端末IDを決定し、決定された端末IDに対応づけられている所在アドレス宛に、通信元アドレスを送信する処理を行うようにすればよい。
<3−2. 代替端末を利用する変形例>
前述したとおり、先願基本発明に利用可能な端末装置は、パソコン、携帯電話、タブレット型端末など多岐にわたり、最近は、同一のユーザが複数の端末装置を使い分けることも珍しくなくなってきている。ここでは、そのような状況を考慮して、特定の端末装置に対する着呼があったときに、当該着呼を同一ユーザの別な端末装置へ誘導する仕組をもった変形例を述べることにする。
ここで述べる変形例を実施する際には、予め、図12に示すようなアドレステーブルT3を用意しておく。このアドレステーブルT3の場合、4組のユーザID「John」,「Mary」,「Frank」,「Susie」について、それぞれ端末IDおよび所在アドレスが登録されているが、ユーザID「John」については2つの端末ID「0010」,「0011」が登録され、ユーザID「Frank」については3つの端末ID「0030」,「0031」,「0032」が登録されている。これは、ユーザJohnが、このネットワーク通信システムに利用可能な2台の端末装置を所有し、ユーザFrankが、3台の端末装置を所有しているためである。
ここで、同一のユーザIDに対応づけられて登録されている複数の端末IDを、1つのグループに所属する端末IDとして把握し、同じグループに所属する1つの端末IDを別な1つの端末IDについての代替端末IDと呼ぶことにすれば、図12に示すアドレステーブルT3は、特定の端末IDについて、1つもしくは複数の代替端末IDを登録したアドレステーブルということができる。要するに、同一のユーザ名で複数の端末IDの登録があった場合には、これらの端末IDを同一のグループに所属するものとして把握し、相互に代替端末IDとして認識する取り扱いを行うようにすればよい。
たとえば、図12に示す例の場合、端末ID「0010」については1つの代替端末ID「0011」が登録されており、逆に、端末ID「0011」については1つの代替端末ID「0010」が登録されていることになる。一方、端末ID「0030」については2つの代替端末ID「0031」,「0032」が登録されており、端末ID「0031」については2つの代替端末ID「0030」,「0032」が登録されており、端末ID「0032」については2つの代替端末ID「0030」,「0031」が登録されていることになる。
ここで述べる変形例に係るシステムでは、このような代替端末IDを登録しておくことにより、利用不都合な状態にある端末装置宛に発呼があったときに、当該発呼を代替となる別な端末装置宛に転送させることができる。
たとえば、ユーザJohnが、スマートフォンからなる第1の端末装置(端末ID「0010」)とパソコンからなる第2の端末装置(端末ID「0011」)とを所有しており、通常は、いずれの端末装置も利用可能な状態になっているものとしよう。ところが、ある日、スマートフォンからなる第1の端末装置について、バッテリ切れで一時的に利用できない状態になったとする。この場合、もし、ユーザMaryが、自己の端末装置を通信元として、ユーザJohnのスマートフォンを通信先とする通信要求を行ったとしても、ユーザJohnのスマートフォンに対する正常な接続を行うことはできない。
ここで述べる変形例に係るシステムでは、このような場合、接続仲介装置が、ユーザJohnのスマートフォンの代わりに、その代替となるユーザJohnのパソコンに代替接続する処理を実行することができる。
この§3−2で述べる変形例を§1で述べた先願基本発明の第1の実施形態に適用する場合は、図4に示す構成に対して、次のような変更を施せばよい。
まず、アドレステーブル格納部110には、特定の端末IDについて、1つもしくは複数の代替端末IDを登録したアドレステーブル(たとえば、図12に示すアドレステーブルT3)を格納しておく。そして、通信先アドレス返信部130には、個々の端末装置について利用不都合な状態にあるか否かを判定する機能を付加しておく。具体的には、たとえば、判定対象となる端末装置に対して試験アクセスを行い、正常な返信があった場合には問題なしと判断するが、正常な返信が得られなかった場合には利用不都合な状態にあるとの判断を行うようにすればよい。
通信先アドレス返信部130は、接続仲介依頼S2が送信されてきたときに、通信先特定情報で特定される本来の端末IDが付与された端末装置について、利用不都合な状態にあるか否かを判定する処理を行う。そして、もし、本来の端末IDが付与された端末装置が利用不都合な状態にある場合には、当該本来の端末IDに代えて代替端末IDに対応づけられている所在アドレスを通信先アドレスとして返信する処理を行うようにする。
たとえば、図12に示すアドレステーブルT3が用意されている状態において、通信先特定情報として本来の端末ID「0010」(ユーザJohnのスマートフォン)を含む接続仲介依頼が送信されてきた場合、通信先アドレス返信部130は、まず、端末ID「0010」に対応する所在アドレス「AD1」に試験アクセスを行い、正常な返信があった場合には問題なしと判断し、通常の手順に従って、所在アドレス「AD1」を通信先アドレスとして返信する処理を行えばよい。この場合、通信元端末装置は、本来の端末ID「0010」が付与されたユーザJohnのスマートフォンを通信先として通信を行うことができる。
ところが、試験アクセスに対して正常な返信が得られなかった場合には、本来の端末ID「0010」が付与された端末装置(ユーザJohnのスマートフォン)が利用不都合な状態にあると判断し、本来の端末ID「0010」に代えて、アドレステーブルT3において端末ID「0010」についての代替端末IDとして登録されている端末ID「0011」に対応づけられている所在アドレス「AD5」を通信先アドレスとして返信する処理を行うようにする。この場合、通信元端末装置は、本来の端末ID「0010」が付与されたユーザJohnのスマートフォンではなく、代替端末ID「0011」が付与されたユーザJohnのパソコンを通信先として通信を行うことができる。
一方、この§3−2で述べる変形例を§2で述べた先願基本発明の第2の実施形態に適用する場合は、図8に示す構成に対して、次のような変更を施せばよい。
まず、アドレステーブル格納部310には、特定の端末IDについて、1つもしくは複数の代替端末IDを登録したアドレステーブル(たとえば、図12に示すアドレステーブルT3)を格納しておく。そして、通信元アドレス送信部330には、個々の端末装置について利用不都合な状態にあるか否かを判定する機能を付加しておく。具体的には、上述したように、判定対象となる端末装置に対して試験アクセスを行い、正常な返信があった場合には問題なしと判断するが、正常な返信が得られなかった場合には利用不都合な状態にあるとの判断を行うようにすればよい。
通信元アドレス送信部330は、接続仲介依頼S12が送信されてきたときに、通信先特定情報で特定される本来の端末IDが付与された端末装置について、利用不都合な状態にあるか否かを判定する処理を行う。そして、もし、本来の端末IDが付与された端末装置が利用不都合な状態にある場合には、当該本来の端末IDに代えて代替端末IDに対応づけられている所在アドレスに対して、接続仲介依頼S12を送信した通信元端末装置の所在アドレスを通信元アドレスとして送信する処理を行うようにする。
たとえば、図12に示すアドレステーブルT3が用意されている状態において、通信先特定情報として本来の端末ID「0010」(ユーザJohnのスマートフォン)を含む接続仲介依頼が送信されてきた場合、通信元アドレス送信部330は、まず、端末ID「0010」に対応する所在アドレス「AD1」に試験アクセスを行い、正常な返信があった場合には問題なしと判断し、通常の手順に従って、所在アドレス「AD1」宛に通信元アドレスの送信を行えばよい。この場合、通信元端末装置は、本来の端末ID「0010」が付与されたユーザJohnのスマートフォンを通信先として通信を行うことができる。
ところが、試験アクセスに対して正常な返信が得られなかった場合には、本来の端末ID「0010」が付与された端末装置(ユーザJohnのスマートフォン)が利用不都合な状態にあると判断し、本来の端末ID「0010」に代えて、アドレステーブルT3において端末ID「0010」についての代替端末IDとして登録されている端末ID「0011」に対応づけられている所在アドレス「AD5」宛に通信元アドレスの送信を行うようにする。この場合、通信元端末装置は、本来の端末ID「0010」が付与されたユーザJohnのスマートフォンではなく、代替端末ID「0011」が付与されたユーザJohnのパソコンを通信先として通信を行うことができる。なお、図12に示すユーザFrankのように、複数の代替端末IDが登録されている場合は、予め優先順位を定めておき、優先順位の高い順に実際に利用する代替端末IDを決定すればよい。
なお、上述の実施例では、通信先アドレス返信部130や通信元アドレス送信部330は、接続仲介依頼を受信した時点で、本来の通信先に対する試験アクセスを行い、利用不都合な状態にあるか否かを判定する処理を行っているが、その代わりに、個々の端末装置に対して定期的な試験アクセスを行うようにし、利用不都合な状態にある端末装置については、その時点でアドレステーブルにその旨の記録を行うようにしてもよい。この場合、各端末装置は、接続仲介依頼の有無にかかわらず、定期的に試験アクセスを受け、利用不都合な状態にあるか否かのチェックを受けることになり、チェック結果がアドレステーブルに記録されることになる。したがって、実際に接続仲介依頼があった場合は、このアドレステーブルの記録に基づいて利用不都合な状態にあるか否かを判定することができる。
なお、この変形例にいう「利用不都合な状態」とは、バッテリ切れの状態やネットワークへの接続障害が生じた状態のように「利用不能な状態」のみを意味するものではない。たとえば、端末装置の機能としては正常に利用可能な状態ではあるが、ユーザが恣意的に利用したくないと考え、そのような設定を行った状態も含むものである。たとえば、ユーザが自分の意思で「着信拒否」を設定した場合、当該端末装置は「利用不都合な状態」になる。したがって、上例の場合、ユーザJohnが所持するスマートフォンおよびパソコンがいずれも正常動作可能な状態であっても、もしユーザJohnが、スマートフォンに対して「着信拒否」を設定した場合、当該スマートフォンは「利用不都合な状態」になる。
この「着信拒否」の設定(「利用不都合な状態」の設定)は、個々の端末装置内にのみ記録しておいてもよいが、接続仲介装置内のアドレステーブルに記録するようにしてもよい。アドレステーブルに記録しておけば、各端末装置への試験アクセスを行うことなしに、「利用不都合な状態」にあることを認識できる。
<3−3. セキュリティを向上させる変形例(その1)>
ここでは、よりセキュリティを向上させたネットワーク通信システムを構築するための変形例を述べる。一般に、電子機器間でネットワークを介して情報のやりとりを行う場合、相手方の真正性を担保することは重要である。真正性が担保されない相手との交信は、クラッカーの攻撃を招くおそれがあり、セキュリティ上問題である。先願基本発明に係るネットワーク通信システムの場合、個々の端末装置と接続仲介装置との間の交信や、通信元端末装置と通信先端末装置との間の交信が不可欠であり、実用上、これら装置間通信におけるセキュリティ確保は重要である。
図13は、図4に示す第1の実施形態に係るネットワーク通信システムについて、セキュリティを向上させた変形例を示すブロック図である。この変形例では、第1の実施形態に係るネットワーク通信システムに対して、セキュリティを向上させるための2つの対策が施されている。
第1の対策は、相互認証処理の付加であり、図に破線の矢印で示されている情報を送受する際に、両者間で相手方の真正性を確認するための相互認証処理が行われる。具体的には、まず、通信元端末装置200Aから接続仲介装置100に対して接続仲介依頼S2を送信するときに、通信元端末装置200Aと接続仲介装置100との間で、相互に相手方の装置の真正性を確認するための相互認証処理が行われる。接続仲介依頼S2を示す矢印が破線になっているのは、この相互認証処理が行われることを示している。したがって、各端末装置200および接続仲介装置100には、このような認証処理機能が備わっていることになる。
なお、図示の例の場合、接続仲介装置100から通信元端末装置200Aに対して通信先アドレス返信S4を行う際の相互認証処理は省略されている(通信先アドレス返信S4を示す矢印は実線で描かれている)。これは、接続仲介依頼S2を送信するときに、通信元端末装置200Aと接続仲介装置100との間の相互認証処理が既に完了しており、相手方の装置の真正性が確認済みとなっているためである。もちろん、通信先アドレス返信S4を行う際にも、再び相互認証処理を実行するようにしてもかまわない。
また、図13に示すシステムの場合、通信元端末装置200Aから通信先端末装置200Bに対して通信開始要求S5を送信するときにも、通信元端末装置200Aと通信先端末装置200Bとの間で、相互に相手方の装置の真正性を確認するための相互認証処理が行われる。通信開始要求S5を示す矢印が破線になっているのは、この相互認証処理が行われることを示している。したがって、各端末装置200には、このような認証処理機能が備わっていることになる。
なお、図示の例の場合、通信先端末装置200Bから通信元端末装置200Aに対して通信開始受諾確認S6を行う際の相互認証処理は省略されている(通信開始受諾確認S6を示す矢印は実線で描かれている)。これは、通信開始要求S5を送信するときに、通信元端末装置200Aと通信先端末装置200Bとの間の相互認証処理が既に完了しており、相手方の装置の真正性が確認済みとなっているためである。もちろん、通信開始受諾確認S6を行う際にも、再び相互認証処理を実行するようにしてもかまわない。
ネットワークを介して接続された一対の装置間において、相手方の真正性を確認するための相互認証処理としては、既に種々の方法が知られているため、ここでは詳しい説明は省略する。一般的には、相手方の暗号鍵を利用した相互認証処理が利用されることが多い。たとえば、公開鍵暗号方式を利用した相互認証処理では、一方の装置で特定の平文データを相手方装置の公開鍵を用いて暗号化し、得られた暗号文データを相手方に送信し、これを受信した他方の装置では、当該暗号文データを自己の暗号鍵を用いて復号し、元の平文データが復元できることを確認する、といった処理手順を採ることができる。この処理手順を双方で行えば、相互に相手方の真正性を確認することができる。
なお、通信元端末装置200Aと通信先端末装置200Bとの間の相互認証処理を、それぞれの暗号鍵を用いて行った場合は、当該暗号鍵を利用して、通信セッション確立後の両者間の通信S7を暗号化通信によって行うようにすれば、セキュリティを更に向上させることができる。具体的には、通信開始要求S5を送信するときの相互認証処理を、通信元端末装置200Aについての暗号鍵および通信先端末装置200Bについての暗号鍵を用いた処理によって行うようにし、通信元端末装置200Aと通信先端末装置200Bとの間における通信セッション確立後の通信S7が、上記相互認証処理で用いた暗号鍵を用いて暗号化されたパケットを送受するパケット通信によって行われるようにすればよい。
図13に示すシステムにおいて、セキュリティを向上させるために施された第2の対策は、接続仲介装置100による仲介証明書の発行である。図示の例の場合、接続仲介装置100は、通信元端末装置200Aと通信先端末装置200Bとの間の接続を仲介する役割を果たす。仲介証明書は「そのような仲介を確かに行った」という事実を証明するために接続仲介装置100が発行する証明書である。通信先端末装置200Bは、この仲介証明書により、接続仲介装置100による仲介が正しく行われていることを確認することができる。以下、その仕組を順に説明する。
まず、接続仲介依頼部210Aから通信先アドレス返信部130に対して、接続仲介依頼S2があると、通信先アドレス返信部130は、この接続仲介依頼S2の送信を受けて、通信元となる特定の端末装置200Aから通信先となる特定の端末装置200Bへの仲介処理を実行したことを示す仲介証明書を発行する。そして、通信先アドレス返信S4を行う際に、通信先アドレス「AD2」とともにこの仲介証明書を、通信元端末装置200Aに返信する。
したがって、通信開始要求部240Aは、通信先アドレス「AD2」とともに、この仲介証明書を受信することになる。そこで、通信開始要求部240Aは、当該通信先アドレス「AD2」に対して通信開始要求S5を行う際に、この仲介証明書を併せて送信する。そうすると、通信先セッション確立部230Bは、通信開始要求S5とともに仲介証明書を受信することになる。
通信先セッション確立部230Bは、通信元の別な端末装置200Aから、自己を通信先とする通信開始要求S5とともに仲介証明書が送信されてきたら、この仲介証明書の正当性が確認されることを条件として、当該通信元の別な端末装置200Aに対して通信開始受諾確認S6を送信し、当該通信元の別な端末装置200Aとの間に通信セッションを確立して通信S7を開始するようにする。もちろん、仲介証明書の正当性が確認されない場合は、通信開始受諾確認S6の送信を行わず、通信S7も開始しない。
前述したとおり、上例の場合の仲介証明書は、接続仲介装置100が「端末装置200Aから端末装置200Bへの仲介処理を実行した」ことを証明するものであるから、通信先セッション確立部230Bは、通信開始要求S5の内容が、当該仲介証明書の証明内容に合致しているか否かを判定することにより、当該仲介証明書の正当性確認を行うことができる。上例の場合、通信開始要求S5は端末装置200Aから送信されてきており、自分自身は端末装置200Bであるから、「端末装置200Aから端末装置200Bへの仲介処理を実行した」との仲介証明書は正しいと判断することができる。
通信先端末装置200B内の通信先セッション確立部230Bは、通信元端末装置200Aからの通信開始要求S5を受信して、通信元端末装置200Aに対して通信開始受諾確認S6を送信し、通信セッションを確立して通信S7を行う。このとき、受信した通信開始要求S5が正規の信号であれば問題ないが、クラッカーによる偽装信号であった場合、不正行為の被害に遭うおそれがある。また、通信元端末装置200Aがマルウェアに感染していた場合、クラッカーに乗っ取られた状態になり、接続仲介装置100を経由した正規の手順を踏まずに、不正な方法により通信開始要求S5がなされる可能性もある。上述した仲介証明書を発行する対策を講じておけば、このようなクラッカーによる不正行為を防止する上で効果的である。
仲介証明書のこのような役割を考慮すると、通信先アドレス返信部130は、たとえば次のような方法で仲介証明書を作成すればよい。まず、接続仲介依頼S2に基づいて、通信元となる特定の端末装置200Aの所在アドレス(図示の例では「AD1」)および通信先となる特定の端末装置200Bの所在アドレス(図示の例では「AD2」)を認識する。そして、これら両所在アドレスを含む仲介証明用データを作成する。たとえば、両所在アドレスの文字列をそのまま連結して「AD1」+「AD2」のような文字列を仲介証明用データとしてもよいし、更に、別な秘密文字列「HAPPY」を付加して、「AD1」+「AD2」+「HAPPY」のような文字列を仲介証明用データとしてもよい。
続いて、こうして作成した仲介証明用データに対して、所定の暗号鍵を利用した一方向性関数を作用させることにより得られたデータを仲介証明書とすればよい。たとえば、一方向性関数としては、通信元端末装置200Aについての暗号鍵もしくは通信先端末装置200Bについての暗号鍵、または、これら双方の暗号鍵を利用したハッシュ関数を用いることができる。
たとえば、仲介証明用データが、「AD1」+「AD2」+「HAPPY」という文字列によって構成され、当該文字列に、通信先端末装置200Bの公開鍵を利用したハッシュ関数を作用させることにより仲介証明書を作成した場合を例にとってみよう。こうして作成された仲介証明書は、仲介証明用データのハッシュ値ということになる。
一方、通信開始要求S5とともに、上記仲介証明書を受信した通信先セッション確立部230Bは、次のような手順で、当該仲介証明書の正当性を確認することができる。まず、通信開始要求S5の送信元のアドレスとして、通信元端末装置200Aの所在アドレス「AD1」を認識することができる。また、自分自身の所在アドレス「AD2」も認識することができる。そして、予め取り決めがなされていた上記秘密文字列「HAPPY」(この秘密文字列は、当該ネットワーク通信システムの各構成装置のみが知り得るように管理されている)を用いることにより、「AD1」+「AD2」+「HAPPY」という文字列からなる仲介証明用データを作成する。
続いて、この仲介証明用データに対して自分自身の公開鍵を用いたハッシュ関数を作用させることにより仲介証明書を作成する。そして最後に、こうして作成した仲介証明書が通信開始要求S5とともに送信されてきた仲介証明書と一致することを確認すればよい。両者が一致すれば、仲介証明書の正当性が確認されたことになる。もちろん、不一致であれば、正当性は確認できないので、何らかの不正が行われている可能性があると判断できる。すなわち、仲介証明書の正当性が確認できない場合は、通信先セッション確立部230Bが受信した通信開始要求S5は、接続仲介装置100による正規の仲介処理に基づいてなされたものではない、と判断することができる。そのような場合、通信先セッション確立部230Bは、通信開始受諾確認S6の送信を行わず、通信セッションの確立を拒絶することになる。
なお、上例では、「AD1」+「AD2」+「HAPPY」なる仲介証明用データについてのハッシュ値を仲介証明書として用いているが、もちろん、上記仲介証明用データそのものを仲介証明書として用いることも可能である。ただ、十分なセキュリティを確保する上では、仲介証明用データそのものではなく、そのハッシュ値を仲介証明書として用いるのが好ましい。仲介証明用データには、「AD1」や「AD2」といった所在アドレスが含まれているので、クラッカーによる改竄を受けやすい。したがって、実用上は、上例のように、何らかの暗号鍵を利用した一方向性関数を作用させて仲介証明書を作成するのが好ましい。
ハッシュ関数などの一方向性関数を用いて仲介証明書を作成すれば、元の仲介証明用データを復元することはできないので、仲介証明書がクラッカーの手に渡ったとしても、不正な改竄を受ける可能性を低減することができる。不正な改竄を防止するという点では、上例の「HAPPY」のような秘密文字列を付加して仲介証明用データを作成することは有効である。もちろん、仲介証明書を発行した日付、時間、曜日などの変動要素を秘密文字列として用いることも可能である。
<3−4. セキュリティを向上させる変形例(その2)>
上述した§3−3では、§1で述べた先願基本発明の第1の実施形態についてセキュリティを向上させた変形例を述べた。ここでは、§2で述べた先願基本発明の第2の実施形態について、同様の方法でセキュリティを向上させた変形例を述べることにする。
図14は、図8に示す第2の実施形態に係るネットワーク通信システムについて、セキュリティを向上させた変形例を示すブロック図である。この変形例では、第2の実施形態に係るネットワーク通信システムに対して、セキュリティを向上させるための2つの対策が施されている。
第1の対策は、相互認証処理の付加であり、図に破線の矢印で示されている情報を送受する際に、両者間で相手方の真正性を確認するための相互認証処理が行われる。具体的には、まず、通信元端末装置400Bから接続仲介装置300に対して接続仲介依頼S12を送信するときに、通信元端末装置400Bと接続仲介装置300との間で、相互に相手方の装置の真正性を確認するための相互認証処理が行われる。接続仲介依頼S12を示す矢印が破線になっているのは、この相互認証処理が行われることを示している。
同様に、接続仲介装置300から通信先端末装置400Aに対して通信元アドレス送信S14を行うときにも、接続仲介装置300と通信先端末装置400Aとの間で、相互に相手方の装置の真正性を確認するための相互認証処理が行われる。接続仲介依頼S14を示す矢印が破線になっているのは、この相互認証処理が行われることを示している。したがって、各端末装置400および接続仲介装置300には、上述した認証処理機能が備わっていることになる。
また、図14に示すシステムの場合、通信先端末装置400Aから通信元端末装置400Bに対して通信開始要求S15を送信するときにも、通信先端末装置400Aと通信元端末装置400Bとの間で、相互に相手方の装置の真正性を確認するための相互認証処理が行われる。通信開始要求S15を示す矢印が破線になっているのは、この相互認証処理が行われることを示している。したがって、各端末装置400には、このような認証処理機能が備わっていることになる。
なお、図示の例の場合、通信元端末装置400Bから通信先端末装置400Aに対して通信開始受諾確認S16を行う際の相互認証処理は省略されている(通信開始受諾確認S16を示す矢印は実線で描かれている)。これは、通信開始要求S15を送信するときに、通信先端末装置400Aと通信元端末装置400Bとの間の相互認証処理が既に完了しており、相手方の装置の真正性が確認済みとなっているためである。もちろん、通信開始受諾確認S16を行う際にも、再び相互認証処理を実行するようにしてもかまわない。
相互認証処理の具体的な方法は、既に§3−3で述べたとおりである。また、この図14に示す変形例の場合も、相互認証処理に用いた暗号鍵を利用して、通信セッション確立後の両端末装置間の通信S17を暗号化通信によって行うようにしてもよい。
図14に示すシステムにおいて、セキュリティを向上させるために施された第2の対策は、接続仲介装置300による仲介証明書の発行である。図示の例の場合、接続仲介装置300は、通信元端末装置400Bと通信先端末装置400Aとの間の接続を仲介する役割を果たす。仲介証明書は「そのような仲介を確かに行った」という事実を証明するために接続仲介装置300が発行する証明書である。通信元端末装置400Bは、この仲介証明書により、接続仲介装置300による仲介が正しく行われていることを確認することができる。以下、その仕組を順に説明する。
まず、接続仲介依頼部410Bから通信元アドレス送信部330に対して、接続仲介依頼S12があると、通信元アドレス送信部330は、この接続仲介依頼S12の送信を受けて、通信元となる特定の端末装置400Bから通信先となる特定の端末装置400Aへの仲介処理を実行したことを示す仲介証明書を発行する。そして、通信元アドレス返信S14を行う際に、通信元アドレス「AD2」とともにこの仲介証明書を、通信先端末装置400Aに返信する。
したがって、通信開始要求部440Aは、通信元アドレス「AD2」とともに、この仲介証明書を受信することになる。そこで、通信開始要求部440Aは、当該通信元アドレス「AD2」に対して通信開始要求S15を行う際に、この仲介証明書を併せて送信する。そうすると、通信元セッション確立部430Bは、通信開始要求S15とともに仲介証明書を受信することになる。
通信元セッション確立部430Bは、通信先の別な端末装置400Aから、自己を通信元とする通信開始要求S15とともに仲介証明書が送信されてきたら、この仲介証明書の正当性が確認されることを条件として、当該通信先の別な端末装置400Aに対して通信開始受諾確認S16を送信し、当該通信先の別な端末装置400Aとの間に通信セッションを確立して通信S17を開始するようにする。もちろん、仲介証明書の正当性が確認されない場合は、通信開始受諾確認S16の送信を行わず、通信S17も開始しない。
前述したとおり、上例の場合の仲介証明書は、接続仲介装置300が「端末装置400Bから端末装置400Aへの仲介処理を実行した」ことを証明するものであるから、通信元セッション確立部430Bは、通信開始要求S15の内容が、当該仲介証明書の証明内容に合致しているか否かを判定することにより、当該仲介証明書の正当性確認を行うことができる。上例の場合、通信開始要求S15は端末装置400Aから送信されてきており、自分自信は端末装置400Bであるから、「端末装置400Bから端末装置400Aへの仲介処理を実行した」との仲介証明書は正しいと判断することができる。
通信元端末装置400B内の通信元セッション確立部430Bは、通信先端末装置400Aからの通信開始要求S15を受信して、通信先端末装置400Aに対して通信開始受諾確認S16を送信し、通信セッションを確立して通信S17を行う。このとき、受信した通信開始要求S15が正規の信号であれば問題ないが、クラッカーによる偽装信号であった場合、不正行為の被害に遭うおそれがある。また、通信先端末装置400Aがマルウェアに感染していた場合、クラッカーに乗っ取られた状態になり、接続仲介装置300を経由した正規の手順を踏まずに、不正な方法により通信開始要求S15がなされる可能性もある。上述した仲介証明書を発行する対策を講じておけば、このようなクラッカーによる不正行為を防止する上で効果的である。
仲介証明書の具体的な作成方法は、§3−3で述べたとおりである。すなわち、この図14に示す変形例の場合も、通信元アドレス送信部330は、通信元となる特定の端末装置400Bの所在アドレス「AD2」および通信先となる特定の端末装置400Aの所在アドレス「AD1」を含む仲介証明用データ(必要に応じて、その他の秘密文字列を付加してもよい)に対して、所定の暗号鍵を利用した一方向性関数を作用させることにより仲介証明書を作成すればよい。一方向性関数としては、通信元についての暗号鍵もしくは通信先についての暗号鍵、または、これら双方の暗号鍵を利用したハッシュ関数を用いることができる。このような仲介証明書を用いた正当性確認の具体的な手順は、既に§3−3で述べたとおりであり、ここでは説明を省略する。
<<< §4. ルータを用いた実用的な実施形態 >>>
これまで述べてきた先願基本発明の第1の実施形態や第2の実施形態では、各発明の基本原理を示す便宜上、各端末装置200A〜200D,400A〜400DがネットワークN(インターネット)に直接接続されている状態を示す図(図1,図6参照)を用いて説明を行ってきた。しかしながら、通常、各端末装置は、ルータを介してネットワークN(インターネット)に接続される。そこで、ここでは、先願基本発明について、端末装置をルータを介してネットワークに接続した実用的な実施形態を説明する。
<4−1. ルータを用いた基本的な実施例>
図15は、端末装置をルータを介してネットワークNに接続した先願基本発明の一実施形態を示すブロック図である。具体的には、この図15には、3台の端末装置200E,200F,200Gが、同一のルータRを介してネットワークN(インターネット)に接続された状態が示されている。
既に述べたとおり、先願基本発明における端末装置200は、パソコン、携帯電話、タブレット型端末など、ネットワークNに接続して通信を行う機能を有する電子機器であれば、どのような装置であってもかまわない。最近は、企業内LANや家庭内LANが普及し、パソコンやタブレット型端末は、通常、企業や家庭に設置されたルータ経由でインターネットへ接続される。また、最近の携帯電話通信網では、ルータの機能を有する基地局が利用されてきており、携帯電話は、このルータ機能を有する基地局経由でインターネットに接続することができる。
したがって、先願基本発明に利用される各端末装置は、実用上は、図15に例示するように、ルータRを介してインターネットに接続されることになる。ルータRは、LANを構築する機能を有し、図示の例の場合、ルータRより左側に描かれた部分が1つのサブネットを構成しており、クラスCのプライベートIPアドレスが付与されている。具体的には、各端末装置には、「192.168」なるネットワーク部と「0.11」,「0.12」,「0.13」なるホスト部とを有するIPアドレスが付与されている。このサブネット内の装置同士の交信は、ルータRを介さずに行うことができるが、サブネット外の装置にアクセスする場合は、ルータRを介した交信が必要になる。
図示の例の場合、端末装置200E(端末ID:0050)には、「192.168.0.11」なるプライベートIPアドレスが付与され、端末装置200F(端末ID:0060)には、「192.168.0.12」なるプライベートIPアドレスが付与され、端末装置200G(端末ID:0070)には、「192.168.0.13」なるプライベートIPアドレスが付与されている。また、実際の通信には、これらのIPアドレスとともにポート番号が利用される。図には、端末装置200Eの1本の通信路にポート番号P1、端末装置200Fの2本の通信路にポート番号P2,P3、端末装置200Gの4本の通信路にポート番号P4〜P7が付与された例が示されている。
ポート番号は、2バイトのデータからなり、通信のエンドポイントを特定するために利用される。たとえば、図に示す端末装置200Fには、所定のOSプログラムの下で動作する2組のアプリケーションプログラムAPP1,APP2がインストールされており、APP1についての通信路にはポート番号P2が割り当てられ、APP2についての通信路にはポート番号P3が割り当てられている。したがって、同じIPアドレス「192.168.0.12」を用いた通信であっても、ポート番号P2/P3の違いにより、APP1についての通信か、APP2についての通信かを区別することができる。
一方、図に示す端末装置200Gには、やはり2組のアプリケーションプログラムAPP1,APP2がインストールされているが、APP1については2組のポート番号P4,P5が割り当てられ、APP2については2組のポート番号P6,P7が割り当てられている。このように、同一のアプリケーションプログラムに複数のポート番号を割り当てて、複数の通信路を相互に区別することも可能である。たとえば、アプリケーションプログラムAPP1がWebブラウザプログラムであった場合、第1のWebページについての通信にはポート番号P4を割り当て、第2のWebページについての通信にはポート番号P5を割り当てる、という運用を行えば、それぞれ別のWebサーバに対して別個独立した通信が可能になる。このように、ポート番号は、個々のアプリケーションプログラムの都合に応じて任意に割り当てることができる。
ここでは、図示されているアプリケーションプログラムAPP2が、先願基本発明に係るネットワーク通信システムとしての機能を果たすための専用の通信アプリケーションプログラムであるものとして以下の説明を続ける。別言すれば、図示の端末装置200F,200Gは、所定のOSプログラムの管理下で動作する汎用のパソコン、スマートフォン、タブレット型端末などの装置であり、当該装置に専用の通信アプリケーションプログラムAPP2をインストールすることにより、これらの装置が先願基本発明に係る端末装置として機能することになる。
この場合、図2に示す端末装置200の構成要素である自己アドレス通知部250、通信要求受付部220、接続仲介依頼部210、通信開始要求部240、通信元セッション確立部260、通信先セッション確立部230による処理機能は、この通信アプリケーションプログラムAPP2を実行することにより実現される(一部の処理機能は、OSプログラムの実行により実現されるようにしてもよい)。同様に、図7に示す端末装置400の構成要素である自己アドレス通知部450、通信要求受付部420、接続仲介依頼部410、通信開始要求部440、通信元セッション確立部430、通信先セッション確立部460による処理機能は、この通信アプリケーションプログラムAPP2を実行することにより実現される(一部の処理機能は、OSプログラムの実行により実現されるようにしてもよい)。
図15には、このアプリケーションプログラムAPP2を示すブロックおよびその通信路を太線で示してある。各端末装置200E,200F,200Gとサブネット外の装置との間の通信は、ルータRを介して行われる。ルータRは、ネットワークアドレス変換機能(NAT(Network Address Translation)機能)を有しており、内側(図におけるルータRの左側)に接続された通信路について付与されたプライベートIPアドレスを、外側(図におけるルータRの右側)に接続された通信路について付与されたグローバルIPアドレスに変換するとともに、その逆の変換も行う。
図示の例の場合、ルータRの内側について付与された「192.168.0.11」〜「192.168.0.13」なるプライベートIPアドレスと、ルータRの外側について付与された「xx.73.5.111」なるグローバルIPアドレス(以下、ADxと記す)との間のアドレス変換が行われている。なお、上記グローバルIPアドレス内のxxは、任意の1バイトデータを示す(本願では、固有のグローバルIPアドレスの特定を避けるため、グローバルIPアドレスについては、その一部をxx,yy,zz等の記号で示すことにする)。また、上記アドレス変換の際には、一般にNAPT(Network Address Port Translation)と呼ばれている機能により、ポート番号についての変換も行われる。
たとえば、端末装置200Fの通信アプリケーションプログラムAPP2からの通信路に付与されたプライベートIPアドレスとポート番号との組み合わせ「192.168.0.12(P3)」は、グローバルIPアドレスADxとポート番号との組み合わせ「xx.73.5.111(P13)」に変換されている。したがって、ネットワーク(インターネット)Nを介して接続された外部装置に対して、端末装置200FのAPP2は、「xx.73.5.111(P13)」なる所在アドレス(IPアドレスにポート番号を付加した情報)で特定されることになる。同様に、端末装置200GのAPP2は、「xx.73.5.111(P16)」もしくは「xx.73.5.111(P17)」なる所在アドレスで特定されることになる。
図示の例の場合、ルータRの外側の複数の通信路には、いずれも同じグローバルIPアドレスADx(具体的には、「xx.73.5.111」)が付与されているが、ポート番号がそれぞれ異なるため、相互に区別することができる。ルータRの外側の装置から内側の装置に対するアクセスがあった場合には、逆に、グローバルIPアドレスADxをプライベートIPアドレスに変換する処理が行われる。たとえば、外部装置から「xx.73.5.111(P16)」なる所在アドレス宛のアクセスがあった場合、当該所在アドレスは、「192.168.0.13(P6)」に変換され、端末装置200Gの通信アプリケーションプログラムAPP2の第1番目の通信路宛のアクセスとして処理される。このようなNAPT機能は、広く利用されている既存の技術であるため、ここでは詳しい説明は省略する。
さて、先願基本発明に係るネットワーク通信システムの構成要素となる端末装置200には、図2に示すとおり、自己アドレス通知部250が含まれており、この自己アドレス通知部250により、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置100に対して通知する処理が行われる。前述したとおり、この通知処理は、実際には端末装置200にインストールされている通信アプリケーションプログラムAPP2によって実行される。
したがって、図15に示す実施例の場合も、通信アプリケーションプログラムAPP2によって、接続仲介装置100宛に所在アドレスの通知が行われ、これを受けて、接続仲介装置100内のアドレステーブル更新部120が、各端末装置のそれぞれについて、端末IDと所在アドレスとを対応づけた情報を、アドレステーブル格納部110内のアドレステーブルTに書き込む処理を実行する。
図15に示す実施例の場合、端末装置200F,200Gは、ルータRを介してネットワークNに接続されているため、自己アドレス通知部250は、ルータRが管理するLAN(サブネット)内のプライベートIPアドレスを所在アドレスとして通知する処理を行う。ただ、このプライベートIPアドレスは、ルータRによるNAT機能によりグローバルIPアドレスADxに変換されてネットワークNに送信される。したがって、接続仲介装置100に届くアドレスは、プライベートIPアドレスではなく、グローバルIPアドレスADxということになり、アドレステーブル更新部120は、このグローバルIPアドレスADxを、所在アドレスとしてアドレステーブルTに格納する処理を行う。
また、図15に示す実施例の場合、各端末装置のネットワーク上での所在を示す所在アドレスとして、IPアドレスにポート番号を付加した情報が用いられている。このため、自己アドレス通知部250は、プライベートIPアドレスにポート番号を付加した情報を所在アドレスとして通知する処理を行い、当該情報がルータRによって、グローバルIPアドレスにポート番号を付加した情報に変換され、接続仲介装置100に届くことになる。したがって、アドレステーブルTには、グローバルIPアドレスにポート番号を付加した情報が所在アドレスとして書き込まれることになる。
図16は、図15に示す実施形態において、IPアドレスにポート番号を付加した情報を所在アドレスとして用いる場合のアドレステーブルの例を示す図である。図16(a) に示すアドレステーブルT41は、図15に示す端末装置200F(端末ID:0060)内の自己アドレス通知部250(通信アプリケーションプログラムAPP2)からの通知に基づいて、「端末ID:0060」に対応する所在アドレス(IPアドレスADxとポート番号P13との組み合わせ)の書き込みを行うとともに、端末装置200G(端末ID:0070)内の自己アドレス通知部250(通信アプリケーションプログラムAPP2)からの通知に基づいて、「端末ID:0070」に対応する所在アドレス(IPアドレスADxとポート番号P16との組み合わせ、及びIPアドレスADxとポート番号P17との組み合わせ)の書き込みを行った例である。
図15に示す例の場合、各端末装置200F,200G内の自己アドレス通知部250(通信アプリケーションプログラムAPP2)は、プライベートIPアドレスにポート番号を付加した情報を所在アドレスとして送信する処理を行うが、ルータRによって、グローバルIPアドレスにポート番号を付加した情報に変換されるため、実際にアドレステーブルT41に格納される所在アドレスは、図示のとおり、グローバルIPアドレスADxと変換後のポート番号との組み合わせになる。
たとえば、端末装置200Fの自己アドレス通知部250からは、送信元である自己の所在を示す所在アドレスとして「192.168.0.12」なるプライベートIPアドレスにポート番号「P3」を付加した情報が、端末ID「0060」を示す情報とともに送信されてくるが、ルータRを通過する際に、送信元である自己の所在を示す所在アドレスが、「xx.73.5.111」なるグローバルIPアドレスにポート番号「P13」を付加した情報に変換されることになる。したがって、アドレステーブルT41には、端末ID「0060」に対応する所属アドレスとして、「xx.73.5.111」なるグローバルIPアドレスADxと「P13」なるポート番号との組み合わせが書き込まれることになる。
図16(b) に示すアドレステーブルT42は、図16(a) に示すアドレステーブルT41の所在アドレス欄の情報を具体的なデータとして例示したものである。前述したとおり、図15に示す例の場合、ルータRの外側の通信路には、「xx.73.5.111」なるグローバルIPアドレスが付与されているため、図16(b) に示すアドレステーブルT42のIPアドレス欄には、いずれも「xx.73.5.111」なるデータが格納されている。一方、ルータRの外側の通信路に付与されるポート番号は、ルータRによって相互に重複しないように発生された2バイトの番号であり、図16(b) に示す例では、62801〜62803なるデータが格納されている。
結局、図15に示す接続仲介装置100には、端末装置200F,200Gについて、図16(b) に示すようなアドレステーブルT42が格納されることになる。そこで、図示されていない外部の通信元から、通信先特定情報として端末ID「0060」を含む接続仲介依頼があると、接続仲介装置100内の通信先アドレス返信部130は、アドレステーブルT42を参照することにより、端末ID「0060」に対応した所在アドレス(IPアドレス「xx.73.5.111」にポート番号「62801」を付加した情報)を通信先アドレスとして返信する。そこで、通信元となる端末装置は、IPアドレス「xx.73.5.111」およびポート番号「62801」で特定される通信先に対して、通信開始要求を行うことができる。
以上、主として図1に示す第1の実施形態(接続仲介装置100と端末装置200を用いる実施形態)においてルータRを用いた例を述べたが、図7に示す第2の実施形態(接続仲介装置300と端末装置400を用いる実施形態)においてルータRを用いた場合も同様である。
なお、接続仲介装置100,300内のアドレステーブル更新部120,320は、各端末装置の自己アドレス通知部250,450から所在アドレスの通知を受けるたびに、図16に例示したアドレステーブルを更新する処理を行う。前述したとおり、図15に示す実施例の場合、端末装置200F,200Gの自己アドレス通知部の処理機能は、所定のOSプログラムの管理下で動作する通信アプリケーションプログラムAPP2を実行することにより実現される。
そこで、実用上は、自己アドレス通知部250,450による自己アドレスの通知処理は、図17の表に示すタイミングで行うのが好ましい。図示の表におけるタイミング(1) は、通信アプリケーションプログラムAPP2に対するユーザによる操作入力時である。たとえば、通信アプリケーションプログラムAPP2を起動した後、「通信準備を行いますか(Yes/No)?」のようなメッセージを表示し、ユーザが「Yes」を指示する操作入力を行った時点で、自己アドレスの通知処理を行うようにすればよい。通常、通信アプリケーションプログラムAPP2が起動された時点では、既に端末装置のプライベートIPアドレスや、これに対応するグローバルIPアドレスが定まっており、自己アドレスの通知処理を行う環境が整っている。
図示の表におけるタイミング(2) は、通信アプリケーションプログラムAPP2の起動時である。このタイミング(2) を採用した場合、上述したメッセージの表示やユーザによる操作入力を待たずして、自動的に自己アドレスの通知処理が実行されることになる。実際には、プログラムAPP2の起動ルーチンに自己アドレス通知部250,450としての処理機能を組み込んでおけばよい。
図示の表におけるタイミング(3) は、OSプログラムの起動時であり、実質的には、端末装置の起動時ということになる。このタイミング(3) を採用する場合、OSプログラムの起動ルーチンに自己アドレス通知部250,450としての処理機能を組み込んでおけばよい。通常、OSプログラムの起動ルーチンにおいて、端末装置のプライベートIPアドレスや、これに対応するグローバルIPアドレスを決定する処理が行われるため、その後に、自己アドレス通知処理を自動的に行うようにしておけばよい。
<4−2. VPNを利用した実施例>
続いて、先願基本発明に係るネットワーク通信システムにおいて、VPN(Virtual Private Network)を利用した実施例を述べる。図15には、ルータRを介して端末装置をネットワークNに接続した実施例を例示した。この例の場合、ルータRの内側(図の左側)に構築されたローカルネットワークが1つのプライベートネットワークを構成しており、各端末装置200E,200F,200Gには、いずれも「192.168」なるネットワーク部で始まるプライベートIPアドレスが付与されている。このようなプライベートネットワークを、インターネットNなどの公衆ネットワークを跨いで拡張する方法として、VPNの技術が普及している。
図18は、先願基本発明に係るネットワーク通信システムにおいて、VPNを利用した実施形態の全体構成を示すブロック図である。ここでは、説明の便宜上、ある企業の東京本社に設定された3台の端末装置200H,200I,200J(端末IDは、それぞれ0081,0082,0083)と、パリ支社に設置された1台の端末装置200K(端末IDは、0091)という合計4台の端末装置によって、VPNを構築した単純な例を示すことにする。また、東京本社に設置された3台の端末装置200H,200I,200Jを第1グループに所属する第1の端末装置と呼び、パリ支社に設置された1台の端末装置200Kを第2グループに所属する第2の端末装置と呼ぶことにする。
図示のとおり、第1の端末装置200H,200I,200Jは、第1のルータR1を介してネットワーク(インターネット)Nに接続されており、第2の端末装置200Kは、第2のルータR2を介してネットワーク(インターネット)Nに接続されている。したがって、基本的には、図において第1のルータR1より上方に配置されている第1の端末装置200H,200I,200Jは、第1のルータR1が管理する第1のLAN内のホストということになり、図において第2のルータR2より下方に配置されている第2の端末装置200Kは、第2のルータR2が管理する第2のLAN内のホストということになる。
このため、第1の端末装置200H,200I,200Jには、第1のルータR1が管理する第1のLAN内のプライベートIPアドレスが付与され、第2の端末装置200Kには、第2のルータR2が管理する第2のLAN内のプライベートIPアドレスが付与されている。また、図15に示す例と同様に、IPアドレスとともにポート番号も付与されている。
図示の例の場合、第1のLANについては、クラスBのプライベートIPアドレスが付与されており、第1の端末装置200H,200I,200Jには、それぞれ「172.16.6.11(P1)」,「172.16.6.12(P2)」,「172.16.6.13(P3)」なるIPアドレスおよびポート番号が付与されている(ポート番号P1,P2,P3等は、実際には2バイトのデータである)。これらの情報は、第1のルータR1によって、それぞれ「yy.88.105.19(P11)」,「yy.88.105.19(P12)」,「yy.88.105.19(P13)」なるグローバルIPアドレスADyとポート番号との組み合わせに変換された後、インターネットNへ接続される。一方、図示の例の場合、第2のLANについては、クラスCのプライベートIPアドレスが付与されており、第2の端末装置200Kには、「192.168.99.11(P4)」なるIPアドレスおよびポート番号が付与されている。この情報は、第2のルータR2によって、「zz.99.214.28(P21)」なるグローバルIPアドレスADzとポート番号との組み合わせに変換された後、インターネットNへ接続される。
このままの状態では、第1グループに所属する第1の端末装置200H,200I,200Jが所属する第1のLANと、第2グループに所属する第2の端末装置200Kが所属する第2のLANとは、それぞれ別個独立したプライベートネットワークになるが、図示する実施例の場合、第1のLANの範囲をインターネットNを跨いで拡張するためのVPNが構築されている。すなわち、第2の端末装置200Kには、第2のルータR2が管理する第2のLAN内のプライベートIPアドレスおよびポート番号「192.168.99.11(P4)」が付与されるとともに、第1のルータR1が管理する第1のLAN内のプライベートIPアドレスおよびポート番号「172.16.6.14(P5)」が、VIPアドレスとして仮想的に付与されており、第1の端末装置200H,200I,200Jと第2の端末装置200Kとの間には、このVIPアドレスを用いて相互に交信することが可能となるようにVPNの設定がなされている。
したがって、図に破線で示すように、パリ支社に設置された端末装置200Kは、東京本社に設置された端末装置200H,200I,200Jと同様に、第1のルータR1が管理する第1のLAN内の端末装置として取り扱うことができる。図19は、図18に示す実施形態におけるVNP通信の原理を示す図である。図示の例は、東京本社に設置された端末装置200Hとパリ支社に設置された端末装置200Kとの間のVPN通信を示している。
図19に示すように、端末装置200HにはVPN通信部201Hが、端末装置200KにはVPN通信部201Kが、それぞれ設けられており、両者間にVPN暗号通信路が開設される。両者間でやりとりされるデータは暗号化されるため、実際には、インターネットNなどの公衆ネットワークを介して情報が伝達されるにもかかわらず、あたかもプライベートネットワークを介した利便性・安全性をもった情報の送受が可能になる。VPN通信部201H,201Kは、実際には、各端末装置にインストールされた専用のVPN用アプリケーションプログラムによって構築される。このようなVPNの具体的な仕組は公知の技術であるため、ここでは詳しい説明は省略する。
さて、このようなVPNの仕組を先願基本発明に係るネットワーク通信システムにおいて利用する場合は、接続仲介装置100内に格納されるアドレステーブルTに、VIPアドレスを格納しておくようにすると便利である。図20は、図18に示す実施形態に用いるために、VIPアドレスを追加したアドレステーブルの例を示す図である。図20(a) に示すアドレステーブルT51は、VPNの構成メンバーである端末装置200H〜200K内の自己アドレス通知部250からの通知に基づいて、各端末IDに対応する所在アドレス(IPアドレスとポート番号)を格納したものである。
ここで、端末装置200H〜200J(端末ID:0081〜0083)は、東京本社に構築された第1のLANに所属する装置であるが、端末装置200K(端末ID:0091)は、パリ支社に構築された第2のLANに所属する装置である。ただ、上述したVPNの仕組により、第1のLANは端末装置200Kまで仮想的に拡張されており、端末装置200Kには、「VIP(200K)」なるVIPアドレスが付与されている。このため、図20(a) に示すアドレステーブルT51の端末ID「0091」については、更に、VIP欄に「VIP(200K)」なるVIPアドレスが格納されている。
図20(b) に示すアドレステーブルT52は、図20(a) に示すアドレステーブルT51の所在アドレス欄およびVIP欄の情報を具体的なデータとして例示したものである。図18に示す例の場合、第1のルータR1の外側の各通信路には、「yy.88.105.19」なるグローバルIPアドレスADyに、ポート番号P11〜P13を付加した情報が所在アドレスとして付与されているため、図20(b) に示すアドレステーブルT52の端末ID「0081〜0083」のIPアドレス欄には、いずれも「yy.88.105.19」なるデータが格納されており、ポート番号欄には、第1のルータR1によって発生された2バイトの番号「54701〜54703」が格納されている。
一方、第2のルータR2の外側の各通信路には、「zz.99.214.28」なるグローバルIPアドレスADzに、ポート番号P21を付加した情報が所在アドレスとして付与されているため、図20(b) に示すアドレステーブルT52の端末ID「0091」のIPアドレス欄には、「zz.99.214.28」なるデータが格納されており、ポート番号欄には、第2のルータR2によって発生された2バイトの番号「61999」が格納されている。そして、更に、端末ID「0091」のVIP欄には、「172.16.6.14」なるVIPアドレス(VPNの設定により、端末装置200Kに対して付与された第1のLANについての仮想的なプライベートアドレス)が格納されている。
このように、アドレステーブルT52のVIP欄に「172.16.6.14」なるVIPアドレスを格納するには、第2の端末装置200Kの自己アドレス通知部250に、接続仲介装置100に対して、VPNの設定により付与されたVIPアドレスを通知する機能をもたせておき、アドレステーブル更新部120に、このVIPアドレスを第2の端末装置200Kの所在アドレスと対応づけてアドレステーブルT52に格納する機能をもたせておけばよい。
このように、アドレステーブルT52に第2の端末装置200KのVIPアドレスを格納しておくようにすれば、たとえば、第1の端末装置200Hが第2の端末装置200Kを通信先として通信を行う際に、第1の端末装置200Hの接続仲介依頼部210が、第2の端末装置200KのVIPアドレス「VIP(200K)」を通信先特定情報として用いて通信先の特定を行うことができる。
具体的には、端末装置200Hの接続仲介依頼部210が、通信先特定情報として「172.16.6.14」なるVIPアドレスを含む接続仲介依頼を行うようにすれば、接続仲介装置100内の通信先アドレス返信部130は、図20(b) に示すアドレステーブルT52を参照することにより、VIPアドレス「172.16.6.14」に対応する所在アドレス「zz.99.214.28(61999)」を通信先アドレスとして返信することができる。通常、VPNの設定を行った場合、アプリケーションプログラムのレイヤーでは、端末装置200Kは、「172.16.6.14」なるVIPアドレスをもった装置として認識されているので、このVIPアドレスを用いて接続仲介依頼を行うことができれば便利である。
もちろん、必要があれば、VIPアドレス「172.16.6.14」とともに、ポート番号「P5」を格納しておくようにしてもよい。そうすれば、「172.16.6.14(P5)」なる情報を用いて、特定のポート番号の指定を含む接続仲介依頼を行うことができる。
以上、図1に示す先願基本発明の第1の実施形態(接続仲介装置100と端末装置200を用いる実施形態)においてVPNの設定を行い、プライベートネットワークの範囲を仮想的に拡張する例を述べたが、図7に示す先願基本発明の第2の実施形態(接続仲介装置300と端末装置400を用いる実施形態)においてVPNの設定を行う場合も同様である。
<<< §5. 本発明により解決される技術的な問題 >>>
これまで、国際出願PCT/JP2017/006131に記載されている先願基本発明に係るネットワーク通信システムを説明してきた。しかしながら、この先願基本発明に係るシステムには、ネットワーク環境によっては、端末間通信に支障が生じる可能性がある。以下、そのような支障が生じる具体的な事例を説明する。
図21は、先願基本発明に係るネットワーク通信システムにおいて、通信障害が生じる具体例を示すブロック図である。図には、2組の端末装置200A,200Bが、それぞれルータRA,RBを介してネットワークN(インターネット)に接続されている状態が示されている。このように、ルータを用いて端末装置をネットワークに接続する実施形態の詳細は、§4で述べたとおりである。実用上、多くの端末装置は、図示のようにルータを介してネットワークNに接続されることになる。
§1で述べた先願基本発明の第1の実施形態の場合、接続仲介装置100によって両端末間の接続仲介が行われる。図に示す太線矢印、細線矢印、白抜矢印の3通りの矢印は、§1,§2でも用いたように、各ブロック間の信号の流れを示す矢印である。すなわち、太線矢印L1,L2は、端末装置200Aもしくは200Bと接続仲介装置100との間でやりとりされる信号を示し、細線矢印L3は、一対の端末装置200A,200Bの間で通信セッション確立前にやりとりされる信号の流れを示し、白抜矢印L4は、一対の端末装置200A,200Bの間で通信セッション確立後にやりとりされる信号の流れを示している。
実際には、この3種類の矢印L1〜L4で示される信号の流れは、いずれもルータおよびネットワークNを通ることになる。たとえば、太線矢印L1は、ルータRAおよびネットワークNを通る信号の流れになり、太線矢印L2は、ルータRBおよびネットワークNを通る信号の流れになる。また、細線矢印L3および白抜矢印L4は、ルータRA,ネットワークN,ルータRBを通る信号の流れになる。
§4で述べたとおり、ルータに接続された端末装置にはプライベートIPアドレスPIPが付与されるが、信号がルータを通ってインターネットNへ向かう際に、グローバルIPアドレスGIPに変換される。図示の例の場合、端末装置200Aには、PIP=「192.168.2.1」が付与されているが、信号がルータRAを通る際に、PIP=「192.168.2.1」は、グローバルIPアドレスGIP=「xx.5.1.1」に変換されている。同様に、端末装置200Bには、PIP=「192.168.10.1」が付与されているが、信号がルータRBを通る際に、PIP=「192.168.10.1」は、グローバルIPアドレスGIP=「xx.5.7.1」に変換されている。なお、実際には、§4で述べたとおり、ポート番号についても変換が行われるが、ここではポート番号についての説明は省略する。
このように、ルータRA,RBは、ネットワークアドレス変換機能(NAT(Network Address Translation)機能)を有しており、内側(図におけるルータRA,RBの下側)に接続された通信路について付与されたプライベートIPアドレスを、外側(図におけるルータRA,RBの上側)に接続された通信路について付与されたグローバルIPアドレスに変換するとともに、その逆の変換も行う。このNATにはいくつかのタイプがあり、具体的には、「Full cone NAT」,「Restricted cone NAT」,「Port restricted cone NAT」,「Symmetric NAT(対称型NAT)」等のタイプが実用されている。
個々のNATタイプは、それぞれ固有の仕様でアドレス変換を行うことを定めており、ルータの設置者は、セキュリティ上の問題や利用上の便宜などを考慮した上で、各ルータに適切なNATタイプを設定することになる。ここで、先願基本発明に係るネットワーク通信システムを実施する上で留意すべきNATタイプは、「Symmetric NAT(対称型NAT)」および「Port restricted cone NAT」である。本願では、この「Symmetric NAT(対称型NAT)」および「Port restricted cone NAT」を、便宜上、「関所型NAT」と呼ぶことにする。この「関所型NAT」が設定されているルータは、「外部ホストから内部ホスト(内側の端末装置)宛に送信されてきたパケットについては、過去に内部ホストからのパケットを受け取ったことがある外部ホストからのパケットのみを通す」という制限の下でアドレス変換を行う。このため、先願基本発明に係るネットワーク通信システムを利用した場合、関所型NATが設定されているルータの内側の端末装置に対する通信に支障が生じることになる。
たとえば、図21の例において、ルータRBに関所型NATの設定がなされていたものとしよう。この場合、ルータRBを介して内側から外側へ信号を送り出す際には、特に制約なしにアドレス変換が行われる。このため、端末装置200BからインターネットNに向かうパケットはルータRBを自由に通り抜けることができる。ところが、ルータRBを介して外側から内側へ信号を送り込む際には、ルータRBが関所の役割を果たすことになる。すなわち、インターネットNから端末装置200B宛にパケットが送られてきた場合、その送り主が過去に端末装置200Bからのパケットを受け取ったことがある外部ホストである場合には、ルータRBは当該パケットを取り込んで端末装置200B(内部ホスト)へ届けるが、それ以外の外部ホストである場合には、これをブロックする。
このため、ルータRBが関所型NATのルータであった場合、接続仲介装置100を送り主として、太線矢印L2に沿って端末装置200B宛に送信されてきたパケットは、ルータRBを通って支障なく端末装置200Bに届くが、端末装置200Aを送り主として、細線矢印L3に沿って端末装置200B宛に送信されてきたパケットは、ルータRBによってブロックされてしまう可能性がある。その理由は、次のとおりである。
§1,§2で述べたとおり、先願基本発明に係るネットワーク通信システムにおける各端末装置200A,200Bは、現時点の自己の所在アドレスを、所定のタイミングで繰り返して接続仲介装置100に通知している。このため、接続仲介装置100は、「過去に内部ホスト(端末装置200B)からのパケットを受け取ったことがある外部ホスト」ということになり、接続仲介装置100から端末装置200B宛のパケットはルータRBを通り抜けることができる。ところが、端末装置200Aは、必ずしも「過去に内部ホスト(端末装置200B)からのパケットを受け取ったことがある外部ホスト」に該当するわけではないので、端末装置200Aから端末装置200B宛のパケットはルータRBによってブロックされてしまう可能性がある。
このように、端末間の直接的な通信がブロックされてしまうと、先願基本発明に係るネットワーク通信システムによる接続仲介処理は正常に機能しなくなる。たとえば、図4に示す例の場合、通信元端末装置200Aの通信開始要求部240Aからの通信開始要求S5が、ルータによってブロックされ、通信先端末装置200Bに届かなかった場合、通信先セッション確立部230Bは通信セッションを確立することができず、両端末間の通信(S7)は実現しなくなる。このような事情は、§2で述べた先願基本発明の第2の実施形態の場合も同様である。
以上、関所型NATが設定されているルータによって端末間通信がブロックされることに起因した通信障害の例を述べたが、端末間通信がブロックされる要因は、他にも存在する。たとえば、インターネットを介した端末間通信のトランスポート層のプロトコルとしては、TCP(Transmission Control Protocol),UDP(User Datagram Protocol)等、いくつかのプロトコルが利用されている。TCPでは、通信速度よりも正確さに重点がおかれているため、パケットが確実に相手方に届くための工夫がなされているが、通信負荷は増大する。これに対して、UDPでは、正確さよりも通信速度に重点がおかれているため、パケットが喪失する可能性があるが、通信負荷は低減する。このため、Web画面の閲覧などにはTCPが用いられ、電話などの音声通話などにはUDPが用いられる。
もちろん、先願基本発明に係るネットワーク通信システムでは、通信プロトコルとしてTCPを採用することもできるし、UDPを採用することもできる。したがって、たとえば、音声通話を主としたシステムを構築するのであれば、UDPを採用してシステムを構築し、全体の通信負荷を低減させるのが好ましい。ただ、UDPのパケットは、途中でブロックされる可能性もある。たとえば、端末間に設置されているファイアウォールが、UDPパケットをブロックする仕様になっていると、UDPパケットは当該ファイアウォールを通り抜けることができず、相手方に届かなくなってしまう。
このように、先願基本発明に係るシステムには、ネットワーク環境によって、端末間通信に支障が生じる可能性がある。本発明は、このような問題を解決するためになされたものであり、上述したような様々な要因により、端末間の直接通信に何らかの制限が設けられている場合にも、両者間での通信を支障なく行うことが可能となるような対策を講じる方法を提供するものである。
本発明に係るネットワーク通信システムでは、先願基本発明に係るシステムのように端末装置間で直接的な通信(ここでは「通常通信」と呼ぶ)を行うことを前提としつつ、もう1つの通信方法として、接続仲介装置を介して間接的に通信を行う「迂回通信」と呼ぶ方法が用意される。そして、通常通信に失敗した場合、もしくは、通常通信での失敗が予想される場合、通常通信に代えて、迂回通信を行うことにより、両端末間での通信を支障なく行うことができるようにしている。
この迂回通信では、両端末間の情報パケットは、すべて接続仲介装置を介してやりとりされることになる。§1,§2で述べたとおり、各端末装置は、現時点の自己アドレスを所定タイミングで接続仲介装置に通知する機能を有しているため、接続仲介装置は、関所型NATのルータ下にある端末装置に対しても「過去にパケットを受け取ったことがある外部ホスト」ということになる。したがって、端末装置間の直接的な通信がルータによってブロックされたとしても、端末装置と接続仲介装置との間の通信はブロックされることはなく、迂回通信は支障なく行われることになる。
また、通常通信をUDPで行うことを前提としてシステムを構築した場合、迂回通信をTCPで行うようにしておけば、UDPブロックにより通常通信を行うことができない場合でも、代わりに迂回通信を用いることにより、両者間での通信を支障なく行うことが可能になる。
もちろん、通常通信の代わりに迂回通信を行った場合、接続仲介装置は、両端末装置間でやりとりされるすべての情報パケットを中継する必要があり、その処理負荷は増大することになる。したがって、迂回通信を行った場合は、先願基本発明の特徴である「一対の端末装置間の接続を仲介する際の処理負荷を軽減する」という作用効果は得られなくなる。しかしながら、本発明に係るネットワーク通信システムでも、基本的には先願基本発明と同様に通常通信を前提とした運用が行われ、ネットワーク環境によって、端末間通信に支障が生じる特殊なケースについてのみ迂回通信が行われることになるので、全体としてみれば、先願基本発明と同様に、「一対の端末装置間の接続を仲介する際の処理負荷を軽減する」という作用効果は得られ、更に、端末装置間の直接通信に問題がある場合にも、両者間での通信を支障なく行うことが可能になるという固有の作用効果も得られることになる。
本発明では、通常通信に代えて迂回通信を行うアプローチとして、次の3通りのアプローチを用意している。
(1) 失敗時に迂回通信
通常通信に失敗したことが判明した時点で、迂回通信に切り替える方法であり、具体的な内容は、§6において詳述する。
(2) 関所型NATの場合に迂回通信
予め各端末装置が利用するルータのNATタイプを調べておき、関所型NATの設定がなされたルータが介在するために通常通信の失敗が予想される場合に、通常通信に代えて迂回通信を行う方法であり、具体的な内容は、§7において詳述する。
(3) UDPブロックの場合に迂回通信
UDPによる通常通信を前提としたシステムを構築しておき、通信経路上にUDPをブロックする要素が存在するために通常通信の失敗が予想される場合に、通常通信に代えてTCPによる迂回通信を行う方法であり、具体的な内容は、§8において詳述する。
<<< §6. 失敗時に迂回通信を行うアプローチ >>>
この§6で述べる実施形態は、先願基本発明に係るシステムにおいて、図5や図9に示す手順に基づく通常通信が失敗した場合に、この失敗を検知して迂回通信に切り替える方法を採用する実施形態である。以下、このような方法を、§1に示す先願基本発明の第1の実施形態(図2)に適用した例を実施例1として説明し、§2に示す先願基本発明の第2の実施形態(図7)に適用した例を実施例2として説明する。もちろん、以下に述べる実施例1,2については、§3や§4で述べた各種変形例を適用することも可能である。なお、各実施例1,2にブロックとして示されている各構成要素は、これまで述べた先願基本発明に係るシステムと同様に、実際には、コンピュータに組み込まれた専用のプログラムによって実現されることになる。
<6−1. 実施例1>
図22は、本発明の実施例1に係るネットワーク通信システムにおける端末装置201の詳細構成を示すブロック図である。ここに示す端末装置201は、図2に示す先願基本発明の第1の実施形態に係る端末装置200における通信開始要求部240および通信元セッション確立部260に、若干の修正を加えてそれぞれ通信開始要求部241および通信元セッション確立部261とし、更に、新たな構成要素として、迂回通信処理部271(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。その他の構成要素である接続仲介依頼部210、通信要求受付部220、通信先セッション確立部230、自己アドレス通知部250は、図2に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§1で述べたとおりである。
また、この図22に示す実施例1では、図2に示す接続仲介装置100の代わりに、接続仲介装置101が用いられている。この接続仲介装置101は、図2に示す接続仲介装置100の機能に、迂回通信を中継する機能を付加したものであり、その構成の詳細は後述する。結局、図22に示す実施例1において、3桁の数字からなる符号における1の位が「1」となっているブロックで示される構成要素が、実施例1に固有の構成要素ということになる。
この実施例1に係るシステムは、図2に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置201のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置101と、を備えたネットワーク通信システムである。ここで、各端末装置201には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置101は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図において、太線矢印は、端末装置201と接続仲介装置101との間でやりとりされる信号の流れを示しており、細線矢印(ブロック201内部の矢印を除く)は、一対の端末装置201の間で直接的にやりとりされる、通信セッション確立前の信号の流れを示している。そして、白抜矢印は、一対の端末装置201の間で直接的にやりとりされる、通信セッション確立後の信号の流れを示している。この白抜矢印には、「通常通信」なる表記がなされているが、これはこのシステムが想定する本来の通信、すなわち、端末装置201間で直接的に行われる通信を示している。これに対して、迂回通信処理部271から伸びる太線矢印には、「迂回通信」なる表記がなされているが、これは、上述した「通常通信」に失敗したときに、端末装置201が接続仲介装置101を介して間接的に相手方への通信を行うことを示している。
図22に示す自己アドレス通知部250は、図2に示す自己アドレス通知部250と全く同じ構成要素であり、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置101に対して通知する機能を果たす。当該機能については、既に§1で詳述したため、ここでは説明を省略する。
その他の構成要素の機能も、ほぼ図2に示す対応する構成要素の機能と同じである。ただ、通信開始要求部241は、通信開始要求を行う際に、その旨を迂回通信処理部271に通知する付加機能を有しており、通信元セッション確立部261は、通信開始受諾確認を受領した際に、その旨を迂回通信処理部271に通知する付加機能を有している。
このような付加機能により、迂回通信処理部271は、通信元端末装置の通信元セッション確立部261と通信先端末装置の通信先セッション確立部230との間に通信セッションを確立して相手方に対する直接的な情報送受を行う通常通信(図の白抜矢印で示された通信)に失敗したときに、接続仲介装置101を介して相手方に対する間接的な情報送受を行う迂回通信を実行することができる。具体的には、通信元端末装置の通信開始要求部241が通信先端末装置宛に通信開始要求を行った後、これに応じた通信開始受諾確認が所定のタイムアウト設定時間内に返信されてこなかった場合に、迂回通信処理部271による迂回通信処理が行われる。
上述のとおり、迂回通信処理部271は、通信開始要求部241から通信開始要求を行った旨の通知を受けることができるので、その時点から経過時間の測定を開始し、所定のタイムアウト設定時間内に、通信元セッション確立部261から通信開始受諾確認を受領した旨の通知が来なかった場合には、通常通信に失敗したと判断し、迂回通信処理を開始する。具体的には、迂回通信処理部271は、接続仲介装置101(後述するように、その中の迂回通信中継部141)に対して迂回通信の中継依頼を行い、接続仲介装置101を介して、相手方の迂回通信処理部271との間での迂回通信を実行することになる。
図23は、図22に示す本発明の実施例1に係るネットワーク通信システムにおいて、通信元端末装置201Aと通信先端末装置201Bとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置201A,201Bは、図22に示す端末装置201と同一の構成を有する装置であり、図4と同様に、通信元端末装置201A内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置200B内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例1に固有の構成要素である迂回通信処理部271A,271Bについては太線枠ブロックで示してある。
図23に示す接続仲介装置101(図22に示すもの)は、図4に示す接続仲介装置100に、迂回通信中継部141を追加したものである。その他の構成要素であるアドレステーブル格納部110、アドレステーブル更新部120、通信先アドレス返信部130については、図4に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§1で述べたとおりである。迂回通信中継部141は、第1の端末装置201Aの迂回通信処理部271Aと第2の端末装置201Bの迂回通信処理部271Bとの間での迂回通信の中継依頼があったときに、第1の端末装置201Aの迂回通信処理部271Aと第2の端末装置201Bの迂回通信処理部271Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
このシステムにおける通常の通信セッション確立の手順は、図4および図5を用いて§1で説明した手順と同じである。すなわち、通信元端末装置201Aの通信要求受付部220Aが自己を通信元として、通信先の別な端末装置201Bに対する通信要求S1を受け付けると、接続仲介依頼部210Aが、接続仲介装置101に対して、通信先の別な端末装置201Bの端末ID「0020」を特定するための通信先特定情報を含む接続仲介依頼S2を送信する。
すると、接続仲介装置101の通信先アドレス返信部130は、アドレステーブルを参照して、接続仲介依頼S2に含まれている通信先特定情報によって特定される端末ID「0020」に対応づけられている所在アドレスAD2を通信先アドレスとして返信(S4)する。この返信(S4)を受けた通信開始要求部241Aは、通信先アドレスAD2にアクセスして通信開始要求S5を行う。このとき、前述したとおり、通信開始要求部241Aから迂回通信処理部271Aに対して、通信開始要求S5を行った旨の通知が出され、迂回通信処理部271Aはその時点から経過時間の測定を開始する。なお、§5で説明したとおり、端末間通信である通信開始要求S5は、ネットワーク環境によってブロックされ、通信先端末装置201Bに届かない可能性がある。図に「S5?」と記したのは、このような可能性を示すものである。
この通信開始要求S5が、通信先端末装置201B側の通信先セッション確立部230Bに無事届いた場合は、通信元端末装置201Aに対して通信開始受諾確認S6が送信される。通信元端末装置201A側の通信元セッション確立部261Aは、この通信開始受諾確認S6を受領すると、その旨を迂回通信処理部271Aに通知する。そして、通信元セッション確立部261Aと通信先セッション確立部230Bとの間に通信セッションが確立する。
しかしながら、通信開始要求S5が、ネットワーク環境によってブロックされた場合、当然ながら、通信先セッション確立部230Bからの通信開始受諾確認S6は送信されない。あるいは、通信開始要求S5が無事届いたのに、通信開始受諾確認S6がネットワーク環境によってブロックされる可能性もある。図に「S6?」と記したのは、このような可能性を示すものである。このような場合、通信元端末装置201Aと通信先端末装置201Bとの間における通常通信は失敗に終わる。
このように、通信開始要求S5や通信開始受諾確認S6がブロックされて通常通信が失敗した場合、通信元セッション確立部261Aは、所定のタイムアウト設定時間内に通信開始受諾確認S6を受領することができない。このため、迂回通信処理部271Aには、通信開始受諾確認S6の受領報告が所定のタイムアウト設定時間内になされないことになる。そうすると、迂回通信処理部271Aは通常通信に失敗したことを認識し、迂回通信処理を実行する。
すなわち、迂回通信処理部271Aは、通常通信の失敗を検知すると、迂回通信中継部141に対して迂回通信の中継依頼を行い、迂回通信中継部141を介して、相手方の迂回通信処理部271Bとの間での迂回通信S8aを実行する。迂回通信処理部271Aは、通信開始要求部241Aから通信先アドレスAD2を取得し、これを迂回通信中継部141に伝達して中継依頼を行う。迂回通信中継部141は、この中継依頼に応じて、通信先アドレスAD2にアクセスし、通信先端末装置201Bの迂回通信処理部271Bに迂回通信の開始を要求する。迂回通信処理部271Bは、これを受諾する旨の返信を迂回通信中継部141に対して行い、迂回通信S8bを実行する。以後、迂回通信中継部141による中継により、両端末装置201A,201B間での迂回通信が行われる。
この迂回通信では、両端末装置201A,201B間の情報パケットは、すべて接続仲介装置101を介してやりとりされることになる。この場合、端末装置201A,201Bから接続仲介装置101に対しては、自己アドレス通知部250A,250Bの機能により、現時点の自己アドレスが通知されるため、接続仲介装置101は、関所型NATのルータ下にある端末装置に対しても「過去にパケットを受け取ったことがある外部ホスト」ということになり、接続仲介装置101と端末装置201Aもしくは201Bとの間の通信は、関所型NATのルータによって拒絶されることはない。したがって、両端末装置201A,201B間の直接的な通信が関所型NATのルータによってブロックされたとしても、両端末装置201A,201B間の通信は、接続仲介装置101を中継して支障なく行われることになる。
また、両端末装置201A,201B間の通常通信がUDPを前提としていた場合でも、迂回通信S8a,S8bをTCPで行うようにすれば、UDPブロックにより通常通信を行うことができない場合でも、迂回通信S8a,S8bを支障なく行うことができる。迂回通信は、接続仲介装置101に多大な処理負荷をかける通信形態であるが、通常通信に失敗した場合の緊急時の対応策であるため、接続仲介装置101の全体的な処理負荷に重大な影響を与えることはない。
図24は、図23のブロック図に示されている実施例1における通信セッション確立手順を時系列で説明する流れ図である。この流れ図は、§1で述べた先願発明の第1の実施形態における通信セッション確立手順を示す図5の流れ図とほぼ同じである。ただ、図23に示す通信開始要求「S5?」および通信開始受諾確認「S6?」は、ネットワーク環境の諸条件に関する要因により、相手方に届かない可能性がある。図24におけるステップS5?,S6?は、図5におけるステップS5,S6と基本的には同じ手順を示しているが、ネットワーク環境の要因により信号が相手方に届かないケースを想定し、全体を括弧の中に入れて示してある。
ステップS6′は、通常通信の準備が成功したか失敗したかを判定する処理である。前述したとおり、通信開始要求部241AがステップS5?の通信開始要求を行う際に、その旨が迂回通信処理部271Aに通知され、迂回通信処理部271Aはその時点から経過時間の測定を開始する。ここで、通信元セッション確立部261Aからの通信開始受諾確認の受領報告が、所定のタイムアウト設定時間内にあった場合には、ステップS7へと進み、通信先セッション確立部230Bと通信元セッション確立部261Aによって、通信セッション確立の処理を経て通常通信が行われる(図5のステップS7と同様の処理)。一方、通信開始受諾確認の受領報告が、所定のタイムアウト設定時間内になされなかった場合には、通常通信が失敗したものと判断され、ステップS8へと進む。このステップS8では、迂回通信処理部271A,271Bと迂回通信中継部141によって、迂回通信処理が行われる(図23のS8a,S8b)。
<6−2. 実施例2>
図25は、本発明の実施例2に係るネットワーク通信システムにおける端末装置402の詳細構成を示すブロック図である。ここに示す端末装置402は、図7に示す先願基本発明の第2の実施形態に係る端末装置400における通信開始要求部440および通信先セッション確立部460に、若干の修正を加えてそれぞれ通信開始要求部442および通信先セッション確立部462とし、更に、新たな構成要素として、迂回通信処理部472(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。その他の構成要素である接続仲介依頼部410、通信要求受付部420、通信元セッション確立部430、自己アドレス通知部450は、図7に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§2で述べたとおりである。
また、この図25に示す実施例2では、図7に示す接続仲介装置300の代わりに、接続仲介装置302が用いられている。この接続仲介装置302は、図2に示す接続仲介装置300の機能に、迂回通信を中継する機能を付加したものであり、その構成の詳細は後述する。結局、図25に示す実施例2において、3桁の数字からなる符号における1の位が「2」となっているブロックで示される構成要素が、実施例2に固有の構成要素ということになる。
この実施例2に係るシステムは、図7に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置402のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置302と、を備えたネットワーク通信システムである。ここで、各端末装置402には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置302は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図においても、前述した実施例1と同様に、太線矢印、細線矢印、白抜矢印の3種類の矢印が用いられている。白抜矢印は「通常通信」を示し、迂回通信処理部472から伸びる太線矢印は「迂回通信」を示している。また、自己アドレス通知部450は、図7に示す自己アドレス通知部450と全く同じ構成要素であり、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置302に対して通知する機能を果たす。当該機能については、既に§2で詳述したため、ここでは説明を省略する。
その他の構成要素の機能も、ほぼ図7に示す対応する構成要素の機能と同じである。ただ、通信開始要求部442は、通信開始要求を行う際に、その旨を迂回通信処理部472に通知する付加機能を有しており、通信先セッション確立部462は、通信開始受諾確認を受領した際に、その旨を迂回通信処理部472に通知する付加機能を有している。
このような付加機能により、迂回通信処理部472は、通信元端末装置の通信元セッション確立部430と通信先端末装置の通信先セッション確立部462との間に通信セッションを確立して相手方に対する直接的な情報送受を行う通常通信(図の白抜矢印で示された通信)に失敗したときに、接続仲介装置302を介して相手方に対する間接的な情報送受を行う迂回通信を実行することができる。具体的には、通信先端末装置の通信開始要求部442が通信元端末装置宛に通信開始要求を行った後、これに応じた通信開始受諾確認が所定のタイムアウト設定時間内に返信されてこなかった場合に、迂回通信処理部472による迂回通信処理が行われる。
上述のとおり、迂回通信処理部472は、通信開始要求部442から通信開始要求を行った旨の通知を受けることができるので、その時点から経過時間の測定を開始し、所定のタイムアウト設定時間内に、通信先セッション確立部462から通信開始受諾確認を受領した旨の通知が来なかった場合には、通常通信に失敗したと判断し、迂回通信処理を開始する。具体的には、迂回通信処理部472は、接続仲介装置302(後述するように、その中の迂回通信中継部342)に対して迂回通信の中継依頼を行い、接続仲介装置302を介して、相手方の迂回通信処理部472との間での迂回通信を実行することになる。
図26は、図25に示す本発明の実施例2に係るネットワーク通信システムにおいて、通信元端末装置402Bと通信先端末装置402Aとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置402A,402Bは、図25に示す端末装置402と同一の構成を有する装置であり、図8と同様に、通信元端末装置402B内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置402A内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例2に固有の構成要素である迂回通信処理部472A,472Bについては太線枠ブロックで示してある。
図26に示す接続仲介装置302(図25に示すもの)は、図8に示す接続仲介装置300に、迂回通信中継部342を追加したものである。その他の構成要素であるアドレステーブル格納部310、アドレステーブル更新部320、通信先アドレス返信部330については、図8に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§2で述べたとおりである。迂回通信中継部342は、第1の端末装置402Aの迂回通信処理部472Aと第2の端末装置402Bの迂回通信処理部472Bとの間での迂回通信の中継依頼があったときに、第1の端末装置402Aの迂回通信処理部472Aと第2の端末装置402Bの迂回通信処理部472Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
このシステムにおける通常の通信セッション確立の手順は、図8および図9を用いて§2で説明した手順と同じである。すなわち、通信元端末装置402Bの通信要求受付部420Bが自己を通信元として、通信先の別な端末装置402Aに対する通信要求S11を受け付けると、接続仲介依頼部410Bが、接続仲介装置302に対して、通信先の別な端末装置402Aの端末ID「0010」を特定するための通信先特定情報を含む接続仲介依頼S12を送信する。
すると、接続仲介装置302の通信元アドレス送信部330は、アドレステーブルを参照して、接続仲介依頼S12に含まれている通信先特定情報によって特定される端末ID「0010」に対応づけられている所在アドレスAD1を通信先アドレスとして認識し、この通信先アドレスAD1に対して、接続仲介依頼S12を送信した通信元の端末装置402Bの端末ID「0020」に対応づけられている所在アドレスAD2を、通信元アドレスとして送信(S14)する。
こうして、通信元アドレスAD2の送信(S14)を受けた通信先端末装置402A内の通信開始要求部442Aは、通信元アドレスAD2にアクセスして通信開始要求S15を行う。このとき、前述したとおり、通信開始要求部442Aから迂回通信処理部472Aに対して、通信開始要求S15を行った旨の通知が出され、迂回通信処理部472Aはその時点から経過時間の測定を開始する。なお、§5で説明したとおり、端末間通信である通信開始要求S15は、ネットワーク環境によってブロックされ、通信元端末装置402Bに届かない可能性がある。図に「S15?」と記したのは、このような可能性を示すものである。
この通信開始要求S15が、通信元端末装置402B側の通信元セッション確立部430Bに無事届いた場合は、通信先端末装置402Aに対して通信開始受諾確認S16が送信される。通信先端末装置402A側の通信先セッション確立部462Aは、この通信開始受諾確認S16を受領すると、その旨を迂回通信処理部472Aに通知する。そして、通信先セッション確立部462Aと通信元セッション確立部430Bとの間に通信セッションが確立する。
しかしながら、通信開始要求S15が、ネットワーク環境によってブロックされた場合、当然ながら、通信元セッション確立部430Bからの通信開始受諾確認S16は送信されない。あるいは、通信開始要求S15が無事届いたのに、通信開始受諾確認S16がネットワーク環境によってブロックされる可能性もある。図に「S16?」と記したのは、このような可能性を示すものである。このような場合、通信元端末装置402Bと通信先端末装置402Aとの間における通常通信は失敗に終わる。
このように、通信開始要求S15や通信開始受諾確認S16がブロックされて通常通信が失敗した場合、通信先セッション確立部462Aは、所定のタイムアウト設定時間内に通信開始受諾確認S16を受領することができない。このため、迂回通信処理部472Aには、通信開始受諾確認S16の受領報告が所定のタイムアウト設定時間内になされないことになる。そうすると、迂回通信処理部472Aは通常通信に失敗したことを認識し、迂回通信処理を実行する。
すなわち、迂回通信処理部472Aは、通常通信の失敗を検知すると、迂回通信中継部342に対して迂回通信の中継依頼を行い、迂回通信中継部342を介して、相手方の迂回通信処理部472Bとの間での迂回通信S18aを実行する。迂回通信処理部472Aは、通信開始要求部442Aから通信元アドレスAD2を取得し、これを迂回通信中継部342に伝達して中継依頼を行う。迂回通信中継部342は、この中継依頼に応じて、通信元アドレスAD2にアクセスし、通信元端末装置402Bの迂回通信処理部472Bに迂回通信の開始を要求する。迂回通信処理部472Bは、これを受諾する旨の返信を迂回通信中継部342に対して行い、迂回通信S18bを実行する。以後、迂回通信中継部342による中継により、両端末装置402A,402B間での迂回通信が行われる。
この迂回通信では、両端末装置402A,402B間の情報パケットは、すべて接続仲介装置302を介してやりとりされることになる。この場合、端末装置402A,402Bから接続仲介装置302に対しては、自己アドレス通知部450A,450Bの機能により、現時点の自己アドレスが通知されるため、接続仲介装置302は、関所型NATのルータ下にある端末装置に対しても「過去にパケットを受け取ったことがある外部ホスト」ということになる。したがって、両端末装置402A,402B間の直接的な通信が関所型NATのルータによってブロックされたとしても、両端末装置402A,402B間の通信は、接続仲介装置302を中継して支障なく行われることになる。
また、両端末装置402A,402B間の通常通信がUDPを前提としていた場合でも、迂回通信S18a,S18bをTCPで行うようにすれば、UDPブロックにより通常通信を行うことができない場合でも、迂回通信S18a,S18bを支障なく行うことができる。迂回通信は、接続仲介装置302に多大な処理負荷をかける通信形態であるが、通常通信に失敗した場合の緊急時の対応策であるため、接続仲介装置302の全体的な処理負荷に重大な影響を与えることはない。
図27は、図26のブロック図に示されている実施例2における通信セッション確立手順を時系列で説明する流れ図である。この流れ図は、§2で述べた先願発明の第2の実施形態における通信セッション確立手順を示す図9の流れ図とほぼ同じである。ただ、図26に示す通信開始要求「S15?」および通信開始受諾確認「S16?」は、ネットワーク環境の諸条件に関する要因により、相手方に届かない可能性がある。図27におけるステップS15?,S16?は、図9におけるステップS15,S16と基本的には同じ手順を示しているが、ネットワーク環境の要因により信号が相手方に届かないケースを想定し、全体を括弧の中に入れて示してある。
ステップS16′は、通常通信の準備が成功したか失敗したかを判定する処理である。前述したとおり、通信開始要求部442AがステップS15?の通信開始要求を行う際に、その旨が迂回通信処理部472Aに通知され、迂回通信処理部472Aはその時点から経過時間の測定を開始する。ここで、通信先セッション確立部462Aからの通信開始受諾確認の受領報告が、所定のタイムアウト設定時間内にあった場合には、ステップS17へと進み、通信元セッション確立部430Bと通信先セッション確立部462Aによって、通信セッション確立の処理を経て通常通信が行われる(図9のステップS17と同様の処理)。一方、通信開始受諾確認の受領報告が、所定のタイムアウト設定時間内になされなかった場合には、通常通信が失敗したものと判断され、ステップS18へと進む。このステップS18では、迂回通信処理部472A,472Bと迂回通信中継部342によって、迂回通信処理が行われる(図26のS18a,S18b)。
<6−3. 実施例1および実施例2の変形例>
これまで述べた実施例1および実施例2では、迂回通信処理部271,472が、通信開始要求部241,442が通信開始要求S5,S15を行った後、これに応じた通信開始受諾確認S6,S16が所定のタイムアウト設定時間内に返信されてこなかった場合に、通常通信に失敗したと判断して迂回通信を実行する構成をとっている。ここで述べる変形例は、通常通信に失敗したと判断する方法を若干変更したものである。
この変形例では、通信開始要求部241,442から迂回通信処理部271,472に対する通信開始要求の通知や、セッション確立部261,462から迂回通信処理部271,472に対する通信開始受諾確認の受領通知は不要である。その代わりに、通信開始要求S5,S15に対する相手方からのアクノレッジを受け取るようにし、当該アクノレッジが得られなかった場合に、通常通信に失敗したと判断する方法を採る。
具体的には、図23に示す実施例1の変形例の場合、通信元端末装置201Aの通信開始要求部241Aが、通信先端末装置201Bに対して通信開始要求S5を行う際に、通信先端末装置201B側の通信先セッション確立部230Bから、当該通信開始要求S5に対するアクノレッジが返信されるような仕様にしておく。すなわち、通信先セッション確立部230Bが、通信開始要求S5を受け取ったときに、通信開始要求部241Aに対してアクノレッジの信号を返信するようにし、通信開始要求部241Aは、このアクノレッジ信号を受信することにより、通信開始要求S5が相手先に届いたことを認識できるようにしておく。
このような仕様では、通信開始要求部241Aは、アクノレッジが返信されて来なかった場合に、通常通信に失敗したと判断することができる。そこで、通信開始要求部241Aは、アクノレッジが返信されて来なかった場合に、迂回通信処理部271Aに対して迂回通信を指示するようにする。このような指示を受けた迂回通信処理部271Aは、迂回通信中継部141に対して迂回通信の中継依頼を行い、迂回通信中継部141を介して、相手方の迂回通信処理部271Bとの間での迂回通信を実行すればよい。
同様に、図26に示す実施例2の変形例の場合、通信先端末装置402Aの通信開始要求部442Aが、通信先端末装置402Bに対して通信開始要求S15を行う際に、通信先端末装置402B側の通信元セッション確立部430Bから、当該通信開始要求S15に対するアクノレッジが返信されるような仕様にしておく。すなわち、通信元セッション確立部430Bが、通信開始要求S15を受け取ったときに、通信開始要求部442Aに対してアクノレッジの信号を返信するようにし、通信開始要求部442Aは、このアクノレッジ信号を受信することにより、通信開始要求S15が相手先に届いたことを認識できるようにしておく。
このような仕様では、通信開始要求部442Aは、アクノレッジが返信されて来なかった場合に、通常通信に失敗したと判断することができる。そこで、通信開始要求部442Aは、アクノレッジが返信されて来なかった場合に、迂回通信処理部472Aに対して迂回通信を指示するようにする。このような指示を受けた迂回通信処理部472Aは、迂回通信中継部342に対して迂回通信の中継依頼を行い、迂回通信中継部342を介して、相手方の迂回通信処理部472Bとの間での迂回通信を実行すればよい。
<<< §7. 関所型NATの場合に迂回通信を行うアプローチ >>>
§6で述べた実施例1,2は、先願基本発明に係るシステムにおいて通常通信が失敗した場合に、この失敗を検知して迂回通信に切り替える方法を採用するものである。これに対して、この§7で述べる実施形態は、通常通信を行うと失敗が予想されるときに、これを事前に検知して、通常通信の代わりに迂回通信を行う方法を採用するものである。より具体的には、通常通信が関所型NATのルータにより妨げられる可能性がある場合には、事前にこれを検知して、通常通信ではなく、迂回通信に切り替える方法を採る。
図21を用いて説明したとおり、実用上、各端末装置200A,200BはルータRA,RBを介してインターネットNに接続されるのが一般的である。この場合、§5で述べたとおり、ルータのタイプが関所型NATに設定されていると、その下に接続されている端末装置は、「過去に自分が送信したパケットを受け取ったことがある外部ホストからのパケット」しか受け取ることができず、それ以外の外部ホストからのパケットは、当該関所型NATのルータによって拒絶されてしまう。
もっとも、個々の端末装置は、自己が接続されているルータのタイプを直接認識することはできない。そこで、個々の端末装置が、自己が接続されているルータのタイプを照会することができるように、インターネットN上には、NATタイプ判別装置が設定されている。このNATタイプ判別装置は、端末装置からネットワークNを介してNATタイプの照会があったときに、当該照会に係る通信を利用して、照会元の端末装置が接続されているルータのNATタイプを判別し、判別したNATタイプを照会元の端末装置に回答する処理を行う。
たとえば、図21に示す例において、ネットワークNにこのようなNATタイプ判別装置を接続しておけば、端末装置200Aは、このNATタイプ判別装置に対して照会を行うことにより、自己が接続されているルータRAのNATタイプを知ることができる。すなわち、端末装置200AからルータRAを介して、ネットワークNに接続されているNATタイプ判別装置に対してNATタイプの照会を行うと、NATタイプ判別装置は、当該照会に係る通信を利用して(ルータRAから送信されてくるパケットから得られる様々な情報を利用して)、ルータRAのNATタイプを判別することができる。
NATタイプ判別装置は、こうして判別されたルータRAのNATタイプを、ルータRAを介して、照会元の端末装置200Aに回答する。かくして、端末装置200Aは、自己が接続されているルータRAのNATタイプを知ることができる。同様に、端末装置200Bは、同様の方法でNATタイプ判別装置に対して照会を行うことにより、自己が接続されているルータRBのNATタイプを知ることができる。
このように、端末装置からの照会に基づいて、当該端末装置自身が接続されているルータのNATタイプ(本願では、自己のNATタイプと呼ぶ)を判別し、これを照会元の端末装置に回答する処理を行うNATタイプ判別装置としては、STUN(Session Traversal Utilities for NATs)サーバと呼ばれている公知の装置を利用することができる。本来、このSTUNサーバは、STUNプロトコルを用いた通信を可能にするために設置されるサーバであるが、本発明におけるNATタイプ判別装置として用いることができる。このSTUNサーバは、既に広く利用されている公知の装置であるので、その構成や具体的な処理内容についての説明は、ここでは省略する。
このように、図21に示す例において、ネットワークNにNATタイプ判別装置(STUNサーバ)を接続しておけば、各端末装置200A,200Bは、自己が接続されているルータRA,RBのNATタイプを知ることができる。そこで、各端末装置200A,200Bが、自己アドレスを接続仲介装置100に通知する際に、自己が接続されているルータRA,RBのNATタイプを併せて通知するようにすれば、接続仲介装置100は、個々の端末装置のアドレスとともに、当該端末装置自身が接続されているルータのNATタイプ(自己のNATタイプ)を知ることができる。
したがって、接続仲介装置100は、通信元の端末装置から通信先の端末装置への接続仲介依頼があったときに、両端末装置が接続されているルータについてのNATタイプを調べることにより、両端末間に関所型NATのルータが存在しているか否かを把握することができ、両端末間でこのまま通常通信を行ったとすると、両端末間に存在する関所型NATのルータによって当該通常通信が失敗することを予想することができる。そこで、接続仲介装置100は、関所型NATのルータの存在によって、通常通信の失敗が予測されるときには、端末装置に対して、通常通信の代わりに迂回通信を行う旨の指示を与えることができる。このような指示を受けた端末装置は、§6で述べた方法と同様の方法で迂回通信を行うことになる。
このように、この§7で述べる実施形態では、個々の端末装置が、接続仲介装置に対して自己アドレスの通知を行う際に、自己が接続されたルータのNATタイプ(自己のNATタイプ)も併せて通知しておく。そして、接続仲介装置が通信元の端末装置から通信先の端末装置への接続仲介依頼を受けたときに、両端末間における関所型NATのルータの存在によって通常通信の失敗が予想される場合には、迂回通信を指示するようにし、この指示に基づいて両端末間で迂回通信を行うようにする。
以下、このような通信方法を、§1に示す先願基本発明の第1の実施形態(図2)に適用した例を実施例3として説明し、§2に示す先願基本発明の第2の実施形態(図7)に適用した例を実施例4として説明する。もちろん、以下に述べる実施例3,4については、§3や§4で述べた各種変形例を適用することも可能である。なお、各実施例3,4にブロックとして示されている各構成要素は、これまで述べた先願基本発明に係るシステムと同様に、実際には、コンピュータに組み込まれた専用のプログラムによって実現されることになる。
<7−1. 実施例3>
図28は、本発明の実施例3に係るネットワーク通信システムにおける端末装置203の詳細構成を示すブロック図である。ここに示す端末装置203は、図2に示す先願基本発明の第1の実施形態に係る端末装置200における通信開始要求部240および自己アドレス通知部250に、若干の修正を加えてそれぞれ通信開始要求部243および自己アドレス通知部253とし、更に、新たな構成要素として、迂回通信処理部273およびNATタイプ確認部283(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。その他の構成要素である接続仲介依頼部210、通信要求受付部220、通信先セッション確立部230、通信元セッション確立部260は、図2に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§1で述べたとおりである。
また、この図28に示す実施例3では、図2に示す接続仲介装置100の代わりに、接続仲介装置103が用いられている。この接続仲介装置103は、図2に示す接続仲介装置100の機能に、通信方法(通常通信か迂回通信か)を指示する機能と、迂回通信を中継する機能とを付加したものであり、その構成の詳細は後述する。結局、図28に示す実施例3において、3桁の数字からなる符号における1の位が「3」となっているブロックで示される構成要素が、実施例3に固有の構成要素ということになる。
なお、図28には、NATタイプ判別装置500が記載されている。このNATタイプ判別装置500は、前述したとおり、端末装置203からネットワークNを介してNATタイプの照会があったときに、当該照会に係る通信を利用して、照会元の端末装置203のNATタイプを判別し、判別したNATタイプを照会元の端末装置に回答する処理を行う。実際には、STUNサーバをNATタイプ判別装置500として利用できる点は、既に述べたとおりである。
図示する実施例3は、本発明に係るネットワーク通信システムとは別個に利用されているSTUNサーバを、本発明に係るNATタイプ判別装置500として流用した例である。もちろん、接続仲介装置103を構成するサーバ装置内に、本発明のための専用のSTUNサーバを用意してもかまわない。この場合、同一サーバ装置内に、接続仲介装置103とNATタイプ判別装置500(本発明のための専用のSTUNサーバ)が組み込まれることになり、NATタイプ判別装置500は、本発明に係るネットワーク通信システムの構成要素の1つになる。
この実施例3に係るシステムは、図2に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置203のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置103と、を備えたネットワーク通信システムである。ここで、各端末装置203には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置103は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図における太線矢印は、端末装置203と接続仲介装置103との間でやりとりされる信号の流れを示しており、細線矢印(ブロック203内部の矢印を除く)は、一対の端末装置203の間で直接的にやりとりされる、通信セッション確立前の信号の流れを示している。そして、白抜矢印は、一対の端末装置203の間で直接的にやりとりされる、通信セッション確立後の信号の流れを示している。この白抜矢印には、「通常通信」なる表記がなされているが、これはこのシステムが想定する本来の通信、すなわち、端末装置203間で直接的に行われる通信を示している。これに対して、迂回通信処理部273から伸びる太線矢印には、「迂回通信」なる表記がなされているが、これは、上述した「通常通信」の失敗が予想されるときに、端末装置203が接続仲介装置103を介して間接的に相手方への通信を行うことを示している。
図28に示す自己アドレス通知部253は、図2に示す自己アドレス通知部250と同様に、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置103に対して通知する機能を果たす。この自己アドレス通知機能については、既に§1で詳述したとおりである。ただ、自己アドレス通知部253は、この自己アドレス通知機能に加えて、自己が接続されているルータ(図28には示されていない)のNATタイプを接続仲介装置103に対して併せて通知する付加的な機能を有している。
この付加機能は、新たな構成要素であるNATタイプ確認部283の助けを借りて行われる。NATタイプ確認部283は、ネットワークNを介してNATタイプ判別装置500に対して自己のNATタイプを照会し、NATタイプ判別装置500からの回答を得る機能をもった構成要素である。図における太い一点鎖線の矢印は、NATタイプ確認部283とNATタイプ判別装置500との間でやりとりされる照会および回答の信号の流れを示している。もちろん、この信号は、図示されていないルータおよびネットワークNを介してやりとりされることになる。
この実施例3に係る端末装置203が相手方に対する通信を行う前に、図29の流れ図に示されている事前処理が実行される。まず、自己アドレス通知部253が、接続仲介装置103に対して自己の所在アドレスを通知する際(前述したとおり、自己アドレスの通知は、予め定められた所定のタイミングで実行される)に、ステップS31において、NATタイプ確認部283に対してNATタイプ確認指示を出す。NATタイプ確認部283は、このNATタイプ確認指示を受けると、ステップS32において、NATタイプ判別装置500に対して自己のNATタイプを照会する(図28の太い一点鎖線の矢印)。
NATタイプ判別装置500は、端末装置203のNATタイプ確認部283からネットワークNを介してNATタイプの照会があったときに、当該照会に係る通信を利用して、照会元の端末装置203のNATタイプ(端末装置203が接続されているルータのNATタイプ)を判別し、ステップS33において、判別したNATタイプを照会元の端末装置203のNATタイプ確認部203に回答する処理を行う。具体的な処理方法は、STUNサーバの処理として公知であるため、ここでは詳細な説明は省略する。
NATタイプ確認部283は、続くステップS34において、ステップS33で得られた回答(NATタイプ)を自己アドレス通知部253に報告する。当該報告を受けた自己アドレス通知部253は、当該報告に基づいて、ステップS35において、ステップS33で得られた回答(NATタイプ)を接続仲介装置103に対して、自己アドレスとともに通知する。
このように、実施例3では、自己アドレス通知部253が、接続仲介装置103に対して自己の所在アドレスを通知する際に、NATタイプ確認部283が得た回答を併せて通知することになる。したがって、図28において、自己アドレス通知部253からネットワークNに向かう太線矢印は、端末装置203の所在アドレスの情報とともに、端末装置203が接続されているルータ(図示されていない)のNATタイプの情報を含む信号になる。
こうして、接続仲介装置103には、各端末装置203から、所在アドレスの情報とNATタイプの情報とが通知されるので、接続仲介装置103内のアドレステーブルには、端末IDと所在アドレスに加えて、更に、NATタイプを対応づけた情報が格納される。すなわち、図29の流れ図のステップS36において、接続仲介装置103内のアドレステーブル更新部123によって、NATタイプを含めたアドレステーブルの更新が行われる。図30は、このような更新によって作成されたアドレステーブルT60を示す図である。このアドレステーブルT60は、図6に示すアドレステーブルTと同様に、4組の端末装置から通知された所在アドレスを示すものであるが、所在アドレスに加えて、NATタイプの情報(右欄)も記録されている。
前述したように、NATタイプには、「Full cone NAT」,「Restricted cone NAT」,「Port restricted cone NAT」,「Symmetric NAT」等のタイプが実用されているが、§5で述べたとおり、通常通信の妨げになるのは「関所型NAT」(「Symmetric NAT」および「Port restricted cone NAT」)であるので、図30に示すアドレステーブルT60では、接続されているルータのNATタイプが「関所型NAT」である端末装置については「関所型」なるデータを記録し、それ以外の端末装置については「非関所型」なるデータを記録している。もちろん、「Full cone NAT」などの実際のNATタイプを示すデータを記録するようにしてもかまわない。
図29の流れ図に示されている事前処理が済めば、図28に示す実施例3に係るネットワーク通信システムにおける通信準備は完了である。自己アドレス通知部253による所在アドレスおよびNATタイプの通知は、所定タイミングで繰り返し実行されるので、接続仲介装置103内のアドレステーブルT60には、各端末装置について、常に最新の所在アドレスおよびNATタイプが格納されることになる。そこで、接続仲介装置103は、特定の通信元端末装置から特定の通信先端末装置への接続仲介依頼が来たときに、アドレステーブルT60を参照して、両端末間で通常通信を行った場合に、「関所型NAT」が設定されたルータにより当該通常通信に支障が生じるか否かを判断し、支障なしと判断される場合には通常通信を選択し、支障ありと判断される場合には迂回通信を選択する。
そして、接続仲介装置103から通信元端末装置203の通信開始要求部243に対して、通信先アドレスを返信する際に、選択した通信方法を示す情報(通常通信か、迂回通信かを示す情報)を併せて返信する。したがって、図28において、ネットワークNから通信開始要求部243に向かう太線矢印は、通信先アドレスの情報とともに通信方法の情報を含む信号になる。
通信開始要求部243は、接続仲介装置103から通信先アドレスと共に通信方法が返信されてきたとき、通信方法として通常通信が選択されていた場合には、先願基本発明の第1の実施形態と同様に、ネットワークNを介して、通信先アドレスにアクセスして通信開始要求を行う。以後の通信手順は、§1で述べたとおりである。一方、通信方法として迂回通信が選択されていた場合には、迂回通信処理部273に対して迂回通信指示を行う。
迂回通信処理部273は、§6で述べた実施例1における迂回通信処理部271と同様に、接続仲介装置103を介した迂回通信を行う構成要素である。すなわち、迂回通信処理部273は、通常通信(図の白抜矢印で示された通信)の失敗が予想されるときに、接続仲介装置103を介して相手方に対する間接的な情報送受を行う迂回通信を実行する。上述したとおり、失敗予想は、接続仲介装置103において行われる。通信開始要求部243が接続仲介装置103から迂回通信を選択する通信方法を受け取った場合、接続仲介装置103が失敗予想を行ったケースにあたる。この場合、通信開始要求部243から迂回通信処理部273に対して迂回通信指示が行われ、迂回通信処理部273による迂回通信が実行される。具体的には、迂回通信処理部273は、接続仲介装置103(後述するように、その中の迂回通信中継部143)に対して迂回通信の中継依頼を行い、接続仲介装置103を介して、相手方の迂回通信処理部273との間での迂回通信を実行することになる。
図31は、図28に示す本発明の実施例3に係るネットワーク通信システムにおいて、通信元端末装置203Aと通信先端末装置203Bとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置203A,203Bは、図28に示す端末装置203と同一の構成を有する装置であり、図4と同様に、通信元端末装置203A内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置203B内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例3に固有の構成要素である迂回通信処理部273A,273BおよびNATタイプ確認部283A,283Bについては太線枠ブロックで示してある。
図31に示す接続仲介装置103(図28に示すもの)は、図4に示す接続仲介装置100に、迂回通信中継部143を追加するとともに、その他の構成要素であるアドレステーブル格納部110、アドレステーブル更新部120、通信先アドレス返信部130については、若干の付加機能を設けることにより、アドレステーブル格納部113、アドレステーブル更新部123、通信先アドレス返信部133としたものである。
接続仲介装置103内の迂回通信中継部143は、第1の端末装置203Aの迂回通信処理部273Aと第2の端末装置203Bの迂回通信処理部273Bとの間での迂回通信の中継依頼があったときに、第1の端末装置203Aの迂回通信処理部273Aと第2の端末装置203Bの迂回通信処理部273Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
また、接続仲介装置103内のアドレステーブル格納部113は、図30に例示したように、端末IDと所在アドレスに加えて、更に、NATタイプを対応づけたアドレステーブルT60を格納する機能を有する。そして、接続仲介装置103内のアドレステーブル更新部123は、自己アドレス通知部253からの通知に含まれるNATタイプを示す情報に基づいて、アドレステーブルT60内のNATタイプの更新を行う付加機能を有する。
一方、接続仲介装置103内の通信先アドレス返信部133は、通信元端末装置203A内の接続仲介依頼部210Aから接続仲介依頼S2が送信されてきたときに、アドレステーブルT60を参照して、接続仲介依頼S2に含まれている通信先特定情報によって特定される端末ID「0020」に対応づけられている所在アドレスAD2を通信先アドレスとして返信するとともに、通信先の端末装置203BのNATタイプを確認し、通信先の端末装置203BのNATタイプが関所型NATではなかった場合には、通信方法として通常通信を選択し、通信先の端末装置203BのNATタイプが関所型NATであった場合には、通信方法として迂回通信を選択し、選択した通信方法を通信先アドレスと共に返信する機能を有する。
この図31に示す例において、アドレステーブル格納部113内に図30のようなアドレステーブルT60が格納されていた場合、通信先の端末装置203B(端末ID:0020)のNATタイプは「関所型」になっているので、通信先アドレス返信部133は、通信方法として迂回通信を選択する。通信先端末装置203Bが関所型NATということは、§5で述べたとおり、通信元端末装置203Aから通信先端末装置203Bへ、直接的に通信開始要求S5を行った場合、通信先端末装置203BのルータRBによって、当該通信開始要求S5がブロックされてしまう可能性がある。この場合、通信先アドレス返信部133は、通信方法として迂回通信を選択することになる。図31には、通信先アドレス返信部133から通信開始要求部243Aに対して、通信先アドレス「AD2」および通信方法「迂回通信」を示す情報が返信された例(図31の太線矢印S4a)が示されている。これに対して、通信先の端末装置203BのNATタイプが「非関所型」になっていれば、通信先アドレス返信部133は、通信方法として通常通信を選択することになる。
通信元端末装置203A内の通信開始要求部243Aは、通信先アドレス返信部133から「通常通信」を選択する返信が戻ってきた場合、通常通信の処理を行う。具体的には、通信開始要求部243Aが、通信先アドレスAD2にアクセスして通信開始要求S5を行うと、相手方の通信先セッション確立部230Bから通信元セッション確立部260Aに対して通信開始受諾確認S6が送信される。こうして、通信元セッション確立部260Aと通信先セッション確立部230Aとの間に通信セッションが確立する。
一方、通信先アドレス返信部133から「迂回通信」を選択する返信が戻ってきた場合、通信開始要求部243Aは、迂回通信の処理を行う。すなわち、通信開始要求部243Aは、通信開始要求S5を行う代わりに、迂回通信処理部273Aに対して、迂回通信指示S5′を行う。迂回通信処理部273Aは、この迂回通信指示S5′を受けると、迂回通信中継部143に対して迂回通信の中継依頼を行い、迂回通信中継部143を介して、相手方の迂回通信処理部273Bとの間での迂回通信S8aを実行する。迂回通信処理部273Aは、通信開始要求部243Aから通信先アドレスAD2を取得し、これを迂回通信中継部143に伝達して中継依頼を行う。迂回通信中継部143は、この中継依頼に応じて、通信先アドレスAD2にアクセスし、通信先端末装置203Bの迂回通信処理部273Bに迂回通信の開始を要求する。迂回通信処理部273Bは、これを受諾する旨の返信を迂回通信中継部143に対して行い、迂回通信S8bを実行する。以後、迂回通信中継部143による中継により、両端末装置203A,203B間での迂回通信が行われる。
この迂回通信では、両端末装置203A,203B間の情報パケットは、すべて接続仲介装置103を介してやりとりされることになる。§5で述べたように、両端末装置203A,203B間の直接的な通信が関所型NATのルータによってブロックされるとしても、両端末装置203A,203B間の迂回通信は、接続仲介装置103を中継する通信になるため、支障なく行われる。
図32は、図31のブロック図に示されている実施例3における通信セッション確立手順を時系列で説明する流れ図である。この流れ図における通常通信の手順は、§1で述べた先願発明の第1の実施形態における通信セッション確立手順を示す図5の流れ図とほぼ同じである。
まず、ステップS1において、通信要求受付部220Aによる通信要求受付処理が行われ、続くステップS2において、接続仲介依頼部210Aによる接続仲介依頼が行われる。そしてステップS3において、通信先アドレス返信部133によりアドレステーブル格納部113に格納されているアドレステーブルT60の参照が行われ、ステップS4aにおいて、通信先アドレス返信部133から通信開始要求部243Aに対して、通信先アドレスおよび通信方法が返信される。この返信を受けた通信開始要求部243Aは、ステップS4bにおいて、2通りの処理プロセスのいずれかを選択する。
まず、通信先アドレス返信部133によって、通信方法として「通常通信」が指示されていた場合には、ステップS5へ進む。図32の流れ図におけるステップS5〜S7の手順は、図5の流れ図におけるステップS5〜S7の手順と全く同じである。すなわち、通信開始要求部243Aは、ステップS5において、通信先端末装置203Bに対して通信開始要求S5を行う。通信先セッション確立部230Bは、この通信開始要求S5を受け、ステップS6において、通信元端末装置203Aに対して通信開始受諾確認S6を送信する。そして、続くステップS7において、通信先セッション確立部230Bと通信元セッション確立部260Aとの間の通信セッションが確立され、通常通信S7が行われる。
一方、通信方法として「迂回通信」が指示されていた場合には、ステップS5′へ進み、通信開始要求部243Aから迂回通信処理部273Aに対して迂回通信指示が与えられる。そして続くステップS8において、迂回通信処理が実行される。すなわち、迂回通信処理部273A,273Bと迂回通信中継部143によって、迂回通信処理が行われる(図31のS8a,S8b)。
<7−2. 実施例4>
図33は、本発明の実施例4に係るネットワーク通信システムにおける端末装置404の詳細構成を示すブロック図である。ここに示す端末装置404は、図7に示す先願基本発明の第2の実施形態に係る端末装置400における通信開始要求部440および自己アドレス通知部450に、若干の修正を加えてそれぞれ通信開始要求部444および自己アドレス通知部454とし、更に、新たな構成要素として、迂回通信処理部474およびNATタイプ確認部484(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。その他の構成要素である接続仲介依頼部410、通信要求受付部420、通信元セッション確立部430、通信先セッション確立部460は、図7に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§2で述べたとおりである。
また、この図33に示す実施例4では、図7に示す接続仲介装置300の代わりに、接続仲介装置304が用いられている。この接続仲介装置304は、図7に示す接続仲介装置300の機能に、通信方法(通常通信か迂回通信か)を指示する機能と、迂回通信を中継する機能とを付加したものであり、その構成の詳細は後述する。結局、図33に示す実施例4において、3桁の数字からなる符号における1の位が「4」となっているブロックで示される構成要素が、実施例4に固有の構成要素ということになる。
なお、図33には、NATタイプ判別装置500が記載されている。このNATタイプ判別装置500は、図28に示す装置500と同じ装置であり、端末装置404からネットワークNを介してNATタイプの照会があったときに、当該照会に係る通信を利用して、照会元の端末装置404のNATタイプを判別し、判別したNATタイプを照会元の端末装置に回答する処理を行う。前述のとおり、実際には、STUNサーバをNATタイプ判別装置500として利用でき、本発明に係るネットワーク通信システムとは別個に利用されているSTUNサーバを、本発明に係るNATタイプ判別装置500として流用することもできるし、接続仲介装置304を構成するサーバ装置内に、本発明のための専用のSTUNサーバを用意してもかまわない。後者の場合、同一サーバ装置内に、接続仲介装置304とNATタイプ判別装置500(本発明のための専用のSTUNサーバ)が組み込まれることになり、NATタイプ判別装置500は、本発明に係るネットワーク通信システムの構成要素の1つになる。
この実施例4に係るシステムは、図7に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置402のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置304と、を備えたネットワーク通信システムである。ここで、各端末装置404には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置304は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図においても、これまで述べてきた各実施例と同様に、太線矢印、細線矢印、白抜矢印の3種類の矢印が用いられている。白抜矢印は「通常通信」を示し、迂回通信処理部474から伸びる太線矢印は「迂回通信」を示している。実施例3と同様に、この実施例4でも、本来は「通常通信」を行うことが意図されているが、「通常通信」の失敗が予想されるときには、端末装置404が接続仲介装置304を介して間接的に相手方への通信を行うことになる。
図33に示す自己アドレス通知部454は、図28に示す実施例3の自己アドレス通知部253と同様の機能を有している。すなわち、自己アドレス通知部454は、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置304に対して通知するとともに、自己が接続されているルータ(図28には示されていない)のNATタイプを接続仲介装置304に対して併せて通知する付加的な機能を有している。
この付加機能は、新たな構成要素であるNATタイプ確認部484の助けを借りて行われる。このNATタイプ確認部484は、図28に示す実施例3のNATタイプ確認部283と同様に、ネットワークNを介してNATタイプ判別装置500に対して自己のNATタイプを照会し、NATタイプ判別装置500からの回答を得る機能をもった構成要素である。図における太い一点鎖線の矢印は、NATタイプ確認部484とNATタイプ判別装置500との間でやりとりされる照会および回答の信号の流れを示している。もちろん、この信号は、図示されていないルータおよびネットワークNを介してやりとりされることになる。
この実施例4に係る端末装置404が相手方に対する通信を行う前には、実施例3と同様に、図29の流れ図に示されている事前処理が実行される。この事前処理については、既に§7−1で述べたため、ここでは説明を省略する。
図29の流れ図に示されている事前処理が済めば、図33に示す実施例4に係るネットワーク通信システムにおける通信準備は完了である。事前処理により、接続仲介装置304内のアドレステーブルT60には、各端末装置について、最新の所在アドレスおよびNATタイプが格納されているので、接続仲介装置304は、特定の通信元端末装置から特定の通信先端末装置への接続仲介依頼が来たときに、アドレステーブルT60を参照して、両端末間で通常通信を行った場合に、「関所型NAT」が設定されたルータにより当該通常通信に支障が生じるか否かを判断し、支障なしと判断される場合には通常通信を選択し、支障ありと判断される場合には迂回通信を選択する。
前述した実施例3の場合、通信元端末装置203が接続仲介装置103に対して接続仲介依頼S2を行うと、当該通信元端末装置203に対して、通信先アドレスおよび通信方法が返信される。これに対して、ここで述べる実施例4の場合、通信元端末装置404が接続仲介装置304に対して接続仲介依頼S12を行うと、当該通信元端末装置404ではなく、通信先の別な端末装置404に対して、「通信元アドレス」および「通信方法」が送信されることになる。ここで、「通信方法」とは、既に述べたとおり、通常通信か、迂回通信かを示す情報である。したがって、図33において、ネットワークNから通信先の通信開始要求部444(図33では、通信先の構成要素であるため、二重枠のブロックで示されている)に向かう太線矢印は、通信元アドレスの情報とともに通信方法の情報を含む信号になる。
通信開始要求部444は、接続仲介装置304から通信元アドレスと共に通信方法が返信されてきたとき、通信方法として通常通信が選択されていた場合には、先願基本発明の第2の実施形態と同様に、ネットワークNを介して、通信元アドレスにアクセスして通信開始要求を行う。以後の通信手順は、§2で述べたとおりである。一方、通信方法として迂回通信が選択されていた場合には、迂回通信処理部474に対して迂回通信指示を行う。
迂回通信処理部474は、§7−1で述べた実施例3における迂回通信処理部273と同様に、接続仲介装置304を介した迂回通信を行う構成要素である。すなわち、迂回通信処理部474は、通常通信(図の白抜矢印で示された通信)の失敗が予想されるときに、接続仲介装置304を介して相手方に対する間接的な情報送受を行う迂回通信を実行する。上述したとおり、失敗予想は、接続仲介装置304において行われる。通信開始要求部444が接続仲介装置304から迂回通信を選択する通信方法を受け取った場合、接続仲介装置304が失敗予想を行ったケースにあたる。この場合、通信開始要求部444から迂回通信処理部474に対して迂回通信指示が行われ、迂回通信処理部474による迂回通信が実行される。具体的には、迂回通信処理部474は、接続仲介装置304(後述するように、その中の迂回通信中継部344)に対して迂回通信の中継依頼を行い、接続仲介装置304を介して、相手方の迂回通信処理部474との間での迂回通信を実行することになる。
図34は、図33に示す本発明の実施例4に係るネットワーク通信システムにおいて、通信元端末装置404Aと通信先端末装置404Bとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置404A,404Bは、図33に示す端末装置404と同一の構成を有する装置であり、図8と同様に、通信元端末装置404B内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置404A内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例4に固有の構成要素である迂回通信処理部474A,474BおよびNATタイプ確認部484A,484Bについては太線枠ブロックで示してある。
図34に示す接続仲介装置304(図33に示すもの)は、図8に示す接続仲介装置300に、迂回通信中継部344を追加するとともに、その他の構成要素であるアドレステーブル格納部310、アドレステーブル更新部320、通信元アドレス送信部330については、若干の付加機能を設けることにより、アドレステーブル格納部314、アドレステーブル更新部324、通信元アドレス送信部334としたものである。
接続仲介装置304内の迂回通信中継部344は、第1の端末装置404Aの迂回通信処理部474Aと第2の端末装置404Bの迂回通信処理部474Bとの間での迂回通信の中継依頼があったときに、第1の端末装置404Aの迂回通信処理部474Aと第2の端末装置404Bの迂回通信処理部474Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
また、接続仲介装置304内のアドレステーブル格納部314は、図30に例示したように、端末IDと所在アドレスに加えて、更に、NATタイプを対応づけたアドレステーブルT60を格納する機能を有する。そして、接続仲介装置304内のアドレステーブル更新部324は、自己アドレス通知部454からの通知に含まれるNATタイプを示す情報に基づいて、アドレステーブルT60内のNATタイプの更新を行う付加機能を有する。
一方、接続仲介装置304内の通信元アドレス送信部334は、通信元端末装置404B内の接続仲介依頼部410Bから接続仲介依頼S12が送信されてきたときに、アドレステーブルT60を参照して、接続仲介依頼S12に含まれている通信先特定情報によって特定される端末ID「0010」に対応づけられている所在アドレスAD1を通信先アドレスとして認識し、この通信先アドレスAD1に対して、接続仲介依頼S12を送信した通信元の端末装置404Bの端末ID「0020」に対応づけられている所在アドレスAD2を、通信元アドレスとして送信する(S14a)。
このとき、通信元アドレス送信部334は、アドレステーブルT60を参照して、通信元の端末装置404BのNATタイプを確認し、通信元の端末装置404BのNATタイプが関所型NATではなかった場合には、通信方法として通常通信を選択し、通信元の端末装置404BのNATタイプが関所型NATであった場合には、通信方法として迂回通信を選択し、選択した通信方法を通信元アドレスと共に返信する。
この図34に示す例において、アドレステーブル格納部314内に図30のようなアドレステーブルT60が格納されていた場合、通信元の端末装置404B(端末ID:0020)のNATタイプは「関所型」になっているので、通信元アドレス送信部334は、通信方法として迂回通信を選択する。通信元端末装置404Bが関所型NATということは、§5で述べたとおり、通信先端末装置404Aから通信元端末装置404Bへ、直接的に通信開始要求S15を行った場合、通信元端末装置404BのルータRBによって、当該通信開始要求S15がブロックされてしまう可能性がある。この場合、通信元アドレス送信部334は、通信方法として迂回通信を選択することになる。図34には、通信元アドレス送信部334から通信開始要求部444Aに対して、通信元アドレス「AD2」および通信方法「迂回通信」を示す情報が送信された例(図34の太線矢印S14a)が示されている。これに対して、通信元の端末装置404BのNATタイプが「非関所型」になっていれば、通信元アドレス送信部334は、通信方法として通常通信を選択することになる。
通信先端末装置404A内の通信開始要求部444Aは、通信元アドレス送信部334から「通常通信」を選択する送信があった場合、通常通信の処理を行う。具体的には、通信開始要求部444Aが、通信元アドレスAD2にアクセスして通信開始要求S15を行うと、相手方の通信元セッション確立部430Bから通信先セッション確立部460Aに対して通信開始受諾確認S16が送信される。こうして、通信元セッション確立部430Bと通信先セッション確立部460Aとの間に通信セッションが確立する。
一方、通信元アドレス送信部334から「迂回通信」を選択する送信があった場合、通信開始要求部444Aは、迂回通信の処理を行う。すなわち、通信開始要求部444Aは、通信開始要求S15を行う代わりに、迂回通信処理部474Aに対して、迂回通信指示S15′を行う。迂回通信処理部474Aは、この迂回通信指示S15′を受けると、迂回通信中継部344に対して迂回通信の中継依頼を行い、迂回通信中継部344を介して、相手方の迂回通信処理部474Bとの間での迂回通信S18aを実行する。迂回通信処理部474Aは、通信開始要求部444Aから通信元アドレスAD2を取得し、これを迂回通信中継部344に伝達して中継依頼を行う。迂回通信中継部344は、この中継依頼に応じて、通信元アドレスAD2にアクセスし、通信元端末装置404Bの迂回通信処理部474Bに迂回通信の開始を要求する。迂回通信処理部474Bは、これを受諾する旨の返信を迂回通信中継部344に対して行い、迂回通信S18bを実行する。以後、迂回通信中継部344による中継により、両端末装置404A,404B間での迂回通信が行われる。
この迂回通信では、両端末装置404A,404B間の情報パケットは、すべて接続仲介装置304を介してやりとりされることになる。§5で述べたように、両端末装置404A,404B間の直接的な通信が関所型NATのルータによってブロックされるとしても、両端末装置404A,404B間の迂回通信は、接続仲介装置304を中継する通信になるため、支障なく行われる。
図35は、図34のブロック図に示されている実施例4における通信セッション確立手順を時系列で説明する流れ図である。この流れ図における通常通信の手順は、§2で述べた先願発明の第2の実施形態における通信セッション確立手順を示す図9の流れ図とほぼ同じである。
まず、ステップS11において、通信要求受付部420Bによる通信要求受付処理が行われ、続くステップS12において、接続仲介依頼部410Bによる接続仲介依頼が行われる。そしてステップS13において、通信元アドレス送信部334によりアドレステーブル格納部314に格納されているアドレステーブルT60の参照が行われ、ステップS14aにおいて、通信元アドレス送信部334から通信先端末装置404Aの通信開始要求部444Aに対して、通信元アドレスおよび通信方法が送信される。この送信を受けた通信開始要求部444Aは、ステップS14bにおいて、2通りの処理プロセスのいずれかを選択する。
まず、通信元アドレス送信部334によって、通信方法として「通常通信」が指示されていた場合には、ステップS15へ進む。図35の流れ図におけるステップS15〜S17の手順は、図9の流れ図におけるステップS15〜S17の手順と全く同じである。すなわち、通信開始要求部444Aは、ステップS15において、通信元端末装置404Bに対して通信開始要求S15を行う。通信元セッション確立部430Bは、この通信開始要求S15を受け、ステップS16において、通信先端末装置404Aに対して通信開始受諾確認S16を送信する。そして、続くステップS17において、通信元セッション確立部430Bと通信先セッション確立部460Aとの間の通信セッションが確立され、通常通信S17が行われる。
一方、通信方法として「迂回通信」が指示されていた場合には、ステップS15′へ進み、通信開始要求部444Aから迂回通信処理部474Aに対して迂回通信指示が与えられる。そして続くステップS18において、迂回通信処理が実行される。すなわち、迂回通信処理部474A,474Bと迂回通信中継部344によって、迂回通信処理が行われる(図34のS18a,S18b)。
<<< §8. UDPブロックの場合に迂回通信を行うアプローチ >>>
この§8で述べる実施例5,6は、先願基本発明に係るシステムにおいて、通常通信が失敗すると予想されるときに、これを事前に検知して迂回通信に切り替える方法を採るものであり、失敗の事前検知というアプローチを採る点において、§7で述べた実施例3,4と共通する。ただ、§7で述べた実施例3,4では、通常通信が関所型NATのルータによりブロックされると予想される場合に迂回通信に切り替える方法を採るのに対して、§8で述べる実施例5,6では、通常通信のプロトコルとしてUDPを用いることを前提としたシステムにおいて、UDPパケットがブロックされる可能性があると予想される場合に迂回通信に切り替える方法を採る。
§5で説明したとおり、通信プロトコルとしてのTCPとUDPは、それぞれ一長一短があり、TCPでは、通信速度よりも正確さに重点が置かれるのに対して、UDPでは、正確さよりも通信速度に重点が置かれる。このため、電話などの音声通話を主とするネットワーク通信システムを構築する際には、通常通信のプロトコルとしてUDPを採用して全体の通信負荷を低減させるのが好ましい。ただ、端末間に設置されているファイアウォールが、UDPパケットをブロックする仕様になっていたりすると、通常通信によってUDPパケットを相手方に届けることができない。一方、TCPは、Web閲覧に広く利用されているプロトコルであるため、TCPパケットをブロックする要素は、実用上、端末装置へのルート上には存在しないと考えてよい。
この§8で述べる実施例5,6は、通常通信のプロトコルとしてUDPを採用することを前提とするシステムに係るものであるが、UDPブロックにより通常通信を行うことができないことが予想される場合には、UDPによる通常通信に代えて、TCPなどのプロトコルを用いた迂回通信を行うことによって、両者間での通信を行うようにしたものである。
ここで、個々の端末装置に至るルート上に、UDPパケットをブロックする要素が有るか否かを判定する際には、自己アドレス通知部によって行われる自己の所在アドレスの通知処理を利用する。§1,§2で述べたように、自己アドレス通知部は、所定のタイミングで、自己アドレスを接続仲介装置に通知する働きをする。そこで、以下に述べる実施例5,6では、自己アドレス通知部が、自己アドレスを通知する際に、まず、通信プロトコルとしてUDPを用いた第1回通知を行い、当該第1回通知に失敗した場合には、続いて、通信プロトコルとしてTCPを用いた第2回通知を行うようにする。
このような方法で自己アドレスの通知を行うようにすれば、接続仲介装置は、アドレステーブルを作成する際に、個々の端末装置からの自己アドレス通知が、UDPを用いた通信プロトコルで行われたか、TCPを用いた通信プロトコルで行われたか、を認識することができ、アドレステーブルに当該通信プロトコルを記録することができる。当該通信プロトコルの記録は、個々の端末装置がUDPを用いた通常通信を行うことができるか否かを示す情報になる。
すなわち、通信プロトコルの記録が「UDP」となっている端末装置は、通信プロトコルとしてUDPを用いた第1回通知により自己アドレスの通知を行うことに成功した端末装置であるため、少なくとも当該端末装置と接続仲介装置との間の通信ルート上には、UDPパケットをブロックする要素が存在しないと判断できるので、当該端末装置と接続仲介装置との間に係る限りにおいて、UDPを用いた通常通信に支障は生じないことになる。これに対して、通信プロトコルの記録が「TCP」となっている端末装置は、通信プロトコルとしてUDPを用いた第1回通知による自己アドレスの通知に失敗した端末装置であるため、当該端末装置と接続仲介装置との間の通信ルート上には、UDPパケットをブロックする要素が存在すると判断できる。もちろん、端末装置と接続仲介装置との間の通信ルートと、端末装置と別な端末装置との間の通信ルートとは、同一ではないので、前者のルートでUDP通信が失敗もしくは成功したからと言って、必ずしも後者のルートでUDP通信が失敗もしくは成功するとは限らない。ただ、特定の端末装置と接続仲介装置との間でUDP通信が失敗した場合は、当該特定の端末装置と別な端末装置との間でのUDP通信も失敗する可能性が高い。
したがって、接続仲介装置100は、通信元の端末装置から通信先の端末装置への接続仲介依頼があったときに、両端末装置についてアドレステーブルに記録されている通信プロトコルを調べることにより、両端末間にUDPパケットをブロックする要素が存在する可能性を把握することができ、両端末間での通常通信に支障が生じるかどうかを予想することができる。すなわち、通信元の端末装置と通信先の端末装置とのうち、少なくともいずれか一方についてアドレステーブルに記録されている通信プロトコルが「UDP」であった場合には、両端末間でやりとりされるUDPパケットはブロックされる可能性があり、両端末間でのUDPを用いた通常通信は失敗する可能性があることが予想される。そこで、接続仲介装置は、UDPを用いた通常通信の失敗が予測されるときには、端末装置に対して、通常通信の代わりに迂回通信を行う旨の指示を与えることができる。このような指示を受けた端末装置は、§6や§7で述べた方法と同様の方法で迂回通信を行うことになる。
以下、このような通信方法を、§1に示す先願基本発明の第1の実施形態(図2)に適用した例を実施例5として説明し、§2に示す先願基本発明の第2の実施形態(図7)に適用した例を実施例6として説明する。もちろん、以下に述べる実施例5,6については、§3や§4で述べた各種変形例を適用することも可能である。なお、各実施例5,6にブロックとして示されている各構成要素は、これまで述べた先願基本発明に係るシステムと同様に、実際には、コンピュータに組み込まれた専用のプログラムによって実現されることになる。
<8−1. 実施例5>
図36は、本発明の実施例5に係るネットワーク通信システムにおける端末装置205の詳細構成を示すブロック図である。ここに示す端末装置205は、図2に示す先願基本発明の第1の実施形態に係る端末装置200における通信開始要求部240および自己アドレス通知部250に、若干の修正を加えてそれぞれ通信開始要求部245および自己アドレス通知部255とし、更に、新たな構成要素として、迂回通信処理部275(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。
また、通信先セッション確立部230および通信元セッション確立部260は、それぞれ通信先セッション確立部235および通信元セッション確立部265に置き換えられている。通信先セッション確立部235および通信元セッション確立部265の基本機能は、図2に示す通信先セッション確立部230および通信元セッション確立部260と同様であるが、通信プロトコルがUDPに限定されている点が異なっている。すなわち、この実施例5に示すネットワーク通信システムでは、通常通信のプロトコルはUDPに固定されていることになる。その他の構成要素である接続仲介依頼部210および通信要求受付部220は、図2に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§1で述べたとおりである。
また、この図36に示す実施例5では、図2に示す接続仲介装置100の代わりに、接続仲介装置105が用いられている。この接続仲介装置105は、図2に示す接続仲介装置100の機能に、通信方法(通常通信か迂回通信か)を指示する機能と、迂回通信を中継する機能とを付加したものであり、その構成の詳細は後述する。結局、図36に示す実施例5において、3桁の数字からなる符号における1の位が「5」となっているブロックで示される構成要素が、実施例5に固有の構成要素ということになる。
この実施例5に係るシステムは、図2に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置205のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置105と、を備えたネットワーク通信システムである。ここで、各端末装置205には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置105は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図における太線矢印は、端末装置205と接続仲介装置105との間でやりとりされる信号の流れを示しており、細線矢印(ブロック205内部の矢印を除く)は、一対の端末装置205の間で直接的にやりとりされる、通信セッション確立前の信号の流れを示している。そして、白抜矢印は、一対の端末装置205の間で直接的にやりとりされる、通信セッション確立後の信号の流れを示している。この白抜矢印には、「通常通信」なる表記がなされているが、これはこのシステムが想定する本来の通信、すなわち、端末装置205間で直接的に行われる通信を示している。これに対して、迂回通信処理部275から伸びる太線矢印には、「迂回通信」なる表記がなされているが、これは、上述した「通常通信」の失敗が予想されるときに、端末装置205が接続仲介装置105を介して間接的に相手方への通信を行うことを示している。
図36に示す自己アドレス通知部255は、図2に示す自己アドレス通知部250と同様に、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置105に対して通知する機能を果たす。この自己アドレス通知処理は、実施例5に係るネットワーク通信システムにおける通信手順の事前処理ということになり、基本的な処理内容は、既に§1で詳述したとおりである。ただ、自己アドレス通知部255は、接続仲介装置105に対して自己の所在アドレスを通知する際に、特有の手順を採用する。
図37は、この実施例5に係るネットワーク通信システムにおける通信手順の事前処理(自己アドレスの通知処理)を時系列で説明する流れ図である。自己アドレス通知部255は、まず、ステップS51において、通信プロトコルとしてUDPを用いた第1回通知を行う。すなわち、自己アドレス通知部255から接続仲介装置105に対して、自己アドレスを通知するためのUDPパケットが送信される。続くステップS52では、この第1回通知に成功したか否かが判断される。UDPパケットによる自己アドレス通知に対して、接続仲介装置105から受領確認のためのアクノレッジ信号を返信する仕様にしておけば、自己アドレス通知部255は、アクノレッジが得られたか否かによって、第1回通知に成功したか否かを判断することができる。
第1回通知に成功したら、自己アドレス通知部255による自己アドレス通知処理はそれで完了であるが、第1回通知に失敗した場合には、続いて、ステップS53において、通信プロトコルとしてTCPを用いた第2回通知が行われる。前述したとおり、TCPはWeb閲覧に広く利用されているプロトコルであるため、実用上、第2回通知は失敗しないものと考えて支障はない。もし、第2回通知に対するアクノレッジも得られなかった場合は、何度か繰り返して同じ通知を行うようにすればよい。
このように、自己アドレス通知部255から接続仲介装置105に対しては、UDPパケットもしくはTCPパケットにより、自己の所在アドレスの通知がなされる。したがって、図36において、自己アドレス通知部255からネットワークNに向かう太線矢印は、端末装置205の所在アドレスの情報をもった信号であり、その通信プロトコルは、UDPまたはTCPということになる。
こうして、接続仲介装置105には、各端末装置205から、所在アドレスの情報がUDPまたはTCPの通信プロトコルによって通知されるので、接続仲介装置105内のアドレステーブルには、端末IDと所在アドレスに加えて、更に、自己アドレス通知に用いられた通信プロトコル(UDPかTCPか)を対応づけた情報が格納される。すなわち、図37の流れ図のステップS54において、接続仲介装置105内のアドレステーブル更新部125によって通信プロトコルを含めたアドレステーブルの更新が行われる。図38は、このような更新によって作成されたアドレステーブルT70を示す図である。このアドレステーブルT70は、図6に示すアドレステーブルTと同様に、4組の端末装置から通知された所在アドレスを示すものであるが、所在アドレスに加えて、通信プロトコルの情報(右欄)も記録されている。
図37の流れ図に示されている事前処理が済めば、図36に示す実施例5に係るネットワーク通信システムにおける通信準備は完了である。自己アドレス通知部255による所在アドレスの通知は、所定タイミングで繰り返し実行されるので、接続仲介装置105内のアドレステーブルT70には、各端末装置について、常に最新の所在アドレスおよび通信プロトコルが格納されることになる。そこで、接続仲介装置105は、特定の通信元端末装置から特定の通信先端末装置への接続仲介依頼が来たときに、アドレステーブルT70を参照して、両端末間で通常通信を行った場合に、UDPブロック要素により当該通常通信に支障が生じるか否かを判断し、支障なしと判断される場合には通常通信を選択し、支障ありと判断される場合には迂回通信を選択する。
具体的には、接続仲介装置105は、通信元端末装置および通信先端末装置のうち、双方について、アドレステーブルT70に記録されている通信プロトコルがUDPであった場合には、通常通信に支障なしと判断して通常通信を選択する。これに対して、少なくとも一方について、アドレステーブルT70に記録されている通信プロトコルがTCPであった場合には、通常通信に支障ありと判断して迂回通信を選択する。
そして、接続仲介装置105から通信元端末装置205の通信開始要求部245に対して、通信先アドレスを返信する際に、選択した通信方法を示す情報(通常通信か、迂回通信かを示す情報)を併せて返信する。したがって、図36において、ネットワークNから通信開始要求部245に向かう太線矢印は、通信先アドレスの情報とともに通信方法の情報を含む信号になる。
通信開始要求部245は、接続仲介装置105から通信先アドレスと共に通信方法が返信されてきたとき、通信方法として通常通信が選択されていた場合には、先願基本発明の第1の実施形態と同様に、ネットワークNを介して、通信先アドレスにアクセスして通信開始要求を行う。以後の通信手順は、§1で述べたとおりである。一方、通信方法として迂回通信が選択されていた場合には、迂回通信処理部275に対して迂回通信指示を行う。
迂回通信処理部275は、§7で述べた実施例3における迂回通信処理部273と同様に、接続仲介装置105を介した迂回通信を行う構成要素である。すなわち、迂回通信処理部275は、通常通信(図の白抜矢印で示された通信)の失敗が予想されるときに、接続仲介装置105を介して相手方に対する間接的な情報送受を行う迂回通信を実行する。上述したとおり、失敗予想は、接続仲介装置105において行われる。通信開始要求部245が接続仲介装置105から迂回通信を選択する通信方法を受け取った場合、接続仲介装置105が失敗予想を行ったケースにあたる。この場合、通信開始要求部245から迂回通信処理部275に対して迂回通信指示が行われ、迂回通信処理部275による迂回通信が実行される。
具体的には、迂回通信処理部275は、接続仲介装置105(後述するように、その中の迂回通信中継部145)に対して迂回通信の中継依頼を行い、接続仲介装置105を介して、相手方の迂回通信処理部275との間での迂回通信を実行することになる。この迂回通信のための情報パケットのやりとりは、TCPプロトロルによって行われるため、ルートの途中にUDPブロック要素が存在していても、迂回通信に支障は生じない。なお、変形例として、迂回通信を最初はUDPプロトロルで実行し、失敗した場合にTCPプロトコルに切り替える方法を採ることも可能である。
図39は、図36に示す本発明の実施例5に係るネットワーク通信システムにおいて、通信元端末装置205Aと通信先端末装置205Bとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置205A,205Bは、図36に示す端末装置205と同一の構成を有する装置であり、図4と同様に、通信元端末装置205A内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置205B内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例5に固有の構成要素である迂回通信処理部275A,275Bについては太線枠ブロックで示してある。
図39に示す接続仲介装置105(図36に示すもの)は、図4に示す接続仲介装置100に、迂回通信中継部145を追加するとともに、その他の構成要素であるアドレステーブル格納部110、アドレステーブル更新部120、通信先アドレス返信部130については、若干の付加機能を設けることにより、アドレステーブル格納部115、アドレステーブル更新部125、通信先アドレス返信部135としたものである。
接続仲介装置105内の迂回通信中継部145は、第1の端末装置205Aの迂回通信処理部275Aと第2の端末装置205Bの迂回通信処理部275Bとの間での迂回通信の中継依頼があったときに、第1の端末装置205Aの迂回通信処理部275Aと第2の端末装置205Bの迂回通信処理部275Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
また、接続仲介装置105内のアドレステーブル格納部115は、図38に例示したように、端末IDと所在アドレスに加えて、更に、通信プロトコルを対応づけたアドレステーブルT70を格納する機能を有する。そして、接続仲介装置105内のアドレステーブル更新部125は、アドレステーブルT70の更新を行う際に、UDPによって受信した第1回通知に基づいて更新を行う場合には、通信プロトコルとしてUDPを対応づけ、TCPによって受信した第2回通知に基づいて更新を行う場合には、通信プロトコルとしてTCPを対応づける更新を行う。
一方、接続仲介装置105内の通信先アドレス返信部135は、接続仲介依頼S2が送信されてきたときに、アドレステーブルT70を参照して、通信元の端末装置および通信先の端末装置の通信プロトコルを確認し、両端末装置の通信プロトコルがいずれもUDPであった場合には、通信方法として通常通信を選択し、少なくとも一方の通信プロトコルがTCPであった場合には、通信方法として迂回通信を選択し、選択した通信方法を通信先アドレスと共に返信する機能を有する。
この図39に示す例において、アドレステーブル格納部115内に図38のようなアドレステーブルT70が格納されていた場合、通信先の端末装置205B(端末ID:0020)の通信プロトコルは「TCP」になっているので、通信先アドレス返信部135は、通信方法として迂回通信を選択する。通信先端末装置205Bの通信プロトコルが「TCP」ということは、通信先端末装置205BからのUDPによる第1回自己アドレス通知がどこかでブロックされてしまったことを示している。よって、通信元端末装置205Aから通信先端末装置205Bへ、UDPによる通信開始要求S5を行った場合、通信先端末装置205Bへのルートの途中で、当該通信開始要求S5はブロックされてしまう可能性がある。
この場合、通信先アドレス返信部135は、通信方法として迂回通信を選択することになる。図39には、通信先アドレス返信部135から通信開始要求部245Aに対して、通信先アドレス「AD2」および通信方法「迂回通信」を示す情報が返信された例(図39の太線矢印S4a)が示されている。これに対して、通信元の端末装置205Aと通信先の端末装置205Bの双方についての通信プロトコルが「UDP」になっていれば、通信先アドレス返信部135は、通信方法として通常通信を選択することになる。
通信元端末装置205A内の通信開始要求部245Aは、通信先アドレス返信部135から「通常通信」を選択する返信が戻ってきた場合、通常通信の処理を行う。具体的には、通信開始要求部245Aが、通信先アドレスAD2にアクセスしてUDPによる通信開始要求S5を行うと、相手方の通信先セッション確立部235Bから通信元セッション確立部265Aに対してUDPによる通信開始受諾確認S6が送信される。こうして、通信元セッション確立部265Aと通信先セッション確立部235Aとの間にUDPによる通信セッションが確立する。
一方、通信先アドレス返信部135から「迂回通信」を選択する返信が戻ってきた場合、通信開始要求部245Aは、迂回通信の処理を行う。すなわち、通信開始要求部245Aは、通信開始要求S5を行う代わりに、迂回通信処理部275Aに対して、迂回通信指示S5′を行う。迂回通信処理部275Aは、この迂回通信指示S5′を受けると、迂回通信中継部145に対してTCPにより迂回通信の中継依頼を行い、迂回通信中継部145を介して、相手方の迂回通信処理部275Bとの間でのTCPによる迂回通信S8aを実行する。迂回通信処理部275Aは、通信開始要求部245Aから通信先アドレスAD2を取得し、これを迂回通信中継部145にTCPにより伝達して中継依頼を行う。迂回通信中継部145は、この中継依頼に応じて、通信先アドレスAD2にTCPによりアクセスし、通信先端末装置205Bの迂回通信処理部275Bに迂回通信の開始を要求する。迂回通信処理部275Bは、これを受諾する旨の返信をTCPにより迂回通信中継部145に対して行い、TCPによる迂回通信S8bを実行する。以後、迂回通信中継部145による中継により、両端末装置205A,205B間でのTCPによる迂回通信が行われる。
この迂回通信では、両端末装置205A,205B間の情報パケットは、すべて接続仲介装置105を介したTCPパケットとしてやりとりされることになる。したがって、両端末装置205A,205B間のルートに、UDPブロック要素が存在したとしても、両端末装置205A,205B間の迂回通信は支障なく行われる。なお、前述したように、変形例として、迂回通信を最初はUDPプロトロルで実行し、失敗した場合にTCPプロトコルに切り替える方法を採ることも可能である。
図40は、図39のブロック図に示されている実施例5における通信セッション確立手順を時系列で説明する流れ図である。この流れ図における通常通信の手順は、§1で述べた先願発明の第1の実施形態における通信セッション確立手順を示す図5の流れ図とほぼ同じである。
まず、ステップS1において、通信要求受付部220Aによる通信要求受付処理が行われ、続くステップS2において、接続仲介依頼部210Aによる接続仲介依頼が行われる。この接続仲介依頼は、UDPでもTCPでもよい(最初からTCPで行ってもよいし、まずUDPによって行い、UDPによる接続仲介依頼が失敗したら、TCPによる接続仲介依頼を再度行うようにしてもよい)。そしてステップS3において、通信先アドレス返信部135によりアドレステーブル格納部115に格納されているアドレステーブルT70の参照が行われ、ステップS4aにおいて、通信先アドレス返信部135から通信開始要求部245Aに対して、通信先アドレスおよび通信方法が返信される。この返信も、UDPで行ってもよいし、TCPで行ってもよい。当該返信を受けた通信開始要求部245Aは、ステップS4bにおいて、2通りの処理プロセスのいずれかを選択する。
まず、通信方法として「通常通信」が指示されていた場合には、UDP通信を行うためにステップS5へ進む。図40の流れ図におけるステップS5〜S7の手順は、図5の流れ図におけるステップS5〜S7の手順と全く同じである。ただ、通常通信の通信プロトコルはUDPになる。すなわち、通信開始要求部245Aは、ステップS5において、通信先端末装置205Bに対してUDPにより通信開始要求S5を行う。通信先セッション確立部235Bは、この通信開始要求S5を受け、ステップS6において、通信元端末装置205Aに対してUDPにより通信開始受諾確認S6を送信する。そして、続くステップS7において、通信先セッション確立部235Bと通信元セッション確立部265Aとの間の通信セッションが確立され、UDPにより通常通信S7が行われる。
一方、通信方法として「迂回通信」が指示されていた場合には、ステップS5′へ進み、通信開始要求部245Aから迂回通信処理部275Aに対して迂回通信指示が与えられる。そして続くステップS8において、迂回通信処理が実行される。すなわち、迂回通信処理部275A,275Bと迂回通信中継部145によって、TCPによる迂回通信処理が行われる(図39のS8a,S8b)。
<8−2. 実施例6>
図41は、本発明の実施例6に係るネットワーク通信システムにおける端末装置406の詳細構成を示すブロック図である。ここに示す端末装置406は、図7に示す先願基本発明の第2の実施形態に係る端末装置400における通信開始要求部440および自己アドレス通知部450に、若干の修正を加えてそれぞれ通信開始要求部446および自己アドレス通知部456とし、更に、新たな構成要素として、迂回通信処理部476(図では新たな構成要素を太線枠ブロックで示す)を付加したものである。
また、通信元セッション確立部430および通信先セッション確立部460は、それぞれ通信元セッション確立部436および通信先セッション確立部466に置き換えられている。通信元セッション確立部436および通信先セッション確立部466の基本機能は、図7に示す通信元セッション確立部430および通信先セッション確立部460と同様であるが、通信プロトコルがUDPに限定されている点が異なっている。すなわち、この実施例6に示すネットワーク通信システムでは、通常通信のプロトコルはUDPに固定されていることになる。その他の構成要素である接続仲介依頼部410および通信要求受付部420は、図7に示す同符号の各構成要素と同じものであり、その機能の詳細は、既に§2で述べたとおりである。
また、この図41に示す実施例6では、図7に示す接続仲介装置300の代わりに、接続仲介装置306が用いられている。この接続仲介装置306は、図7に示す接続仲介装置300の機能に、通信方法(通常通信か迂回通信か)を指示する機能と、迂回通信を中継する機能とを付加したものであり、その構成の詳細は後述する。結局、図41に示す実施例6において、3桁の数字からなる符号における1の位が「6」となっているブロックで示される構成要素が、実施例6に固有の構成要素ということになる。
この実施例6に係るシステムは、図7に示す先願発明のシステムと同様に、ネットワークNを介して相互に接続可能な複数の端末装置(図には、便宜上、1台の端末装置406のみが示されている)と、これら複数の端末装置間の接続を仲介する接続仲介装置306と、を備えたネットワーク通信システムである。ここで、各端末装置406には、個々の端末装置を相互に識別するための端末IDがそれぞれ付与されており、接続仲介装置306は、この端末IDを利用して通信元となる端末装置と通信先となる端末装置との間の接続を仲介する処理を実行する。
この図においても、これまで述べてきた各実施例と同様に、太線矢印、細線矢印、白抜矢印の3種類の矢印が用いられている。白抜矢印は「通常通信」を示し、迂回通信処理部476から伸びる太線矢印は「迂回通信」を示している。実施例5と同様に、この実施例6でも、本来は「通常通信」を行うことが意図されているが、「通常通信」の失敗が予想されるときには、端末装置406が接続仲介装置306を介して間接的に相手方への通信を行うことになる。
図41に示す自己アドレス通知部456は、図7に示す自己アドレス通知部450と同様に、自己のネットワーク上での所在を示す所在アドレスを、接続仲介装置306に対して通知する機能を果たす。この自己アドレス通知処理は、実施例6に係るネットワーク通信システムにおける通信手順の事前処理ということになり、基本的な処理内容は、既に§2で詳述したとおりである。ただ、自己アドレス通知部456は、前述した実施例5における自己アドレス通知部255と同様に、接続仲介装置306に対して自己の所在アドレスを通知する際に、特有の手順を採用する。
この自己アドレス通知部456が行う特有の手順は、実施例5における自己アドレス通知部255が行う手順と同様であり、図37の流れ図に示すものになる。すなわち、自己アドレス通知部456は、接続仲介装置306に対して自己の所在アドレスを通知する際に、まず、通信プロトコルとしてUDPを用いた第1回通知(図37のS51に対応)を行い、当該第1回通知に失敗した場合には、続いて、通信プロトコルとしてTCPを用いた第2回通知(図37のS53に対応)を行うことになる。
このように、自己アドレス通知部456から接続仲介装置306に対しては、UDPパケットもしくはTCPパケットにより、自己の所在アドレスの通知がなされる。したがって、図41において、自己アドレス通知部456からネットワークNに向かう太線矢印は、端末装置406の所在アドレスの情報をもった信号であり、その通信プロトコルは、UDPまたはTCPということになる。
こうして、接続仲介装置306には、各端末装置406から、所在アドレスの情報がUDPまたはTCPの通信プロトコルによって通知されるので、接続仲介装置306内のアドレステーブルには、端末IDと所在アドレスに加えて、更に、自己アドレス通知に用いられた通信プロトコル(UDPかTCPか)を対応づけた情報が格納される。すなわち、図37の流れ図のステップS54の処理と同様に、接続仲介装置306内のアドレステーブル更新部326によって通信プロトコルを含めたアドレステーブルの更新が行われ、たとえば、図38に示すようなアドレステーブルT70が得られる。
こうして図37の流れ図に準じた事前処理が済めば、図41に示す実施例6に係るネットワーク通信システムにおける通信準備は完了である。自己アドレス通知部456による所在アドレスの通知は、所定タイミングで繰り返し実行されるので、接続仲介装置306内のアドレステーブルT70には、各端末装置について、常に最新の所在アドレスおよび通信プロトコルが格納されることになる。そこで、接続仲介装置306は、特定の通信元端末装置から特定の通信先端末装置への接続仲介依頼が来たときに、アドレステーブルT70を参照して、両端末間で通常通信を行った場合に、UDPブロック要素により当該通常通信に支障が生じるか否かを判断し、支障なしと判断される場合には通常通信を選択し、支障ありと判断される場合には迂回通信を選択する。
具体的には、接続仲介装置306は、通信元端末装置および通信先端末装置のうち、双方について、アドレステーブルT70に記録されている通信プロトコルがUDPであった場合には、通常通信に支障なしと判断して通常通信を選択する。これに対して、少なくとも一方について、アドレステーブルT70に記録されている通信プロトコルがTCPであった場合には、通常通信に支障ありと判断して迂回通信を選択する。
前述した実施例5の場合、通信元端末装置205が接続仲介装置105に対して接続仲介依頼S2を行うと、当該通信元端末装置205に対して、通信先アドレスおよび通信方法が返信される。これに対して、ここで述べる実施例6の場合、通信元端末装置406が接続仲介装置306に対して接続仲介依頼S12を行うと、当該通信元端末装置406ではなく、通信先の別な端末装置406に対して、「通信元アドレス」および「通信方法」が送信されることになる。ここで、「通信方法」とは、既に述べたとおり、通常通信か、迂回通信かを示す情報である。したがって、図41において、ネットワークNから通信先の通信開始要求部446(図41では、通信先の構成要素であるため、二重枠のブロックで示されている)に向かう太線矢印は、通信元アドレスの情報とともに通信方法の情報を含む信号になる。
通信開始要求部446は、接続仲介装置306から通信元アドレスと共に通信方法が返信されてきたとき、通信方法として通常通信が選択されていた場合には、先願基本発明の第2の実施形態と同様に、ネットワークNを介して、通信元アドレスにアクセスして通信開始要求を行う。以後の通信手順は、§2で述べたとおりである。一方、通信方法として迂回通信が選択されていた場合には、迂回通信処理部476に対して迂回通信指示を行う。
迂回通信処理部476は、§8−1で述べた実施例5における迂回通信処理部275と同様に、接続仲介装置306を介した迂回通信を行う構成要素である。すなわち、迂回通信処理部476は、通常通信(図の白抜矢印で示された通信)の失敗が予想されるときに、接続仲介装置306を介して相手方に対する間接的な情報送受を行う迂回通信を実行する。上述したとおり、失敗予想は、接続仲介装置306において行われる。通信開始要求部446が接続仲介装置306から迂回通信を選択する通信方法を受け取った場合、接続仲介装置306が失敗予想を行ったケースにあたる。この場合、通信開始要求部446から迂回通信処理部476に対して迂回通信指示が行われ、迂回通信処理部476がTCPによる迂回通信を実行する。具体的には、迂回通信処理部476は、接続仲介装置306(後述するように、その中の迂回通信中継部346)に対してTCPによる迂回通信の中継依頼を行い、接続仲介装置306を介して、相手方の迂回通信処理部476との間でのTCPによる迂回通信を実行することになる。なお、前述したように、変形例として、迂回通信を最初はUDPプロトロルで実行し、失敗した場合にTCPプロトコルに切り替える方法を採ることも可能である。
図42は、図41に示す本発明の実施例6に係るネットワーク通信システムにおいて、通信先端末装置406Aと通信元端末装置406Bとの間の通信セッション確立の手順を示すブロック図である。図示する端末装置406A,406Bは、図41に示す端末装置406と同一の構成を有する装置であり、図8と同様に、通信元端末装置406B内の構成要素については、通信元として必要な処理を実行する構成要素(矩形ブロックの構成要素)を実線で示し、通信先端末装置406A内の構成要素については、通信先として必要な処理を実行する構成要素(二重矩形ブロックの構成要素)を実線で示すことにし、それ以外の構成要素のブロックは破線で示してある。また、実施例6に固有の構成要素である迂回通信処理部476A,476Bについては太線枠ブロックで示してある。
図42に示す接続仲介装置306(図41に示すもの)は、図8に示す接続仲介装置300に、迂回通信中継部346を追加するとともに、その他の構成要素であるアドレステーブル格納部310、アドレステーブル更新部320、通信先アドレス返信部330については、若干の付加機能を設けることにより、アドレステーブル格納部316、アドレステーブル更新部326、通信元アドレス送信部336としたものである。
接続仲介装置306内の迂回通信中継部346は、第1の端末装置406Aの迂回通信処理部476Aと第2の端末装置406Bの迂回通信処理部476Bとの間での迂回通信の中継依頼があったときに、第1の端末装置406Aの迂回通信処理部476Aと第2の端末装置406Bの迂回通信処理部476Bとの間で受け渡しする情報を取り次いで迂回通信の中継を行う構成要素である。
また、接続仲介装置306内のアドレステーブル格納部316は、図38に例示したように、端末IDと所在アドレスに加えて、更に、通信プロトコルを対応づけたアドレステーブルT70を格納する機能を有する。そして、接続仲介装置306内のアドレステーブル更新部326は、アドレステーブルT70の更新を行う際に、UDPによって受信した第1回通知に基づいて更新を行う場合には、通信プロトコルとしてUDPを対応づけ、TCPによって受信した第2回通知に基づいて更新を行う場合には、通信プロトコルとしてTCPを対応づける更新を行う。
一方、接続仲介装置306内の通信元アドレス送信部336は、通信元端末装置406B内の接続仲介依頼部410Bから接続仲介依頼S12が送信されてきたときに、アドレステーブルT70を参照して、接続仲介依頼S12に含まれている通信先特定情報によって特定される端末ID「0010」に対応づけられている所在アドレスAD1を通信先アドレスとして認識し、この通信先アドレスAD1に対して、接続仲介依頼S12を送信した通信元の端末装置406Bの端末ID「0020」に対応づけられている所在アドレスAD2を、通信元アドレスとして送信する(S14a)する。
このとき、通信元アドレス送信部336は、アドレステーブルT70を参照して、通信元の端末装置および通信先の端末装置の通信プロトコルを確認し、両端末装置の通信プロトコルがいずれもUDPであった場合には、通信方法として通常通信を選択し、少なくとも一方の通信プロトコルがTCPであった場合には、通信方法として迂回通信を選択し、選択した通信方法を通信元アドレスと共に送信する機能を有する。
通信先端末装置406A内の通信開始要求部446Aは、通信元アドレス送信部336から「通常通信」を選択する送信があった場合、通常通信の処理を行う。具体的には、通信開始要求部446Aが、通信元アドレスAD2にアクセスしてUDPによる通信開始要求S15を行うと、相手方の通信元セッション確立部436Bから通信先セッション確立部466Aに対してUDPによる通信開始受諾確認S16が送信される。こうして、通信元セッション確立部436Bと通信先セッション確立部466Aとの間にUDPによる通信セッションが確立する。
一方、通信元アドレス返信部336から「迂回通信」を選択する送信があった場合、通信開始要求部446Aは、迂回通信の処理を行う。すなわち、通信開始要求部446Aは、通信開始要求S15を行う代わりに、迂回通信処理部476Aに対して、迂回通信指示S15′を行う。迂回通信処理部476Aは、この迂回通信指示S15′を受けると、迂回通信中継部346に対してTCPにより迂回通信の中継依頼を行い、迂回通信中継部346を介して、相手方の迂回通信処理部476Bとの間でのTCPによる迂回通信S18aを実行する。迂回通信処理部476Aは、通信開始要求部446Aから通信元アドレスAD2を取得し、これを迂回通信中継部346に伝達して中継依頼を行う。迂回通信中継部346は、この中継依頼に応じて、TCPにより通信元アドレスAD2にアクセスし、通信元端末装置406Bの迂回通信処理部476BにTCPにより迂回通信の開始を要求する。迂回通信処理部476Bは、これを受諾する旨のTCPによる返信を迂回通信中継部346に対して行い、TCPにより迂回通信S18bを実行する。以後、迂回通信中継部346による中継により、両端末装置406A,406B間でのTCPにより迂回通信が行われる。
この迂回通信では、両端末装置406A,406B間の情報パケットは、すべて接続仲介装置306を介したTCPパケットとしてやりとりされることになる。したがって、両端末装置406A,406B間のルートに、UDPブロック要素が存在したとしても、両端末装置406A,406B間の迂回通信は支障なく行われる。なお、前述したように、変形例として、迂回通信を最初はUDPプロトロルで実行し、失敗した場合にTCPプロトコルに切り替える方法を採ることも可能である。
図43は、図42のブロック図に示されている実施例6における通信セッション確立手順を時系列で説明する流れ図である。この流れ図における通常通信の手順は、§2で述べた先願発明の第2の実施形態における通信セッション確立手順を示す図9の流れ図とほぼ同じである。
まず、ステップS11において、通信要求受付部420Bによる通信要求受付処理が行われ、続くステップS12において、接続仲介依頼部410Bによる接続仲介依頼が行われる。そしてステップS13において、通信元アドレス送信部336によりアドレステーブル格納部316に格納されているアドレステーブルT70の参照が行われ、ステップS14aにおいて、通信元アドレス送信部336から通信先端末装置406Aの通信開始要求部446Aに対して、通信元アドレスおよび通信方法が送信される。この送信を受けた通信開始要求部446Aは、ステップS14bにおいて、2通りの処理プロセスのいずれかを選択する。
まず、通信方法として「通常通信」が指示されていた場合には、ステップS15へ進む。図43の流れ図におけるステップS15〜S17の手順は、図9の流れ図におけるステップS15〜S17の手順と全く同じである。ただ、通常通信の通信プロトコルはUDPになる。すなわち、通信開始要求部446Aは、ステップS15において、通信元端末装置406Bに対してUDPにより通信開始要求S15を行う。通信元セッション確立部436Bは、この通信開始要求S15を受け、ステップS16において、通信先端末装置406Aに対してUDPにより通信開始受諾確認S16を送信する。そして、続くステップS17において、通信元セッション確立部436Bと通信先セッション確立部466Aとの間の通信セッションが確立され、UDPにより通常通信S17が行われる。
一方、通信方法として「迂回通信」が指示されていた場合には、ステップS15′へ進み、通信開始要求部446Aから迂回通信処理部476Aに対して迂回通信指示が与えられる。そして続くステップS18において、迂回通信処理が実行される。すなわち、迂回通信処理部476A,476Bと迂回通信中継部346によって、TCPによる迂回通信処理が行われる(図42のS18a,S18b)。