(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-01-05
(54)【発明の名称】データ通信方法
(51)【国際特許分類】
H04L 41/40 20220101AFI20221223BHJP
【FI】
H04L41/40
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022525595
(86)(22)【出願日】2020-03-13
(85)【翻訳文提出日】2022-06-16
(86)【国際出願番号】 AU2020050244
(87)【国際公開番号】W WO2021081575
(87)【国際公開日】2021-05-06
(32)【優先日】2019-10-30
(33)【優先権主張国・地域又は機関】AU
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】522172287
【氏名又は名称】ダル アイピー ピーティーワイ リミテッド
(74)【代理人】
【識別番号】110000796
【氏名又は名称】弁理士法人三枝国際特許事務所
(72)【発明者】
【氏名】ヒューバーズ ヴァン アッセンラード トッド スティーブン
(57)【要約】
少なくとも1つのセグメントに関連付けられている順序付けられた複数の第1のブロックを含む第1のシーケンスを第1のコンピュータ上で構成するステップと、第1のブロックを初期化して、第1のコンピュータと第2のコンピュータの間でデータ通信を実行するステップとを含み、各第1のブロックが、構成可能なデータ通信機能を表す、ネットワークを介したデータ通信方法が提供される。ブロックは、複数のセグメントに割り当てられ、その後、相互接続されてもよい。通信は、他のコンピュータ及び/又はアプリケーション間であってもよい。対応するシステムも提供される。
【特許請求の範囲】
【請求項1】
ネットワークを介したデータ通信方法であって、
少なくとも1つのセグメントに関連付けられている順序付けられた複数の第1のブロックを含む第1のシーケンスを第1のコンピュータ上で構成するステップと
前記第1のブロックを初期化して、前記第1のコンピュータと第2のコンピュータの間でデータ通信を実行するステップと、
を含み、
各第1のブロックが、構成可能なデータ通信機能を表す、データ通信方法。
【請求項2】
1つ以上の前記第1のブロックを第1のセグメントに割り当て、他の1つ以上の前記第1のブロックを第2のセグメントに割り当てるステップと、
前記第1のセグメントの前記第1のブロックを初期化し、前記第2のセグメントの前記第1のブロックを初期化するステップと、
その後、前記第1のセグメントの第1のブロックと前記第2のセグメントの第1のブロックとの間にデータ通信を生じさせるステップと、
を更に含む、請求項1に記載の方法。
【請求項3】
少なくとも1つのセグメントが、前記第1のコンピュータ上で実行されているアプリケーションとのデータ通信に関連付けられている、請求項2に記載の方法。
【請求項4】
少なくとも1つのセグメントが、データネットワークを介した前記第2のコンピュータ又は別のコンピュータとのデータ通信に関連付けられている、請求項2又は3に記載の方法。
【請求項5】
少なくとも1つのセグメントに関連付けられている順序付けられた複数の第2のブロックを含む第2のシーケンスを第2のコンピュータ上で構成するステップであって、1つ以上の前記第2のブロックの各々が第1のブロックに一意に関連付けられている、ステップと、
前記第2のブロックを初期化して、前記第1のコンピュータと前記第2のコンピュータの間でデータ通信を実行するステップと、
を更に含み、
各第2のブロックが、構成可能なデータ通信機能を表す、請求項1~4のいずれか一項に記載の方法。
【請求項6】
少なくとも1つの第1のブロックが、前記第1のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第1のブロックであり、及び/又は、少なくとも1つの第2のブロックが、前記第2のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第2のブロックである、請求項5に記載の方法。
【請求項7】
セグメントの前記第1のブロック及び/又はセグメントの前記第2のブロックを初期化することが、一つ一つ別々に第1の方向にトラバースし、続いて反対の第2の方向にトラバースすることを含み、トラバースすることが、前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能を起動規則に従って起動することを含む、請求項5又は6に記載の方法。
【請求項8】
各第1のブロック及び各第2のブロックが、トップダウンブロックタイプ又はボトムアップブロックタイプとして構成可能であり、起動規則が、前記第1の方向にトラバースされるときは前記トップダウンブロックタイプの前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能のみが起動され、前記第2の方向にトラバースされるときは前記ボトムアップタイプの前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能のみが起動されるような起動規則である、請求項7に記載の方法。
【請求項9】
前記第1のブロック及び/又は前記第2のブロックを初期化することが、一つ一つ別々にそれぞれの第1の方向だけにトラバースすることを含み、トラバースすることが、前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能を起動規則に従って起動することを含む、請求項5又は6に記載の方法。
【請求項10】
前記定義された第1のブロック及び第2のブロックに関連付けられている前記通信機能が初期化後に前記データ通信を実行するように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックがカプセル化ブロックタイプとして構成される、請求項5~9のいずれか一項に記載の方法。
【請求項11】
少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、IPネットワーク、例えばインターネットなどの公衆ネットワーク、と通信するためのネットワークプロトコルとして構成される、請求項10に記載の方法。
【請求項12】
前記定義された第1のブロック及び第2のブロックに関連付けられている前記通信機能が初期化後に前記データ通信に関与しないように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックが非カプセル化ブロックタイプとして構成される、請求項5~11のいずれか一項に記載の方法。
【請求項13】
少なくとも1つの中継サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む、請求項5~12のいずれか一項に記載の方法。
【請求項14】
前記第1のシーケンスの前記第1のブロック及び前記第2のシーケンスの前記第2のブロックが、前記少なくとも1つの中継サーバと通信するように構成された前記第1のブロック及び前記第2のブロックを介して、前記ネットワークと通信する、請求項13に記載の方法。
【請求項15】
接続サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む、請求項5~14のいずれか一項に記載の方法。
【請求項16】
前記接続サーバと通信するように構成された通信機能に関連付けられている少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、前記データ通信を初期化するためにのみ使用される、請求項15に記載の方法。
【請求項17】
前記第1のシーケンスの初期化が起動コマンドの受信に応答したものであり、及び/又は、前記第2のシーケンスの初期化が起動コマンドの受信に応答したものである、請求項5~16のいずれか一項に記載の方法。
【請求項18】
前記データ通信が、前記第1のコンピュータ上で実行されている第1のアプリケーションと前記第2のコンピュータ上で実行されている第2のアプリケーションの間で行われる、請求項5~17のいずれか一項に記載の方法。
【請求項19】
複数のアプリケーション間のデータ通信を生成するための方法であって、第1のコンピュータ上で動作している1つ以上のアプリケーション及び第2のコンピュータ上で動作している1つ以上のアプリケーションの各々に対して請求項18に記載の方法を実施するステップを含む、方法。
【請求項20】
第1のコンピュータを含むシステムであって、
前記第1のコンピュータが、
少なくとも1つのセグメントに関連付けられている順序付けられた複数の第1のブロックを含む第1のシーケンスを生成して、
前記第1のシーケンスに基づいて前記第1のブロックを初期化して、
前記第1のブロックの初期化に基づいて第2のコンピュータとのデータ通信を実行する、ように構成され、
各ブロックが構成可能なデータ通信機能を表す、システム。
【請求項21】
前記第1のコンピュータが、更に、1つ又は複数の前記第1のブロックを第1のセグメントに割り当てかつ他の1つ又は複数の前記第1のブロックを第2のセグメントに割り当てて、前記第1のセグメントの前記第1のブロックを初期化しかつ前記第2のセグメントの前記第1のブロックを初期化して、その後、前記第1のセグメントの第1のブロックと前記第2のセグメントの第1のブロックとの間にデータ通信を生じさせるように構成される、請求項20に記載のシステム。
【請求項22】
少なくとも1つのセグメントが、前記第1のコンピュータ上で実行されているアプリケーションとのデータ通信に関連付けられている、請求項21に記載のシステム。
【請求項23】
少なくとも1つのセグメントが、データネットワークを介した前記第2のコンピュータ又は別のコンピュータとのデータ通信に関連付けられている、請求項21又は22に記載のシステム。
【請求項24】
前記第2のコンピュータを更に含み、前記第2のコンピュータが、
少なくとも1つのセグメントに関連付けられている順序付けられた複数の第2のブロックを含む第2のシーケンスを生成して、
前記第2のシーケンスに基づいて前記第2のブロックを初期化して、
前記初期化された前記第2のブロックに基づいて前記第1のコンピュータとのデータ通信を実行する、ように構成され、
少なくとも1つの第2のブロックの各々が第1のブロックと一意に関連付けられている、請求項20~23のいずれか一項に記載のシステム。
【請求項25】
少なくとも1つの第1のブロックが、前記第1のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第1のブロックであり、及び/又は、少なくとも1つの第2のブロックが、前記第2のコンピュータ上で実行されているアプリケーションと対話するように構成されている発信元の第2のブロックである、請求項24に記載のシステム。
【請求項26】
前記第1のコンピュータが、前記第1のブロックを初期化するときに、セグメントの前記第1のブロックを第1の方向にトラバースし、続いて反対の第2の方向にトラバースするように構成され、
前記第2のコンピュータが、前記第2のブロックを初期化するときに、セグメントの前記第2のブロックを第1の方向にトラバースし、続いて反対の第2の方向にトラバースするように構成され、
トラバースすることが、前記第1のブロック及び前記第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む、請求項24又は25に記載の方法。
【請求項27】
各第1のブロック及び各第2のブロックが、トップダウンブロックタイプ又はボトムアップブロックタイプとして構成可能であり、
起動規則が、前記第1の方向にトラバースされるときは前記トップダウンブロックタイプの前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能のみが起動され、前記第2の方向にトラバースされるときは前記ボトムアップタイプの前記第1のブロック及び前記第2のブロックに関連付けられている前記通信機能のみが起動されるような起動規則である、請求項26に記載のシステム。
【請求項28】
前記第1のコンピュータが、前記第1のブロックを初期化するときに、セグメントの前記第1のブロックを第1の方向のみにトラバースするように構成され、
前記第2のコンピュータが、前記第2のブロックを初期化するときに、セグメントの前記第2のブロックを第1の方向のみにトラバースするように構成され、
トラバースすることが、前記第1のブロック及び前記第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む、請求項24又は25に記載のシステム。
【請求項29】
前記定義された第1のブロック及び第2のブロックに関連付けられている前記通信機能が、そのそれぞれのコンピュータに初期化後に前記データ通信を実行させるように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックがカプセル化ブロックタイプとして構成される、請求項24~27のいずれか一項に記載のシステム。
【請求項30】
少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、IPネットワーク、例えばインターネットなどの公衆ネットワーク、と通信するためのネットワークプロトコルとして構成される、請求項29に記載のシステム。
【請求項31】
前記定義された第1のブロック及び第2のブロックに関連付けられている前記通信機能が初期化後に前記データ通信に関与しないように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックが非カプセル化ブロックタイプとして構成される、請求項24~30のいずれか一項に記載のシステム。
【請求項32】
少なくとも1つの中継サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む、請求項24~31のいずれか一項に記載のシステム。
【請求項33】
前記第1のシーケンスの前記第1のブロック及び前記第2のシーケンスの前記第2のブロックが、前記少なくとも1つの中継サーバと通信するように構成された前記第1のブロック及び前記第2のブロックを介して、前記ネットワークと通信する、請求項32に記載のシステム。
【請求項34】
前記少なくとも1つの中継サーバを含む、請求項32又は33に記載のシステム。
【請求項35】
接続サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む、請求項24~34のいずれか一項に記載のシステム。
【請求項36】
前記接続サーバと通信するように構成された通信機能に関連付けられている少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、前記データ通信を初期化するためにのみ使用される、請求項35に記載のシステム。
【請求項37】
前記接続サーバを含む、請求項35又は36に記載のシステム。
【請求項38】
前記第1のシーケンスの初期化が起動コマンドの受信に応答したものであり、及び/又は、前記第2のシーケンスの初期化が起動コマンドの受信に応答したものである、請求項24~37のいずれか一項に記載のシステム。
【請求項39】
前記データ通信が、前記第1のコンピュータ上で実行されている第1のアプリケーションと前記第2のコンピュータ上で実行されている第2のアプリケーションの間で行われる、請求項24~38のいずれか一項に記載のシステム。
【請求項40】
請求項1~4のいずれか一項に記載の方法をコンピュータに実施させるように構成されたコンピュータプログラムを含むコンピュータ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、ネットワークを介したデータ通信、例えば構成可能ネットワーク通信のための方法及びシステムに関する。
【背景技術】
【0002】
パブリックネットワークを介して2つのプライベートネットワークを仮想的に接続できるネットワークトンネリングが知られている。しかしながら、そのようなトンネリング法は、一般に、柔軟性及び汎用性を欠いている。これは、レイテンシ、スループット、信頼性、到達度、及び潜在的な新機能を制限するものである。また、現在のトンネリング技術は、通常、許可された通信のみを可能にするファイアウォールでパケットを制限する集中コントローラを必要とする。これは、性能(例えば、レイテンシ)に関する制限をもたらす可能性があり、中心障害点をもたらす場合もある。
【発明の概要】
【0003】
本開示の一態様によれば、ネットワークを介したデータ通信方法であって、少なくとも1つのセグメントに関連付けられている順序付けられた複数の第1のブロックを含む第1のシーケンスを第1のコンピュータ上で構成するステップと、第1のブロックを初期化して、第1のコンピュータと第2のコンピュータの間でデータ通信を実行するステップと、を含み、各第1のブロックが、構成可能なデータ通信機能を表す、データ通信方法が提供される。
【0004】
一実施形態において、この方法は、1つ以上の第1のブロックを第1のセグメントに割り当て、他の1つ以上の第1のブロックを第2のセグメントに割り当てるステップと、第1のセグメントの第1のブロックを初期化し、第2のセグメントの第1のブロックを初期化するステップと、その後、第1のセグメントの第1のブロックと第2のセグメントの第1のブロックとの間にデータ通信を生じさせるステップと、を更に含む。少なくとも1つのセグメントが、第1のコンピュータ上で実行されているアプリケーションとのデータ通信に関連付けられていてもよい。少なくとも1つのセグメントが、データネットワークを介した第2のコンピュータ又は別のコンピュータとのデータ通信に関連付けられていてもよい。
【0005】
一実施形態において、この方法は、少なくとも1つのセグメントに関連付けられている順序付けられた複数の第2のブロックを含む第2のシーケンスを第2のコンピュータ上で構成するステップであって、1つ以上の第2のブロックの各々が第1のブロックに一意に関連付けられている、ステップと、第2のブロックを初期化して、第1のコンピュータと第2のコンピュータの間でデータ通信を実行するステップと、を更に含み、各第2のブロックが、構成可能なデータ通信機能を表す。
【0006】
任意選択で、少なくとも1つの第1のブロックが、第1のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第1のブロックであり、及び/又は、少なくとも1つの第2のブロックが、第2のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第2のブロックである。
【0007】
任意選択で、セグメントの第1のブロック及び/又はセグメントの第2のブロックを初期化することが、一つ一つ別々に第1の方向にトラバースし、続いて反対の第2の方向にトラバースすることを含み、トラバースすることが、第1のブロック及び第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む。各第1のブロック及び各第2のブロックが、トップダウンブロックタイプ又はボトムアップブロックタイプとして構成可能であってもよく、起動規則が、第1の方向にトラバースされるときはトップダウンブロックタイプの第1のブロック及び第2のブロックに関連付けられている通信機能のみが起動され、第2の方向にトラバースされるときはボトムアップタイプの第1のブロック及び第2のブロックに関連付けられている通信機能のみが起動されるような起動規則であってもよい。
【0008】
任意選択で、第1のブロック及び/又は第2のブロックを初期化することが、一つ一つ別々にそれぞれの第1の方向だけにトラバースすることを含み、トラバースすることが、第1のブロック及び第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む。
【0009】
任意選択で、前記定義された第1のブロック及び第2のブロックに関連付けられている通信機能がデータ通信を初期化後に実行するように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックがカプセル化ブロックタイプとして構成される。少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、IPネットワーク、例えばインターネットなどの公衆ネットワーク、と通信するためのネットワークプロトコルとして構成されてもよい。
【0010】
任意選択で、前記定義された第1のブロック及び第2のブロックに関連付けられている通信機能が初期化後にデータ通信に関与しないように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックが非カプセル化ブロックタイプとして構成される。
【0011】
一実施形態において、この方法は、少なくとも1つの中継サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む。第1のシーケンスの第1のブロック及び第2のシーケンスの第2のブロックが、少なくとも1つの中継サーバと通信するように構成された第1のブロック及び第2のブロックを介して、ネットワークと通信してもよい。
【0012】
一実施形態において、この方法は、接続サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む。接続サーバと通信するように構成された通信機能に関連付けられている少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、データ通信を初期化するためにのみ使用されてもよい。
【0013】
任意選択で、第1のシーケンスの初期化が起動コマンドの受信に応答したものであり、及び/又は、第2のシーケンスの初期化が起動コマンドの受信に応答したものである。
【0014】
任意選択で、データ通信が、第1のコンピュータ上で実行されている第1のアプリケーションと第2のコンピュータ上で実行されている第2のアプリケーションの間で行われる。
【0015】
本開示の別の態様によれば、複数のアプリケーション間のデータ通信を生成するための方法であって、第1のコンピュータ上で動作している1つ以上のアプリケーション及び第2のコンピュータ上で動作している1つ以上のアプリケーションの各々について上記態様の方法を実施するステップを含む方法が提供される。
【0016】
本開示の別の態様によれば、第1のコンピュータを含むシステムであって、第1のコンピュータが、少なくとも1つのセグメントに関連付けられている順序付けられた複数の第1のブロックを含む第1のシーケンスを生成して、第1のシーケンスに基づいて第1のブロックを初期化して、第1のブロックの初期化に基づいて第2のコンピュータとのデータ通信を実行するように構成され、各ブロックが、構成可能なデータ通信機能を表す、システムが提供される。
【0017】
一実施形態において、第1のコンピュータが、更に、1つ又は複数の第1のブロックを第1のセグメントに割り当てかつ他の1つ又は複数の第1のブロックを第2のセグメントに割り当て、第1のセグメントの第1のブロックを初期化しかつ第2のセグメントの第1のブロックを初期化し、その後、第1のセグメントの第1のブロックと第2のセグメントの第1のブロックとの間にデータ通信を生じさせるように構成される。少なくとも1つのセグメントが、第1のコンピュータ上で実行されているアプリケーションとのデータ通信に関連付けられていてもよい。少なくとも1つのセグメントが、データネットワークを介した第2のコンピュータ又は別のコンピュータとのデータ通信に関連付けられていてもよい。
【0018】
一実施形態において、このシステムは第2のコンピュータを更に含み、第2のコンピュータが、少なくとも1つのセグメントに関連付けられている順序付けられた複数の第2のブロックを含む第2のシーケンスを生成して、第2のシーケンスに基づいて第2のブロックを初期化して、初期化された第2のブロックに基づいて第1のコンピュータとのデータ通信を実行するように構成され、少なくとも1つの第2のブロックの各々が第1のブロックと一意に関連付けられている。
【0019】
任意選択で、少なくとも1つの第1のブロックが、第1のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第1のブロックであり、及び/又は、少なくとも1つの第2のブロックが、第2のコンピュータ上で実行されているアプリケーションと対話するように構成された発信元の第2のブロックである。
【0020】
任意選択で、第1のコンピュータが、第1のブロックを初期化するときに、セグメントの第1のブロックを第1の方向にトラバースし、続いて反対の第2の方向にトラバースするように構成され、第2のコンピュータが、第2のブロックを初期化するときに、セグメントの第2のブロックを第1の方向にトラバースし、続いて反対の第2の方向にトラバースするように構成され、トラバースすることが、第1のブロック及び第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む。各第1のブロック及び各第2のブロックが、トップダウンブロックタイプ又はボトムアップブロックタイプとして構成可能であってもよく、起動規則が、第1の方向にトラバースされるときはトップダウンブロックタイプの第1のブロック及び第2のブロックに関連付けられている通信機能のみが起動され、第2の方向にトラバースされるときはボトムアップタイプの第1のブロック及び第2のブロックに関連付けられている通信機能のみが起動されるような起動規則であってもよい。
【0021】
任意選択で、第1のコンピュータが、第1のブロックを初期化するときに、セグメントの第1のブロックを第1の方向のみにトラバースするように構成され、第2のコンピュータが、第2のブロックを初期化するときに、セグメントの第2のブロックを第1の方向のみにトラバースするように構成され、トラバースすることが、第1のブロック及び第2のブロックに関連付けられている通信機能を起動規則に従って起動することを含む。
【0022】
任意選択で、前記定義された第1のブロック及び第2のブロックに関連付けられている通信機能が、そのそれぞれのコンピュータに初期化後にデータ通信を実行させるように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックがカプセル化ブロックタイプとして構成される。少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、IPネットワーク、例えばインターネットなどの公衆ネットワーク、と通信するためのネットワークプロトコルとして構成されてもよい。
【0023】
任意選択で、前記定義された第1のブロック及び第2のブロックに関連付けられている通信機能が初期化後にデータ通信に関与しないように、少なくとも1つの第1のブロック及び/又は少なくとも1つの第2のブロックが非カプセル化ブロックタイプとして構成される。
【0024】
一実施形態において、このシステムは、少なくとも1つの中継サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む。第1のシーケンスの第1のブロック及び第2のシーケンスの第2のブロックが、少なくとも1つの中継サーバと通信するように構成された第1のブロック及び第2のブロックを介して、ネットワークと通信してもよい。システムは、少なくとも1つの中継サーバを含んでもよい。
【0025】
一実施形態において、このシステムは、接続サーバと通信するように構成された通信機能に関連付けられている1つ以上の第1のブロック及び/又は1つ以上の第2のブロックを更に含む。接続サーバと通信するように構成された通信機能に関連付けられている少なくとも1つの第1のブロック及び少なくとも1つの第2のブロックが、データ通信を初期化するためにのみ使用されてもよい。システムは接続サーバを含んでもよい。
【0026】
任意選択で、第1のシーケンスの初期化が起動コマンドの受信に応答したものであり、及び/又は、第2のシーケンスの初期化が起動コマンドの受信に応答したものである。
【0027】
任意選択で、データ通信が、第1のコンピュータ上で実行されている第1のアプリケーションと第2のコンピュータ上で実行されている第2のアプリケーションの間で行われる。
【0028】
本開示の別の態様によれば、第1の態様の方法をコンピュータに実施させるように構成されたコンピュータプログラムを含むコンピュータが提供される。
【0029】
本明細書で使用される場合、単語「含む(comprise)」若しくは「含む(comprises)」又は「含んでいる(comprising)」などの変形は、包括的な意味で、すなわち、記載された特徴の存在を特定ために使用されるが、本発明の様々な実施形態における更なる特徴の存在又は追加を排除しないために、使用される。
【図面の簡単な説明】
【0030】
本発明をより明確に理解できるように、添付の図面を参照して、例として実施形態を説明する。
【0031】
【
図1】一実施形態による通信システムを示す図である。
【
図3】2つのコンピュータ間のデータ通信を示す図である。
【
図5】一実施形態によるデータ通信を開始するための方法を示す図である。
【
図6a】第1のブロックの処理の順序を示す図である。
【
図6b】第2のブロックの処理の順序を示す図である。
【
図8】一実施形態による、動作中のデータ通信の概略図である。
【
図10】接続サーバを含む実施形態を示す図である。
【
図11】接続サーバを含む実施形態を示す図である。
【
図12a】内部シーケンスと第1のシーケンスとを含む一実施形態を示す図である。
【
図12b】内部シーケンスと第1のシーケンスと含む一実施形態を示す図である。
【
図13a】VPNを介した接続の従来技術の例を示す図である。
【
図13b】本実施形態のデータ通信を介した接続を示す図である。
【発明を実施するための形態】
【0032】
図1は、本明細書に記載の実施形態を表す通信システム10を示す。システム10は、ネットワーク15とデータ通信するいくつかのコンピュータ11を含む。このようにして、2つ(又はそれ以上)のコンピュータ11は、前記ネットワーク15を介して互いにデータ通信を実行できる。ネットワーク15は、2つ以上のコンピューティングデバイスの任意の相互接続を表すと理解されるべきであり、通常、ネットワーク15の少なくとも一部は、インターネットなどのパブリックネットワークを含む。データ通信は、少なくとも部分的に、インターネットプロトコル(IP)に基づくものであってもよい。しかしながら、他の形態のデータ通信が含まれてもよく、例えば、データ通信の一部は、Bluetooth又はUSBなどのプロトコルを含んでもよい。コンピュータ11a及び11bは、ネットワーク15との直接データ通信で示されているが、コンピュータ11c~11eは、プライベートネットワーク16aを介してネットワーク15と通信し、コンピュータ11f~11hは、プライベートネットワーク16bを介してネットワーク15と通信する。
【0033】
本開示の目的のために、図に示す一般的な特徴は、例えばコンピュータ11やネットワーク15といった参照番号によって表される。そのような参照番号は、適切な場合には、図面間で共用される。特徴の特定の例への参照が望ましい場合、参照番号に小文字の添え字が付加される。例えば、
図1では、コンピュータ11aをコンピュータ11bと区別することができる。
【0034】
本開示の目的のために、コンピュータ11は、ネットワーク15上のデータ通信のため設備を有する任意の適切なコンピューティングデバイスに対応すると考えるべきである。例えば、スタンドアロンのコンピューティングハードウェア(例えば、デスクトップ又はラップトップコンピュータ)、スタンドアロンサーバ、分散コンピューティング構成、スマートフォンやタブレットなどのモバイルデバイス、及び多くの他のものなど、そのようなコンピュータ11の数多くの実装形態が存在する。
図1では、説明のために、コンピュータ11a及び11f~11hがサーバとして表現され、コンピュータ11b~11eがデスクトップコンピュータとして表現されている。コンピュータ11は、例えば、サーバ環境内に実装される仮想コンピュータに対応するものであってもよい。したがって、2つのコンピュータ11は同じサーバインフラストラクチャ内に実装される仮想コンピュータに対応するものであってもよい。
【0035】
図2を参照すると、一般的な意味で、コンピュータ11は、メモリ21及びネットワークインターフェース22にインターフェース接続されたプロセッサ20を含む。図示のプロセッサ20は、実際には、単一のCPU、複数のCPU、別々のハードウェアに実装された複数CPUが機能的に相互接続されたネットワーク、マイクロコントローラなどに対応し得る。メモリ21は、通常、揮発性メモリと不揮発性メモリとを含む。メモリ21は、プロセッサ20が実行できるプログラム命令を格納するように構成され、プログラム命令によって使用されるデータを格納するためのデータ空間を提供する。
【0036】
ネットワークインターフェース22は、プロセッサ20がネットワーク15上でデータを通信すること、及び、ネットワーク15を介してデータを受信することを可能にするように構成される。
図1に示すネットワーク15は、コンピューティングデバイス並びにルータやスイッチなどのネットワークノードを含む複数デバイスの任意の相互接続として解釈されるべきである。この接続は、有線の電気接続、光接続、及び無線接続(通常、これらの多くの組み合わせ)を利用してもよい。関連して、データ通信は、通常、1つ以上のプロトコル、例えば、インターネット上の通信に共通のTCP/IPスタックによって定義される。ネットワーク15は、インターネットなどの公衆ネットワークを含んでもよい。
【0037】
本明細書に記載の実施形態によれば、2つのコンピュータ11a,11bがあたかも直接データ通信しているかのような効果がもたらされるように、同一プライベートネットワーク16の一部でない場合もある2つのコンピュータ11間のデータ通信を可能にすることが望ましい。コンピュータ11を、実質的に、まだ属していないプライベートネットワーク16の一部にできることが望ましい場合もある。そのような接続は、ネットワークトンネルに類似していてもよい。すなわち、本明細書に記載の機能は、既知のトンネリングプロトコルと同様又は同等であってもよい。
【0038】
説明を容易にするために、
図3を参照すると、コンピュータ11aと11bの間のデータ通信を開始して維持することが望ましい。マイクロトンネルは、破線矢印によって有向接続として表されている。これらのコンピュータ11a,11bを区別するために「第1の」及び「第2の」という標識が使用されるが、これらは、第1のコンピュータ11a及び第2のコンピュータ11bを指すだけでなく、前記コンピュータ11a,11bの様々な特徴をも指す。「第1の」及び「第2の」という用語が特定の順序付けを意味するものではないということ、並びに、該当するコンピュータ11a,11bに関連付けられている「第1の」及び「第2の」特徴が複数存在し得ることを理解されたい。図では、コンピュータ11a及び11bは、それぞれサーバ及びデスクトップとして示されている。もちろん、特定のコンピューティングデバイスがこれらの例を限定することはない。
【0039】
図4は、一実施形態による、複数のブロック41の概略図を示す。各ブロック41は、2つのコンピュータ11aと11bの間の初期化及び/又は進行中(ongoing)のデータ通信に使用するための構成可能なプロトコル又は他のソフトウェア/アルゴリズム(本明細書では集合的に「プロトコル」又は「データ通信機能」と呼ぶ)を概念化したものである。すなわち、各ブロック41は構成可能であり、コンピュータ11aと11bの間のデータ通信で役割を果たす。各ブロック41は、ブロック41の動作を定義する1つ以上の属性に関連付けられている。
【0040】
一実施形態によれば、ブロック属性は、各ブロック41のブロックタイプを定義できる。本明細書に記載の実施形態では、ブロックタイプは、「カプセル化ブロック」と「非カプセル化ブロック」とを含む。
【0041】
カプセル化ブロックタイプは、2つのコンピュータ11aと11bの間の進行中のデータ通信のとき、すなわちデータ通信の初期化後、に利用されるプロトコルに対応する。一般に、カプセル化ブロックは、データ通信の初期化にも関与する。例えば、カプセル化ブロックは、一般に、データ通信と共に使用する構成を要する。一方、非カプセル化ブロックタイプは、データ通信の初期化中にのみ利用されるプロトコルに対応する。したがって、非カプセル化ブロックは、初期化されたデータ通信を介した進行中の通信には利用されない。
【0042】
図4は、ブロック41の2つのシーケンス42、すなわち第1のブロック41a~41eを含む第1のシーケンス42a及び第2のブロック41f~41jを含む第2のシーケンス42b、に配列されたブロック41を示す。第1のブロック41aが第1のコンピュータ11aに関連付けられており、第2のブロック41f~41jが第2のコンピュータ11bに関連付けられている。一実施形態によれば、第1のブロック41a~41eのうちの少なくとも1つは、接続された点線で示されるように、ペアリングされた第2のブロック41f~41jを有する。図示の例では、第1のブロック
【0043】
一実施形態によれば、第1のシーケンス42aは、順序付けられた複数の第1のブロック41a~41eを定義するデータ構造であり、概念的には、各第1のブロック41a~41eは、順方向、逆方向、又はその両方で、別の第1のブロック41a~41eの隣に位置するように配置される。より詳細には、端にある第1のブロック41a及び41eだけは、1つの第1のブロック41b,41dのみと(それぞれ)隣接している。矢印49aの方向が「順方向」を示す。同様に、第2のシーケンス42bは、順序付けられた複数の第2のブロック41f~41jを定義するデータ構造であり、概念的には、各第2のブロック41f~41jは、それぞれが、順方向、逆方向、又はその両方で、別の第2のブロック41f~41jの隣に位置するように配置される。より詳細には、端にある第2のブロック41f及び41jだけは、1つの第2のブロック41g,41iのみと(それぞれ)隣接している。矢印49bの方向が「順方向」を示す。したがって、このデータ構造は双方向連結リストに相当し得る。
【0044】
このデータ構造は、各コンピュータ11上のデータ構造作成プロセスを介して作成できる。例えば、(ユーザ入力、ファイル、又は他の既知のメカニズムから)構成パラメータエントリを受け入れて有効フォーマットでデータ構造を作成するように構成されたアプリケーションを提供できる。別の例では、ユーザが、ユーザ入力を介して、データ構造を直接作成してもよい。別の例では、データ構造は外部ソースから提供される。例えば、あるコンピュータ11aのユーザが、通信手段(例えば、ネットワーク15)を介して、又はUSBストレージなどのストレージを介して、別のコンピュータ11bにデータ構造を伝えてもよい。各シーケンス42は構成データに関連付けられている。構成データは、シーケンス42のデータ構造に組み込むことも可能であるし、別に格納することも可能である。実際には、これらのオプションの組み合わせが利用されることもある。また、構成データの少なくとも一部が、例えばユーザ入力などの外部ソースから提供されてもよい。したがって、データ構造は、シーケンスの各ブロック41のプロトコルとブロック41の順序付けとを定義し、構成データは、ブロック41に関連付けられているプロトコルを構成するためのパラメータを定義する。
【0045】
一般に、データ通信が初期化されると、カプセル化ブロック41によって定義されたプロトコルは、データを受信し、プロトコル及びその構成に従って他のデータ処理アクションをカプセル化又は実行し、処理済みのデータを次のブロック41に渡すことができる。データは、(例えば)バイナリ・ストリーム・インターフェースを介して渡すことができる。
【0046】
図5は、上述のブロック41を利用して、一実施形態によるデータ通信を開始するための方法を示す。本方法は、各コンピュータ11a,11b上で動作する制御ソフトウェア、すなわち、第1のコンピュータ11a上で動作する第1の制御ソフトウェア及び第2のコンピュータ11b上で動作する第2の制御ソフトウェア、によって実施され得る。
【0047】
ステップ100は、第1のコンピュータ11aのメモリ内に第1のシーケンス42aを構成することに対応し、ステップ101は、第2のコンピュータ11bのメモリ内に第2のシーケンス42bを構成することに対応する。もちろん、ステップ100及び101は、どのような順序で実行することも可能であり、同時に実行することさえも可能である。
【0048】
一実施形態によれば、ブロックペアは、(例えば、2つのコンピュータ11a,11b上のプロトコルが互いに対話できるように構成された、同じプロトコルを定義する)相補的なプロトコル構成を有する、第1のブロック41a~41eのうちの1つと第2のブロック41f~41jのうちの1つとを含む。2つのブロック41e,41fの間にTCP接続を生成することができ、したがって、コンピュータ11a及び11bが互いに通信できるように、例えば、第1のブロック41eがTCPクライアントであってもよく、第2のブロック41fがTCPサーバであってもよい。別の例では、第1のブロック41dがAES暗号化クライアントであってもよく、第2のブロック41gがAES暗号化サーバであってもよい。一般に、1つ以上のブロック対が存在し得る。
【0049】
一実施形態によれば、初期化は、各コンピュータ11a,11b上で実行されているそれぞれの制御ソフトウェアによって第1のシーケンス及び第2のシーケンスのそれぞれを処理することを含む。
【0050】
一実施形態では、
図6aに示すように、第1のシーケンス42aを処理することは、第1の制御ソフトウェアが第1のシーケンス42aを順方向に移動し、続いて第1のシーケンス42aを逆方向に移動することを含む。各第1のブロック41a~41eは、処理されるのが順方向(「トップダウン」)移動時であるのか、逆方向(「ボトムアップ」)移動時であるのかを定義する方向属性を有する。本明細書では明示的に説明されていないが、一部の第1のブロック41a~41eが順方向及び逆方向の両方に関連付けられていることもあると予想される。同様に、
図6bに示すこの実施形態によれば、第2のシーケンス42bを処理することは、第2の制御ソフトウェアが第2のシーケンス42bを順方向(トップダウン)に移動し、続いて第2のシーケンス42bを逆方向(「ボトムアップ」)に移動することを含む。これらの図では、網掛けブロック41がトップダウンブロックであり、非網掛けブロック41がボトムアップブロック41である。最トップのブロックは、トップダウン方向に進むときのシーケンスの先頭ブロック41であり、最ボトムのブロックは、同方向に進むときのシーケンスの最終ブロック41である。したがって、ブロック41a及び41jは両方とも最トップのブロックであり、ブロック41e及び41fは両方とも最ボトムのブロックである。
【0051】
「トップダウン」及び「ボトムアップ」の概念は、データフローの順序と初期化の順序の間の概念的なリンクを提供する。
【0052】
別の実施形態では、各ブロック41が順序通りに読み取られる。この場合、データ構造内のブロック41の順序付けが、上述の実施形態に関連して説明した概念的な順序付けと異なることがある。しかしながら、意図された開始順序(データフローの概念的な順序付けと異なる場合もある)に従ってブロック41が処理されると、代わりに、そのような順序付けが選択される。
【0053】
図7は、一実施形態による、第1のコンピュータ11aによって実行される初期化方法(すなわち、ステップ103に対応)を示す。単に説明を容易にするために第1のコンピュータ11aを参照するが、一般に、同方法を第2のコンピュータ11bによって実施することが可能である。ステップ200で最初の第1のブロック41aは識別されるが、これは順方向接続だけのブロック41aである。次に、以下に説明するように、各第1のブロック41a~41eが順方向(すなわち、41a→41b→41c→41d→41e)にチェックされる。一実施形態では、第1の制御ソフトウェアは、第1のデータ構造を読み取って、最初の第1のブロック41aを識別する。
【0054】
ステップ201で、カレント(current)ブロック41が選択されるが、これは、最初は、最初の第1のブロック41aである。次に、チェックステップ202が行われる。これは、カレントの第1のブロック41がトップダウンブロックタイプか否かチェックすることに対応する。カレントの第1のブロック41がトップダウンブロックタイプでなければ、ステップ204に進む。
【0055】
カレントの第1のブロック41がトップダウンブロックタイプであれば、ステップ203で起動プロセスが施される。当該起動プロセスは、カレントブロック41に関連付けられているプロトコルに依存するものである。また、起動は、通常、カレントブロック41に関連付けられている所定のブロックパラメータに依存する。また、起動は、起動シーケンスにおける直前のブロック41からカレントブロック41に通信されるデータに依存し得る。場合によっては、起動には、別のコンピュータ11(場合により、第2のコンピュータ11bであってもよい)からの起動データの受信が必要なことがある。以下に、プロトコル起動の例を記載する。カレントブロック41に関連付けられているプロトコルの起動が完了したら、ステップ204に進む。通常、第1の制御ソフトウェアは、カレントの第1のブロック41に関連付けられているブロックパラメータに従って、カレントの第1のブロック41に関連付けられているプロトコルを起動させる。
【0056】
ステップ204で、別のリンクされた第1のブロック41が下方向にあるか否かのチェックがなされ、なければ、ステップ205に進む。あれば、ステップ201に戻り、この次のブロック41がカレントブロック41になる。このようにして、第1の制御ソフトウェアは、引き続き、第1のブロック41aから第1のブロック41eへ順に、各第1のブロック41a~41eがトップダウンブロックタイプに対応するか否かチェックする。一実施形態では、明示的なチェックをせずに、最初の第1のブロック41aはトップダウンブロックタイプであると仮定される。
【0057】
次に、第1の制御ソフトウェアは、引き続き、各第1のブロック41a~41eを逆方向(すなわち、41e→41d→41c→41b→41a)にチェックする。ステップ205で、第1のブロック41eがカレントブロックとして選択され、次に、チェックステップ206が行われる。これはカレントの第1のブロック41がボトムアップブロックタイプか否かチェックすることに対応する。カレントの第1のブロック41がボトムアップブロックタイプでなければ、ステップ208に進む。
【0058】
カレントの第1のブロック41がボトムアップブロックタイプであれば、ステップ204で起動プロセスが施される。前述のように、当該起動プロセスは、カレントブロック41に関連付けられているプロトコルに依存する。また、起動は、通常、カレントブロック41に関連付けられている所定のブロックパラメータに依存する。また、起動は、起動シーケンスにおける直前のブロック41からカレントブロック41に通信されるデータに依存し得る。場合によっては、起動には、別のコンピュータ11(場合により、第2のコンピュータ11bであってもよい)からの起動データの受信が必要なことがある。以下に、プロトコル起動の例を記載する。カレントブロック41に関連付けられているプロトコルの起動が完了したら、ステップ204に進む。通常、第1の制御ソフトウェアは、カレントブロック41に関連付けられているブロックパラメータに従って、カレントの第1のブロック41に関連付けられているプロトコルを起動させる。
【0059】
ステップ208で、後方向に別のリンクされた第1のブロック41があるか否かのチェックがなされ、なければ、ステップ209(終了)に進む。あれば、ステップ205に戻り、これがカレントブロック41となる。このようにして、制御ソフトウェアは、引き続き、最後の第1のブロック41から最初の第1のブロック41へ順に、各第1のブロック41がボトムアップブロックタイプに対応するか否かチェックする。
【0060】
図5及び
図7の方法は、例えば、タイムアウト、認証失敗、ネットワーク障害、又は関係する他の理由により、いずれかの時点で、特にいずれかのブロック41の初期化中に、失敗する可能性があることに留意されたい。関係する制御ソフトウェアが障害の判定を行ってもよい。障害はステップとして示されていないが、一般に、障害が発生したことを示し、必要に応じて障害に関する情報を提供する通知が(例えば、メッセージングサービス、ポップアップグラフィックボックス、テストコード、ログファイルエントリ、又は他の既知の手段を介して)行われてもよい。通常、この方法は初期化失敗時に停止し、データ通信は開始されない。
【0061】
プロトコルの起動に関して、カプセル化ブロック41は、
図7の方法後も実質的に動作状態のままである。すなわち、カプセル化ブロック41は、ステップ104で進行中のデータ通信に利用されるプロトコルに対応する。しかしながら、非カプセル化ブロック41は動作状態に維持されない。非カプセル化ブロックはデータ通信の初期化にのみ関係する。
【0062】
関連して、データ通信を初期化するために利用される特定のプロトコルは、第1のシーケンス42a及び第2のシーケンス42b(相補的な場合もあるし、ペアリングされた1つ以上のブロック41を含んでいる場合もある)によって定義される。第1のシーケンス42a及び第2のシーケンス42bはソフトウェアで構成可能なデータ構造である。すなわち、第1のシーケンス及び第2のシーケンスは必要に応じて定義される。したがって、異なるプロトコル及び異なる初期化パラメータを利用するデータ通信は、ソフトウェア構成を介して定義することができ、各プロトコルは選択及び構成が可能である。
【0063】
第1及び第2のコンピュータ11a,11b間の進行中のデータ通信にプロトコルが寄与するという点で、カプセル化ブロック41は進行中のプロトコルを規定している。通常、これらのプロトコルは、TCP、HTTP、TLS、AESなどの既知のネットワーキング及びデータ通信プロトコルに対応する。しかしながら、適切なプロトコルであれば、どのようなプロトコルでも適用可能である。したがって、カプセル化ブロック41の起動は、通常、データ通信の特定セッションのために関連付けられているプロトコルを、例えば関係する制御ソフトウェアによって構成することに対応する。これは、様々な例において、ターゲットIPアドレス、ターゲットポート、暗号鍵などの割り当てを含む場合がある。
【0064】
図8は動作中のデータ通信の概略図を示し、データ通信が、コンピュータ11a及び11b上でそれぞれ動作しているアプリケーション43aと43bとを接続している。データ通信の性質上、ブロック41b~41iは、実質的に、アプリケーション43から見えない。各アプリケーション43は、単に、それぞれのブロック41a及び41jと通信するように構成されている。したがって、第1のブロック41aを発信元(originating)の第1のブロック41aと呼ぶことができ、第2のブロック41jを発信元の第2のブロック41gと呼ぶことができる。
図8の例では、ブロック41a~41jは、それぞれがカプセル化ブロックタイプである(したがって、データ通信の進行中の動作に関与している)と仮定している。
【0065】
一実施形態によれば、
図8に例示されるように、シーケンス42は、異なるセグメント44に関連付けられているブロック41を含み得る。第1のシーケンス42aは、第1のセグメント44aに関連付けられている第1のブロック41a~41cと、第2のセグメント44bに関連付けられている第1のブロック41d~41eとを含む(もちろん、セグメント44が2つより多くあってもよい)。セグメント44a,44bは、別個の通信機能に関連付けられている第1のブロック41a~41c,41d~41eを定義する。この意味で、シーケンス42は、別個の2つのアプリケーション及び/又はプロトコル間の通信を橋渡しするように機能する。
【0066】
一実施形態では、特定のシーケンス42の少なくとも一部のブロック41が非同期的に初期化されてもよい。すなわち、制御ソフトウェアは、これらのブロック41の初期化を、これらが初期化される順序と無関係に生じさせるように構成されてもよい。そのような変形例では、制御ソフトウェアは、初期化が完了すると、その後、正しいカプセル化順序(例えば)に従ってデータフローが生じるように、あるブロック41の出力を別のブロック41の入力に供給するように構成されてもよい。しかしながら、そのようなブロック41は、ビットストリームが接続されるまでは完全に初期化されていないと考えられる場合があり、この観点から、ブロック41は非同期的に部分的に初期化される。セグメント44間の相互接続のための関係ブロック41は、シーケンス42内の互いに「隣り合う」カプセル化ブロック41と考えることができる。
【0067】
特定の例では、第1のセグメント44aのブロック41a~41cは、第2のセグメント44bのブロック41d~41eと非同期的に初期化されてもよい。初期化されると、ブロック41は、あるセグメント44のブロック41(例えば、第1のセグメント44aのブロック41c)の出力が別のセグメント44 のブロック41(例えば、第2のセグメント44bのブロック41d)の入力に接続されるように接続される。
【0068】
再び
図8を参照すると、第1のセグメント44aは、アプリケーション43aとの通信に関するものと考えてもよく、他方、第2のセグメントは、第2のコンピュータ11b(すなわち、第2のシーケンス42b)との通信に関するものと考えてもよい。図示されていないが、セグメント44の同様の配置が第2のシーケンス42bに適用されてもよい。セグメント44のそのような配置の利点は、異なるデータ通信機能を特定のシーケンス42を介してリンクできることである。
【0069】
本明細書に記載された実施形態の利点は、管理者、例えば、データ通信のインスタンスに関与する1つ以上のコンピュータ11に関連付けられているシステム管理者が、例えばトランスポートプロトコル、セキュリティプロトコルなどを定義するための制御を有する特定の配置を構成できることであり得る。この制御は、データ通信の両端(例えば、コンピュータ11a及びコンピュータ11bに対応)の互換性を保証するデータ構造に従って構成された制御ソフトウェアによって実施される。すなわち、データ通信のインスタンスはカスタマイズ可能である。
【0070】
図9は、中継サーバ12を含む実施形態を示す。分かりやすくするためだけに1つしか示されていないが、一般に、複数の中継サーバ12が存在し得る。コンピュータ11と同様に、中継サーバ12は、任意の適切なコンピューティングデバイス(例えば、ネットワークルータなどの特殊なコンピューティングデバイスを含む)とすることができる。中継サーバ12は、通常はネットワーク15を介して、第1のコンピュータ11a及び第2のコンピュータ11bの両方とデータ通信するように構成される。この実施形態によれば、中継サーバ12によってデータ通信が容易になる。すなわち、中継サーバ12は、進行中のデータ通信に関与し、したがって、ブロックタイプをカプセル化することを含む。第1のコンピュータ11a及び第2のコンピュータ11bと同様に、中継サーバ12は(該当する場合はそれぞれ)ブロック41に関連付けられている。したがって、中継サーバ12は、関連付けられているブロック41を定義する中継シーケンス42cと本明細書で称されるデータ構造を含む。
【0071】
図では第1のコンピュータ11aの第1のシーケンス42aが第1のブロック41a~41eを含み、第2のコンピュータ11bの第2のシーケンス42bが第2のブロック41f~41jを含み、中継サーバ12の中継シーケンス42cが中継ブロック41p~41rを含む。一般に、第1のブロック41のうちの1つ又は複数が中継ブロック41とペアリングされてもよい。例えば、図示のように、第1のブロック41eが中継ブロック41pとペアリングされ、第2のブロック41fが中継ブロック41rとペアリングされる。期化は前述したものと同様であるが、中継ブロック41p~41rの別途の初期化がある。これは第1及び第2のブロック41a~41jの初期化のように行われ得る。中継サーバ12はデータ通信の一部として構成される。したがって、第1のブロック41eは、通常、中継ブロック41pと通信するように指示され、第2のブロック41fは、通常、中継ブロック41rと通信するように指示される。図示されるように、第1のブロック41cが第2のブロック41hとペアリングされ、第1のブロック41dが第2のブロック41gとペアリングされ、これらのブロック41c,41h,41d,41g間の通信は中継サーバ12を介して行われる。
【0072】
この実施形態は、いくつかの利点を提供することができる。例えば、コンピュータ11a及び11bが異なるトランスポートプロトコルを利用する場合、中継サーバ12がプロトコル間の変換を(例えば、中継ブロック41qを介して)行うことができる。これに加えて、又はこれに代えて、中継サーバ12は、第1のコンピュータ11aと第2のコンピュータ11bの間の通信を記録するロギング機能を提供し得る。中継サーバ12は、アプリケーション43に対して透過的な態様で前記機能を提供できる。別の利点は、コンピュータ11a及び11bの一方又は両方は中継サーバ12にアクセス可能であるが、前記コンピュータ11a及び11b間の直接接続はファイアウォール又は他のセキュリティ手段により許可されないことであり得る。
【0073】
図10は、接続サーバ13を含む実施形態を示す。この実施形態における接続サーバ13の役割は、データ通信の初期化に寄与することであり、初期化後は役割がない(又は、以下に説明する中継サーバ12の機能を提供する場合もある)。コンピュータ11と同様に、接続サーバ13は、任意の適切なコンピューティングデバイス(例えば、ネットワークルータなどの特殊なコンピューティングデバイスを含む)とすることができる。この意味で、接続サーバ12は、少なくとも1つのワンオフプロトコルに関連付けられている。接続サーバ13の機能は、単一のコンピューティングデバイス(例えば、サーバ)内の中継サーバ12の機能と組み合わせることができる。中継サーバ12と同様に、接続サーバ13は、セキュリティプロトコルに起因して2つのコンピュータ11a,11b間の直接接続が(少なくとも初期化段階で)不可能なときに利点をもたらすことがある。
【0074】
図10は、第1のコンピュータ11a及び第2のコンピュータ11bとデータ通信中の接続サーバ13を示す(少なくとも1つのコンピュータ11は同じコンピューティングデバイスに対応していてもよいし、接続サーバ12と共にプライベートネットワーク16内に設けられていてもよいが、データ通信は、通常、ネットワーク15を介して行われる)。図では、接続サーバ12が、第1のコンピュータ11aと第2のコンピュータ11bの「間」に示されている。接続サーバ12の目的は、第1のコンピュータ11aと第2のコンピュータ11bの間の接続を生成しやすくすることである。
【0075】
図10はまた、第1のコンピュータ11aに関連付けられている第1のブロック41a~41fに対応する第1のシーケンス42aと、第2のコンピュータ11bに関連付けられている第2のブロック41f~41jに対応する第2のシーケンス42bと、接続サーバ12の接続シーケンス42dに関連付けられている更なる接続ブロック41s~41uとを示す。図から分かるように、第1のコンピュータ11aの第1のブロック41d及び41eは、第2のコンピュータ11bではなく、接続サーバ12の接続ブロック41s及び41tとペアリングされている。同様に、第2のコンピュータ11bの第2のブロック41f及び41gは、第1のコンピュータ11aではなく、接続サーバ12の接続ブロック41t及び41uとペアリングされている。第1のブロック41s及び第2のブロック41gはいずれも接続ブロック41tとペアリングされて示されているが、実際は、そうする代わりに、図では簡素に1つのブロック41tとして表現されている関連する2つの接続ブロック41との2つのペアリングに対応する場合があることに留意されたい。
【0076】
図7の初期化法の間、接続サーバ13は、第1のコンピュータ11aと第2のコンピュータ11bの 間の接続を生成しやすくするように構成されている。第2のコンピュータ11bは接続サーバ13との接続に関する自身の可用性をアドバタイズするように構成されており、第1のコンピュータ11aは第2のコンピュータ11bのパブリケーション(publication)を識別するために接続サーバ13と通信するように構成されていると仮定する。この手法は一例であり、限定的であると見なされるべきではない。
【0077】
この場合、例えば、第2のブロック41fはトップダウンブロックであり、第2のブロック41gはボトムアップブロックである。したがって、第2のブロック41fが最初に起動して、接続ブロック41uとのデータ接続を確立する(これらはTCPプロトコルに対応する)。これにより、第2のコンピュータ11bと接続サーバ13の間にTCPセッションが生成される。接続サーバ13の初期化中、接続ブロック41tの前に接続ブロック41uが同様に起動される。
【0078】
次に、第2のブロック41gが、第2のブロック41f及び接続ブロック41uによって確立されたネットワーク接続を介して、接続ブロック41tと通信する。接続ブロック41tは、「ミートポイント(meet point)」、すなわち、第1のコンピュータ11aと第2のコンピュータ11bの間のミートが行われるように構成された機能、に対応する。したがって、接続ブロック41tは非カプセル化ブロックであり、実際のデータ通信には関与しない。第2のブロック41gは「ミートパブリッシャ」であり、接続を受信するための、それ自体の可用性をパブリッシュするためにミートポイント(接続ブロック41t)と通信するように構成されている。パブリケーションは、可用性の特定インスタンス(例えば、コード名)を識別するための識別情報を含む。接続ブロック41tは、予め定義された時間又は第2のブロック41gからの通信で定義された時間の間、可用性のパブリケーションを維持するように構成することができる。これは1分であってもよい。この時間が過ぎると、第2のブロック41gは、それ自体の可用性を接続ブロック41tに再通信することを要求され得る。
【0079】
他方の「側」では、コンピュータ11aがそれ自体の初期化を受ける。ここで、第1のブロック41eはトップダウンブロックであり、第1のブロック41dはボトムアップブロックである。したがって、第1のブロック41eが最初に起動して、接続ブロック41sとのデータ接続を確立する(これらはTCPプロトコルに対応する)。これにより、第1のコンピュータ11aと接続サーバ13の間にTCPセッションが生成される。接続サーバ13の初期化中、接続ブロック41tの前に接続ブロック41sが同様に起動される。
【0080】
次に、第1のブロック41dが、第1のブロック41e及び接続ブロック41sによって確立されたネットワーク接続を介して、接続ブロック41tと通信する。第1のブロック41dは「ミートサブスクライバ」であり、更なる接続のためにパブリッシュ済みの可用性を識別するために、ミートポイント(接続ブロック41t)と通信するように構成されている。第1のブロック41dは、このリクエストを識別情報と共に通信する。これは、ミートポイント(接続ブロック41t)が第1のコンピュータ11aを第2のコンピュータ11bとマッチングさせることができるように構成されている。言い換えれば、第1のブロック41dと第2のブロック41gの両方から接続ブロック41tに供給される識別情報により、接続サーバ13は対応するコンピュータ11a,11b間でデータ通信が開始されるべきであると決定できる。
【0081】
マッチング後、様々な方法でデータ通信の確立の支援を管理するように接続サーバ13を構成することができる。例えば、第1のコンピュータ11aと接続サーバ13及び第2のコンピュータ11bと接続サーバ13の間のTCP接続は、第1のコンピュータ11aと第2のコンピュータ11bの間の直接TCP接続に置き換えられてもよい。別の例では、接続サーバ13は中継サーバ12も実装し、第1のコンピュータ11aと第2のコンピュータ11bの間のデータの中継に進む。例えば、接続サーバ13上で動作する接続制御ソフトウェアは、更新された情報を第1及び第2のコンピュータ11a,11bの関連TCPブロック41に通信することができ、それによってこの2つに、接続サーバ13とではなく互いに通信を開始させる。
【0082】
「ミーティング」が完了した後、第1のコンピュータ11aと第2のコンピュータ11bの両方は、それぞれの初期化方法を継続できる。例えば、第1のシーケンス42aは第1のブロック41cに進んでもよく、第2のシーケンス42bは第2のブロック41hに進んでもよい。したがって、この方法の結果として、第1のブロック41d、第2のブロック41g、及び接続ブロック41s~41uが除去され、これが
図11に示されている。したがって、
図11は、データ通信の初期化後に残るブロック41、すなわち、カプセル化ブロックタイプに対応するブロック41だけの例を示す。したがって、第1及び第2の制御ソフトウェアは、第1のコンピュータ11aと第2のコンピュータ11bの間の接続の生成に応答して初期化プロセスを進めるように構成されている。
【0083】
接続サーバ13を利用する利点は、コンピュータ11a及び11bが互いのネットワークの知識を全く必要としないことであり得る。必要なのは、接続サーバ13がデータ通信の初期化を容易にすることができる共通の識別情報だけである。接続サーバ13は、また、転送規則の設定を必要とせずに(例えば)ファイアウォールやNATの克服を支援する場合もある。各コンピュータ11a及び11bが接続サーバ13への接続を開始すると、既知の技術に基づいて適切なルーティング規則がオンザフライで作成され得る。一実施形態では、接続サーバ13は中継サーバ12でもあり、それにより、ファイアウォール又はNATが存在する場合の通信の継続を保証する。
【0084】
図12aは、第1のシーケンス42aが、第2のブロック41g~41jとペアリングされていない第1のブロック41a,41b(網掛けで示す)を含む実施形態を示す。しかしながら、第1のブロック41a及び41bの初期化は、例えば、
図7を参照して説明されたブロック41c~41eと同じ方法に従う。
【0085】
特定のコンピュータ11上でのシーケンス42の初期化は、起動コマンドに応答して行われ得る。一実施形態では、起動コマンドは、例えば、ユーザアクション(例えば、コマンド・ライン・パラメータ)による提供及び/又は所定のファイル内の提供が可能な特定の構成データに基づいて制御ソフトウェアを実行するために、コマンドライン又はグラフィカル・ユーザ・インターフェース(GUI)を介してコマンドを実行する明示的なユーザアクションを構成する。
【0086】
別の実施形態では、オペレーティングシステム上で実行されているアプリケーションにアクセス可能なライブラリは、本明細書に記載の方法を介して自動データ通信を提供するように構成され得る。すなわち、ライブラリは制御ソフトウェアである。あるいはライブラリは制御ソフトウェアを呼び出してもよい。アプリケーションは、別のコンピュータ11(例えば、前記ライブラリとアプリケーションがコンピュータ11a上で実行されているときのコンピュータ11b)とのネットワーク接続を確立するときに前記ライブラリを利用するように構成可能であってもよい。ライブラリは、構成データに基づいて初期化を行うように構成される。構成データの少なくとも一部は、ライブラリを呼び出すアプリケーションによって提供され得る。
【0087】
別の実施形態では、コンピュータ11上のループバックアドレスは、当該ループバックアドレスへの接続によって、このループバックアドレスにも関連付けられている構成データに基づいて制御ソフトウェアが開始されるようになっている。ループバックアドレスは当技術分野で周知である。一例では、IPv4に関して、ループバックアドレスは127.0.0.0~127.255.255.255の範囲内とすることができるが、この範囲のサブセット、例えば127.1.0.0~127.1.255.255に限定することが好ましい場合がある。
【0088】
これらの例は、他方(又は他のそれぞれ)のコンピュータ11上の起動アクションを指すものではないことに留意されたい。一般に、これらのコンピュータ11は、関連付けられている1つのシーケンス42(又は複数のシーケンス42)を初期化するために制御ソフトウェアを実行するために、それ自体の起動アクションで構成可能である。しかしながら、この起動アクションは、別のコンピュータ11から受信された通信と組み合わせてもよい。例えば、コンピュータ11aがコンピュータ11bと通信を行い、それによってコンピュータ11bがシーケンス42を初期化してもよい。
【0089】
一実施形態では、コンピュータ11は、特定のポートをリッスンするように構成されたTCPリスナ(すなわち、TCPサーバ)で構成され得る。コンピュータ11は、このポートにアドレス指定された通信を受信すると、当該ポートに関連付けられているシーケンス42の初期化を開始するように構成される。関連付けは予め定義された特定の構成データに基づくものであってもよい。
【0090】
本明細書に記載の実施形態は、コンピュータ11上に実装されたソフトウェアを介して特定のコンピュータ11(又はネットワーク接続された他のデバイス、例えばプリンタ)間のデータ接続が制御される、カスタマイズ可能なネットワーキングを提供し得る。すなわち、セキュリティ(例えば、本人確認及び暗号化)などの機能は、接続ごとのトランスポート層又はインターネット層(例えば、RFC1122を参照されたい)とは対照的に、アプリケーション層のレベルで制御され得る。更に、データ接続は、デバイスを対象とするだけでなく、アプリケーションを対象とすることもできる。ブロック41間の接続がソフトウェアで構成され、トランスポート層が(セキュリティなどとは対照的に)トランスポートのみを担当するので、これが可能なのである。そのような柔軟性により、管理者は異なるデバイスへ迅速かつ安全にアクセスできる。
【0091】
本明細書に記載の実施形態の実装形態の一例が
図13a及び
図13bに示されている。
【0092】
この例では、ユーザ90は、プライベートネットワーク92上のコンピュータ91a上で実行されているアプリケーションへのアクセスを要求する。
図13aは、ユーザ90が、ユーザのコンピュータ92aを使用して、コンピュータ91aに関連付けられているVPN94を介してコンピュータ91aに接続する従来技術の例を示す。従来技術の手法には、いくつかの潜在的な欠点がある。例えば、VPN94は、ネットワーク全体へのアクセスを与える可能性があるという点で過度に許容的な場合があり、セキュリティが適切であっても、通常、(潜在的に複雑な)ルーティング規則による集中処理を伴う。ユーザのコンピュータ92aとコンピュータ91aの間のパケットの宛先指定を処理するために複雑な「スマート」ルータが必要とされる可能性がある。結果として、例えば、ユーザ90が別のコンピュータ91bにアクセスできる。したがって、VPN94が中心障害点となる。別の問題は、ためにVPN94ではパケット検査及びルーティングの方法でかなりのオーバーヘッドを実装する必要があるということであり得る。最終的に、ユーザ90aによる対話のためにコンピュータ91a上の特定のアプリケーションを分離することは困難であり得る。
【0093】
図13bは、上記の実施形態を使用する実装形態が示されている。ここで、ユーザ90aは、コンピュータ91a上で実行されているアプリケーション95a、例えばVNCサーバへのアクセスを要求する。本明細書に記載の実施形態は、技術者のコンピュータとアプリケーション95aの間のデータ接続(実際には、データ接続は、具体的には、図示されているように、技術者のコンピュータ上で実行されているアプリケーション96aとアプリケーション95aの間であってもよい)を提供するために利用されてもよい。これは1つのデータ接続である。次に、同セッション中の同ユーザ90は、コンピュータ91a上で実行されている別のアプリケーション95b、例えばファイル転送サーバ、へのアクセスを要求することもできる。本明細書に記載の実施形態は、技術者のコンピュータとアプリケーション95bの間の別のデータ接続(実際には、データ接続は、具体的には、やはり図示されているように、技術者のコンピュータ92a上で実行されているアプリケーション96bとアプリケーション95bの間であってもよい)を提供するために利用されてもよい。
図13bに示すように、技術者のコンピュータ92aをコンピュータ91aにリンクする2つのデータ接続が存在する。ユーザのコンピュータ92aとコンピュータ91aの間にカスタマイズされたネットワーク接続を生成するために、このプロセスを継続することができる。
【0094】
次に、第2の技術者90bが、コンピュータ90a上で動作しているアプリケーション95cへのアクセスを要求する場合を考える。本明細書に記載の実施形態を使用して、技術者のコンピュータ92bとアプリケーション95cの間のデータ接続(実際には、データ接続は、具体的には、図示されているように、技術者のコンピュータ92b上で実行されているアプリケーション96cとアプリケーション95cの間であってもよい)が生成される。これは更に別の接続である。また、第2の技術者90bは、(技術者のコンピュータ92b上で実行されているアプリケーション96aを介して)コンピュータ91aの第1のアプリケーション95aへのアクセスを要求することもできる。
【0095】
ここで、例えば、アプリケーション91aの別のインスタンス(例えば、VNCサーバ)にアクセスするために、第1の技術者90aが第2のコンピュータ91bへのデータ接続も要求する場合を考える。本明細書に記載の実施形態を利用して、このデータ接続を生成することができる。
【0096】
図13bの図は、特定のアプリケーション95をターゲットとするデータ接続のネットワーク、すなわち、例えば、異なるコンピュータ91上で実行されているアプリケーション95と対応するアプリケーション96の間のデータ接続を生成するために、本明細書に記載のデータ接続をどのように構築できるか示すためのものである。有利なことに、これらのデータ接続は、本明細書に記載の実施形態により本質的に安全である。各データ接続は認可されなければならず、特定のアプリケーション95,96にしかアクセスできない。これらのデータ接続はソフトウェアで定義される。この手法は、ソフトウェアで定義された個々のデータ接続に焦点を合わせた、ネットワーキングへの「ボトムアップ」手法と考えることができる。
【0097】
データの実際の伝送は、(OSIスタックによる)トランスポート層以下を利用するが、セキュリティと認可をハードウェアで処理する必要はない。実際には、トランスポート層はデータパケットの伝送を行うだけでよい。本明細書に記載の実施形態の利点は、特定の実装形態では、結果としてネットワーク用ハードウェアの複雑さが低減されることであり得る。
【0098】
したがって、本明細書に記載の接続は、1つ以上(通常は複数)のデータ接続のインタラクション、すなわち、特定のコンピュータ11と、任意でこれらコンピュータ11上のアプリケーションとが、別の関係者(party)によってアクセス可能であることを保証するコンピュータ11間の直接接続であると考えることができる。セグメント42及びブロック41(これに対応して、ブロック41に関連付けられているプロトコル)の使用を通じて、ソフトウェアで定義されているので、必要に応じてセキュアな接続を認可及び生成することができ、トランスポート層は特定のブロック41間でデータを通信するだけでよい。
【0099】
一例では、本明細書に記載の実施形態は、分散型のデータ監視を可能にする。
図13aに示されるような従来技術のシステムでは、VPN94が、コンピュータ91a、91b、及び92aの間のデータフローを記録するように構成される場合もある。しかし、これは、少なくとも1つのエンティティについてサードパーティを構成し、それによって信頼性の問題が生じる。本明細書に記載の実施形態によれば、シーケンス42は、ロギングブロック41、すなわち、通信されているデータを記録するように構成されたコンピュータソフトウェアに関連付けられているブロック41を用いて構成することができる。したがって、そのようなロギングブロック41は、データ通信ごとに、シーケンス42に関連付けられている組織の要件に従って構成することができる。通常、そのようなブロック41は、アプリケーション95,96とシーケンス42の任意の暗号化ブロック41の間に配置される。したがって、データ通信に関連付けられている両方の組織は、サードパーティに頼ることなく、それ自体のポリシーに従ってデータ記録を容易にすることができる。
【0100】
本明細書の趣旨及び範囲から逸脱することなく、さらなる修正を行うことができる。例えば、個々のブロック41の構成は、システムオペレータによって、可能な構成のサブセットに制限することができる。
【国際調査報告】