(57)【要約】  基礎となるネーティブ・アプリケーションに余分な要件を強いることなく、アプリケーション接続に対して外部から、帯域外（ＯＯＢ）技法を採用することによって、ネットワーク・アドレス変換（ＮＡＴ）デバイスの接続状態を維持するアーキテクチャ。ＯＯＢの解決策は、任意の接続に適用することができ、アプリケーション・プロトコルに対する修正を必要とせず、ＴＣＰおよびＵＤＰで動作する。キープ・アライブ（ＫＡ）アプリケーションを、ＫＡパケットを注入するＯＯＢメカニズムとして採用する。ＫＡパケットは、ＮＡＴデバイスには、ネーティブ接続から来ているように見える。これら注入されたパケットは、ＮＡＴデバイスを騙して、その接続に対する不活性タイマをリセットさせるが、ネーティブ・アプリケーションを騙したり混乱させることはなく、ネーティブ・アプリケーションはなりすましに気が付かない。したがって、接続がＮＡＴタイムアウトのために終了することはなく、例えば、クライアント／サーバー・プロトコルは、接続を生かしておくために偽の活動パケットを発生する必要がない。【選択図】図１
2010520668.tif 000002
【特許請求の範囲】
【請求項１】
接続管理を容易にするコンピューター実装システム（１００）であって、
ソフトウェア・エンティティ間に任意の通信接続を設ける接続コンポーネント（１０２）と、
前記接続を維持するために、帯域外（ＯＯＢ）信号を前記接続コンポーネントに送るキープ・ライブ・コンポーネント（１０６）と、
を備えている、コンピューター実装システム。
【請求項２】
請求項１記載のシステムにおいて、前記任意の通信接続は、トランスポート・レイヤー接続指向エンド・ツー・エンド・プロトコルに対応する、システム。
【請求項３】
請求項１記載のシステムにおいて、前記任意の通信接続は、トランスポート・レイヤー無接続プロトコルに対応する、システム。
【請求項４】
請求項１記載のシステムにおいて、前記接続コンポーネントは、個人ネットワークの公衆ネットワークとの接続を容易にするネットワーク・アドレス変換（ＮＡＴ）デバイスを含む、システム。
【請求項５】
請求項１記載のシステムにおいて、前記ＯＯＢ信号は、前記キープ・アライブ・コンポーネントによって、前記ソフトウェア・エンティティ間にある接続に挿入されるキープ・アライブ・パケットである、システム。
【請求項６】
請求項１記載のシステムにおいて、前記キープ・アライブ・コンポーネントは、前記ソフトウェア・エンティティとは別個のアプリケーションであり、該アプリケーションは、ＴＣＰ／ＩＰシステム・テーブルのテーブル活動に基づいて、前記ＯＯＢ信号を発生し、前記ソフトウェア・エンティティ間にある前記接続への前記ＯＯＢ信号の挿入を容易にする、システム。
【請求項７】
請求項１記載のシステムにおいて、前記キープ・アライブ・コンポーネントは、前記接続コンポーネントのタイムアウト期間を監視し、該タイムアウト期間に基づいてキープ・アライブ・リフレッシュ期間を採用し、該リフレッシュ期間に元図いて前記ＯＯＢ信号を発生し、前記接続に挿入する、システム。
【請求項８】
請求項１記載のシステムにおいて、前記確立する接続の両側にある前記ソフトウェア・エンティティは、クライアントおよびサーバー上に対応して位置する、システム。
【請求項９】
請求項８記載のシステムにおいて、前記キープ・アライブ・コンポーネントは、サーバー系キープ・アライブ・アプリケーションと、クライアント系キープ・アライブ・アプリケーションとを備えており、前記サーバー系およびクライアント系キープ・ライブ・アプリケーションは、前記接続を維持するために、前記接続コンポーネントを通じてキープ・アライブ・パケットを伝達する、システム。
【請求項１０】
請求項１記載のシステムにおいて、前記キープ・アライブ・コンポーネントは、前記ＯＯＢ信号が前記接続コンポーネントによって処理された後、前記ＯＯＢ信号を除去する、システム。
【請求項１１】
コンピューター実装接続管理方法であって、
異種システムのネーティブ・アプリケーション間にＮＡＴ接続を確立するステップ（５０４）と、
前記接続を維持するために、キープ・アライブ・パケットを前記接続ＯＯＢに自動的に挿入するステップ（５０６）と、
を備えている、方法。
【請求項１２】
請求項１１記載の方法であって、更に、所定の接続方針に基づいて、前記キープ・アライブ・パケットを前記接続に自動的に挿入するステップを備えている、方法。
【請求項１３】
請求項１１記載の方法において、送信制御プロトコル（ＴＣＰ）通信トランスポート技術によって、ＮＡＴ接続を容易にする、方法。
【請求項１４】
請求項１１記載の方法であって、更に、前記ネーティブ・アプリケーションに対して対応するキープ・アライブ・アプリケーションを起動するステップを備えており、前記キープ・アライブ・アプリケーションは、ＯＯＢを伝達し合い、ＴＣＰ／ＩＰシステム・テーブルにおける新たなエントリーに基づいて、前記接続を維持するために前記キープ・アライブ・パケットを前記接続に自動的に挿入する、方法。
【請求項１５】
請求項１４記載の方法において、前記キープ・アライブ・アプリケーションは、前記ネーティブ・アプリケーションと関連のある、対応システム・テーブルを監視して接続状態を調べ、該接続状態に基づいて前記キープ・アライブ・パケットを送るのを中断する、方法。
【請求項１６】
請求項１１記載の方法であって、更に、
前記ネーティブ・アプリケーションの少なくとも１つと関連のあるプロトコル番号、発信元ＩＰアドレス、発信元ポート番号、宛先ＩＰアドレス、または宛先ポート番号の内少なくとも２つを含むタプルを発見するステップと、
前記タプルを利用するキープ・アライブ・パケットに基づいて、ＮＡＴタイマをリセットするステップと、
を備えている、方法。
【請求項１７】
請求項１１記載の方法であって、更に、前記キープ・アライブ・パケットが前記ネーティブ・アプリケーションに到達する前に、該キープ・アライブ・パケットを除去するステップを備えている、方法。
【請求項１８】
請求項１１記載の方法であって、更に、前記ネーティブ・アプリケーションの少なくとも１つの帯域内活動に基づいて、キープ・アライブ・アプリケーションを自動的に起動するステップを備えている、方法。
【請求項１９】
請求項１１記載の方法であって、更に、１つ以上のキープ・アライブ・アプリケーションを自動的に起動し、採用するトランスポート・プロトコルの種類に基づいて、前記１つ以上のキープ・アライブ・アプリケーションを通じて前記キープ・アライブ・パケットを挿入するステップを備えている、方法。
【請求項２０】
コンピューター実装システム（３００）であって、
ネーティブ・アプリケーション間にＮＡＴ接続を自動的に確立するコンピューター実装手段（３０６）と、
前記ネーティブ・アプリケーションの対応するキープ・アライブ・アプリケーションを自動的に起動するコンピューター実装手段（１０６）と、
システム・テーブルに基づいて、不活性について接続を監視するコンピューター実装手段（１０６）と、
前記不活性を検知したことに応答して、キープ・アライブ・パケットを自動的に挿入し、前記キープ・アライブ・パケットは、ＴＣＰに基づいて前記キープ・アライブ・アプリケーション双方から挿入するか、またはＵＤＰパケットに基づいて前記キープ・アライブ・アプリケーションの一方から挿入する、コンピューター実装手段（１０６）と、
を備えている、コンピューター実装システム（３００）。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティング・デバイスおよびネットワーキングにおける技術進歩により、多種多様の情報およびサービスへのアクセスが容易となり、事実上世界のどこからでもアクセスが可能となっている。その上、コンピューターや携帯デバイスの数が増大し続けるため、各デバイスがネットワーク上にあるときに、一意に識別することが接続(connectivity)に必要となることもあり得る。加入してネットワーク・デバイス毎に別個の（または固定）ＩＰアドレスを取得するための余分な費用をかけるのではなく、ネットワーク・アドレス変換（ＮＡＴ）と呼ばれる技法によって、ルータ背後にある、または内部（または個人）ネットワーク上にある多数のＩＰノードが、１つの公開ＩＰアドレスを共有することが可能になっている。言い換えると、１組の未登録ＩＰアドレスを内部ネットワーク・トラフィックに使用させ、別の１組のＩＰアドレスを外部トラフィック即ち公開トラフィックに使用させる規格が設けられている。
【０００２】
通例、ＮＡＴデバイスは、接続タイムアウト・タイマを採用する。接続タイムアウト・タイマは、ネーティブ・アプリケーション間において接続状態をマッピングするために、設定変更可能なタイムアウト期間を有する。テーブル・エントリーにマッピングする特定のＮＡＴポートが、タイムアウト期間よりも長い間インバウンド・トラフィックにもアウトバウンド・トラフィックにも用いられないと、その接続に対するＮＡＴタイマが時間切れとなり、エントリーはテーブルから抹消される。一旦エントリーが抹消されると、ＮＡＴの背後にある共有ノードにはもはやこの接続を通じて到達することができなくなり、新たな接続を開始しなければならない（例えば、共有ノードによって）。
【０００３】
ＮＡＴタイマが終了する（即ち、時間切れとなる）のを防止する慣例的なメカニズムに、「キープ・アライブ」（ＫＡ：keep-alive)または「ハートビート」処理として知られているものがある。キープ・アライブの下では、タイマをリセットする（またはリフレッシュする）ためのＮＡＴタイムアウト期間よりも短い間隔で、接続上に無駄なトラフィックを発生させ、これによって接続をアクティブに維持する。バッテリ電力を主要電源として用いる携帯デバイス（例えば、スマート・フォン）の場合、従来のキープ・アライブ技法では電池の寿命に影響を及ぼし、接続を生かしておくために多大なワイヤレス活動が発生する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＮＡＴを通じて長寿命の接続を提供するための解決策の１つは、ネーティブ・アプリケーション・プロトコルの一部としてキープ・アライブ・メカニズムを構築することである（帯域内解決策(in-band solution)）。しかしながら、従来のメカニズムに対する欠点は、次のことを含む。ＫＡメカニズムを受け入れるためには、基礎となるネーティブ・アプリケーション・プロトコルを修正しなければならない。ＫＡメカニズムを旧来のアプリケーションに合わせて後付けすることができず、アプリケーションのアップグレードを展開しなければならない。そして、ＫＡメカニズムに対するあらゆる更新がコア・アプリケーション・プロトコルに影響を及ぼすため、それに合わせて検査しなければならない。
【０００５】
加えて、従来のＫＡメカニズムを最適化することは、帯域内制約のために困難である。帯域内制約には次のことが含まれる可能性がある。層状ネーティブ・アプリケーション・ヘッダ（例えば、大型ＨＴＴＰ−ハイパーテキスト・マークアップ言語およびＳＯＡＰ−単純オブジェクト・アクセス・プロトコル・ヘッダ）を受け入れるために、ＫＡパケット・サイズが不必要に増大せざるを得ない。アプリケーション・ロジックがＫＡロジックを束縛し、余分なネットワーク接続が必要となる可能性がある。アプリケーション・レベルでは、高速障害モード検出や復元をサポートできない場合がある。アプリケーション開発者は、基本的にシステム・レベルの解決策であるものを完成させるために確保すべき必要な資源、時間、または費用を賄うことができない場合がある。移動体のローミングや異なるネットワーキング環境に適応することおよび応答することが難しい。
【０００６】
以下に提案するのは、本明細書に記載する新規な実施形態の基本的な理解が得られるようにするための、簡略化した摘要である。この摘要は、広範囲に及び全体像ではなく、鍵となる要素／肝要な要素を特定することや、その範囲を正確に叙述することを意図するのではない。その唯一の目的は、一部の概念を、後に提案する更に詳細な説明の序文として、簡略化した形態で提案することである。
【課題を解決するための手段】
【０００７】
開示するアーキテクチャは、基礎となるネーティブ・アプリケーションおよび／またはアプリケーション・プロトコルには要件や修正を全く強いることなく、ネーティブ・アプリケーション接続の外部から適用することができる帯域外（ＯＯＢ）技法を採用することによって、ネットワーク・アドレス変換（ＮＡＴ）デバイスの接続状態を存続したまま維持する解決策を提供する。この技法は、ＯＯＢの様式でネーティブ・アプリケーションと動作する、別個のキープ・アライブ（ＫＡ）アプリケーションを設け、接続を維持するためにネーティブ・アプリケーション接続にＫＡパケットを注入し、その後ＫＡパケットがネーティブ・アプリケーションに到達する前にＫＡパケットを除去する（例えば、欠落させる）。代替実施態様では、ＫＡパケットを除去せずに、ネーティブ・アプリケーションによって処理する（例えば、フィルタ処理、欠落、．．．）。
【０００８】
本アーキテクチャは、一般的なＮＡＴ状態管理メカニズムにおける「論理ホール」(logical hole)を利用する。これらの論理ホールは「バグ」ではなく、したがってセキュリティホールとは見なされず、単にインライン・ネットワーキング・デバイスに課される制約の人為構造である。１つの論理ホールの性質は、接続活動に基づいてＮＡＴ状態を維持することに関する。ＮＡＴデバイスは、アクティブな接続毎にタイムアウト・タイマを始動させ、接続にトラフィック（例えば、パケット活動）が生じる毎に、接続のタイムアウト（即ち、不活性）タイマをリセットする。所与の接続においてトラフィックが検出されない場合、タイムアウト・タイマはその接続に対して終了し、接続は作用しなくなる。更に、ＮＡＴは通例トラフィックの正当性（例えば、トラフィックが来た終点）を検証しない。
【０００９】
この論理ホールを利用し、更にクライアント／サーバー環境の一例では、クライアントおよび／またはサーバー上で走る第２ネットワークＫＡアプリケーションをＯＯＢメカニズムとして採用し、なりすましパケットを注入することができる。なりすましパケットは、ネーティブ接続から来ているように見える。これらの注入されたパケットは、ＮＡＴデバイスを騙して、その接続に対する不活性タイマをリセットさせるが、ネーティブ・アプリケーションを騙したり混乱させることはなく、ネーティブ・アプリケーションはなりすましに気付かないでいることができる。このために、ＮＡＴタイムアウトのために接続が終了することはなく、したがって、クライアント／サーバー・プロトコルは、接続を生かしておくために、偽の活動パケットを発生する必要がない。
【００１０】
本アーキテクチャは、ＮＡＴデバイスを通じて、任意の不活性ネットワーク接続に永続性を与え、ＴＣＰ（送信制御プロトコル）のような接続指向エンド・ツー・エンド・トランスポート・プロトコルおよびＵＤＰ（ユーザ・データーグラム・プロトコル）のような無接続トランスポート・プロトコルと動作する。
【００１１】
前述の目的および関連する目的の遂行のために、開示する新規なアーキテクチャのある種の例示的態様について、本明細書では以下の説明および添付図面と関連付けて記載する。しかしながら、これらの態様は、本明細書に開示する原理を採用することができる種々の方法の内の数個に過ぎず、そのような態様の全ておよびその均等物を含むことを意図している。他の利点や新規な特徴も、以下の詳細な説明を図面と合わせて考察することにより、明白となろう。
【図面の簡単な説明】
【００１２】
【図１】図１は、一実施形態にしたがって接続管理を容易にするコンピューター実装システムを示す。
【図２】図２は、接続のネーティブ・アプリケーション毎にキープ・アライブ（ＫＡ）アプリケーションを採用するシステムを示す。
【図３】図３は、帯域外（ＯＯＢ）ＫＡパケットを用いて接続を維持するクライアント／サーバー・システムを示す。
【図４】図４は、多数の接続に対する接続状態を処理するためにＫＡアプリケーションが動作する代替システムを示す。
【図５】図５は、ＯＯＢ  ＫＡ管理方法を示す。
【図６】図６は、接続方針に基づく接続管理方法を示す。
【図７】図７は、トランスポート・プロトコルに基づくＮＡＴ接続不活性を管理する方法を示す。
【図８】図８は、接続管理のためにＫＡパケットを発生し利用する方法を示す。
【図９】図９は、開示したＫＡアーキテクチャを実行するように動作可能なコンピューティングシステムのブロック図を示す。
【図１０】図１０は、ＯＯＢ  ＫＡ処理を採用することができるコンピューティング環境の一例の模式ブロック図を示す。
【発明を実施するための形態】
【００１３】
開示するアーキテクチャは、ネーティブ・アプリケーションに何の要件も修正も賦課することなく、外部からネーティブ・アプリケーションに適用することができる帯域外（ＯＯＢ）技法を採用することによって、ネットワーク・アドレス変換（ＮＡＴ）デバイスおよび／またはソフトウェアの接続を存続させるための解決策を提供する。このアーキテクチャは、一般的なＮＡＴ状態管理メカニズムにおいて「論理ホール」(logical hole)を利用して、ＯＯＢ発信元（例えば、アプリケーション）からなりすまし（または、キープ・アライブ（ＫＡ））パケットを注入する。ＯＯＢ発信元は、ＮＡＴデバイスの観点からは、ネーティブ接続の一部であるように見える。これらの注入パケットは、ＮＡＴデバイスに、その接続に対する不活性タイマをリセットさせるが、ネーティブ・アプリケーションを騙したり混乱させることはなく、ネーティブ・アプリケーションはなりすましに気が付かないでいることができる。したがって、接続（例えば、ＴＣＰ送信制御プロトコルまたはＵＤＰ−ユーザ・データーグラム・プロトコルに基づく）がＮＡＴタイムアウトによって終了することはなく、したがって、クライアント／サーバー・プロトコルは、例えば、接続を存続させておくために偽の帯域内ＫＡパケットを発生しなくてもよい。
【００１４】
これより図面を参照するが、全体を通じて同様の要素を指すために同様の参照番号を用いることとする。以下の記載では、説明の目的上、完全な理解が得られるようにするために、多数の具体的な詳細を明記する。しかしながら、新規な実施形態はこれら具体的な詳細がなくても実用可能であることは明白であろう。一方、周知の構造やデバイスは、その説明を容易にするために、ブロック図形態で示すこととする。
【００１５】
最初に図面を参照すると、図１は、一実施形態による接続管理を容易にするコンピューター実施システム１００を示す。システム１００は、ソフトウェア・エンティティ１０４（ソフトウェア・エンティティ1およびソフトウェア・エンティティ２で示す）間に任意の通信接続を提供する接続コンポーネント１０２（例えば、ＮＡＴデバイス）を含む。また、システム１００は、ＯＯＢ  ＫＡパケット（または信号）を送るために接続コンポーネント１０２にインターフェースするキープ・アライブ・コンポーネント１０６も含む。ＯＯＢ  ＫＡパケットは、接続を維持するために、接続コンポーネント１０２によって処理される。
【００１６】
一実施態様では、ＫＡコンポーネント１０６は、ソフトウェア・エンティティ１０４が位置するコンピューティングシステム上におけるＴＣＰ／ＩＰスタック・システム・テーブルの活動(activity)を監視する。例えば、新たなテーブル・エントリーは、ＫＡパケットを挿入することができる新たな接続を示す。ＴＣＰ／ＩＰテーブルは、ソフトウェア・エンティティが位置するシステムにおいて監視することができる。例えば、クライアント・システム・テーブルを監視することができる。同様に、サーバーを伴う場合、サーバー・システムＴＣＰ／ＩＰテーブルへの入力活動（例えば、除去または新たなエントリー）を監視することができる。
【００１７】
代替的かつ任意の実施態様では、ソフトウェア・エンティティ１０４の一方または双方の接続パケット活動を、ＫＡコンポーネント１０６が監視することができ、その活動に基づいて、ＫＡパケットを接続に挿入する。ＫＡパケットは、ＫＡコンポーネント１０６によって、外部からまたは接続コンポーネント１０２のいずれかの側または両側から（例えば、その接続を通じてパケットを導出する他のネットワーク・デバイスによって）、接続コンポーネント１０２の対応する接続に挿入し、挿入されたＫＡパケットが接続コンポーネント１０２によって通常の帯域内トラフィックとして認知されるようにすることができる。次いで、ＫＡパケットは、接続コンポーネント１０２によって検出された各パケットの発生時に（帯域内および／またはキープ・アライブ）その接続に対する接続タイマをリセットする。
【００１８】
システム・テーブルは、ＫＡコンポーネント１０６によって直接監視すること、および／または接続コンポーネント１０２を通じて間接的に監視することができる。例えば、テーブル活動が、接続を維持すべきことを示す場合、ＫＡコンポーネント１０６はＫＡパケットをその接続に注入して、接続コンポーネント１０２がＫＡパケットを処理して、接続タイマをリセットし、接続を維持する。
【００１９】
代替的かつ任意の実施態様では、ソフトウェア・エンティティ１０４の１つ以上が監視した接続パケット活動（またはそれがないこと）をＫＡコンポーネント１０６に伝達し、ＫＡコンポーネント１０６にＫＡパケットを接続コンポーネント１０２に送らせることができる。次いで、接続コンポーネント１０２は、自己処理およびタイムアウト・タイマのリセットのために、ＫＡパケットを接続に挿入する。更に別の例では、ＫＡコンポーネント１０６によって直接監視した接続パケット不活性に基づいて、そしてそれでもなお接続を存続させておきたいという要望に基づいて、ＫＡコンポーネント１０６は接続を通じて帯域内ＫＡパケットを発生し、その接続に対するタイムアウト・タイマをリセットするように、ソフトウェア・エンティティ１０４の一方または双方に通知することができる。ソフトウェア・エンティティ１０４がＫＡアプリケーションである場合、ＫＡコンポーネント１０６は、接続を維持するために、ＯＯＢパケットを接続に挿入するように、ソフトウェア・エンティティ１０４のいずれかまたは双方に通知することができる。尚、テーブルにおける不活性や帯域内パケット・トラフィックには関係なく、ＫＡパケットを周期的に送ることができることは言うまでもない。
【００２０】
システム１００の一実施態様は、ＮＡＴデバイスを接続コンポーネント１０２の一部として含み、ソフトウェア・エンティティ１０４がＮＡＴデバイスを経由して互いに通信するようになっている。ソフトウェア・エンティティ１０４は（ネーティブ・アプリケーションとして）、ＮＡＴを経由して接続を通じて違いに通信することにより、帯域内（ネーティブ・アプリケーション間のみ）パケットの通常伝達によって、アクティブ接続を作成する。ＮＡＴデバイスは、タイムアウト・タイマを有し、ネーティブ・アプリケーション１０４からの帯域内パケットの受信に基づいて、継続的にタイマをリセットする。
【００２１】
しかしながら、これまでは、タイムアウト期間以内に帯域内パケットがＮＡＴデバイスによって受信されないと、ＮＡＴは接続を打ち切り、アプリケーションはＮＡＴデバイスを通じて接続を確立し直す必要があった。本アーキテクチャはこの問題を解決するにあたり、少なくとも１つのＫＡアプリケーション（例えば、ＫＡコンポーネント１０６の一部として）を備え、これが１つ以上のネーティブ・アプリケーション１０４と共に起動して、ＫＡアプリケーションがＫＡパケットを発生して接続に挿入し、ＮＡＴデバイスに自動的にタイムアウト・タイマをリセットさせるようにすることにより、接続を維持する。テーブル・エントリーがシステム・テーブルから除去されると、ＫＡパケットはもはや接続には挿入されない。
【００２２】
一実施態様では、ＫＡコンポーネント１０６は、オペレーティング・システムのＴＣＰ／ＩＰテーブルにおいて新たなエントリーを検知したことに応答して、ＫＡアプリケーションを起動する。つまり、ＮＡＴデバイスを通じて動作する多数の異なる接続を管理することができる。別の実施態様では、ネーティブ・アプリケーション（またはソフトウェア・エンティティ１０４）毎に、１つのＫＡアプリケーションを起動する。ここでは、接続を切断したままにするべきであると判断するまで、ＫＡパケットをしかるべきＮＡＴ接続に挿入することによって、ネーティブ・アプリケーションが帯域内パケット通信およびＯＯＢパケット活動に関するＫＡアプリケーションのキャリーを処理する。これを図２において更に詳細に説明する。
【００２３】
図２は、接続のネーティブ・アプリケーション毎にＫＡアプリケーションを採用するシステム２００を示す。ここでは、ＫＡコンポーネント１０６は２つのＫＡアプリケーション２０２、即ち、第１ＫＡアプリケーション２０４（ＫＡ  ＡＰＰ１で示す）および第２ＫＡアプリケーション（ＫＡ  ＡＰＰ２で示す）を備えている。第１ＫＡアプリケーション２０４および／または第２ＫＡアプリケーション２０６の一方または双方は、システム・テーブル・エントリーの活動を監視する。新たなテーブル・エントリーを検出すると（例えば、ＴＣＰ／ＩＰシステム・テーブルにおいて）、ＫＡアプリケーション（２０４または／および２０６）の一方または双方は、ＫＡパケットを接続に挿入し始める。
【００２４】
代替的かつ任意の実施形態では、接続維持がテーブル活動ではなくパケット・トラフィックに基づく場合、第１ＫＡアプリケーション２０４は、接続コンポーネント１０２（例えば、ＮＡＴデバイス）と第１ネーティブ・アプリケーション（ネーティブAPP1で示す）との間におけるネーティブ・パケット・トラフィックを監視し、および／または第２ＫＡアプリケーション２０６は、接続コンポーネント１０２と第２ネーティブ・アプリケーション２１０（ネーティブAPP2）との間におけるネーティブ・パケット・トラフィックを監視する。本明細書において記載する場合、ネーティブ・アプリケーション（２０８および２１０）は帯域内で通信すると言い、ＫＡアプリケーション（２０４および２０６）はＯＯＢで通信すると言う。第１ネーティブ・アプリケーション・システムと関連のあるシステム・テーブルを監視することにより、第１ネーティブ・アプリケーションのネットワーク５−タプル(network 5-tuple)（例えば、プロトコル番号、発信元ＩＰアドレス、発信元ポート、宛先ＩＰアドレス、および宛先ポート）を発見することができる。この情報に基づいて、第１ＫＡアプリケーション２０４は、接続コンポーネント１０２のタイムアウトを観察し、これに基づいて所望のＫＡリフレッシュ期間を観察し採用することができる。ＫＡリフレッシュ期間は、接続コンポーネント１０２のタイムアウト期間よりも短く、その接続のタイムアウト期間が過ぎ去る前にＫＡパケットが送られるようになっている。例えば、タイムアウト期間が１５分であるとすると、リフレッシュは１０分（または、タイムアウト期間よりも短く適した値であれば、他のいずれでもよい）となるように選択することができる。
【００２５】
１つの代替的かつ任意の動作では、リフレッシュ期間に基づいて、第１ＫＡアプリケーション２０４は、接続コンポーネント１０２の各タイムアウト期間が過ぎ去る前に、ＫＡパケットを接続に注入する。勿論、これは、第１ネーティブ・アプリケーション２０８のパケット活動に基づく。言い換えると、第１ネーティブ・アプリケーション２０８が、例えば、第１ネーティブ・アプリケーション２０８から第１ＫＡアプリケーション２０４への信号によって、第２ネーティブ・アプリケーション２１０との通信がもはや望まれていないことを示した場合、第１ＫＡアプリケーション２０４はＫＡパケットを接続に注入させるのを中止する。このため、接続コンポーネント１０２はここで接続を終了させ、接続は作用しなくなる。
【００２６】
一実施形態では、第１ＫＡアプリケーション２０４がＫＡパケットを送っているとき、第２ＫＡアプリケーション２０６はＫＡパケットを除去する。つまり、第２ネーティブ・アプリケーション２１０はＫＡアプリケーションを不必要に扱う必要がない。
【００２７】
同様な任意の動作によれば、システム・デーブルの代わりに、第２ネーティブ・アプリケーション２１０と接続コンポーネント１０２との間においてパケット・トラフィックを環視することにより、第２ＫＡアプリケーション２０６は第２ネーティブ・アプリケーションのネットワーク５−タプル（例えば、プロトコル番号、発信元ＩＰアドレス、発信元ポート、宛先ＩＰアドレス、および宛先ポート）を発見する。この情報に基づいて、第２ＫＡアプリケーション２０６は、接続コンポーネント１０２の観察したタイムアウトに基づいて、適したＫＡリフレッシュ期間を観察し採用することができる。リフレッシュ期間に基づいて、第２ＫＡアプリケーション２０６は、各タイムアウト期間が過ぎ去る前に、ＫＡパケットを接続に注入する。勿論、これは第２ネーティブ・アプリケーション２１０の活動に基づく。言い換えると、第２ネーティブ・アプリケーション２１０が、第１ネーティブ・アプリケーション２０８との通信がもはや望まれないことを示した場合、第２ＫＡアプリケーション２０６は、ＫＡパケットを接続に注入するのを中止する。このため、接続コンポーネント１０２はここで接続を終了させ、接続は作用しなくなる。
【００２８】
別の実施態様では、第２ＫＡアプリケーション２０６がＫＡパケットを送っているとき、第１ＫＡアプリケーション２０４はＫＡパケットを除去する。つまり、第１ネーティブ・アプリケーション２０８はＫＡアプリケーションを不必要に扱う必要がない。
【００２９】
別の動作によれば、第１および第２ネーティブ・アプリケーション（２０８および２１０）双方と接続コンポーネント１０２との間においてパケット・トラフィックを監視することによって、対応する第１および第２ＫＡアプリケーション（２０４および２０６）はネーティブ・アプリケーションのネットワーク５−タプルを発見する。この情報に基づいて、第１および第２ＫＡアプリケーション（２０４および２０６）は、接続コンポーネント１０２の観察したタイムアウトに基づいて、所望のＫＡリフレッシュ期間を観察し採用することができる。リフレッシュ期間に基づいて、第１および／または第２ＫＡアプリケーション（２０４および２０６）は、各タイムアウト期間が過ぎ去る前に、ＫＡパケットを接続に注入する。勿論、これは、対応する第１および第２ネーティブ・アプリケーション（２０８および２１０）の活動に基づく。更に別の実施態様では、双方のＫＡアプリケーション（２０４および２０６）は、ＮＡＴタイムアウトが過ぎ去る前のある時点において接続コンポーネント１０２の両側がリフレッシュされる限り、独立して動作することができる。
【００３０】
言い換えると、この任意の実施態様によれば、第２ネーティブ・アプリケーション２１０が、例えば、第２ネーティブ・アプリケーション２１０から第２ＫＡアプリケーション２０６への信号によって、第１ネーティブ・アプリケーション２０８との通信はもはや望まれていないことを示した場合、第２ＫＡアプリケーション２０６はＫＡパケットを接続に注入するのを中止する。同様に、第１ネーティブ・アプリケーション２０８が、第２ネーティブ・アプリケーション２１０との通信がもはや望まれていないことを示す場合、第１ＫＡアプリケーション２０４はＫＡパケットを接続に注入するのを中止する。このように、接続コンポーネント１０２はここで接続を終了させ、接続は作用しなくなる。第１および第２ＫＡアプリケーション（それぞれ、２０４および２０６）の双方がＫＡパケットを送っているとき、反対側の第２および第１ＫＡアプリケーション（それぞれ２０６および２０４）は、受信したＫＡパケットを除去することができる。つまり、第１および第２ネーティブ・アプリケーション（２０８および２１０）はＫＡパケットを処理するように構成しなければならない。
【００３１】
図３は、ＯＯＢ  ＫＡパケットを用いて接続を維持するクライアント／サーバー・システム３００を示す。更に具体的には、クライアント／サーバーを想定した場合、クライアント３０４のクライアント・ネーティブ・アプリケーション３０２は、ＮＡＴデバイス３０６を通じて、サーバー３１０のサーバー・ネーティブ・アプリケーション３０８への長寿命ＵＤＰまたはＴＣＰ接続を開く。このアーキテクチャは、ＴＣＰのようなエンド・ツー・エンド・トランスポート・プロトコルや、ＵＤＰのような無接続トランスポート・プロトコルを用いて動作する。また、クライアント３０４はファイアウオール、フィルタリング、または多重化コンポーネント３１２（以後、総合的にファイアウオール３１２と呼ぶ）も含むことができ、これを通じて通信を行う。通信は、クライアントＴＣＰ／ＩＰスタックおよびテーブル３１４によって、ＮＡＴデバイス３０６の接続、サーバーＴＣＰ／ＩＰスタックおよびテーブル３１６、ならびにサーバー・ファイアウオール３１８を通じて進められ、サーバー・ネーティブ・アプリケーション３０８に到達する。スタック（３１４および３１６）には、関連するＴＣＰ／ＩＰシステム・テーブルがあり、このＴＣＰ／ＩＰシステム・テーブルは、新たな接続毎に新たなテーブル・エントリーを用いて更新し、欠落した接続に対するテーブル・エントリーを抜き取る。
【００３２】
一実施態様によれば、ＫＡアプリケーション（まとめてＫＡコンポーネント１０６と記載する）をクライアント３０４およびサーバー３１０双方の上で起動する。クライアントＫＡアプリケーション３２０は、クライアント３０４上で起動し、サーバーＫＡアプリケーション３２２はサーバー３１０上で起動する。尚、ＫＡコンポーネントのアプリケーション（３２０および３２２）は、背景プロセスとして連続的に走るように、オペレーティング・システム（クライアントおよびサーバー）と共に起動することができることは言うまでもない。前述のように、ネットワーキング５−タプル（例えば、プロトコル番号、発信元ＩＰアドレス、発信元ポート、宛先ＩＰアドレス、および宛先ポート）は、ＫＡコンポーネント１０６（クライアントおよびサーバーＫＡ（３２０および／または３２２）の一方または双方）によって、ＴＣＰ／ＩＰスタック（３１４および３１６）と関連のあるＴＣＰ／ＩＰテーブルによって発見することができる。
【００３３】
ＫＡアプリケーション（３２０および３２２）は、協同してまたは独立して、所望のＫＡリフレッシュ期間を観察し採用することができる（観察したＮＡＴタイムアウトに基づく）。例えば、ＮＡＴデバイス３０６の背後にあるクライアント３０４（例えば、個人側(private side)）がサーバー３１０（公開側）へのＴＣＰ接続を開き、その後静粛（パケット活動なし）を維持していると仮定する。この接続を確立したことにより、クライアントＴＣＰ／ＩＰシステム・テーブルには新たなエントリーが生ずる。従来の実施態様におけるように、ＫＡコンポーネント１０６がないと、ＮＡＴデバイス３０６は接続状態を終了させ、ＴＣＰ接続を無効にする。説明したＯＯＢのように動作するＫＡコンポーネント１０６の利用によって、ＴＣＰ接続がＮＡＴタイムアウトによって終了せず、したがってクライアント／サーバー・プロトコルは接続を生かしておくために「偽の」帯域内活動を生成する必要はないことを保証する。例えば、観察したＮＡＴタイムアウトが１５分である場合、リフレッシュ期間（または値）を１５分未満（例えば、１０分）にすることができる。一般に、ＫＡリフレッシュ期間は、観察したＮＡＴデバイスのタイムアウト期間未満となるように採用する。
【００３４】
動作において、ＫＡアプリケーション（３２０および３２２）は、協同してまたは独立して（トランスポート・プロトコルによって異なる）、クライアント３０４、サーバー３１０、またはクライアント３０４およびサーバー３１０双方から、ＫＡ（またはなりすまし）接続パケットを送る。ＫＡコンポーネント１０６は、ＮＡＴデバイス３０６の受信側においてなりすましパケットを除去するように機能し、これによって、受信するネーティブ・アプリケーションにおいてＫＡパケットを処理することによる混乱を解消する。
【００３５】
代替実施態様では、ＫＡコンポーネント１０６によるなりすましパケットの除去が行われるのは、ネーティブ・アプリケーション（クライアント・ネーティブ・アプリケーション３０２またはサーバー・ネーティブ・アプリケーション３０８）が、混乱のないように（またはエラーを生じないように）、なりすましパケットを処理できる十分なロバスト性があるときである。これは、なりすましパケットを認識し欠落させることを含むことができる。例えば、ＫＡパケットは、受信側において、パケット・データーを調べて、なりすましパケットを一意に定める情報を得ることによって、フィルタ処理および／または除去することができる。ＫＡパケットは、ゼロ・ペイロード・パケット（ヘッダのみを有する）とすることができる。他の方法も用いることができる。ＮＡＴデバイス３０６は、なりすましパケットを受信する毎（およびネーティブ・パケットの受信時）に、ＮＡＴ接続タイムアウトをリセットする。ＴＣＰ／ＩＰパケットの性質により、なりすましは生のＩＰレイヤーにおいて行われる。何故なら、ＵＤＰ／ＴＣＰプロトコルは、多数のアプリケーションが送り元および受信先双方について同じ５−タプルに結集する(bind)ことを許可しないからである。
【００３６】
ＫＡコンポーネント１０６は、それぞれのファイアウオール（３１２および３１８）および／またはシステムＴＣＰ／ＩＰスタックおよびテーブル（３１４および３１６）と通信することにより、ネーティブ・アプリケーションの５−タプルを発見することができる。加えて、ＫＡパケットの除去は、それぞれの受信ファイアウオール（３１２および３１８）が、フィルタリング機能性を用いることによって遂行することができる。更に、システム３００は、クライアント／サーバーという状況に制限されるのではなく、ピア・ツー・ピア・トポロジーにも適用可能である。
【００３７】
図４は、ＫＡアプリケーションが多数の接続について接続状態を処理するように動作する、代替システム４００を示す。システム４００は、ＮＡＴデバイス３０６を通じて第２システム４０４と通信しようとしている第１システム４０２（例えば、携帯コンピューター）を含む。第１システム４０２は、２つのネーティブ・アプリケーション、即ち、第１ネーティブ・アプリケーション４０６および第２ネーティブ・アプリケーション４０８を含む。また、第１システム４０２は、第１ＫＡアプリケーション４１０も含む。第１ＫＡアプリケーション４１０は、第１および第２ネーティブ・アプリケーション（４０６および４０８）にインターフェースして、第１システム４０２のＴＣＰ／ＩＰシステム・テーブル・エントリーによって、第１システム４０２のネーティブ・アプリケーション・システム（４０２および４０４）間における活動を監視する。任意に、第１ＫＡアプリケーション４１０は、ＮＡＴデバイス３０６を通じた接続の接続状態も監視することができる。
【００３８】
同様に、第２システム４０４（例えば、ウェブ・サーバー）もＮＡＴデバイス３０６を通じて第１システム４０２に通信する。この特定的な例では、第２システム４０４は、２つのネーティブ・アプリケーション、即ち、第３ネーティブ・アプリケーション４１２および第４ネーティブ・アプリケーション４１４を含む。また、第２システム４０４は第２ＫＡアプリケーション４１６も含む。第２ＫＡアプリケーション４１６は、第３および第４ネーティブ・アプリケーション（４１２および４１４）にインターフェースして、第２システム４０４のＴＣＰ／ＩＰシステム・テーブル・エントリーによって、第２システム４０４のネーティブ・アプリケーション活動を監視する。任意に、第２ＫＡアプリケーション４１６はＮＡＴデバイス３０６を通じたＮＡＴ接続の接続状態も監視することができる。
【００３９】
この例では、第１および第３ネーティブ・アプリケーション（４０６および４１２）はＮＡＴデバイス３０６を通じて第１接続（ＣＯＮ１で示す）を開き、第２および第４ネーティブ・アプリケーション（４０８および４１４）はＮＡＴデバイス３０６を通じて第２接続（ＣＯＮ２で示す）を開く。第１システム４０２における新たなＴＣＰ／ＩＰシステム・テーブル・エントリーおよび／または第２システム４０４における新たなＴＣＰ／ＩＰシステム・テーブル・エントリーに基づいて、第１および第２ＫＡアプリケーション（４１０および４１６）はＫＡパケットを対応する第１および第２接続に供給して、所望の第１および／または第２接続に対する接続状態を維持する。
【００４０】
初期状態において、アクティブなネーティブ・アプリケーションがいずれのシステム（４０２または４０４）にもない場合、ＫＡアプリケーション（４１０および４１６）を起動しない。第１ネーティブ・アプリケーション４０６がＮＡＴデバイス３０６を通じて第１接続を開くと、第１ＫＡアプリケーション４１０が起動して第１接続ＫＡパケットに対してリフレッシュ期間を採用する。例えば、第１接続は第３ネーティブ・アプリケーション４１２に対してアクティブであるが、しかしながら、この接続がインアクティブであり、第１接続がインアクティブでないことが望まれる場合、第１ＫＡアプリケーション４１０は自動的に第１接続ＫＡパケットを第１接続に挿入して、第１接続を維持する。第３ネーティブ・アプリケーション４１２において活動を検出すると、第２ＫＡアプリケーション４１６は、この時点では受信側ＫＡアプリケーションであり、受信したＫＡアプリケーションをパケット・ストリームから除外する。つまり、第３ネーティブ・アプリケーション４１２は、ＫＡパケット処理またはフィルタリングによって損なわれないパケット・ストリームを受信することができる。
【００４１】
第２ネーティブ・アプリケーション４０８がこの時点において活性化され、第４ネーティブ・アプリケーション４１４への第２接続を開くと、第１ＫＡアプリケーション４１０は既にＮＡＴデバイス３０６のリフレッシュ期間を知っており、したがって不活性制御が望まれる場合、第２接続（ＣＯＮ２）に対してＫＡ接続維持をＮＡＴデバイス３０６に適用する。このため、第１ＫＡアプリケーション４１０は１つのＮＡＴデバイス３０６によって多数の接続を管理することができる。代替動作では、第１ＫＡアプリケーション４１０は第１接続を管理し、一方第２システム４０４の第２ＫＡアプリケーション４１６は第２接続を管理する。尚、多数の接続に対して多数のポートを有するＮＡＴデバイスの典型的な実施態様では、多重接続ＫＡ管理も実行可能であることは理解できよう。
【００４２】
図５は、ＯＯＢ  ＫＡ管理方法を示す。説明を簡単にする目的に沿って、ここに示す１つ以上の方法は、例えば、フロー・チャート即ち流れ図の形態で示し、一連の動作として示し説明するが、これらの方法は動作の順には限定されず、一部の動作は、これによれば、ここに示し説明するものとは異なる順序で、および／または他の動作と同時に行われてもよいことは言うまでもないことであり、認められよう。例えば、１つの方法は、状態図におけるように、一連の相互に関連する状態またはイベントとして表すこともできることは、当業者には理解され認められるであろう。更に、１つの方法の図示する動作全てが、新規な実施態様に必要ではない場合もある。
【００４３】
５００において、異なるシステムのネーティブ・アプリケーション間においてＮＡＴ接続を開く。５０２において、ＮＡＴ接続に対してリフレッシュ期間を決定する。言い換えると、ＫＡアプリケーションは、リフレッシュ値のテーブルを含むことができ、これに基づいてＫＡパケットを送信する。リフレッシュ値は、ＫＡアプリケーションにおいてハード・コード化することができ（例えば、３０秒毎）、あるいはＫＡアプリケーションが、予め計算した値を用いることもできる。任意に、リフレッシュ期間は、ＮＡＴタイムアウト期間に基づいて、関連するＫＡアプリケーションによって自動的に計算することができる。５０４において、システム・テーブル活動に基づいて、接続を監視する。５０６において、送出側で選択したリフレッシュ値に基づいてＫＡアプリケーションを用いて、ＫＡパケットを自動的に接続に挿入する。５０８において、望ましければ、受信側でＫＡパケットを除去する。言い換えると、受信側において、受信したＫＡアプリケーションがＫＡパケットを除去するのは必須要件ではない。
【００４４】
図６は、接続方針に基づいた接続管理方法を示す。６００において、ネーティブ・アプリケーション間でＮＡＴ接続を開く。６０２において、ＮＡＴタイムアウト期間に基づいて、関連するＫＡアプリケーションによってリフレッシュ値を選択する。６０４において、接続に付随する方針を入手し処理する。６０６において、送出側で選択したリフレッシュ値に基づいてＫＡアプリケーションを用いて、ＫＡパケットを自動的に接続に挿入する。６０８において、方針に応じて、ＫＡパケットを用いて接続を動作させる。言い換えると、方針は、帯域内またはＯＯＢパケット・トラフィックが終了したか否かには関わらず、接続が所定の時間期間開いたままにして、その時間が過ぎ去ったときに接続を遮断することを示すことができる。
【００４５】
図７は、タイプ・トランスポート・プロトコルに基づいてＮＡＴ接続不活性を管理する方法を示す。７００において、ネーティブ・アプリケーション間でＮＡＴ接続を開く。７０２において、ネーティブ・アプリケーションの活動に基づいて、対応するＫＡアプリケーションの１つ以上を起動する。７０４において、ＫＡアプリケーションの１つ以上が、ＮＡＴタイムアウト期間に基づいて、リフレッシュ期間を選択する。７０６において、ＫＡアプリケーションは、スタック・テーブル活動に基づいて、対応するネーティブ・アプリケーション接続を監視する。７０８において、ＴＣＰパケットの直前の伝達に基づいて、ＫＡアプリケーションの各々から接続にＫＡパケットを自動的に挿入する。あるいは、７１０において、ＵＤＰパケットの直前の伝達に基づいて、ＫＡアプリケーションの一方または双方からＫＡパケットを自動的に接続に挿入する。ＴＣＰは接続指向エンド・ツー・エンド・トランスポート・プロトコルであるので、ＫＡアプリケーションの双方がＫＡパケットを挿入し、ＫＡパケットを除去するように動作することが望ましい。ＵＤＰは無接続トランスポート・プロトコルであるので、殆どの場合、ＫＡアプリケーションの内１つだけがＫＡパケットをＮＡＴ接続に挿入するように動作すればよい。
【００４６】
図８は、接続管理のためにＫＡパケットを発生し利用する方法を示す。８００において、１つのネーティブ・アプリケーションによって別のネーティブ・アプリケーションへのＮＡＴ接続を、ＮＡＴデバイスを通じて開く。８０２において、ＫＡアプリケーションを起動した後、ＫＡアプリケーションの１つ以上によってリフレッシュ期間を利用する。８０４において、発見プロセスを開始して、ネーティブ・アプリケーションのネットワーキング５−タプルを発見する。これは、ＴＣＰ／ＩＰテーブルによって行うことができる。８０６において、５−タプル情報を用いて、解く知恵の接続に合わせてＫＡパケットを組み立てる。８０８において、リフレッシュ期間に基づいて、接続にＫＡパケットを挿入してＮＡＴタイムアウト・タイマをリセットする。８１０において、ＮＡＴデバイスによって処理されたＫＡパケットを、ネーティブ・アプリケーションに到達する前に除去する。
【００４７】
本願で用いる場合、「コンポーネント」および「システム」という用語は、コンピューター関連エンティティを指すことを意図しており、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行ソフトウェア(software in execution)のいずれでもよい。例えば、コンポーネントは、プロセッサー上で走るプロセス、プロセッサー、ハード・ディスク・ドライブ、（光および／または磁気記憶媒体の）多数の記憶装置、オブジェクト、エクゼキュータブル、実行スレッド、プログラム、および／またはコンピューターとすることができるが、これらに限定されるのではない。例示として、サーバー上で走るアプリケーションおよびそのサーバー双方共、コンピューター・コンポーネントであることができる。１つ以上のコンポーネントは、プロセスおよび／または実行スレッド内部に位置することができ、コンポーネントは１つのコンピューターに集中させる(localize)ことおよび／または２つ以上のコンピューター間で分散することもできる。
【００４８】
これより図９を参照すると、開示したＫＡアーキテクチャを実行するように動作可能なコンピューティングシステム９００のブロック図が示されている。その種々の態様について追加のコンテキスト(context)を提示するために、図９および以下の論述は、実施形態の種々の態様を実施することができる、適したコンピューティングシステム９００の端的な総合的な説明を行うことを意図している。以上ではローカル・コンピューターおよび／またはリモート・コンピューター上で走るコンピューター実行可能命令という一般的なコンテキストにおいて実施形態を説明したが、本アーキテクチャは、他のプログラム・モジュールとの組み合わせでも、および／またはハードウェアとソフトウェアとの組み合わせでも実施できることは、当業者には認められよう。
【００４９】
一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造等を含み、特定のタスクを実行するか、または特定の抽象的データー・タイプを実現する。更に、当業者には、本発明の方法は他のコンピューター・システム構成でも実用化可能であることが認められよう。他のコンピューター・システム構成には、単一プロセッサーまたはマルチプロセッサー・コンピューター・システム、ミニコンピューター、メインフレーム・コンピューター、ならびにパーソナル・コンピューター、ハンド・ヘルドコンピューティングデバイス、マイクロプロセッサー主体消費者用電子機器および／またはプログラマブル消費者用電子機器等が含まれ、これらの各々は１つ以上の関連するデバイスと動作的に通信することができる。
【００５０】
また、図示した実施形態の態様は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型コンピューティング環境においても実用可能である。分散型コンピューティング環境では、プログラム・モジュールは、ローカルおよびリモート・コンピューター記憶媒体双方に配することができる。  
【００５１】
コンピューターは、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューターがアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。限定ではない一例をあげると、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブルおよび非リムーバブル媒体を含む。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたはその他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピューターがアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。
【００５２】
再度図９を参照すると、本発明の種々の態様を実施するためのシステム環境例９００は、コンピューター９０２を含む。コンピューター９０２は、演算装置９０４、システム・メモリー９０６、およびシステム・バス９０８を含むことができる。システム・バス９０８は、システム・メモリー９０６を含むがこれに限定されない種々のシステム構成要素を演算装置９０４に結合する。演算装置９０４は、市販されている種々のプロセッサーのいずれでもよい。また、二重マイクロプロセッサーやその他のマルチプロセッサー・アーキテクチャも演算装置９０４として用いることもできる。
【００５３】
システム・バス９０８は、数種類のバス構造のいずれでもよく、更に、（メモリー・コントローラを有するまたは有さない）メモリー・バス、周辺バス、ならびに種々の従来のバス・アーキテクチャのいずれかを用いるローカル・バスを含む。システム・メモリー９０６は、リード・オンリ・メモリー（ＲＯＭ）９１０およびランダム・アクセス・メモリー（ＲＡＭ）９１２を含む。ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、のような不揮発性メモリー９１０に、基本入出力システム（ＢＩＯＳ）が格納されており、ＢＩＯＳは、起動中のように、コンピューター９０２内のエレメント間におけるデーター転送を補助する基本的なルーチンを含む。また、ＲＡＭ９１２は、データーをキャッシュするスタティックＲＡＭのような、高速ＲＡＭも含むことができる。
【００５４】
また、コンピューター９０２は、更に、ハード・ディスク・ドライブ（ＨＤＤ）９１４（例えば、ＥＩＤＥ  ＳＡＴＥ）も含み、内部ハード・ディスク・ドライブ９１４は適したシャーシ（図示せず）において外部の使用に合わせて構成することができる。更に、磁気フロッピ・ディスク・ドライブ９１６（例えば、リムーバブル・ディスケット９１８からの読み取りおよびこれへの書き込みを行なう）、および光ディスク・ドライブ９２０（ＣＤ−ＲＯＭディスク９２２を読み取る、あるいはＤＶＤのようなその他の光学媒体からの読み取りおよびこれへの書き込みを行なう）も含む。ハード・ディスク・ドライブ９１４、磁気ディスク・ドライブ９１６、および光ディスク・ドライブ９２０は、ハードウェア・ディスク・ドライブ・インターフェース９２４、磁気ディスク・ドライブ・インターフェース９２６、および光ドライブ・インターフェース９２８によって、それぞれ、システム・バス９０８に接続されている。外部ドライブ用インターフェース９２４は、ユニバーサル・シリアル・バス（ＵＳＢ）およびＩＥＥＥ１３９４インターフェース技術の少なくとも一方または双方を含む。
【００５５】
前述のドライブおよびそれらと関連のあるコンピューター読み取り可能媒体は、データー、データー構造、コンピューター実行可能命令等の不揮発性格納を行う。コンピューター９０２のために、ドライブおよび媒体は、あらゆるデーターの適したディジタル・フォーマットでの格納に対処する。以上のコンピューター読み取り可能媒体の説明は、ＨＤＤ、リムーバブル磁気ディスク、およびＣＤまたはＤＶＤのようなリムーバブル光媒体に言及したが、ｚｉｐドライブ、磁気カセット、フラッシュ・メモリー・カード、カートリッジ等のような、コンピューターによる読み取りが可能な他の種類の媒体も、本動作環境例において用いることができ、更に、このような媒体はいずれも、開示した方法を実行するためのコンピューター実行可能命令を収容することができることは、当業者には認められてしかるべきである。
【００５６】
多数のプログラム・モジュールを前述のドライブおよびＲＡＭ９１２に格納することができ、オペレーティング・システム９３０、１つ以上のアプリケーション・プログラム９３２、その他のプログラム・モジュール９３４、およびプログラム・データー９３６を含む。オペレーティング・システム、アプリケーション、モジュール、および／またはデーターの全部または一部は、ＲＡＭ９１２にキャッシュすることもできる。尚、本アーキテクチャは、種々の市販のオペレーティング・システムまたはオペレーティング・システムの組み合わせとでも実現できることは認められてしかるべきである。アプリケーション９３２および／またはモジュール９３４は、ネーティブ・アプリケーション、ＫＡアプリケーション、および／または既に述べたＫＡコンポーネントを含むことができる。
【００５７】
ユーザは、１つ以上のユーザ入力デバイス、例えば、キーボード９３８およびマウス９４０のようなポインティング・デバイスによって、コマンドおよび情報をコンピューター９０２に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ＩＲリモート・コントロール、ジョイスティック、ゲーム・パッド、スタイラス・ペン、タッチ・スクリーン等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、システム・バス９０８に結合されている入力デバイス・インターフェース９４２を通じて、演算装置９０４に接続されているが、パラレル・ポート、ＩＥＥＥ１３９４シリアル・ポート、ゲーム・ポート、ＵＳＢポート、ＩＲインターフェース等のようなその他のインターフェースによって接続することも可能である。
【００５８】
モニタ９４４またはその他の形式の表示装置も、ビデオ・アダプタ９４６のようなインターフェースを介して、システム・バス９０８に接続されている。モニタ９４４に加えて、コンピューターは、スピーカーおよびプリンター等のような、その他の周辺出力装置（図示せず）も含むのが通例である。
【００５９】
尚、コンピューター９０２は、１つ以上のリモート・コンピューター９６０への論理接続を用いて、リモート・コンピューター９４８のような１つ以上のリモート・コンピューターへの有線および／またはワイヤレス接続を通じて、ネットワーク環境において動作することも可能である。リモート・コンピューター９４８は、ワークステーション、サーバー・コンピューター、ルータ、パーソナル・コンピューター、携帯コンピューター、マイクロプロセッサー主体の娯楽機器、ピア・デバイス、またはその他の共通コンピューター・ノードとすればよく、通例、コンピューター９０２に関して先に説明したエレメントの多くまたは全てを含むが、簡略化の目的上、メモリー／記憶装置９５０のみを示す。図示する論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）９５２および／またはそれよりも大きなネットワーク、例えば、ワイド・エリア・ネットワーク（ＷＡＮ）９５４への有線／ワイヤレス接続を含む。このようなＬＡＮおよびＷＡＮネットワーク環境は、事務所や会社では珍しくなく、イントラネットのような企業全体に及ぶコンピューター・ネットワークが容易にでき、その全ては、大域通信ネットワーク、例えば、インターネットに接続することができる。
【００６０】
ＬＡＮネットワーキング環境で用いる場合、例えば、コンピューター９０２は、有線および／またはワイヤレス通信ネットワーク・インターフェースあるいはアダプタ９５６を介してローカル・ネットワーク９５２に接続する。アダプタ９５６は、ＬＡＮ９５２への有線またはワイヤレス通信を容易にすることができ、ＬＡＮ９５２は、ワイヤレス・アダプタ９５６と通信するために配置したワイヤレス・アクセス・ポイントも含むことができる。
【００６１】
ＷＡＮネットワーキング環境で用いる場合、コンピューター９０２は、通例、モデム９５８を含むことができ、あるいはＷＡＮ９５４上にある通信サーバーに接続し、あるいはインターネットによってというように、ＷＡＮ９５４上で通信を確立するその他の手段を有する。モデム９５８は、コンピューター９０２に対して内部または外部でも可能であり、シリアル・ポート・インターフェース９４２を介してシステム・バス９０８に接続する。ネットワーク環境では、コンピューター９０２に関して図示したプログラム・モジュールまたはその一部を、リモート・メモリー／記憶装置９５０に格納することができる。尚、図示のネットワーク接続は一例であり、コンピューター間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【００６２】
コンピューター９０２は、ワイヤレス通信内に動作的に配置されているあらゆるワイヤレス・デバイスまたはエンティティ、例えば、プリンター、スキャナー、デスクトップおよび／または携帯コンピューター、携帯データー・アシスタント、通信衛星、ワイヤレスで検出可能なタグと関連付けられた機器または場所（例えば、キオスク、新聞売店、休憩室）の任意のもの、そして電話機と通信するように動作可能である。これには、少なくともＷｉ−ＦｉおよびBluetooth（商標）ワイヤレス技術が含まれる。つまり、通信は、従来のネットワークのように、既定の構造とすることができ、あるいは単に少なくとも２つのデバイス間におけるその場限りの通信とすることもできる。
【００６３】
これより図１０を参照すると、ＯＯＢ  ＫＡ処理を採用することができるコンピューティング環境例１０００の模式ブロック図が示されている。システム１０００は、１つ以上のクライアント１００２を含む。クライアント１００２は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。クライアント１００２は、例えば、クッキーおよび／または関連する文脈情報を収容することができる。
【００６４】
また、システム１０００は、１つ以上のサーバー１００４も含む。サーバー１００４も、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバー１００４は、例えば、前述のアーキテクチャを採用することによって、変換を実行するスレッドを収容することができる。クライアント１００２とサーバー１００４との間で可能な１つの通信は、２つ以上のコンピューター・プロセス間で送信するように構成したデーター・パケットの形態とすることができる。データー・パケットは、例えば、クッキーおよび／または関連する文脈情報を含むことができる。システム１０００は、クライアント１００２とサーバー１００４との間における通信をし易くするために用いることができる通信フレームワーク１００６（例えば、インターネットのような大域通信ネットワーク）を含む。
【００６５】
通信は、有線（光ファイバを含む）および／またはワイヤレス技術によって促進することができる。クライアント１００２は、クライアント１００２に対してローカルな情報（例えば、クッキーおよび／または関連する文脈情報）を格納するために用いることができる１つ以上のクライアント・データー・ストアー１００８に動作的に接続されている。同様に、サーバー１００４も、サーバー１００４に対してローカルな情報を格納するために用いることができる１つ以上のサーバー・データー・ストアー１０１０に動作的に接続されている。
【００６６】
クライアント１００２およびサーバー１００４は、双方共、ＮＡＴルータ、ゲートウェイ等のような、ネットワーク・インターフェース・デバイス（図示せず）を監視するＫＡアプリケーションを含むことができる。前述のように、クライアント１００２は、ローカルＫＡアプリケーションを用いることによって、接続状態管理をクライアントの一方または双方の内部で行うことができるように、ピア・ツー・ピア式に相互接続することができる。
【００６７】
以上説明したことは、開示したアーキテクチャの例を含む。勿論、実施形態を記載する目的のためにコンポーネントおよび方法の想起し得る全ての組み合わせを記載することは可能ではないが、実施形態の更に別の多くの組み合わせおよび変形も可能であることは、当業者には認められよう。したがって、本主題は、添付した特許請求の範囲の主旨および範囲に該当するこのような変更、修正、および変形を全て包含することとする。更に、「含む」(include)という用語が詳細な説明または特許請求の範囲のいずれかにおいて用いられる限りでは、特許請求の範囲において「備えている」(comprising)が移行句(transitional word) として用いられているときに解釈する際の「備えている」と同様に、このような用語は、包含的であることとする。
【図１】
2010520668.tif 000003
【図２】
2010520668.tif 000004
【図３】
2010520668.tif 000005
【図４】
2010520668.tif 000006
【図５】
2010520668.tif 000007
【図６】
2010520668.tif 000008
【図７】
2010520668.tif 000009
【図８】
2010520668.tif 000010
【図９】
2010520668.tif 000011
【図１０】
2010520668.tif 000012
【国際調査報告】
2010520668.tif 000013
2010520668.tif 000014