(57)【要約】【課題】データ通信のための二つの構成要素間に確立され得る一つ以上の接続から、単一の指定された接続を識別する方法を提供する。【解決手段】構成要素識別子を生成し（５２ａ、５２ｂ）、個々の構成要素識別子と、第１および第２の構成要素のそれぞれとを関連させるステップ（５４ａ、５４ｂ）と、第１と第２の構成要素のそれぞれの間で、互いに、構成要素識別子を送受信するステップ（５６ａ、５６ｂ、５８ａ、５８ｂ）と、それぞれの構成要素にて該第１の構成要素および第２の構成要素を、一方がコントローラ、および、他方が応答器として識別するために、受信された構成要素識別子と、その構成要素に関連された識別子とを比較するステップ（６０ａ、６０ｂ）と、プロセスの実行を通じて、一方をコントローラ、他方を応答器として、第１および第２の構成要素のうちの識別された一つを維持するステップを実行する。【選択図】図３Ａ
2006202272.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータデバイス上に存在する第１の構成要素とコンピュータデバイス上に存在する第２の構成要素との間のプロセスを実行するシステムであって、該システムは、個々に、該第１の構成要素と該第２の構成要素に関連された、第１のアプリケーションおよび第２のアプリケーションを備え、該第１のアプリケーションおよび該第２のアプリケーションが、
個々の構成要素識別子と、該第１の構成要素および該第２の構成要素のそれぞれとを関連させるステップと、
該第１の構成要素と該第２の構成要素のそれぞれの間で、互いに、構成要素識別子を送受信するステップと、
それぞれの構成要素にて、該第１の構成要素および該第２の構成要素を、一方がコントローラ、および、他方が応答器として識別するために、該受信された構成要素識別子と、その構成要素に関連された識別子とを比較するステップと、
該プロセスの実行を通じて、一方をコントローラ、他方を応答器として、該第１の構成要素および該第２の構成要素のうちの識別された一つを維持するステップと
を実行するために協働するようにプログラムされている、システム。
【請求項２】
前記第１の構成要素および前記第２の構成要素に関連された、前記個々の構成要素識別子が、実質的に独自で指示可能な識別子である、請求項１に記載のシステム。
【請求項３】
前記第１の構成要素および前記第２の構成要素に関連された、前記個々の構成要素識別子が、アルゴリズムを生成する識別子によって生成される、請求項１または２に記載のシステム。
【請求項４】
アルゴリズムを生成する同一の識別子が、前記第１の構成要素および前記第２の構成要素のための前記個々の識別子を生成するために、該第１の構成要素および該第２の構成要素のそれぞれにて利用される、請求項３に記載のシステム。
【請求項５】
それぞれの構成要素が他方へのデータ通信を容易にする接続の確立を開始することができ、前記第１のアプリケーションおよび前記第２のアプリケーションが以下のさらなるステップを実行するために協働するようにプログラムされ、
ａ）該第１の構成要素と該第２の構成要素との間で、現在の接続を識別する、さらなるステップと、
ｂ）該第１の構成要素と該第２の構成要素との間の、指定された接続を決定する、さらなるステップと、該ステップが前記コントローラとして識別された該構成要素によって開始され、該ステップは、
（ｉ）該現在の接続とは異なる少なくとも一つの接続が、切断されていることを識別しない該第１の構成要素および該第２の構成要素の間に、存在するかどうか決定するサブステップと、
（ｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在しない場合、該現在の接続を該指定された接続として識別するサブステップと、
（ｉｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在する場合、該現在の接続および該現在の接続とは異なる少なくとも一つの接続を含む一群から、一つの接続を該指定された接続として識別するサブステップと
を備える、請求項３または４に記載のシステム。
【請求項６】
前記第１の構成要素および前記第２の構成要素が、異なるコンピュータデバイス上に存在する、請求項１から５のいずれか一項に記載のシステム。
【請求項７】
前記第１の構成要素および前記第２の構成要素が、同一のコンピュータデバイス上に存在する、請求項１から５のいずれか一項に記載のシステム。
【請求項８】
前記第１の構成要素および前記第２の構成要素のそれぞれが、それぞれ個々の構成要素が存在する前記コンピュータデバイス上で実行されるプロセスである、請求項１から７のいずれか一項に記載のシステム。
【請求項９】
それぞれの識別子がＵｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒである、請求項１から８のいずれか一項に記載のシステム。
【請求項１０】
高い値の構成要素識別子を有する、前記第１の構成要素および前記２の構成要素の一つが、前記比較のステップにおいて、前記コントローラとして識別され、もう一方の構成要素が、該比較ステップにおいて、前記応答器として識別される、請求項１から９のいずれか一項に記載のシステム。
【請求項１１】
前記第１の構成要素および前記第２の構成要素との間の任意の接続が、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ接続である、請求項１から１０のいずれか一項に記載のシステム。
【請求項１２】
サブステップ（ｉｉｉ）において前記指定された接続として識別された接続が、前記現在の接続の前に確立された接続である、請求項５に記載のシステム。
【請求項１３】
サブステップ（ｉｉｉ）において前記指定された接続として識別された接続が、指定された接続として以前に識別されている接続である、請求項１２に記載のシステム。
【請求項１４】
前記第１のアプリケーションおよび前記第２のアプリケーションが、
ｃ）少なくとも一つの接続が存在する場合、ステップｂ）において前記指定された接続として決定されていない少なくとも一つの接続を、識別する、さらなるステップと、
ｄ）ステップｃ）において識別された、少なくとも一つの接続を終了する、さらなるステップと
を実行するために協働するようにプログラムされている、請求項５、１２、または１３のいずれか一項に記載のシステム。
【請求項１５】
ステップｃ）において識別され、ステップｄ）において終了された、前記少なくとも一つの接続が、切断された接続を含む、請求項１４に記載のシステム。
【請求項１６】
前記システムが、個々に、前記第１の構成要素および前記第２の構成要素によって維持される、第１の接続テーブルおよび第２の接続テーブルを含み、該第１の接続テーブルおよび該第２の接続テーブルが、個々に、該第１の構成要素および該第２の構成要素から、他の構成要素への接続に関するデータを格納し、ステップｂ）が、前記決定のステップを実行する場合、該第１の接続テーブルおよび該第２の接続テーブルにアクセスすることを含む、請求項５および、１２から１５のいずれか一項に記載のシステム。
【請求項１７】
コンピュータデバイス上に存在する第１の構成要素とコンピュータデバイス上に存在する第２の構成要素との間のプロセスを実行する方法であって、該方法は、該第１の構成要素および該第２の構成要素のそれぞれにて、
構成要素識別子と個々の構成要素識別子とを関連させるステップと、
該個々の構成要素のための該構成要素識別子を、他方の構成要素に送信し、該他方の構成要素から、該他の構成要素のための構成要素識別子を受信するステップと、
個々の構成要素を、一方がコントローラ、および、他方が応答器として識別するために、該個々の構成要素および該他の構成要素のための該構成要素識別子の比較を実行するステップと、
該プロセスの実行全体を通じて、コントローラおよび応答器のうちの、該識別された一つとして、該個々の構成要素を維持するステップと
を包含する、方法。
【請求項１８】
前記第１の構成要素および前記第２の構成要素に関連された、前記個々の構成要素識別子が、実質的に独自で指示可能な識別子である、請求項１７に記載の方法。
【請求項１９】
前記第１の構成要素および前記第２の構成要素に関連された、前記個々の構成要素識別子が、アルゴリズムを生成する識別子によって生成される、請求項１７または１８に記載の方法。
【請求項２０】
アルゴリズムを生成する同一の識別子が、前記第１の構成要素および前記第２の構成要素のための前記個々の識別子を生成するために、該第１の構成要素および該第２の構成要素のそれぞれにて利用される、請求項１９に記載の方法。
【請求項２１】
それぞれの構成要素が他方へのデータ通信を容易にする接続の確立を開始することができ、該方法が以下のさらなるステップを包含し、
ａ）該第１の構成要素と該第２の構成要素との間で、現在の接続を識別する、さらなるステップと、
ｂ）該第１の構成要素と該第２の構成要素との間の、指定された接続を決定する、さらなるステップと、該ステップが前記コントローラとして識別された該構成要素によって開始され、該ステップは、
（ｉ）該現在の接続とは異なる、少なくとも一つの接続が、切断されていることを識別しない該第１の構成要素および該第２の構成要素の間に、存在するかどうか決定するサブステップと、
（ｉｉ）該現在の接続とは異なる少なくとも一つの接続が存在しない場合、該現在の接続を該指定された接続として識別するサブステップと、
（ｉｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在する場合、該現在の接続および該現在の接続とは異なる少なくとも一つの接続を含む一群から、一つの接続を該指定された接続として識別するサブステップと
を包含する、請求項１９または２０に記載の方法。
【請求項２２】
前記第１の構成要素および前記第２の構成要素が異なるコンピュータデバイス上に存在する、請求項１７から２１のいずれか一項に記載の方法。
【請求項２３】
前記第１の構成要素および前記第２の構成要素が、同一のコンピュータデバイス上に存在する、請求項１７から２１のいずれか一項に記載の方法。
【請求項２４】
前記第１の構成要素および前記第２の構成要素のそれぞれが、それぞれ個々の構成要素が存在する前記コンピュータデバイス上で実行されるプロセスである、請求項１７から２３のいずれか一項に記載の方法。
【請求項２５】
前記個々の構成要素のために生成された、前記構成要素識別子がＵｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒである、請求項１７から２４の、いずれか一項に記載の方法。
【請求項２６】
前記個々の構成要素のための前記構成要素識別子が、前記他の構成要素のための該構成要素識別子よりも、より高い値である場合、該個々の構成要素が、該比較のステップにおいて、前記コントローラとして識別される、請求項１７から２５のいずれか一項に記載の方法。
【請求項２７】
前記第１の構成要素および前記第２の構成要素との間の任意の接続が、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ接続である、請求項１７から２６のいずれか一項に記載の方法。
【請求項２８】
サブステップ（ｉｉｉ）において前記指定された接続として識別された接続が、前記現在の接続の前に確立された接続である、請求項２１に記載の方法。
【請求項２９】
サブステップ（ｉｉｉ）おいて前記指定された接続として識別された接続が、指定された接続として以前に識別されている接続である、請求項２８に記載の方法。
【請求項３０】
ｃ）少なくとも一つの接続が存在する場合、ステップｂ）において前記指定された接続として決定されていない少なくとも一つの接続を、識別するステップと、
ｄ）ステップｃ）において識別された、少なくとも一つの接続を終了するステップと
をさらに包含する、請求項２１、２８、または２９のいずれかに記載の方法。
【請求項３１】
ステップｃ）において識別され、ステップｄ）において終了された、該少なくとも一つの接続が、切断された接続を含む、請求項３０に記載の方法。
【請求項３２】
ステップｂ）が、前記決定のステップを実行する場合、該第１の接続テーブルおよび該第２の接続テーブルにアクセスすることを包含する方法であって、前記第１の接続テーブルおよび前記第２の接続テーブルが、個々に、前記第１の構成要素および前記第２の構成要素から、他の構成要素への接続に関するデータを格納する、請求項２１および、２８から３１のいずれか一項に記載の方法。
【請求項３３】
前記第１のコンピュータデバイスおよび前記第２のコンピュータデバイスのうちの少なくとも一つにおいて実行可能であるプログラムが格納される、コンピュータ可読媒体であって、該媒体が、請求項１７から３２のいずれかに記載の方法の前記ステップを実行するための命令を備える、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、コンピュータデバイスの構成要素間のデータ通信に関する。より詳細には、そのような通信に利用される構成要素間の接続を識別するシステムおよび方法に関する。
【背景技術】
【０００２】
通常の分散コンピューティング環境において、一つ以上のアプリケーションを備える、異なる構成要素およびオブジェクトは、異なるコンピュータデバイスに存在し、ネットワークにおいて、互いに接続される。情報および処理能力は、ネットワークにおけるコンピュータデバイスの間で分散され得、そのコンピュータデバイスのそれぞれは、必要に応じて、他のコンピュータデバイスへのアクセスが許可され得る。構成要素は、データ通信の接続（例えば、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ）接続）を介して、または、一部のその他の通信プロトコル（例えば、Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ（ＵＤＰ））を利用して、互いに通信し得る。
【０００３】
例えば、ピアツーピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）（Ｐ２Ｐ）通信は、異なるコンピュータデバイスに存在する二つの構成要素の間で生じる。接続は、通信を容易にするために、二つの構成要素間にて確立され得る。その構成要素は、ピアツーピア関係においてであり、クライアント−サーバ関係ではないがゆえに、両方の構成要素は、その配置において等しい地位を有し、その二つの構成要素のそれぞれは、独立して、そのような接続の確立を開始することができる。二つの構成要素のそれぞれが独立して他方の構成要素との接続を確立し得るがゆえに、その二つの構成要素は、同時に確立され得、および、存在し得る。
【０００４】
しかしながら、二つの構成要素の間の多数の接続を管理することは、特に、接続のそれぞれが双方向データ通信（例えば、ＴＣＰ）を容易にするために適合される場合、不必要であり得、リソースの無駄という結果になり得る。
【発明の開示】
【課題を解決するための手段】
【０００５】
本発明の実施形態は、一般に、それぞれがコンピュータデバイスに存在する二つの構成要素間での、ピアツーピア通信に使用される、単一の指定された接続を決定する技術に関する。
【０００６】
本発明の広い局面において、コンピュータデバイスに存在する第１の構成要素と、コンピュータデバイスに存在する第２の構成要素との間での、指定された接続を決定するシステムが提供され、それぞれの構成要素は、それぞれの構成要素は、他方へのデータ通信を容易にする接続の確立を開始することができ、そのシステムは、個々に、第１の構成要素および第２の構成要素に関連された第１のアプリケーションおよび第２のアプリケーションを備え、アルゴリズムを生成する識別子に従って、第１の構成要素および第２の構成要素のそれぞれのために構成要素識別子を生成するステップと、第１の構成要素と第２の構成要素との間の現在の接続を識別するステップと、第１の構成要素と第２の構成要素のそれぞれの間で、互いに、構成要素識別子を送受信するステップと、第１の構成要素と第２の構成要素のうちの一つを、一方をコントローラ、および、他方を応答器（ｒｅｓｐｏｎｄｅｒ）として識別するために、第１の構成要素および第２の構成要素のための構成要素識別子を比較するステップと、第１の構成要素と第２の構成要素との間の指定された接続を決定するステップを実行するために協働するようにプログラムされており、コントローラとして識別された構成要素によって開始されるステップは、現在の接続とは異なる、少なくとも一つの接続が存在しない場合、切断されていることを識別しない第１の構成要素と第２の構成要素との間に、現在の接続とは異なる少なくとも一つの接続が存在するかどうかを決定するサブステップと、現在の接続とは異なる、少なくとも一つの接続が存在する場合、現在の接続を、指定された接続として識別するサブステップと、現在の接続および、現在の接続とは異なる少なくとも一つの接続を含む一群からから指定された接続として、一つの接続を識別するサブステップとを包含し、アルゴリズムを生成する識別子が、そのアルゴリズムによって生成された識別子が指示可能であり、実質的に独自であることを保証するために適合される、システムである。
【０００７】
本発明の別の広い局面において、コンピュータデバイスに存在する第１の構成要素と、コンピュータデバイスに存在する第２の構成要素との間での、指定された接続を決定する方法が提供され、それぞれの構成要素は、他方へのデータ通信を容易にする接続の確立を開始することができ、その方法は、第１の構成要素および第２の構成要素のそれぞれにて実行される以下のステップ、アルゴリズムを生成する識別子に従って、個々の構成要素のための構成要素識別子を生成するステップと、個々の構成要素と、第１の構成要素と第２の構成要素の他方との間の現在の接続を識別するステップと、個々の構成要素のための構成要素識別子を他方の構成要素へ送信し、他の構成要素のための構成要素識別子を、他の構成要素から受信するステップと、個々の構成要素を、コントローラおよび応答器のうちの一つとして識別するために、個々の構成要素および他の構成要素のための構成要素識別子の比較を実行するステップと、個々の構成要素と他の構成要素との間に、指定された接続を決定するステップとを包含し、個々の構成要素がコントローラとして識別される場合、個々の構成要素によって開始されるステップは、現在の接続とは異なる、少なくとも一つの接続が存在しない場合、切断されていることを識別しない個々の構成要素および他の構成要素との間に、現在の接続とは異なる少なくとも一つの接続が存在するかどうかを決定するサブステップと、現在の接続とは異なる、少なくとも一つの接続が存在する場合、現在の接続を、指定された接続として識別するサブステップと、現在の接続および、現在の接続とは異なる少なくとも一つの接続を含む一群からから指定された接続として、一つの接続を識別するサブステップとを包含し、アルゴリズムを生成する識別子が、そのアルゴリズムによって生成された識別子が指示可能であり、実質的に独自であることを保証するために適合される、方法である。
【０００８】
本発明は、さらに以下の手段を提供する。
【０００９】
（項目１）
コンピュータデバイス上に存在する第１の構成要素とコンピュータデバイス上に存在する第２の構成要素との間のプロセスを実行するシステムであって、該システムは、個々に、該第１の構成要素と該第２の構成要素に関連された、第１のアプリケーションおよび第２のアプリケーションを備え、該第１のアプリケーションおよび該第２のアプリケーションが、
個々の構成要素識別子と、該第１の構成要素および該第２の構成要素のそれぞれとを関連させるステップと、
該第１の構成要素と該第２の構成要素のそれぞれの間で、互いに、構成要素識別子を送受信するステップと、
それぞれの構成要素にて、該第１の構成要素および該第２の構成要素を、一方がコントローラ、および、他方が応答器として識別するために、該受信された構成要素識別子と、その構成要素に関連された識別子とを比較するステップと、
該プロセスの実行を通じて、一方をコントローラ、他方を応答器として、該第１の構成要素および該第２の構成要素のうちの識別された一つを維持するステップと
を実行するために協働するようにプログラムされている、システム。
【００１０】
（項目２）  
上記第１の構成要素および上記第２の構成要素に関連された、上記個々の構成要素識別子が、実質的に独自で指示可能な識別子である、項目１に記載のシステム。
【００１１】
（項目３）  
上記第１の構成要素および上記第２の構成要素に関連された、上記個々の構成要素識別子が、アルゴリズムを生成する識別子によって生成される、項目１または２に記載のシステム。
【００１２】
（項目４）  
アルゴリズムを生成する同一の識別子が、上記第１の構成要素および上記第２の構成要素のための上記個々の識別子を生成するために、該第１の構成要素および該第２の構成要素のそれぞれにて利用される、項目３に記載のシステム。
【００１３】
（項目５）  
それぞれの構成要素が他方へのデータ通信を容易にする接続の確立を開始することができ、上記第１のアプリケーションおよび上記第２のアプリケーションが以下のさらなるステップを実行するために協働するようにプログラムされ、
ａ）該第１の構成要素と該第２の構成要素との間で、現在の接続を識別する、さらなるステップと、
ｂ）該第１の構成要素と該第２の構成要素との間の、指定された接続を決定する、さらなるステップと、該ステップが上記コントローラとして識別された該構成要素によって開始され、該ステップは、
（ｉ）該現在の接続とは異なる少なくとも一つの接続が、切断されていることを識別しない該第１の構成要素および該第２の構成要素の間に、存在するかどうか決定するサブステップと、
（ｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在しない場合、該現在の接続を該指定された接続として識別するサブステップと、
（ｉｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在する場合、該現在の接続および該現在の接続とは異なる少なくとも一つの接続を含む一群から、一つの接続を該指定された接続として識別するサブステップと
を備える、項目３または４に記載のシステム。
【００１４】
（項目６）  
上記第１の構成要素および上記第２の構成要素が、異なるコンピュータデバイス上に存在する、項目１から５のいずれか一項に記載のシステム。
【００１５】
（項目７）  
上記第１の構成要素および上記第２の構成要素が、同一のコンピュータデバイス上に存在する、項目１から５のいずれか一項に記載のシステム。
【００１６】
（項目８）  
上記第１の構成要素および上記第２の構成要素のそれぞれが、それぞれ個々の構成要素が存在する上記コンピュータデバイス上で実行されるプロセスである、項目１から７のいずれか一項に記載のシステム。
【００１７】
（項目９）  
それぞれの識別子がＵｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒである、項目１から８のいずれか一項に記載のシステム。
【００１８】
（項目１０）  
高い値の構成要素識別子を有する、上記第１の構成要素および上記２の構成要素の一つが、上記比較のステップにおいて、上記コントローラとして識別され、もう一方の構成要素が、該比較ステップにおいて、上記応答器として識別される、項目１から９のいずれか一項に記載のシステム。
【００１９】
（項目１１）  
上記第１の構成要素および上記第２の構成要素との間の任意の接続が、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ接続である、項目１から１０のいずれか一項に記載のシステム。
【００２０】
（項目１２）  
サブステップ（ｉｉｉ）において上記指定された接続として識別された接続が、上記現在の接続の前に確立された接続である、項目５に記載のシステム。
【００２１】
（項目１３）  
サブステップ（ｉｉｉ）において上記指定された接続として識別された接続が、指定された接続として以前に識別されている接続である、項目１２に記載のシステム。
【００２２】
（項目１４）  
上記第１のアプリケーションおよび上記第２のアプリケーションが、
ｃ）少なくとも一つの接続が存在する場合、ステップｂ）において上記指定された接続として決定されていない少なくとも一つの接続を、識別する、さらなるステップと、
ｄ）ステップｃ）において識別された、少なくとも一つの接続を終了する、さらなるステップと
を実行するために協働するようにプログラムされている、項目５、１２、または１３のいずれか一項に記載のシステム。
【００２３】
（項目１５）  
ステップｃ）において識別され、ステップｄ）において終了された、上記少なくとも一つの接続が、切断された接続を含む、項目１４に記載のシステム。
【００２４】
（項目１６）  
上記システムが、個々に、上記第１の構成要素および上記第２の構成要素によって維持される、第１の接続テーブルおよび第２の接続テーブルを含み、該第１の接続テーブルおよび該第２の接続テーブルが、個々に、該第１の構成要素および該第２の構成要素から、他の構成要素への接続に関するデータを格納し、ステップｂ）が、上記決定のステップを実行する場合、該第１の接続テーブルおよび該第２の接続テーブルにアクセスすることを含む、項目５および、１２から１５のいずれか一項に記載のシステム。
【００２５】
（項目１７）  
コンピュータデバイス上に存在する第１の構成要素とコンピュータデバイス上に存在する第２の構成要素との間のプロセスを実行する方法であって、該方法は、該第１の構成要素および該第２の構成要素のそれぞれにて、
構成要素識別子と個々の構成要素識別子とを関連させるステップと、
該個々の構成要素のための該構成要素識別子を、他方の構成要素に送信し、該他方の構成要素から、該他の構成要素のための構成要素識別子を受信するステップと、
個々の構成要素を、一方がコントローラ、および、他方が応答器として識別するために、該個々の構成要素および該他の構成要素のための該構成要素識別子の比較を実行するステップと、
該プロセスの実行全体を通じて、コントローラおよび応答器のうちの、該識別された一つとして、該個々の構成要素を維持するステップと
を包含する、方法。
【００２６】
（項目１８）  
上記第１の構成要素および上記第２の構成要素に関連された、上記個々の構成要素識別子が、実質的に独自で指示可能な識別子である、項目１７に記載の方法。
【００２７】
（項目１９）  
上記第１の構成要素および上記第２の構成要素に関連された、上記個々の構成要素識別子が、アルゴリズムを生成する識別子によって生成される、項目１７または１８に記載の方法。
【００２８】
（項目２０）  
アルゴリズムを生成する同一の識別子が、上記第１の構成要素および上記第２の構成要素のための上記個々の識別子を生成するために、該第１の構成要素および該第２の構成要素のそれぞれにて利用される、項目１９に記載の方法。
【００２９】
（項目２１）  
それぞれの構成要素が他方へのデータ通信を容易にする接続の確立を開始することができ、該方法が以下のさらなるステップを包含し、
ａ）該第１の構成要素と該第２の構成要素との間で、現在の接続を識別する、さらなるステップと、
ｂ）該第１の構成要素と該第２の構成要素との間の、指定された接続を決定する、さらなるステップと、該ステップが上記コントローラとして識別された該構成要素によって開始され、該ステップは、
（ｉ）該現在の接続とは異なる、少なくとも一つの接続が、切断されていることを識別しない該第１の構成要素および該第２の構成要素の間に、存在するかどうか決定するサブステップと、
（ｉｉ）該現在の接続とは異なる少なくとも一つの接続が存在しない場合、該現在の接続を該指定された接続として識別するサブステップと、
（ｉｉｉ）該現在の接続とは異なる、少なくとも一つの接続が存在する場合、該現在の接続および該現在の接続とは異なる少なくとも一つの接続を含む一群から、一つの接続を該指定された接続として識別するサブステップと
を包含する、項目１９または２０に記載の方法。
【００３０】
（項目２２）  
上記第１の構成要素および上記第２の構成要素が異なるコンピュータデバイス上に存在する、項目１７から２１のいずれか一項に記載の方法。
【００３１】
（項目２３）  
上記第１の構成要素および上記第２の構成要素が、同一のコンピュータデバイス上に存在する、項目１７から２１のいずれか一項に記載の方法。
【００３２】
（項目２４）  
上記第１の構成要素および上記第２の構成要素のそれぞれが、それぞれ個々の構成要素が存在する上記コンピュータデバイス上で実行されるプロセスである、項目１７から２３のいずれか一項に記載の方法。
【００３３】
（項目２５）  
上記個々の構成要素のために生成された、上記構成要素識別子がＵｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒである、項目１７から２４の、いずれか一項に記載の方法。
【００３４】
（項目２６）  
上記個々の構成要素のための上記構成要素識別子が、上記他の構成要素のための該構成要素識別子よりも、より高い値である場合、該個々の構成要素が、該比較のステップにおいて、上記コントローラとして識別される、項目１７から２５のいずれか一項に記載の方法。
【００３５】
（項目２７）  
上記第１の構成要素および上記第２の構成要素との間の任意の接続が、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ接続である、項目１７から２６のいずれか一項に記載の方法。
【００３６】
（項目２８）  
サブステップ（ｉｉｉ）において上記指定された接続として識別された接続が、上記現在の接続の前に確立された接続である、項目２１に記載の方法。
【００３７】
（項目２９）  
サブステップ（ｉｉｉ）おいて上記指定された接続として識別された接続が、指定された接続として以前に識別されている接続である、項目２８に記載の方法。
【００３８】
（項目３０）  
ｃ）少なくとも一つの接続が存在する場合、ステップｂ）において上記指定された接続として決定されていない少なくとも一つの接続を、識別するステップと、
ｄ）ステップｃ）において識別された、少なくとも一つの接続を終了するステップと
をさらに包含する、項目２１、２８、または２９のいずれかに記載の方法。
【００３９】
（項目３１）  
ステップｃ）において識別され、ステップｄ）において終了された、該少なくとも一つの接続が、切断された接続を含む、項目３０に記載の方法。
【００４０】
（項目３２）  
ステップｂ）が、上記決定のステップを実行する場合、該第１の接続テーブルおよび該第２の接続テーブルにアクセスすることを包含する方法であって、上記第１の接続テーブルおよび上記第２の接続テーブルが、個々に、上記第１の構成要素および上記第２の構成要素から、他の構成要素への接続に関するデータを格納する、項目２１および、２８から３１のいずれか一項に記載の方法。
【００４１】
（項目３３）  
上記第１のコンピュータデバイスおよび上記第２のコンピュータデバイスのうちの少なくとも一つにおいて実行可能であるプログラムが格納される、コンピュータ可読媒体であって、該媒体が、項目１７から３２のいずれかに記載の方法の上記ステップを実行するための命令を備える、コンピュータ可読媒体。
【００４２】
（摘要）
データ通信のための二つの構成要素間に確立され得る一つ以上の接続（例えば、ＴＣＰ接続）から、単一の指定された接続を識別するシステムおよび方法である。それぞれの構成要素は、アルゴリズムを生成する識別子によって生成された構成要素識別子に関連され、そのアルゴリズムによって生成された構成要素識別子が指示可能であり、実質的に独自であることを保証するように適合される。例えば、Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒｓは、この目的のために生成され得る。分散システムにおけるそれぞれの構成要素は、その構成要素識別子によって独自に識別され得、その構成要素識別子は、特定の接続が、指定された接続として識別されるべきかどうかの決定において、それぞれの構成要素をコントローラか応答器のいずれかとして識別することを容易にする。一実施形態において、第１の構成要素も第２の構成要素も切断されていることを識別せずに、それまでの確立された接続が存在しない場合、その特定の接続は、指定された接続として識別される。その場合において、それまでの確立された接続は、指定された接続として識別され得る。
【発明を実施するための最良の形態】
【００４３】
本発明の実施形態をより良く理解するために、および、実施形態が実行に移され得る方法を明示的に示すために、添付された図面を例示し、参照される。
【００４４】
本発明の実施形態は、一般に、二つの構成要素（それぞれがコンピュータデバイス上に存在する）の間のピアツーピア接続に利用される単一の指定された接続を決定する技術に関する。より詳細には、本発明の実施形態は、一般に、二つの構成要素間で確立され得る一つ以上の接続から、指定された接続を識別する技術を対象とする。
【００４５】
二つの構成要素間の関係がピアツーピアである場合、二つ（以上）の接続がそれらの間で確立され得ることが可能である。一つの接続が指定された接続として決定されるように、選択されるべき接続を選ぶ、信頼性のある方法が必要とされる。これを容易にするため、本発明の少なくとも一実施形態に従い、それぞれの構成要素は、アルゴリズムを生成する識別子によって生成される構成要素識別子に関連され、そのアルゴリズムによって生成された構成要素識別子が指示可能（ｏｒｄｅｒａｂｌｅ）であり、実質的に独自であることを保証するために適合される。これは、分散システムにおける任意の二つの所与の構成要素のための構成要素識別子の比較をさせ、一つの構成要素をコントローラとして識別させ、もう一つの構成要素を応答器（ｒｅｓｐｏｎｄｅｒ）として識別させる。それゆえ、指定された接続を決定する方法が実行された場合、それぞれの構成要素がその方法の実行全体において、コントローラまたは応答器としての役割を維持しながら、動作を順番にさせ得、別の方法で二つの構成要素によって生じ得る競合条件は避けられ得る。
【００４６】
さらに、一つの接続が指定された接続として決定されるように、所定の構成要素および他の構成要素との間で確立されている接続を追跡する、信頼性のある方法が必要とされる。それぞれの構成要素が関連される構成要素識別子は、分散システムにおける構成要素を、この目的のために容易に識別させる。アルゴリズムを生成する識別子によって生成された構成要素識別子が指示可能であり、実質的に独自であるゆえに、分散システムにおけるそれぞれの構成要素は、独自に識別され得る。
【００４７】
本発明の一実施形態において、それぞれの構成要素識別子は、Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ（ＵＵＩＤ）である。対照的に、例えば、Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（「ＩＰ」）アドレスまたは識別子は、ＩＰ識別子が分散システムにおいて、それぞれの構成要素を独自に識別することができない場合、二つの特定の構成要素の間での接続を追跡する目的にとっては信頼性がない。例えば、コンピュータデバイスは多数の構成要素をホストすることができ、それゆえ、異なる構成要素は同じＩＰ識別子に割り当てられ得る。さらに、任意の所定の構成要素は、多数のＩＰ識別子に割り当てられ得る。
【００４８】
本発明の一実施形態において、二つの構成要素の間に確立されたそれぞれの接続はＴＣＰ接続である。ピアツーピア接続は、他の接続プロトコル（例えばＵＤＰ）を使用して実施され得る一方で、例えば、フロー制御に関連したＴＣＰによって提供される機能、ネットワーク適合、および送信されたデータの信頼性のある搬送を保証することは、ＴＣＰ接続が用いられる、特定の利益を提供し得る。さらに、ＴＣＰは、双方向データ通信がサポートされる点において、ほぼ常に全二重で動作する。二つの構成要素の間での二つのＴＣＰ接続がデータ通信（例えば、一つのＴＣＰ接続がそれぞれの方向にデータを送信するために使用される場合など）に使用される実施とは対照的に、単一の指定されたＴＣＰ接続の使用は、ソフトウェアアプリケーションの展開を単純化し得、所定の構成要素および他の構成要素との間の行き来を監視するのを容易にさせ、それらの構成要素の間の接続の確立および終了を管理することを容易にさせ得る。
【００４９】
図１の、一例におけるコンピュータデバイスの要素のサブセットを図示する略図を参照し、ネットワーク構成は、通常、参照番号１０として示される。
【００５０】
ネットワーク構成１０の例において、二つのコンピュータデバイス１２は、コンピュータデバイス１２が通信することができるネットワーク接続１４によって、互いに接続される。二つのみのコンピュータデバイスが、図１のネットワーク１０において示されるが、二つより多いコンピュータデバイスは、ネットワークにおいて接続され得、それらは、異なる実施における、多くのネットワークトポロジーの任意において配置され得る。例えば、ネットワークにおける任意の所定の接続が無線通信リンクであり得るように、ネットワーク接続１４が無線接続である必要はないことは、当業者によって理解されよう。また、図１において示されてはいないが、他のデバイスが、ネットワーク１０におけるコンピュータデバイス１２に、直接または間接に接続され得ることも、当業者によって理解されよう。
【００５１】
それぞれのコンピュータデバイス１２の要素のサブセットが図１において示される。図１において示される要素は、例示のためだけに提供されるのであり、コンピュータデバイス１２が、一般的に、図１において示される他のデバイスに付け加えて、その他の要素を
備えることもまた、当業者によって理解されよう。それぞれのコンピュータデバイス１２は、プロセッサ１６、ユーザ入力を受信および／または出力を提供する任意のユーザインターフェース１８、メモリ２０、および、ネットワーク１０における他のコンピュータデバイスとのネットワーク通信を容易にする、ネットワークインターフェース２４を備える。プロセッサ１６は、システムソフトウェア、およびメモリ２０に存在する他のアプリケーションに従った命令を実行する。ここで使用される「メモリ」という言葉は、単一の記憶デバイスに限定されず、揮発性および不揮発性のメモリ要素を含み得、および、コンピュータデバイス１２に存在する、またはそれに結合される第２の記憶要素をも含み得る。
【００５２】
図２を参照すると、四つの構成要素を含む分散システムの例の概略図が、３０として全般的に示される。
【００５３】
図２において、分散システム３０は、構成要素間で確立されるデータ通信のための接続３４を有する、四つの構成要素３２を含む。この例の実施において、接続３４はＴＣＰ接続である。分散システム３０は、ほぼ、接続された構成要素３２を含み得、接続３４は、異なる実施における異なるタイプであり得ることは、当業者によって理解されよう。
【００５４】
ここで記載される「構成要素」は、例えば、特定のコンピュータデバイス、機械、または、ＩＰ識別子に関連されたデバイスを必ずしも参照するわけではないこともまた、当業者によって理解されよう。本発明における少なくとも一つの実施形態において、「構成要素」は、コンピュータデバイス上で実行されるプロセスである。例えば、図２の例において、それぞれの構成要素３２は、コンピュータデバイス（例えば、図１のコンピュータデバイス１２）上で実行されるプロセスである。本明細書および請求項において、特定のコンピュータデバイス上で実行されるプロセスである構成要素３２は、そのコンピュータデバイスに存在すると考えられる。
【００５５】
いくつかの構成要素３２は、同じコンピュータデバイス、または異なるコンピュータデバイスに存在し得る。例えば、図２の例において、略図で示される二つの一番左の構成要素３２は、これまた略図で示される二つの一番右の構成要素３２が両方とも異なるコンピュータデバイスに存在し得る一方で、一つのコンピュータデバイスに存在し得る。二つの所定の構成要素３２が異なるコンピュータデバイスに存在し、互いに通信する場合、接続３４は、この目的のために、それらの間で確立され得る。本発明のこの実施形態において、異なるコンピュータデバイスに存在する構成要素３２間でのピアツーピア接続は、接続３４を介して行われる。
【００５６】
ここに具体例をとおして提供される実施形態は、通常、異なるコンピュータデバイスに存在する構成要素間での接続に関係するように記載されるが、異なる実施形態においては、接続３４はまた、同一のコンピュータデバイスに存在する構成要素３２間でも確立され得る。例えば、ＴＣＰはまた、プロセス間のプロトコルとして機能し得るように、同一のコンピュータデバイスに存在する構成要素に接続するために使用され得る。この場合、ＴＣＰは、オペレーティングシステムがファイルを操作するためのアプリケーションのプロセスを提供するコール（ｃａｌｌ）と類似する一連のコールで構成されるインターフェース（例えば、ループバック（ｌｏｏｐ−ｂａｃｋ）インターフェースなど）を介して、ユーザおよびアプリケーションとインターフェースし得る。
【００５７】
一実施形態において、それぞれの構成要素３２は、少なくとも二つの層（アプリケーション処理層３６およびＴＣＰライブラリ（ＴＣＰＬＩＢ）層３８）を有すると考えられ得るプロセスである。構成要素３２のＴＣＰＬＩＢ層３８は、アプリケーション処理層３６によって使用される要求がある場合、構成要素３２と他の構成要素との間で、実際のＴＣＰ接続３４をセットアップするように使用される。次いで、構成要素３２は、確立された接続３４を介して、互いに通信することができる。
【００５８】
本発明の一実施形態に従い、例えば、図３Ａおよび３Ｂに記載されるように、二つの構成要素３２間での指定された接続を決定する方法は、一つのみのＴＣＰ接続３４が、任意の二つの所定の構成要素３２間でのデータ通信を容易にするために使用されるように実施され得る。図２の例において、その方法は、構成要素３２間のＴＣＰＬＩＢ層３８を介して実施される。特定のアプリケーション処理層３６は、分散システム３０における他の構成要素３２と通信するために、その構成要素３２のＴＣＰＬＩＢ層３８によってセットアップされた、個々の指定されたＴＣＰ接続３４を使用する。
【００５９】
本発明の一実施形態における第１の構成要素と第２の構成要素との間で指定された接続を決定する方法は、通常、参照番号５０として示され、図３Ａを参照し、そのステップを図示するフローチャートを示す。
【００６０】
方法５０は、二つの構成要素（例えば、図２の構成要素３２）間でのピアツーピアデータ通信に使用される、単一の指定された接続を決定するための技術に関する。この実施形態において、二つの構成要素のそれぞれは、異なるコンピュータデイバス（例えば、図１のコンピュータデイバス１２）上に存在する。しかしながら、上記で記載されたように、異なる実施形態において、二つの構成要素は、同一のコンピュータデバイス上に存在し得る。
【００６１】
その構成要素はピアツーピア関係であり、その二つの構成要素のそれぞれは、独立して、もう一方の構成要素との接続を確立するよう開始することができる。この実施形態において、二つの構成要素間で確立された接続は、ＴＣＰ接続である。
【００６２】
ソフトウェア実施の一例において、第１および第２の構成要素のそれぞれは、通常、図２を参照して記載されるように、コンピュータデバイス上でのプロセスとして実施される。特に、それぞれのプロセスは、個々のコンピュータデバイス上での個々のプロセスによって実行される、方法５０のステップを実行するようにプログラムされているアプリケーションの実行インスタンスである。さらに、アプリケーションは、指定された接続としての、その構成要素間での単一の接続を識別することを容易にするために、第１の構成要素と第２の構成要素との間のデータを交換し、これらの構成要素のそれぞれにて必要な処理を実行するために協働するようにプログラムされる。
【００６３】
図３Ａにて示され、以下でさらに詳細に記載されるように、方法５０の一部のステップは、第１の構成要素（構成要素「Ａ」として識別される）にて実行され、他方で、方法５０の他のステップは第２の構成要素（構成要素「Ｂ」として識別される）にて実行される。
【００６４】
ステップ５２ａにて、構成要素識別子は、アルゴリズムを生成する識別子に従って、構成要素Ａのために生成され、そのアルゴリズムによって生成された構成要素識別子が指示可能（ｏｒｄｅｒａｂｌｅ）であり、実質的に独自であることを保証するために適合される。同様に、ステップ５２ｂにて、構成要素識別子は、アルゴリズムを生成するその同じ識別子に従って、構成要素Ｂのために生成される。これらの構成要素識別子は、通常、個々の構成要素が存在するコンピュータデバイス（例えば、図１のコンピュータデバイス１２）のメモリ（例えば、図１のメモリ２０）において格納される。これらの構成要素識別子は、例えば、それぞれの構成要素のＴＣＰＬＩＢ層（例えば、図２の参照番号３８）の起動上で生成され得る。この実施形態において、構成要素識別子は、それぞれの構成要素のために生成され、その活動全体を通して、個々の構成要素に関連される。
【００６５】
本発明の一実施形態において、それぞれの構成要素識別子は、Ｇｌｏｂａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒｓ（ＧＵＩＤｓ）とも呼ばれる、Ｕｎｉｖｅｒｓａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒｓ（ＵＵＩＤｓ）を生成するよう適合されるアルゴリズムに従って、生成される。既知のＵＵＩＤの仕様およびフォーマットの多くは、例えば、Ｏｐｅｎ  Ｓｏｆｔｗａｒｅ  Ｆｏｕｎｄａｔｉｏｎ’ｓ（現在は、Ｔｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐとして知られている）Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｅｎｖｉｒｏｎｍｅｎｔ仕様を含み、存在する。
【００６６】
ＵＵＩＤは、通常、中央登録手続きを必要としない１２８ビット識別子である。ＵＵＩＤは、全てのＵＵＩＤのスペースに関連して、時空間両方を介し、実質的に独自である。それぞれのＵＵＩＤは、ＵＵＩＤの値がロールオーバーする（例えば、使用される特定のアルゴリズムに依存し、およそＡ．Ｄ．３４００）のが可能であるように、「実質的に」独自であると考えられる。しかしながら、実際的な目的にとっては、それぞれの生成されたＵＵＩＤは、独自であると考えられ得る。
【００６７】
ＵＵＩＤのコンセプトが一般的に知られている一方で、ＵＵＩＤは、分散システムにおける構成要素を独自に識別し、構成要素間での指定された接続の識別を容易にするために、本発明のこの実施形態において、新規で独創的な方法で使用される。分散システムにおけるそれぞれの構成要素（例えばプロセス）は、その活動全体において、一つのＵＵＩＤに割り当てられ得る。これらの独自の識別子は、構成要素が同一のコンピュータデバイスに存在するかどうかや、構成要素が同一のＩＰ識別子に関連されているかどうかなどを問わず、構成要素を独自に識別させることができる。
【００６８】
ＵＵＩＤは、通常、他の代替的な識別子に関連し、適度に小さい、固定されたサイズであり、従って例えば、それらは、容易に分類され、整理され、格納される。ＵＵＩＤは指示可能（ｏｒｄｅｒａｂｌｅ）であるゆえ、これは、構成要素に関連されたＵＵＩＤを有した構成要素に、他の構成要素に対する相対的なランクまたは位置を割り当てさせる。この実施形態において、例えば二つの構成要素間のように、ＵＵＩＤは、方法５０の実行において、一つの構成要素をコントローラとして、および、他の構成要素を応答器として、一貫した識別を容易にする。従って、両方の構成要素が特定のステップまたはタスクを実行するのに競合する状況は避けられ得る。
【００６９】
本発明の一実施形態において、接続テーブルは、個々の構成要素へ接続される全ての接続を追跡するためのデータを格納するために、分散システムのそれぞれの構成要素（例えば、図１において示されるように、構成要素に存在するコンピュータデバイス１２のメモリ２０において）によって維持される。異なる実施形態において、他のデータ構造は、その接続に関連された情報を格納するために使用され得る。
【００７０】
より詳細には、それぞれの構成要素によって維持される接続テーブルは、それぞれの接続のために、その構成要素の構成要素識別子（例えば、ＵＵＩＤ）、その接続自体に関連された識別子（例えば、ＴＣＰ接続のためのソケットハンドル）、および、ステータスフラグを格納する。任意の所定の時間において、ステータスフラグは、三つの値の一つをセットされ得る。この実施形態においては、「作成」（ｃｒｅａｔｅｄ）、「係属」（ｐｅｎｄｉｎｇ）、「接続」（ｃｏｎｎｅｃｔｅｄ）である。異なる値はステータスフラグに割り当てられ得、他の接続データはまた、異なる実施形態における接続テーブルにおいても格納され得る。
【００７１】
二つの構成要素のいずれかによって開始され得るように、接続がＴＣＰレベルでの任意の二つの構成要素間で確立される場合、ステップ５４ａおよびステップ５４ｂが実行される。ステップ５４ａにおいて、構成要素Ａにて、構成要素Ｂとともに確立されるＴＣＰ接続は識別され、記録が構成要素Ａによって維持される接続テーブルにおいて作成される。この記録は接続の識別子を含み、そのステータスフラグは、「作成」にセットされる。
【００７２】
同様に、ステップ５４ｂにおいて、接続はまた、構成要素Ｂにて識別され、記録は、構成要素Ｂによって維持された接続テーブルにおいて作成される。この記録はまた、接続の識別子を含み、そのステータスフラグは、「作成」にセットされる。
【００７３】
方法５０の、続くステップの実行は、構成要素Ａ（ステップ５４ａ）および構成要素Ｂ（ステップ５４ｂ）で識別された接続の確立によってトリガされる。方法５０のこの例に関して、その接続は、「現在の」接続と呼ばれる。
【００７４】
方法５０の多数の例は、多数の確立された接続が共存できるよう、同時に実行され得ることは、当業者によって理解されよう。第１の接続が二つの構成要素間で確立（例えば、ＴＣＰレベルで）される場合の例示のシナリオを検討する。この第１の接続は、方法５０の第１の例における二つの構成要素によって、ステップ５４ａおよびステップ５４ｂにて識別され、それぞれの構成要素にて、第１の接続の存在は、その第１の接続が最初に「作成」としてフラグされながら、個々の構成要素によって維持される接続テーブルにおいて記録される。方法５０のこの第１の例に続くステップの実行（例えば、参照番号５６ａ／５６ｂから参照番号６２）は、この第１の接続が指定された接続として識別されるかどうかの決定がなされ得るように、トリガされる。
【００７５】
同一の二つの構成要素の間での第２の接続が、第１の接続に関する決定が今だに係属中である間に、確立される場合を想定する。方法５０の第２の例の多くのステップは、方法５０の第１の例が実行され続けている間に、実行され得る。例えば、第２の接続は、方法５０の第２の例における二つの構成要素によって、ステップ５４ａおよびステップ５４ｂにて識別され、それぞれの構成要素にて、第２の接続の存在は、その第２の接続が最初に「作成」としてフラグされながら、個々の構成要素によって維持される接続テーブルにおいて記録される。方法５０の第２の例の、続くステップの実行は、第２の接続が指定された接続として識別されるかどうかの決定がなされるように、トリガされる。第１の接続が、方法５０の第１の例に関して、「現在の」接続の役割をするように、第２の接続は、方法５０の第２の例に関して、「現在の」接続の役割をする。
【００７６】
同様に、方法５０のさらなる例は、さらなる接続が確立されるように、追加的な接続に関して、同時に実行され得、それらの追加的な接続のそれぞれは、方法５０のそれ自体の例に関して、「現在の」接続の役割をする。
【００７７】
方法５０の特定の多数の例が同時に実行され得る一方で、ステップ５２ａは、構成要素Ａによって一度きりだけ実行され、ステップ５２ｂもまた、構成要素Ｂによって一度きりだけ実行される。というのは、たった一つの構成要素識別子が、それぞれの構成要素のために生成されるからである。
【００７８】
再び図３Ａを参照し、ステップ５６ａにて、構成要素Ａの構成要素識別子は、構成要素Ｂに送信される。ステップ５８ｂにて、構成要素Ａの構成要素識別子は、構成要素Ｂによって受信され、現在の接続に関連された「作成」記録において、構成要素Ｂの接続テーブルに格納される。同様に、ステップ５６ｂにて、構成要素Ｂの構成要素識別子は、構成要素Ａに送信される。ステップ５８ａにて、構成要素Ｂの構成要素識別子は、構成要素Ａによって受信され、現在の接続に関連された「作成」記録において、構成要素Ａの接続テーブルに格納される。図３Ａにおける鎖線は、これらのデータ交換のステップが実行される場合に、構成要素Ａと構成要素Ｂとの間での最初のデータの交換（例えば、構成要素識別子が交換される）があることを図示する。一実施形態において、構成要素識別子は、ステップ５４ａおよびステップ５４ｂにて識別される現在の接続を介して交換される。しかしながら、構成要素識別子を交換する他の手段は、異なる実施形態においても用いられ得る。
【００７９】
ステップ６０ａにおいて、構成要素Ａにて、構成要素Ａのための構成要素識別子は、方法５０に続くステップの実行におけるコントローラか応答器のいずれかとして構成要素Ａを識別するために、ステップ５８ａにて受信された構成要素Ｂのための構成要素識別子と比較される。同様に、ステップ６０ｂにおいて、構成要素Ｂにて、構成要素Ｂのための構成要素識別子は、方法５０に続くステップの実行におけるコントローラか応答器のいずれかとして構成要素Ｂを識別するために、ステップ５８ｂにて受信された構成要素Ａのための構成要素識別子と比較される。本明細書および本請求項において、特定の現在の接続に関して、コントローラとして識別される構成要素は、通常、「コントローラ」と呼ばれ、応答器として識別される構成要素は、通常、「応答器」と呼ばれる。
【００８０】
一実施形態において、構成要素識別子はＵＵＩＤである。構成要素ＡおよびＢのＵＵＩＤは、全てのＵＵＩＤのスペースにわたって、指示可能（ｏｒｄｅｒａｂｌｅ）であり、独自であるゆえ、一方の構成要素をコントローラとして、他方の構成要素を応答器として、一貫して識別することが可能である。両方の構成要素にて使用される技術が一貫した結果を提供する限りにおいて、その技術は、その整序における識別子の相対的な位置に基づいて、コントローラおよび応答器の役割を構成要素に割り当てる任意の技術が用いられ得る。
【００８１】
例えば、一実施形態において、比較動作によって決定される、より高い値のＵＵＩＤを有する構成要素は、コントローラとして識別され得、他方、同じ比較動作によって決定される、より低い値のＵＵＩＤを有する構成要素は、応答器として識別され得る。反対に、異なる実施形態においては、より低い値のＵＵＩＤを有する構成要素は、コントローラとして識別され得、他方、より高いＵＵＩＤを有する構成要素は、応答器として識別され得る。異なる実施形態において、コントローラおよび応答器の役割を、特定の接続に関する任意の二つの構成要素に割り当てるための他の技術およびアルゴリズムが利用され得、構成要素識別子の整序は、異なる仕方において定義され得る。
【００８２】
ステップ６２において、現在の接続が、構成要素Ａと構成要素Ｂの間での、続くデータ通信のための単一の指定された接続として識別されるかどうかに関する決定がなされる。これは、通常、現在の接続とは異なる、構成要素Ａと構成要素Ｂ（構成要素Ａも構成要素Ｂも切断されることを識別しない）との間に、任意の確立された接続があるのかどうかを、まず最初に決定することを要求する。そのような接続が存在しない場合、次いで、現在の接続は、切断されることを識別されない構成要素Ａと構成要素Ｂとの間の接続のみであるが、続くデータ通信のための指定された接続として識別され得る。
【００８３】
他方で、現在の接続とは異なる、構成要素Ａと構成要素Ｂとの間に確立された、切断されることを識別しない（例えば、構成要素Ａまたは構成要素Ｂによって、または、その両方によって）接続が存在する場合、次いで、現在の接続および他の接続の両方は、指定された接続の候補であり、現在の接続または他の確立された接続のいずれかを、続くデータ通信の指定された接続として識別するように、選択がなされなければならない。他の確立された接続は、指定された接続として以前に識別されている接続である。一実施形態において、切断されることを識別しない構成要素Ａと構成要素Ｂとの間の指定された接続が既に存在する場合、現在の接続は、指定された接続として識別されない。しかしながら、異なる実施形態において、現在の接続は、常に指定された接続として識別され得、それまでの確立された接続に優先する。
【００８４】
指定された接続として識別された接続は、両方の接続テーブルにおける接続のステータスフラグを適切にセットすることによって、両方の構成要素の接続テーブルにおいて、その関連される記録を、「接続」状態を反映させるためにアップデート（必要な場合）させる。指定された接続の候補として考えられるが、最終的には指定されてはない、二つの構成要素との間での任意の他の確立された接続は、ステップ６２にて終了され、その終了された接続に関連された両方の構成要素の接続テーブルにおける記録は削除される。その終了された接続は、それが指定された接続として識別されない場合でも、現在の接続を含み得、または、例えば、以前に指定された接続を含み得る。終了された以前の指定された接続は、以下でさらに詳細に検討されるように、例えば、それが指定されたがゆえに、切断されることになったものであり得る。
【００８５】
再びステップ６２を参照に、本発明のこの実施形態に従い、単独の指定された接続のための候補は、切断されることを識別しない構成要素Ａでも構成要素Ｂでもない接続である。構成要素Ａまたは構成要素Ｂのいずれかが、特定の接続が切断されていると識別する場合、データ通信の指定された接続として、その接続を識別することは役に立たない。
【００８６】
ここでの「切断」（ｂｒｏｋｅｎ）とは、二つの構成要素間の、一つの可能な接続状態を記載するために使用される。構成要素間での、特に、指定された接続を含む、二つの構成要素間の接続は、任意の多くの方法において切断され得る。例えば、構成要素が存在するコンピュータデバイスの一つでのネットワークケーブルは、コンピュータデバイスから物理的に切断され得、データが、そのケーブルを使用した接続を介してデバイス間で通信されることを不可能（少なくともネットワークケーブルがコンピュータデバイスに再接続されるまで）にする。構成要素間での接続の通常のあり方において、構成要素はその接続が切断されることを発見し得る。例えば、ある構成要素がその接続を使用する他の構成要素へデータを送信することがなされる時で、他の構成要素からの応答が期待される場合に、時間的な方法において、その応答における受信失敗は、そのデータを送信する構成要素に、接続が切断されていることを指示し得る。構成要素によって発見された、切断された接続は、その構成要素によって、一方的に終了させられ得、その終了された接続の記録は、その構成要素によって維持された接続テーブルから除去される（ステップは図において明示的に示されてはいない）。
【００８７】
しかしながら、所定の構成要素が他の構成要素と通信することに失敗したかどうか、または、その接続が切断されている間に接続をテストしたかどうかに依存し、その接続が、二つの構成要素のうちの一つのみによって、切断されたこと（その結果、終了された）を識別することは可能である。本明細書および本請求項のために、切断された接続が、切断されたことを識別せず、二つの構成要素のうちの少なくとも一つによって終了されていない限りで、切断された接続は、二つの構成要素間で接続していると考えられる。
【００８８】
したがって、この実施形態において、ステップ６２は、指定された接続の候補として考えられる接続が構成要素Ａでも構成要素Ｂでも切断されたことを識別しない接続であることの確認を要求する。図３Ｂを参照し、図３Ａのステップ６２は、本発明の一実施形態に従って実施されるように、さらに詳細に記載される。
【００８９】
この実施形態におけるステップ６２を含むサブステップの一部は、コントローラ（構成要素Ａおよび構成要素Ｂのうちの一つである）として識別される構成要素によって実行され、一方、他のサブステップは、図３Ｂに示されるように、応答器（構成要素Ａおよび構成要素Ｂのうちの他の一つである）として識別される構成要素によって実行される。構成要素の一つをコントローラ、もう一つを応答器として識別することは、図３Ａのステップ６０ａおよび６０ｂにおいて実行される。図３Ｂにおいて示されるように、ステップ６２に続くサブステップは、コントローラによって開始される。
【００９０】
サブステップ６４にて、コントローラによって、応答器へのそれまでの指定された接続が、存在すると（例えば、コントローラによって終了されていない）コントローラによって識別されるかどうかに関して、決定がなされる。一実施形態において、このサブステップは、現在の接続とは異なった、応答器のＵＵＩＤによって識別された構成要素への接続の記録が、コントローラによって維持された接続テーブルにおいて存在するかどうか、および、他の接続のフラグが「接続」にセットされること、を決定することを含む。
【００９１】
それまでの指定された接続が存在することを、コントローラによって識別されない場合、次いで、現在の接続は、サブステップ６６にて、指定された接続として識別され、応答器（応答器のＵＵＩＤによって識別される応答器）への現在の接続の記録は、ステータスフラグの値が、「作成」から「接続」へと変化されながら、コントローラによって維持された接続テーブルにおいてアップデートされる。
【００９２】
多数の接続が同時に確立され得、存在し得る場合、方法５０（およびステップ６２）の多くの例は同時に実行され得る。この場合、本発明のこの実施例の実施は、サブステップ６４において決定がなされるために、コントローラによって維持された接続テーブルへのアクセスが制限され、サブステップ６６が実行される場合にサブステップ６４およびサブステップ６６が単一の処理を終えることを保証し、一つ以上の「現在」の接続が、指定された接続として識別されないようにする。異なるプログラミングの構図は、異なる実施において、この制御を達成する（例えば、ロックする、など）ために用いられ得る。
【００９３】
現在の接続が指定された接続として識別される指示は、次いで、サブステップ６８にて、応答器へ転送される。この指示は、鎖線によって図示されるように、サブステップ７０での応答器によって受信され、構成要素Ａから構成要素Ｂへのデータの第２の送信を示す（第１の送信は、図３Ａを参照して以前に検討されたように、データ交換の一部である）。
【００９４】
それまでの指定された接続が存在することを、コントローラによって識別されない場合だったとしても、切断された接続は存在し得、コントローラによってそれまでに検出され、終了されたが、しかしそれは、応答器によって、切断されたと識別されたのではなく、応答器によって終了されたのでもない。応答器の観点からしてみれば、切断された接続は、未だに、指定された接続であり得、その切断された接続は、応答器によって維持された接続テーブルにおけるように識別され得る。したがって、サブステップ７２にて、応答器は、コントローラと同じＵＵＩＤを有する構成要素への確立された接続（現在の接続とは異なる）の記録が、記録され、その応答器によって維持された接続テーブルにおいて「接続」としてフラグされるかどうかを識別することによって、そのような切断された接続が存在するかどうかをチェックする。もしそうである場合、この切断された接続は、サブステップ７２にて終了され得、切断された記録は、接続テーブルから取り除かれる。応答器によって維持された接続テーブルにおいて、コントローラへの現在の接続の記録は、関連されるステータスフラグの値が「作成」から「接続」へと変化しながら、アップデートされる。
【００９５】
再び、サブステップ６４にてなされる決定を参照し、他方で、それまでの応答器への指定された接続が存在することをコントローラによって識別される場合、次いで、ステップ７４にて、それまでの、応答器への係属中の接続が存在することをコントローラによって識別されるかどうかに関して決定がなされる。
【００９６】
それまでの指定された接続が存在することをコントローラによって識別される場合、それまでの接続が、その後、切断されることが発見されれば、最終的に、現在の接続によって、指定された接続に取って代わり得る。それまでの接続が切断されてないことを応答器によって識別されないことが確認されるまで、現在の接続は、指定された接続のアクティブな候補として残る。しかしながら、所定の時間においてアクティブな多数の「現在」の接続があり得、コントローラによって検討されている。それゆえ、一実施形態において、「現在」の接続の多くても一つが、「係属」としてフラグされ、それまでの指定された接続が、最終的に、切断されたと発見されることで、多くの接続が指定された接続として識別されることを避けられる。実質的には、係属とフラグされた、第１の「現在」の接続は、それまでの接続を指定された接続に取って代わるために、「第１の継承順位」（ｆｉｒｓｔ  ｉｎ  ｌｉｎｅ）として考えられる。「係属」や「接続」ではない全ての他の接続は、もはや指定された接続の候補とは考えられず、終了され得る。
【００９７】
したがって、それまでの確立された接続が係属である場合、次いで、現在の接続は、係属の状態においてサブステップ７６にて終了され、コントローラによって維持された接続テーブルにおける現在の接続の記録は、取り除かれる。現在の接続がコントローラによって終了される場合、内在するＴＣＰは、応答器に自動的に切断信号を送信し、現在の接続が、応答器によって維持された接続テーブルにおける現在の接続の記録が取り除かれながら（ステップは図に示されていない）、応答器によって終了される。
【００９８】
この方法において、より新しい接続は、最初に「係属」とフラグされた、それまでの接続に関連して、方法５０のステップの例が実行され続けるように、それまでの確立された接続として、通常、考慮から除去される。このアプローチは、最も長い係属状態が、より最近の確立された接続に関連して、指定された接続の決定になりえるゆえに、一般に効果的と考えられ得る。
【００９９】
しかしながら、本発明の異なる実施形態において、現在の接続は、現在の接続が指定された接続として識別され、それまでの全ての係属または指定された接続が終了されながら、任意のそれまでの確立された、係属または指定された接続よりも優先され得る。
【０１００】
再び図３Ｂを参照し、コントローラによって識別された、それまでの確立され指定された接続が存在し、追加的な接続が現在係属ではない（サブステップ７４にて決定されるように）ことが決定される（サブステップ６４にて）場合、次いで、現在の接続は、コントローラによって維持された接続テーブルにおけるステータスフラグに関連された値を、サブステップ７８にて「作成」から「係属」へとアップデートすることによって、係属としてマークされる。多数の接続が同時に確立され、存在し得るところでは、本発明におけるこの実施形態の実施は、ステップ７４における決定がなされるために、コントローラによって維持された接続テーブルへのアクセスが制限され、サブステップ７８が実行される場合にサブステップ７４およびサブステップ７８が単一の処理を終えることを保証し、一つ以上の「現在」の接続が、係属の接続として識別されないようにする。異なるプログラミングの構図は、異なる実施において、この制御を達成する（例えば、ロックする、など）ために用いられ得る。
【０１０１】
任意の二つの所定の構成要素間で、一つの接続が一つの構成要素の接続テーブルに従って係属として考えられ、同じ二つの構成要素間での異なる接続が、他の構成要素のテーブルに従って係属として考えられることは、不可能であることに注意されたい。これが生じることが許可された場合、次いで、両方の係属の接続が、最終的に、指定された接続として識別され得ることは可能であり、それは不満足な結果となる。しかしながら、これは、指示可能（ｏｒｄｅｒａｂｌｅ）であり、独自である識別子が全ての構成要素を識別するために利用されるゆえに避けられ、任意の二つの構成要素間で、一つの構成要素は、他の構成要素が常に、それらの二つの構成要素に対する応答器として識別される一方で、コントローラとして常に識別される。したがって、方法５０において、接続は、サブステップ７８にて、コントローラによって維持される接続テーブルにおいて、マークされるか、「係属」としてフラグされる。
【０１０２】
サブステップ８０にて、コントローラによって識別され、指定された接続として識別された、それまでの確立された接続が、応答器の観点からは存在することを確認する命令が、応答器になされる。
【０１０３】
その確認は、構成要素Ａと構成要素Ｂとの間の第２のデータ交換の最初の一部を表す鎖線によって示されるように、コントローラからの命令を受信した後に、サブステップ８２にて、応答器によってなされる（最初のデータ交換は、図３Ａを参照して以前に検討されたように、なされる）。応答器は、コントローラと同じＵＵＩＤを有する構成要素への接続が、「接続」としてフラグされ、応答器によって終了されていないかどうかを決定するために、接続テーブルに格納された既存の接続の記録をチェックする。それまでの指定された接続が、未だに存在することを応答器によって識別される場合（例えば、それまでの指定された接続が切断されていないことを応答器によって識別されていない）、次いで、サブステップ８４にて、現在の接続は、既存の指定された接続として終了され、応答器によって維持された接続テーブルにおける現在の接続の記録は取り除かれる。現在の接続が応答器によって終了された場合、内在するＴＣＰは、コントローラに自動的に切断信号を送信し、現在の接続は、コントローラによって維持された接続テーブルにおける現在の接続の記録が取り除かれながら（ステップは図には示されていない）、コントローラによって終了される。
【０１０４】
しかしながら、それまでの指定された接続が存在することを応答器によって、もはや識別されない場合、次いでサブステップ８６にて、現在の接続は、指定された接続として識別される。応答器によって維持された接続テーブルにおけるコントローラへの現在の接続の記録は、ステータスフラグの値が、「作成」から「接続」に変化されながら、アップデートされる。このサブステップは、コントローラが、それまでの確立された接続（それは以前に、指定された接続として識別されている）が応答器によって切断され、その後、終了されたことを識別していない場合、実行される。
【０１０５】
現在の接続が新しい指定された接続であることの確認の結果は、サブステップ８８にてコントローラへ戻され、構成要素Ａと構成要素Ｂとの間の第２のデータ交換の、二番目の部分を表す鎖線によって示されるように、サブステップ９０にてコントローラによって受信される。コントローラによって維持された接続テーブルにおける応答器への現在の接続の記録は、ステータスフラグの値が「作成」から「接続」へと変化されながら、アップデートされる。それまでの指定された接続は、今や切断されていることを識別されているが、サブステップ９２にて終了され、その切断された接続の記録は、コントローラによって維持された接続テーブルから取り除かれる。
【０１０６】
図３Ａおよび図３Ｂを参照し、方法５０の例のステップが、任意の二つの構成要素間での特定の接続が指定された接続として識別されるかどうかを決定するために実行される場合は常に、構成要素間での多くとも二つのデータ交換が、本発明のこの実施形態に従った決定をするために必要とされることに注意されたい。従って、方法５０は、比較的最小のオーバーヘッドを用いて実施され得る。
【０１０７】
方法５０の完了にて、それぞれの構成要素は、任意の他の構成要素（例えば、ＵＵＩＤによって識別された他の構成要素、および、「接続」としてフラグされた接続など）への現在の指定された接続を決定するために維持するかについて、接続テーブルに問い合わせ、他の構成要素へ、続くデータ通信のために、指定された接続を使用する。
【０１０８】
図４を参照し、二つの構成要素間の接続状態の異なる例を示す図が、多くのシナリオのうち、図３Ａおよび図３Ｂを参照して記載される、方法５０の応用を図示するために提供される。
【０１０９】
この図は、例示のためだけに提供されるものであって、図４に示されていない他の接続状態は、異なる実施形態において可能であることは、当業者によって理解されよう。
【０１１０】
接続状態１００は、構成要素Ａと構成要素Ｂとの間だけの接続として、現在の接続を表す。一実施形態における方法５０の応用は、指定された接続として識別される現在の接続という結果になる。
【０１１１】
接続状態１０２は、現在の接続に付け加えて、構成要素Ａと構成要素Ｂとの間の係属の接続を表す。係属の接続は、それまでの指定された接続（切断されたか、または、切断されていないか、（図には示されていない））に沿って、方法５０の異なる例に関して、指定された接続のための候補である。現在の接続に関する一実施形態における方法５０の応用は、係属の接続において終了される現在の接続という結果になる。係属の接続は、方法５０が、その係属の接続に関して適合される場合、続いて、指定された接続として識別され得る。
【０１１２】
接続状態１０４は、現在の接続に付け加えて、切断されていない構成要素Ａと構成要素Ｂとの間の、それまでの指定された接続を表す。現在の接続に関する一実施形態における方法５０の応用は、コントローラ（構成要素識別子に依存する構成要素Ａまたは構成要素Ｂ）によって係属の接続としてフラグされた現在の接続という結果となり、次いで、その後に、現在の指定された接続において終了される。
【０１１３】
接続状態１０６は、現在の接続に付け加えて、構成要素Ａと構成要素Ｂとの間の切断された接続を表し、構成要素Ｂは、その接続が切断され、構成要素Ａによって既に終了されていることを識別しない場合である。一実施形態における方法５０の応用は、指定された接続として識別される現在の接続という結果となり、切断された接続は構成要素Ｂによって終了される。構成要素Ｂがコントローラとして識別された場合、次いで、現在の接続は、指定された接続として最終的に識別される前に、構成要素Ｂによって係属の接続としてフラグされることに注意したい。
【０１１４】
接続状態１０８は、現在の接続に付け加えて、構成要素Ａと構成要素Ｂとの間の切断された接続を表し、構成要素Ａは、その接続が切断され、構成要素Ｂによって既に終了されていることを識別しない場合である。一実施形態における方法５０の応用は、指定された接続として識別される現在の接続という結果となり、切断された接続は構成要素Ａによって終了される。構成要素Ａがコントローラとして識別された場合、次いで、現在の接続は、指定された接続として最終的に識別される前に、構成要素Ａによって係属の接続としてフラグされることに注意したい。
【０１１５】
接続状態１１０は、現在の接続に付け加えて、構成要素Ａと構成要素Ｂとの間の、切断された、それまでの指定された接続を表し、構成要素Ａも構成要素Ｂも、その接続が切断されていることを識別しない場合である。このシナリオは、例えば、接続が切断されている一方で、構成要素のいずれかの通信がその接続を介して企てようとしない場合に生じ得る。以前に記載された、一実施形態における方法５０の応用は、切断された、それまでの指定された接続において終了される現在の接続という結果になる。これは、必ずしも不満足な結果というわけではない。というのは、少なくとも構成要素の一つが、その接続が実際に切断さていることを、その接続を使用するデータ通信の通常のあり方を介して発見するまでは、それまでの指定された接続が「良い」とみなされ、使用され続けることが適切だと考えられ得るからである。
【０１１６】
しかしながら、本発明の異なる実施形態において、現在の接続が、それまでの指定された接続において終了される前に、それまでの指定された接続は、その接続が切断された構成要素のいずれかによって発見されていない場合において、現在の接続の終了に先立って、切断されていないことを確認するためにテスト（例えば、ピング／エコー）され得る。これは、二つの構成要素間での、少なくとも一つの追加のデータ交換を必要とし得る。それまでの指定された接続が、このテストの結果として、切断されていることが発見された場合において、次いで、現在の接続において終了され得、それは、新しい指定された接続として識別される。
【０１１７】
本発明の実施形態における第１の構成要素と第２の構成要素との間の指定された接続を決定するための方法のステップは、コンピュータ可読媒体上に格納される、実行可能なソフトウェア命令として提供され得、それは、送信タイプの媒体を含み得る。
【０１１８】
本発明は、多くの実施形態に関して、記載されている。しかしながら、他の変形および修正が、ここに添付された請求項において定義されたように、本発明の範囲から逸れることなく、なされ得ることは、当業者によって理解されよう。
【図面の簡単な説明】
【０１１９】
【図１】一例のネットワーク構成におけるコンピュータデバイスの要素のサブセットを図示する略図である。
【図２】四つの構成要素を含む分散システムの一例の略図である。
【図３Ａ】本発明の一実施形態における、第１の構成要素と第２の構成要素との間で、指定された接続を決定する方法におけるステップを図示するフローチャートである。
【図３Ｂ】本発明の一実施形態における、第１の構成要素と第２の構成要素との間で、指定された接続を決定する方法におけるステップを図示するフローチャートである。
【図４】二つの構成要素間での、接続状態の異なる例を示す図である。
【符号の説明】
【０１２０】
１０  ネットワーク構成
１２  コンピュータデバイス
１６  プロセッサ
１８  ユーザインターフェース
２０  メモリ
２４  ネットワークインターフェース
３２  構成要素
３４  接続
３６  アプリケーション処理層
３８  ＴＣＰＬＩＢ層
【図１】
2006202272.tif 000003
【図２】
2006202272.tif 000004
【図３Ａ】
2006202272.tif 000005
【図３Ｂ】
2006202272.tif 000006
【図４】
2006202272.tif 000007