(57)【要約】  通信しているノード間のメッセージ競争又は食い違いを回避する、順序付けられたメッセージ配信のための技術、システム及び方法。例えば、ノードＡがノードＢに対してメッセージ３を送出し、そのすぐ後にノードＢがノードＡに対してメッセージＸを送出するならば、ノードＡは、メッセージＸがメッセージ３受信後のノードＢの状態を反映しているかどうかを知りたいと思う。ノードＢがメッセージＸの送出前にメッセージ３を受信したならば、適切な状態がノード間に維持される。しかし、メッセージ３とメッセージＸとに食い違いが生じると、又は、ノードＢがメッセージ３を適切には受信しなかった場合、ノード間の状態は不正になる。こうした不正を回避するための技術、システム及び方法が提供される。
2010541042.tif 000002
【特許請求の範囲】
【請求項１】
食い違い取り消しシステムであって、
トランスポートに結合され、該トランスポートを介してメッセージを送受信すると共に、アプリケーションと結合され、該アプリケーションとメッセージを交換する食い違い取り消しプロトコル・モジュールと、
前記食い違い取り消しプロトコル・モジュールによって維持され、送出されるメッセージを形成し、受信されるメッセージを確認する際に使用される１組の状態変数と、
を備える、食い違い取り消しシステム。
【請求項２】
別の食い違い取り消しシステムと通信可能に結合され、食い違ったメッセージが検出されて削除される、請求項１に記載のシステム。
【請求項３】
前記１組の状態変数が、システムのセッションを識別するナンス変数を含み、該ナンス変数がそれぞれの送出メッセージのヘッダーに含まれる、請求項１に記載のシステム。
【請求項４】
前記１組の状態変数が、それぞれの送出メッセージを一義的に識別するカウンター変数を含み、該カウンター変数がそれぞれの送出メッセージのヘッダーに含まれる、請求項１に記載のシステム。
【請求項５】
前記１組の状態変数が、前記別の食い違い取り消しシステムのセッションを識別するリモート・ナンス変数を含み、該リモート・ナンス変数が受信メッセージのヘッダーから取り出される、請求項２に記載のシステム。
【請求項６】
前記１組の状態変数が、前記別の食い違い取り消しシステムからの受信メッセージを一義的に識別するリモート・カウンター変数を含み、該リモート・カウンター変数が前記受信メッセージのヘッダーから取り出される、請求項２に記載のシステム。
【請求項７】
前記食い違い取り消しプロトコル・モジュールが、メッセージの食い違いを検出したときに競争処理状態に入る、請求項２に記載のシステム。
【請求項８】
前記食い違い取り消しプロトコル・モジュールが、前記競争処理状態にあるときにピング・メッセージを送出し、該ピング・メッセージが、ナンス・フィールド、カウンター・フィールド、リモート・ナンス・フィールド及びリモート・カウンター・フィールドを含むヘッダーを備える、請求項７に記載のシステム。
【請求項９】
前記食い違い取り消しプロトコル・モジュールが、正常状態にあるときにメッセージを送出し、該メッセージが、ナンス・フィールド、カウンター・フィールド、リモート・ナンス・フィールド、リモート・カウンター・フィールド及びアプリケーション・メッセージ・フィールドを含むヘッダーを備える、請求項１に記載のシステム。
【請求項１０】
食い違い取り消しシステムにおいて入力メッセージを処理する方法であって、前記入力メッセージがヘッダーを含み、該ヘッダーがナンス値とリモート・ナンス値とカウンター値とリモート・カウンター値とを含む方法において、
前記メッセージを受信するステップと、
前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較するステップと、
前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較するステップと、
前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を前記状態変数のカウンター状態変数と比較するステップと、
を備える方法。
【請求項１１】
前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較する前記ステップが不一致を示すならば、前記状態変数を無効にして前記リモート・ナンス状態変数を前記ナンス値にセットするステップを更に備える、請求項１０に記載の方法。
【請求項１２】
前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較する前記ステップが、前記カウンター値が前記リモート・カウンター状態変数よりも大きくないことを示すならば、前記入力メッセージを削除するステップを更に備える、請求項１０に記載の方法。
【請求項１３】
前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を前記状態変数のカウンター状態変数と比較する前記ステップが不一致を示すならば、前記入力メッセージを削除し、競争処理状態へ遷移するステップを更に備える、請求項１０に記載の方法。
【請求項１４】
前記入力メッセージの前記ヘッダーの前記ナンス値を状態変数のリモート・ナンス状態変数と比較する前記ステップが一致を示し、前記入力メッセージの前記ヘッダーの前記カウンター値を前記状態変数のリモート・カウンター状態変数と比較する前記ステップが、前記カウンター値の方が前記リモート・カウンター状態変数よりも大きいことを示し、前記入力メッセージの前記ヘッダーの前記リモート・ナンス値を状態変数のナンス状態変数と比較する前記ステップが一致を示し、前記入力メッセージの前記ヘッダーの前記リモート・カウンター値を状態変数のカウンター状態変数と比較する前記ステップが一致を示すならば、前記入力メッセージの少なくとも一部をアプリケーションへ渡すステップを更に備える、請求項１０に記載の方法。
【請求項１５】
１つ又は複数のコンピューター読み取り可能媒体上に記憶されたコンピューター実行可能命令として実現された、請求項１０に記載の方法。
【請求項１６】
食い違い取り消しシステムを別の食い違い取り消しシステムと再同期させる方法であって、
出力ピング・メッセージを送出する次の区間を決定するステップと、
前記出力ピング・メッセージを前記次の区間に前記別の食い違い取り消しシステムへ送出するステップと、
前記別の食い違い取り消しシステムからの入力メッセージを検出するステップと、
前記入力メッセージを受信した際に、前記入力メッセージがピング・メッセージであるならば、一時記憶されたメッセージを前記別の食い違い取り消しシステムへ送出し、前記食い違い取り消しシステムを正常状態へ遷移させるステップと、
を備える方法。
【請求項１７】
バックオフ・アルゴリズムに基づいて、次の区間を決定するステップを更に備える、請求項１６に記載の方法。
【請求項１８】
前記入力メッセージが有効であるかどうかを決定し、前記入力メッセージが有効でないならば前記入力メッセージを削除するステップを更に備える、請求項１６に記載の方法。
【請求項１９】
前記入力メッセージが有効であるならば、前記食い違い取り消しシステムの状態変数を更新するステップを更に備える、請求項１８に記載の方法。
【請求項２０】
１つ又は複数のコンピューター読み取り可能媒体上に記憶されるコンピューター実行可能命令として実現される、請求項１６に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワーク・コンピューターのような分散システムは、通信期間にそれぞれの他の状態を知る必要がある。典型的には、これは２つのシステムが同時にではなく順次に通信することを求める。両方のシステムが同時に（又は、非順次に）メッセージを送出して、食い違ったメッセージを生じると、競争（ｒａｃｅ）条件が展開され、間違いが多く且つ相違する状態情報が導き出される。
【発明の開示】
【課題を解決するための手段】
【０００２】
以下は、読者に対して基本的な理解を提供するために、開示の簡単化された概要を提示するものである。この概要は、開示の包括的概観ではなく、また、発明の重要な又は決定的な要素を識別するものでも、発明の範囲を示すものでもない。概要の本来の目的は、後述される一層詳細な説明に対する前置きとして、簡単な形で、ここに開示される概念を提供することである。
【０００３】
本発明の例は、通信ノード間でのメッセージ競争又は食い違いを回避する、順序付けられたメッセージ配信のための技術を提供する。例えば、ノードＡがノードＢに対してメッセージ３を送出し、その直後にノードＢがノードＡへメッセージＸを送出するならば、ノードＡは、メッセージＸがメッセージ３を受信した後のノードＢの状態を反映しているかどうかを知りたいと考える。
ノードＢが、メッセージＸを送出する前にメッセージ３を受信したならば、これらのノード間に正常な状態が維持される。しかし、メッセージ３とメッセージＸとが食い違ったならば、又は、ノードＢがメッセージ３を正常に受信してはいなかったならば、これらのノード間の状態は不正になる。こうした不正状態を回避する技術、システム及び方法が提供される。
【０００４】
付随する特徴の多くは一層容易に理解されよう。添付の図面に関連して以下の詳細な説明を参照することにより、一層良好な理解が得られるからである。本発明の記述は、添付の図面に関連して以下の詳細な説明を参照することにより、一層良好な理解が得られるであろう。添付の図面において、同じ部品を指すのに同じ参照番号が用いられている。
【図面の簡単な説明】
【０００５】
【図１】図１は、通信可能に結合され、食い違い取り消しプロトコルを使用可能な２つの例示のノードを示すブロック図である。
【図２】図２は、例示のＣ３Ｐヘッダーを含む、例示の食い違い取り消しプロトコル・メッセージを示すブロック図である。
【図３】図３は、例示の食い違い取り消しプロトコル状態図を示すブロック図である。
【図４】図４は、食い違い取り消しプロトコルを初期化するための、及びメッセージを送出するための例示の方法を示すブロック図である。
【図５】図５は、食い違い取り消しプロトコルを処理するための、及びメッセージの食い違いを検出するための例示の方法を示すブロック図である。
【図６】図６は、２つの例示のノード間での順序付けられたメッセージ伝送の例を示すタイミング図である。
【図７】図７は、競争処理状態にあるときの食い違い取り消しプロトコル・メッセージを処理する例示の方法を示すブロック図である。
【図８】図８は、メッセージの食い違いとその後の回復との例を示す、図６のタイミング図の拡張であるタイミング図を示す。
【図９】図９は、明細書で記述する技術が実装される例示のコンピューティング環境を示すブロック図である。
【発明の実施形態】
【０００６】
添付の図面に関連して以下に提供される詳細な説明は、本発明の例を記述することを意図しており、本発明の例が構成されて利用される唯一の形態を提示することを意図するものではない。詳細な説明は、例の機能と、例を構成して動作させるステップのシーケンスとの少なくとも一部を述べている。しかし、同一の又は均等の機能及びシーケンスを、別の例によって達成することができる。
【０００７】
本発明の例はコンピューティング環境又はネットワーク環境で実装されるものとして記述され図示されているが、記述される環境は例として提供されており、限定ではない。当業者は理解するように、本発明の例は種々の異なるコンピューティング環境及びネットワーク環境における応用に適している。
【０００８】
図１は、通信可能に結合され、食い違い取り消しプロトコルを使用可能な２つの例示のノードを示すブロック図である。ノードＡとノードＢとは、線１９０によって示されるように結合されている。線１９０は、任意の形式の結合、接続、通信のためのリンクやネットワーク等である。それぞれのノードは、食い違い取り消しプロトコルから恩恵を受ける任意のプログラム、システム、デバイス、ソフトウェア、デバイス・ドライバー、ファームウェア等であるアプリケーション１１０ａ、１１０ｂのような例示のアプリケーションを備えている。アプリケーション１１０ａ、１１０ｂは同じであっても、違っていてもよい。典型的には、アプリケーション１１０ａ、１１０ｂは食い違い取り消しプロトコル（Ｃ３Ｐ）層、例えばＣ３Ｐ  １２０ａ、１２０ｂを介してメッセージを送受信する。食い違い取り消しプロトコルは変数１２１ａ〜１２４ａのような状態変数によって適切な状態情報を維持する。典型的には、食い違い取り消しプロトコルは、或る形式の通信リンク上でＣ３Ｐメッセージを送受信するために、トランスポート１３０ａ、１３０ｂのようなトランスポートを利用する。
【０００９】
典型的には、状態フィールド又は変数がＣ３Ｐの状態を維持する。それぞれのＣ３Ｐモジュール又はＣ３Ｐのインスタンスは、カウンター状態変数１２１ａ、１２１ｂのようなカウンター、ナンス（ｎｏｎｃｅ）状態変数１２２ａ、１２２ｂのようなナンス、リモート・カウンター状態変数１２３ａ、１２３ｂのようなリモート・カウンター、及び、リモート・ナンス状態変数１２４ａ、１２４ｂのようなリモート・ナンスを含む。１つの例において、これらの状態変数のそれぞれは６４ビット数である。
【００１０】
典型的には、ナンス状態変数（すなわち１２２ａ）は現在のＣ３Ｐセッションを識別する。典型的には、Ｃ３Ｐセッションは、Ｃ３Ｐ層が初期化されたときに確立される。典型的には、Ｃ３Ｐ層の新たなインスタンスは、Ｃ３Ｐを使用可能なノードが、Ｃ３Ｐを使用可能な新たなノード（例えば、以前に通信したことのないノード）と通信する必要があるたび毎に確立される。一般に、Ｃ３Ｐ層が初期化されるたびに、新たなナンスが生成される。
【００１１】
典型的には、リモート・ナンス状態変数（すなわち１２４ａ）は、リモート・ノードから受信された最後の有効なＣ３Ｐメッセージのヘッダーによって示される、リモート・ノードのナンス（すなわち、リモート・ノードのＣ３Ｐ層）を記録するために使用される。
【００１２】
ここで使用される用語「ナンス」は、再使用される可能性のない無作為の暗号化ナンス、カウンター或いは乱数又は疑似乱数である。一般に、こうしたナンスは、それぞれのセッションを他のセッションと一義的に識別するためにＣ３Ｐによって用いられる。つまり、ノードの衝突等々が起こったとき、Ｃ３Ｐは次回に初期化され、新しい一義的なＣ３Ｐセッションを示す新しい一義的なノードが確立される。
【００１３】
典型的には、カウンター状態変数（すなわち１２１ａ）は、各メッセージの送信毎に１だけ増分される単調増加変数であり、又は最後のメッセージの送出を識別する値である。１つの例において、カウンターはメッセージの送信毎に増分される。
【００１４】
典型的には、リモート・カウンター状態変数（すなわち１２３ａ）は、リモート・ノードから受信される最後の有効なＣ３Ｐメッセージのヘッダーによって示される、リモート・ノードのカウンター（すなわち、リモート・ノードのＣ３Ｐ層）を記録するのに用いられる。
【００１５】
一般に、アプリケーションは、送出されるべきメッセージを他のノードへ、更にＣ３Ｐ層へ渡す。典型的には、Ｃ３Ｐ層は（図１に関連して説明した）Ｃ３Ｐヘッダーを追加し、メッセージを送出バッファーに一時記憶し、メッセージをトランスポートへ渡すと、トランスポートはメッセージをネットワークを介して目標ノードへ送出する。典型的には、それぞれのＣ３Ｐ層は送出バッファーに単一の出力メッセージを一時記憶する。
【００１６】
有効なＣ３Ｐメッセージを受信すると、そのメッセージは、目標ノードのトランスポートがＣ３ＰメッセージをＣ３Ｐ層へ渡した後に、Ｃ３Ｐ受信・バッファーに記憶される。１つの例において、受信バッファーは１つ又は複数の入力メッセージを記憶する。Ｃ３Ｐ層はメッセージが有効であることを確かめ、Ｃ３Ｐヘッダーを除去し、対応のアプリケーションにメッセージを渡す。１つの例において、アプリケーションは、受信メッセージの処理を完了すると、このメッセージを受信バッファーから消去するようにＣ３Ｐ層に命令する。この例において、Ｃ３Ｐ層は受信バッファーが空になるまでメッセージを送出しない。メッセージの送出はメッセージの食い違いと均等であるからであり、アプリケーションは、以前に受信したメッセージを処理することなく新たなメッセージを送出する。
【００１７】
２つの通信するＣ３Ｐ層は、順序付けられたメッセージ配信をアプリケーションに提供するために、及び、メッセージ競争又はメッセージの食い違いを回避するために相互運用する。ここで使用される用語「メッセージ競争」、「メッセージの食い違い」又は「食い違い」は、第１のノードが第２のノードへメッセージを送出したとき、第２のノードが第１のノードからのメッセージを受信する前に、第２のノードが第１のノードへメッセージを送出する状況を意味する。
こうした状況は、メッセージの食い違い状態又はメッセージ競争状態を生じる。この状況については、図８に関連して一層詳細に記述される。
【００１８】
ここで使用される用語「ノード」は、ネットワーク等を介して一義的にアドレス指定可能であり又は一義的に識別可能であり、ネットワークを介して他のノードと通信するよう動作可能な任意のコンピューター・システム、デバイス又はプロセスを意味する。例えば、ノードは、パーソナル・コンピューター、サーバー・コンピューター、携帯型又はラップトップ型デバイス、タブレット・デバイス、マルチプロセッサー・システム、マイクロプロセッサーをベースとするシステム、セットトップ・ボックス、家庭用電化製品、ネットワークＰＣ、ミニコンピューター、マインフレーム・コンピューター、一義的に識別可能なソフトウェア・アプリケーション等々であるが、これらに限定されない。コンピューター・システム９００の形の、ノードＡ及びノードＢのようなノードの一例は、図９と関して後述する。
【００１９】
図２は、例示のＣ３Ｐヘッダー２１０を含む例示の食い違い取り消しプロトコル（Ｃ３Ｐ）メッセージ２００を示すブロック図である。典型的には、Ｃ３Ｐメッセージ２００は、メッセージ・フィールド２２０及びＣ３Ｐヘッダー２１０におけるアプリケーション・メッセージ（アプリケーションによって提供されるメッセージ、パケット、データ等）からなる。１つの例において、Ｃ３Ｐヘッダー２１０は４つのフィールド、すなわち、ナンス２１１，リモート・ナンス２１２，カウンター２１３及びリモート・カウンター２１４に状態情報を含む。この例において、状態値は６４ビット数である。ナンス２１１とカウンター２１３との値は、典型的には、メッセージの送出毎に、送出するＣ３Ｐの対応する状態変数から取り出される。典型的には、リモート・ナンス２１２とリモート・カウンター２１４との値は、送出するＣ３Ｐのリモート・ナンス状態変数とリモート・カウンター状態変数とから取り出され、これらの状態変数の値は、典型的には、リモート・ノードから受信された最後の有効なＣ３Ｐメッセージのヘッダーから取得される。Ｃ３Ｐピング・メッセージは、アプリケーション・メッセージ２２０を含まないＣ３Ｐメッセージのバージョンである。
【００２０】
図３は、例示の食い違い取り消しプロトコル状態図３００を示すブロック図である。一般に、特定のＣ３Ｐインスタンスは２つの状態、すなわち、Ｃ３Ｐ正常状態３１０とＣ３Ｐ競争処理状態３２０との間で遷移する。Ｃ３Ｐインスタンスは、成功裏に初期化されると、典型的にはＣ３Ｐ正常状態３１０に入る。正常な（非Ｃ３Ｐピング）Ｃ３Ｐメッセージが送出されると、Ｃ３Ｐは、矢印３３０で示すように、Ｃ３Ｐ正常状態へ遷移する。Ｃ３Ｐは、Ｃ３Ｐメッセージの食い違いが検出されるまで、Ｃ３Ｐ正常状態３３０にとどまる。図５と関連して説明するように、Ｃ３Ｐメッセージの食い違いが検出されると、Ｃ３Ｐは矢印３４０で示すようにＣ３Ｐ競争処理状態３２０へ遷移する。Ｃ３Ｐは、メッセージの食い違いではないＣ３Ｐメッセージが受信されるまで、Ｃ３Ｐ競争処理状態３２０にとどまる。別のメッセージと食い違ったＣ３Ｐメッセージが受信されるたびに、Ｃ３Ｐは、矢印３５０で示すように、Ｃ３Ｐ競争処理状態３２０へ遷移する。順序付けられたＣ３Ｐメッセージ（Ｃ３Ｐピング、又はアプリケーション・メッセージを含まないＣ３Ｐメッセージ）が受信され、又は、他の適宜の状態（図７に関連して説明する）が合致すると、Ｃ３Ｐは、矢印３６０で示すように、Ｃ３Ｐ正常状態３１０へ遷移する。
【００２１】
図４は、食い違い取り消しプロトコル・インスタンスを初期化するための、及びメッセージを送出するための例示の方法４００を示すブロック図である。Ｃ３Ｐ初期化はブロック４１０及び４２０で示すステップを含む。ホスト側のノードがＣ３Ｐインスタンスを開始するたびに、初期化のステップが実行される。一般に、これは、ノードが新たなＣ３Ｐインスタンスを開始して特定の新たなリモート・ノードと通信する各時点、及び、ノードがＣ３Ｐセッション期間に再始動（例えば、リブート又は衝突再始動）する各時点を含む。
【００２２】
ブロック４１０は、図１に関連して説明された、Ｃ３Ｐのナンス状態変数を初期化することを示す。典型的には、これは、新たなナンス値を生成することによって行われる。１つの例において、ナンスは、典型的には以前のナンスと相違する乱数として生成される。ナンス状態変数が初期化されると、典型的には方法４００はブロック４２０へ続く。
【００２３】
ブロック４２０は、図１に関連して説明された、Ｃ３Ｐのカウンター状態変数を初期化することを示している。典型的には、これは、新たなカウンター値を生成することによって行われる。１つの例において、カウンターはゼロへ初期化される。カウンター状態変数が初期化されると、典型的には、Ｃ３Ｐ初期化は完了して方法４００は図ロック４３０へ続く。
【００２４】
典型的には、ブロック４３０は、送出すべきアプリケーション・メッセージを待機することを示している。Ｃ３Ｐは、初期化されると、送出されるべきメッセージを待機する。典型的には、メッセージはアプリケーション等によって提供される。送出されるべきメッセージが利用可能になると、典型的には方法４００はブロック４４０へ続く。
【００２５】
典型的には、ブロック４４０は、図１に関連して説明された、カウンター状態変数値を増分することを示す。カウンター状態変数は、１だけ又は２以上だけ増分され得る。カウンター状態変数が増分されると、典型的には方法４００はブロック４５０へ続く。
【００２６】
典型的には、ブロック４５０は、Ｃ３Ｐメッセージをフォーマットして送出することを示す。典型的には、フォーマット処理は、アプリケーション（ステップ４３０についての説明を参照）によって提供されるメッセージにＣ３Ｐヘッダーを追加することによって実行される。典型的には、Ｃ３Ｐヘッダーとメッセージとは、図２と関連して説明したように構成される。１つの例において、Ｃ３Ｐメッセージは、図１に関連して説明されたトランスポートへＣ３Ｐメッセージを渡すことによって送出される。メッセージが送出されると、典型的には方法４００はブロック４３０へ続く。
【００２７】
図５は、食い違い取り消しプロトコル・メッセージを処理してメッセージの食い違いを検出する例示の方法５００を示すブロック図である。典型的には、方法５００は、図３と関連して説明されたＣ３Ｐ正常状態の期間にＣ３Ｐメッセージを受信するＣ３Ｐインスタンスによって実行される。一般に、方法５００は、入力メッセージのヘッダーにおける状態情報を、図１に関連して説明された、メッセージを受信するＣ３Ｐインスタンスに記憶されている状態情報と比較する。
【００２８】
典型的には、ブロック５１０はＣ３Ｐメッセージを受信することを示している。典型的には、こうしたメッセージは、図２に関連して説明された状態情報を含むＣ３Ｐヘッダーを含んでいる。メッセージが受信されると、典型的には方法５００はブロック５２０へ進む。
【００２９】
典型的には、ブロック５２０は、入力メッセージのヘッダーのナンス値が正しいかどうかを決定する。１つの例において、入力メッセージのヘッダーのナンス・フィールド（図２の項目２１１）が、受信側のＣ３Ｐインスタンスの状態情報のリモート・ナンス・フィールド図１の項目１２４ａ）に記憶された値と比較される。これらの２つの値が一致しない（例えば、等しくない）ならば、受信側のＣ３Ｐメッセージは、最後のメッセージが受信されないので送出側のＣ３Ｐインスタンスは衝突を起こしたと仮定する。２つの値が一致しない場合、典型的には、方法５００はブロック５３０へ進む。一致するならば、典型的には方法５００はブロック５５０へ進む。
【００３０】
典型的には、ブロック５３０は受信側のＣ３Ｐインスタンスの状態情報を無効にすることを示している。１つの例において、これは、それぞれのリモート状態値（すなわち、図１の項目１２３ａ〜１２４ａ）をゼロにセットすることによって行われる。状態情報が無効にされると、典型的には、アプリケーションは、リモートＣ３Ｐインスタンスが衝突を経験したことを感知し、典型的には方法５００はブロック５４０へ進む。
【００３１】
典型的には、ブロック５４０は、受信側のＣ３Ｐインスタンスのリモート・ナンス（すなわち、図１の項目１２４ａ）を、入力メッセージのナンス・フィールド（図２の項目２１１）における値にセットすることを示している。リモート・ナンスの状態値がセットされると、方法５００はブロック５５０へ進む。
【００３２】
典型的には、ブロック５５０は、入力メッセージのヘッダーのカウンター値が正しいかどうかを決定することを示している。１つの例において、入力メッセージのヘッダーのカウンター・フィールド（図２の項目２１３）における値は、受信側のＣ３Ｐインスタンスの状態情報のリモート・カウンター・フィールド（図１の項目１２３ａ）に記憶された値よりも完全に大きい。入力カウンターの方が大きくないならば、受信側のＣ３Ｐインスタンスは、入力メッセージ又は後のメッセージを既に受信したと仮定する。入力カウンターの方が大きくない場合、典型的には方法５００はブロック５５２へ進む。その他の場合には、典型的には方法５００はブロック５６０へ進む。
【００３３】
典型的には、ブロック５５２は、入力メッセージを削除することを示している。これは、入力メッセージが既に受信されているから、又は後のメッセージが既に受信されているからである（ブロック５５０参照）。入力メッセージが削除されると、典型的には方法５００はブロック５１０へ進む。
【００３４】
典型的には、ブロック５６０は、受信側のＣ３Ｐインスタンスのリモート・カウンター・フィールド（図１の項目１２３ａ）を、入力メッセージのカウンター・フィールド（図２の項目２１３）における値にセットすることを示している。リモート・カウンターの状態値がセットされると、方法５００はブロック５７０へ進む。
【００３５】
典型的には、ブロック５７０は、入力メッセージのヘッダーのリモート・カウンター値とリモート・ナンス値とが正しいかどうかを決定することを示している。１つの例において、入力メッセージのヘッダーのリモート・カウンター・フィールド（図２の項目２１４）における値は、受信側のＣ３Ｐインスタンスの状態情報のカウンター・フィールド（図１の項目１２１ａ）に記憶された値と一致し（例えば、等しく）、入力メッセージのヘッダーのリモート・ナンス・フィールド（図２の項目２１２）における値は、ゼロであるか、又は、受信側のＣ３Ｐインスタンスの状態情報のナンス・フィールド（図１の項目１２２ａ）に記憶された値と一致する。入力リモート・カウンターが一致しない場合、又は、入力リモート・ナンスがゼロではないし一致もしない場合、受信側のＣ３Ｐインスタンスは、１つ又は複数のメッセージが食い違ったと仮定する。入力リモート・カウンターが一致しない場合、又は、入力リモート・ナンスがゼロではないし一致もしない場合、典型的には方法５００はブロック５７２へ進む。その他の場合、典型的には方法５００はブロック５８０へ進む。
【００３６】
典型的には、ブロック５７２は、受信側のＣ３ＰインスタンスがＣ３Ｐ競争処理状態（図３に関連して説明された）に入ることを示している。典型的には、Ｃ３Ｐ競争処理状態に入ることは、入力メッセージを削除することを含む。Ｃ３Ｐ競争処理状態での処理は、図７に関連して説明される。
【００３７】
典型的には、ブロック５８０は入力メッセージを受信アプリケーションへ渡すことを示している。この時点で、入力メッセージは有効であると決定される。１つの例において、Ｃ３Ｐヘッダーは、渡される前にメッセージから取り去られる。メッセージが渡されると、典型的には方法５００はブロック５１０へ進む。
【００３８】
図６は、２つの例示のノード間での順序付けられたメッセージ伝送を示すタイミング図６００である。矢印６１０はノードＡのための同時線であり、矢印６１１はノードＢのための対応する同時線である。状態ブロック６１２は同時線の開始時でのノードＡの例示の初期状態を示しており、状態ブロック６１３は同時線の開始時でのノードＢの例示の初期状態を示している。状態ブロック６１２、６１３等及びそれらに含まれるフィールドは、図１に関連して説明されたものに対応する。特に、フィールド６１２ａは図１のフィールド１２１ａに対応し、フィールド６１２ｂは図１のフィールド１２３ａに対応し、フィールド６１２ｃは図１のフィールド１２２ａに対応し、フィールド６１２ｄは図１のフィールド１２４ａに対応する。種々の状態フィールドの値は単なる例であり、実際には適宜の値であってよい。典型的には、それぞれのノードは、図３に関連して説明されたとおり、Ｃ３Ｐ正常状態へ初期化され、典型的には、図５に関連して説明された方法５００に従って動作する。１つの例において、同じフィールドは６４ビット値をサポートし、以下の表Ａ及びＢに示すように初期化される。
【００３９】
【表１】
2010541042.tif 000003
【００４０】
【表２】
2010541042.tif 000004
【００４１】
ノードＡ及びノードＢの初期状態の例である表Ａ及び表Ｂに示すように、それぞれのノードはそれ自身のナンスを知っているが、リモート・ナンス・フィールドに１６進法の（０ｘ０）で示す初期値ゼロによって示されるように、他方のノードのナンスは知らない。また、それらの初期状態において、それぞれのノードはそれ自身のカウンター（図示のように、ゼロへ初期化される）を知っているが、リモート・カウンター・フィールドに初期値ゼロ（０）によって示されるように、他方のノードのカウンターは知らない。ナンス・フィールドはランダムな値によって初期化される。他の例においては、ゼロ以外の初期値が用いられ得、及び／又は、他方のノードの初期値は既知であり得る。
【００４２】
タイミング図６００は、矢印及びメッセージ・ヘッダー６２０によって示されるように、ノードＢがノードＡに対して最初のメッセージを送出することを示している。メッセージ・ヘッダーは、ノードＢのナンス値（Ｎ＝９８）と、ノードＡのナンス（ＲＮ＝０。現時点ではノードＢには知られていない）と、ノードＢの増分されたカウンター値（Ｃ＝１１。メッセージ６２０の送出前の状態６１３のＣ＝１０から増分された）と、ノードＡのカウンター値（ＲＣ＝０。現時点ではノードＢには知られていない）とを含む。状態ブロック６１５はメッセージ６２０の送出後のノードＢの状態を示している。
【００４３】
メッセージ６２０を受信すると、ノードＡは、状態ブロック６１４で示すように、メッセージ６２０のヘッダーからの情報によりノードＡの状態を更新する。この時点で、ノードＡはノードＢのナンス（ＲＮ＝９８）とノードＢのメッセージ・カウンター（ＲＣ＝１１）を知り、状態６１４はこれを示すように更新される。ノードＡはメッセージ６２０がノードＢからの最初のメッセージであることを知る。これは、メッセージ６２０の受信時に、ノードＢに対するノードＡの状態情報（リモート・ナンスとリモート・カウンター）が初期状態（ゼロ）にセットされたからである。
【００４４】
タイミング図６００において、矢印及びメッセージ・ヘッダー６３０で示されるように、ノードＡはノードＢに対してメッセージを送出する。メッセージ・ヘッダーは、ノードＡのナンス値（Ｎ＝１２）と、ノードＡの増分されたカウンター値（Ｃ＝１。メッセージ６３０の送出前の状態６１２のＣ＝０から増分された）と、ノードＢのナンス値（ＲＮ＝９８。メッセージ６２０によりノードＡには既知である）と、ノードＢのカウンター値（Ｒ＝１１。メッセージ６２０によりノードＡには既知である）とを含む。状態ブロック６１６はメッセージ６３０の送出後のノードＡの状態を示している。
【００４５】
メッセージ６３０を受信すると、ノードＢは、状態ブロック６１７によって示されるように、メッセージ６３０のヘッダーからの情報でノードＢの状態を更新する。この時点で、ノードＢはノードＡのナンス（ＲＮ＝１２）とノードＡのメッセージ・カウンター（ＲＣ＝１）とを知り、状態６１７はこれを示すように更新される。ノードＢはメッセージ６３０がノードＡからの最初のメッセージであることを知る。これは、メッセージ６３０の受信時にノードＡに対するノードＢの状態情報（リモート・ナンスとリモート・カウンター）が初期値（ゼロ）にセットされたからである。
【００４６】
タイミング図６００において、ノードＢは、矢印及びメッセージ・ヘッダー６４０で示されるように、ノードＡに対して次のメッセージを送出する。メッセージ・ヘッダーは、ノードＢのナンス値（Ｎ＝９８）と、ノードＢの増分されたカウンター値（Ｃ＝１２。メッセージ６４０の送出前の状態６１７のＣ＝１１から増分された）と、ノードＡのナンス値（ＲＮ＝１２。メッセージ６３０によりノードＢには既知である）と、ノードＡのカウンター値（ＲＣ＝１。メッセージ６３０によりノードＢには既知である）とを含む。状態ブロック６１９はメッセージ６４０送出後のノードＢの状態を示している。
【００４７】
メッセージ６４０を受信すると、ノードＡは、ノードＢに対するノードＡの状態値（リモート・ナンスとリモート・カウンター）が初期値にセットされないことを決定する。したがって、ノードＡは、ノードＢからのメッセージ・ヘッダー６４０におけるナンス値８Ｎ＝９８）がノードＢに対する状態６１６のナンス値（ＲＮ＝９８）と一致することを確認する。一致が存在すると、ノードＡは、ノードＢのＣ３Ｐセッションがリセットされなかったことを知る。ノードＢから最後のメッセージが受信されたからである。また、ノードＡは、ノードＢからのメッセージ・ヘッダー６４０におけるカウンター値（Ｃ＝１２）の方がノードＢに対する状態６１６のカウンター値（ＲＣ＝１１）よりも大きいことを確認する。入力メッセージのカウンターの方がノードＢに対するノードＡの状態のカウンターよりも大きいならば、ノードＡはメッセージ６４０すなわち後のメッセージがまだ受信されてはいないことを知る。また、ノードＡは、ノードＢからのメッセージ・ヘッダー６４０におけるリモート・カウンター値（Ｃ＝１）がノードＡのカウンターに対する状態６１６のカウンター値（Ｃ＝１）と一致することを確認する。一致が存在すると、ノードＡは、ノードＢがノードＡからのメッセージ６３０の受信前にメッセージ６４０を送信しなかったこと、すなわち、メッセージの食い違いがなかったことを知る。メッセージ６４０のナンスとカウンターが有効であり、メッセージの食い違いがないならば、ノードＡは、状態ブロック６１８により示されるように、メッセージ６４０のヘッダーからの情報でノードＡの状態を更新する。同様にして、他の順序付けられたメッセージがノードＡとノードＢとの間で送出される。
【００４８】
図７は、競争処理状態において食い違い取り消しプロトコル・メッセージを処理するための例示の方法７００を示すブロック図である。典型的には、方法７００は、図３に関連して説明されたＣ３Ｐ競争処理状態においてＣ３ＰインスタンスがＣ３Ｐメッセージを受信することによって実行される。一般に、方法７００は、入力メッセージのヘッダーにおける状態情報を、図１に関連して説明された、メッセージを受信するＣ３Ｐインスタンスに記憶された状態情報と比較する。
【００４９】
典型的には、ブロック７１０は、Ｃ３Ｐインスタンスが入力Ｃ３Ｐメッセージを受信することを示している。こうした入力メッセージは、図２に関連して説明されたＣ３Ｐメッセージであっても、図２及び図８に関連して説明されるＣ３Ｐピング・メッセージであってもよい。典型的には、こうしたメッセージは、到来すると、単一のメッセージ受信バッファーに一時記憶される。メッセージが到来すると、典型的には方法７００はブロック７４０へ進む。メッセージが到来するまで、典型的には方法７００はブロック７２０へ進む。
【００５０】
典型的には、ブロック７２０は、Ｃ３Ｐピング・メッセージを送出する時間であるかどうかを決定することを示している。１つの例において、ピング・メッセージは、Ｃ３Ｐ競争処理状態において、バックオフ（ｂａｃｋ−ｏｆｆ）アルゴリズムに基づいて或る区間（例えば、５０ミリ秒の区間で開始して、Ｃ３Ｐ正常状態へ戻る結果とならない各ピングにより区間を２倍にする）で送出される。ピング・メッセージを送出する時間になると、典型的には方法７００はブロック７３０へ進む。その他の場合、典型的には方法７００はブロック７１０へ続き、入力メッセージを待つ。
【００５１】
典型的には、ブロック７３０は、Ｃ３Ｐピング・メッセージを送出することを示している。典型的には、これは、図２に関連して説明されたように、現在の状態情報に基づいてメッセージ・ヘッダーを構成することを含む。ピング・メッセージが送出されると、典型的には方法７００はブロック７１０へ進む。
【００５２】
典型的には、ブロック７４０は入力メッセージを検証することを示している。１つの例において、これは、図５のブロック５２０〜５７０に関連して説明された、Ｃ３Ｐインスタンスの状態変数に対してメッセージ・ヘッダー値をチェックすることによって実行される。入力メッセージのヘッダー値の中に正しくないものがあれば、典型的には方法７００はブロック７４２へ進む。その他の場合には、典型的には方法７００はブロック７４４へ進む。
【００５３】
典型的には、ブロック７４２は、入力メッセージを削除することを示している。入力メッセージが削除されると、典型的には方法７００はブロック７１０へ進む。
【００５４】
典型的には、ブロック７４４は、入力メッセージのヘッダー値に基づいてＣ３Ｐインスタンスの状態変数を更新することを示している。１つの例において、これは、図５のブロック５２０〜５７０に関連して説明された、Ｃ３Ｐインスタンスの状態変数に対してメッセージ・ヘッダー値をチェックすることによって実行される。状態変数が更新されると、典型的には方法７００はブロック７５０へ進む。
【００５５】
典型的には、ブロック７５０は、一時記憶されたメッセージが送出バッファーに存在するかどうか、及び、入力メッセージがピング・メッセージであるかどうかを決定することを示している。一時記憶されたメッセージが送出バッファーに存在し、入力メッセージがピング・メッセージであるならば、典型的には方法７００はブロック７６０へ進む。その他の場合、典型的には方法７００はブロック７７０へ進む。
【００５６】
典型的には、ブロック７６０は、送出バッファーにおけるメッセージを送出することを示している。一般に、このメッセージは、以前に送出された非ピング・メッセージであるが競争処理状態にあり、ピング・メッセージの受信は一時記憶されたメッセージを再送する結果を生じる。一時記憶されたメッセージが送出されると、典型的には方法７００はブロック７７０へ進む。
【００５７】
典型的には、ブロック７７０は、Ｃ３ＰインスタンスがＣ３Ｐ競争処理状態からＣ３Ｐ正常状態へ遷移することを示している。Ｃ３Ｐ正常状態においては、典型的には、図５に関連して説明されたように処理が継続される。
【００５８】
図８は、図６のタイミング図６００の延長であって、メッセージの食い違いとその後の回復との例を示すタイミング図６００ｂである。矢印６１０ｂはノードＡに対する同時線６１０の継続部分であり、矢印６１１ｂはノードＢに対する同時線６１１の継続部分である。状態ブロック８１２は、同時線６１０、６１０ｂ上での、図６の状態ブロック６１８と同じ時点を表している。状態ブロック８１３は、同時線６１１、６１１ｂ上での、図６の状態ブロック６１９と同じ時点を表している。メッセージの食い違いの例はメッセージ８２０と８３０との間に示されている。
【００５９】
タイミング図６００ｂにおいて、ノードＡは、矢印及びメッセージ・ヘッダー８２０で示すように、ノードＢに対してメッセージを送出するが、ノードＢは、ノードＡからメッセージ８２０を受信する前に、矢印及びメッセージ・ヘッダー８３０で示すように、ノードＡに対してメッセージを送出する。この結果、順序付けられたメッセージ伝送ではない、メッセージの食い違いが生じる。
【００６０】
メッセージ８２０を受信すると、ノードＢは、ノードＡからのメッセージ・ヘッダー８２０におけるリモート・カウンター値（ＲＣ＝１２）が、ノードＢのカウンターに対する状態情報８１５のカウンター値（Ｃ＝１３）と一致しないことを検出する。この例において、これはメッセージ８２０と８３０との食い違いによる。すなわち、ノードＡとノードＢとは、それぞれ相手からのメッセージを受信する前に相手に対してメッセージを送出したため、それぞれのノードの状態情報が相手の状態情報と非同期状態になったのである。同様に、メッセージ８３０を受信すると、ノードＡは、ノードＢからのメッセージ・ヘッダー８３０におけるリモート・カウンター値（ＲＣ＝１）が、ノードＡのカウンターに対する状態情報８１４のカウンター値（Ｃ＝２）と一致しないこと、すなわち、メッセージの食い違いを検出する。この例において、食い違ったメッセージ８２０、８３０は、典型的には、受信側のノードによって削除され、それぞれのノードは、図３に関連して説明されたＣ３Ｐ競争処理状態に入る。
【００６１】
そこで、タイミング図６００ｂにおいて、ノードＡは、点線の矢印及びメッセージ・ヘッダー８４０で示すように、ノードＢにピング・メッセージを送出する。典型的には、Ｃ３Ｐピング・メッセージは図２のＣ３Ｐメッセージのようなメッセージであるが、アプリケーション・メッセージ２２０の部分が含まれない。こうしたピング・メッセージは図２のＣ３Ｐヘッダー２１０のようなメッセージ・ヘッダーを含むが、アプリケーション・メッセージを含まない。代わりに又は更に、ノードＢは、同様にＣ３Ｐ競争処理状態にあるノードＡに対してピング・メッセージを送出することができる。一般に、ピング・メッセージは現在のナンスとカウンターとのデータを含むので、受信側のノードに送出側のノードの最新の状態情報を提供することができる。こうした各ピング・メッセージは、受信側のノードに対して「受信側のノードが送出する番である」ことを通信する。
【００６２】
ピング・メッセージ８４０を受信すると、ノードＢは入力メッセージのヘッダー情報をノードＢの状態情報８１７と比較し、入力メッセージのナンス・フィールド（Ｎ＝１２）がノードＢのリモート・ナンスの状態値（ＲＮ＝１２）と一致すること、入力メッセージのカウンター（Ｃ＝３）の方がノードＢのリモート・カウンターの状態値（ＲＣ＝２）よりも大きいこと、及び、入力メッセージのリモート・カウンター値（ＲＣ＝１３）がそのカウンターの状態値（Ｃ＝１３）と一致することを確認する。こうして、ノードＢは、ピング・メッセージが有効であることを確認し、入力ピング・メッセージに基づいて状態情報８１９を更新し、Ｃ３Ｐ競争処理状態からＣ３Ｐ正常状態へ遷移する。また、ノードＢは、矢印及びメッセージ・ヘッダー８５０によって示されるように、その送出バッファー内のメッセージ８３０を再送する。
【００６３】
メッセージ８５０を受信すると、ノードＡは、入力メッセージのヘッダー情報をノードＡの状態情報８１８と比較し、そのメッセージが有効であることを確認する。入力メッセージ８５０は有効であるから、ノードＡはＣ３Ｐ競争処理状態からＣ３Ｐ正常状態へ遷移する。メッセージ８５０は有効だから、また、メッセージ８５０はＣ３Ｐピング・メッセージではないので、ノードＡはアプリケーション・メッセージ８２０を送出バッファーから削除しなければならないことを認識する。食い違いを生じる唯一のメッセージが配信されるが、この例においてはノードＡに一時記憶されたメッセージが、配信されてはならないメッセージである。
【００６４】
この時点で、ノードＡとノードＢはＣ３Ｐ競争処理状態からＣ３Ｐ正常状態へ成功裏に遷移しており、順序付けられたメッセージ通信が継続される。
【００６５】
競争処理状態から出る代替の方法を採用することもできる。例えば、Ｃ３Ｐ競争処理状態にあるノードは、特定の数のピング・メッセージを送出した後に競争処理状態から出ることができる。こうした変更は、順序付けられたメッセージ通信の再開を遅らせるという否定的な結果を有するが、ネットワーク・リソースを保存するという肯定的な結果を有する。別の例として、食い違いが検出されたときに１度だけピング・メッセージを送出する代わりに、それぞれのノードは、更新されないカウンター値を持つ正常なメッセージを送出する。こうした変更は、メッセージの更なる食い違いが生じたならば、相当多量のネットワーク・リソースを使用するという否定的な結果を生じる（これは、アプリケーション・メッセージの方がＣ３Ｐピング・メッセージよりもずっと大きいからである）が、メッセージの更なる食い違いが生じないならば、余分なメッセージ遅延を回避するという肯定的な結果を有する。第３の例として、通信中のノードＡとノードＢとの間のナンスは、伝送制御プロトコル（ＴＣＰ）におけるＳＹＮ／ＳＹＮハンドシェークに類似したハンドシェークを使用することにより、単一のナンスに変わる。これは、Ｃ３Ｐ層とＣ３Ｐヘッダーとに関連する状態を低減するという肯定的な結果を有するが、２つのノードがＣ３Ｐを介して初めて通信するときに追加のメッセージを必要とするという否定的な結果を有することになる。
【００６６】
図９は、本明細書で記述する技術が実装される例示のコンピューティング環境９００を示すブロック図である。適切なコンピューティング環境は多くの汎用の又は特殊目的のシステムにより実装される。周知のシステムの例は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナル・コンピューター（ＰＣ）、手持ちの又はラップトップ型のデバイス、マイクロプロセッサーをベースとするシステム、マイクロプロセッサー・システム、サーバー、ワークステーション、家庭用電化製品、セットトップ・ボックス等を含むが、これに限定されない。
【００６７】
典型的には、コンピューティング環境９００は、周辺のデバイス９０２、９０３、９０４等の種々のコンポーネントに結合されたコンピューティング装置９０１の形態の汎用コンピューティング・システムを備える。コンピューター・システム９００は、１つ又は複数の入力／出力（Ｉ／Ｏ）インターフェース９１２を介して、入力装置９０３（音声認識装置、タッチ・パッド、キーボード、及び／又は、マウスやトラックボールのようなポインティング装置を含む）等の種々の他のコンポーネントと結合する。コンピューティング装置９０１のコンポーネントは、１つ又は複数のプロセッサー（中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、マイクロプロセッサー（μＰ）等を含む）９０７と、システム・メモリー９０９と、典型的には種々のコンポーネントを結合するシステム・バス９０８とを含む。典型的には、プロセッサー９０７は、コンピューティング装置９０１を制御するために、及び、ネットワーク接続９１４等の種々の通信接続を介して他の電子的な及び／又はコンピューターによる装置、システム又は環境（図示せず）と通信するために、種々のコンピューター実行可能命令を処理し、実行する。システム・バス９０８は任意の数の複数のタイプのバス構造を表しており、メモリー・バス又はメモリー・コントローラー、ペリフェラル・バス、シリアル・バス、アクセラレーテッド・グラフィックス・ポート、及び、種々のバス・アーキテクチャーのうちの任意のものを使用するプロセッサー・バス又はローカル・バス等々を含む。
【００６８】
システム・メモリー９０９は、ランダム・アクセス・メモリー（ＲＡＭ）のような揮発性メモリーや、リード・オンリー・メモリー（ＲＯＭ）又はフラッシュ・メモリー（ＦＬＡＳＨ）のような不揮発性メモリーの形態のコンピューター読み取り可能媒体を含むことができる。基本入力／出力システム（ＢＩＯＳ）は不揮発性メモリー等に記憶される。典型的には、システム・メモリー９０９は、１つ又は複数のプロセッサー９０７に対してアクセス可能であってプロセッサー９０７上で操作されるデータ、コンピューター実行可能命令及び／又はプログラム・モジュールを記憶する。
【００６９】
大容量記憶装置９０４、９１０は、システム・バスと結合することにより、コンピューティング装置９０１と結合され、又はコンピューティング装置９０１に組み込まれる。こうした大容量記憶装置９０４、９１０は、不揮発性のＲＡＭ、例えばフロッピー（登録商標）・ディスクのような取り外し可能で不揮発性の磁気ディスク９０５との間で読み書きを行う磁気ディスク・ドライブ、及び／又は、ＣＤ  ＲＯＭ、ＤＶＤ、ＤＶＤ  ＲＯＭのような光ディスク９０６との間で読み書きを行う光ディスク・ドライブを備えている。代わりに、ハード・ディスク９１０のような大容量記憶装置が、取り外し不可能な記憶媒体を備えていてもよい。他の大容量記憶装置には、メモリー・カード、メモリー・スティック、テープ記憶装置等が含まれる。
【００７０】
大容量記憶装置９１０、他の記憶装置９０４、９０５、９０６及びシステム・メモリー９０９に、任意の数のコンピューター・プログラム、ファイル、データ構造等が記憶される。システム・メモリー９０９は、例えば、オペレーティング・システム、アプリケーション・プログラム、データ・ファイル、ディレクトリー構造、コンピューター実行可能命令等を含むが、これに限定されない。
【００７１】
表示装置９０２のような出力コンポーネント又は装置が、典型的にはインターフェース（ディスプレイ・アダプター９１１等）を介してコンピューティング装置９０１と結合される。出力装置９０２は液晶表示装置（ＬＣＤ）であり得る。他の例の出力装置は、プリンター、オーディオ出力、音声出力、陰極線管（ＣＲＴ）表示装置、触知装置又は他の感知出力機構等を含むことができる。出力装置は、コンピューティング装置９０１がオペレーターや他のマシン、システム、コンピューティング環境等と対話することを可能にする。ユーザーは、タッチ・パッド、ボタン、キーボード、マウス、ジョイスティック、ゲーム・パッド、データ・ポート等のような任意の数の異なるＩ／Ｏ装置９０３を介してコンピューティング環境９００と連動する。これらの及び他のＩ／Ｏ装置は、システム・バス９０８と結合されるＩ／Ｏインターフェース９１２を介してプロセッサー９０７と結合され、及び／又は、パラレル・ポート、ゲーム・ポート、ユニバーサル・シリアル・バス（ＵＳＢ）、ファイヤ・ライン、赤外線（ＩＲ）ポート等のような他のインターフェース及びバスによって結合される。
【００７２】
コンピューティング装置９０１は、１つ又は複数のセルラー・ネットワーク、無線ネットワーク、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、インターネット無線リンク、光リンク等を介した、１つ又は複数の遠隔コンピューティング装置との通信接続により、ネットワーク環境において動作する。コンピューティング装置９０１は、ネットワーク・アダプター９１３等を介して、又はモデム、デジタル加入者線（ＤＳＬ）リンク、デジタル総合サービス網（ＩＳＤＮ）リンク、インターネット・リンク・無線リンク等を介してネットワークと結合される。
【００７３】
典型的には、ネットワーク接続のような通信接続９１４は、ネットワークのような通信媒体との結合を提供する。典型的には、通信媒体は、搬送波その他のトランスポート機構のような被変調データ信号を用いて、コンピューター読み取り可能命令、コンピューター実行可能命令、データ構造、ファイル、プログラム・モジュール及び他のデータを提供する。典型的には、用語「被変調データ信号」は、１つ又は複数の特徴セットを有する信号、又は、該信号に情報を符号化するように変更された信号を意味する。例えば、通信媒体は、有線ネットワークや直結有線接続のような有線接続と、音響、無線周波数、赤外線又は他の無線通信機構のような無線媒体とを含むが、これに限定されない。
【００７４】
典型的には、電池や電源装置のような電源９９０はコンピューティング環境９００の全部の部分に電力を提供する。コンピューティング環境９００がモバイル装置又は携帯装置等である場合、電源９９０は電池である。代わりに、コンピューティング環境９００がデスクトップ・コンピューターやサーバー等である場合、電源９９０は壁コンセントのような交流（ＡＣ）電源と接続するように設計された電源装置であってよい。
【００７５】
モバイル装置の中には、図９に関連して説明されたコンポーネントのうちの多くを備えないものがある。例えば、電子バッジは巻き線と単純な処理装置９０７とからなり、巻き線はカード・リーダー装置等の近くにあるときに電源９９０として動作するよう構成されている。こうした巻き線は処理装置９０７等と結合されるアンテナとしても動作し、この巻き線のアンテナは電子バッジとカード・リーダー装置との間の通信の形を提供することができる。こうした通信はネットワークを含まないが、代わりに、テレメトリー、ポイント・ツー・ポイント、ＲＦ、ＩＲ又は他の手段を介する汎用の又は特殊目的の通信であり得る。電子カードはディスプレイ９０２、Ｉ／Ｏ装置９０３、又は図９に関連して説明されたコンポーネントのうちの多くを備えない。例えば、図９に関連して説明されたコンポーネントのうちの多くを備えない他のモバイル装置には、電子ブレスレット、電子タグ、埋め込み可能な装置等が含まれるが、これらに限定されない。
【００７６】
当業者は認識するように、コンピューター実行可能命令、コンピューター読み取り可能命令及びデータを提供するのに利用される記憶装置はネットワーク上に分散していてもよい。例えば、リモート・コンピューター又は記憶装置が、ソフトウェア／アプリケーションやデータの形でコンピューター実行可能命令やコンピューター読み取り可能命令を記憶することができる。ローカル・コンピューターはネットワークを介してリモート・コンピューターにアクセスしてソフトウェア／アプリケーションやデータの全部又は一部をダウンロードし、コンピューター実行可能命令を実行する。代わりに、ローカル・コンピューターは必要なソフトウェア又はデータをダウンロードし、又は、命令の一部をローカル・コンピューターで実行し、他の一部をリモート・コンピューター及び／又はリモート装置で実行することによって、ソフトウェアを分散的に処理する。
【００７７】
また、当業者であれば理解するように、慣用の技術を利用することにより、ソフトウェアのコンピューター実行可能命令の全部又は一部を、デジタル信号プロセッサー（ＤＳＰ）、プログラマブル論理アレイ（ＰＬＡ）、ディスクリート回路等のような専用電子回路により実行することができる。用語「電子装置」は、ソフトウェア又はファームウェア等を備えたコンピューティング装置や家庭電化製品、又は、ソフトウェアやファームウェア等を備えない電子装置又は回路を含み得る。
【００７８】
典型的には、用語「ファームウェア」は、ＲＯＭのような電子デバイスに維持された、実行可能命令、符号、データ、アプリケーション、プログラム等を意味する。一般に、用語「ソフトウェア」は、任意の形式のコンピューター読み取り可能媒体に維持された、実行可能命令、符号、データ、アプリケーション、プログラム等を意味する。典型的には、用語「コンピューター読み取り可能媒体」は、システム・メモリー、記憶装置及びそれらに関連した媒体等を意味する。
【００７９】
本発明の原理及び前記の例が適用される多くの可能な実施の形態を考慮すると、理解されるとおり、ここに記述された例は単なる例であり、本発明の範囲を限定するものと考えてはならない。したがって、本明細書に記載された発明は、請求項及びその均等物の範囲内に入る全部の実施の形態を想定している。
【図１】
2010541042.tif 000005
【図２】
2010541042.tif 000006
【図３】
2010541042.tif 000007
【図４】
2010541042.tif 000008
【図５】
2010541042.tif 000009
【図６】
2010541042.tif 000010
【図７】
2010541042.tif 000011
【図８】
2010541042.tif 000012
【図９】
2010541042.tif 000013
【国際調査報告】
2010541042.tif 000014
2010541042.tif 000015