(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-26
(45)【発行日】2022-09-05
(54)【発明の名称】タイムスタンプに基づくセッションの関連付け
(51)【国際特許分類】
H04L 43/00 20220101AFI20220829BHJP
【FI】
H04L43/00
(21)【出願番号】P 2019552566
(86)(22)【出願日】2018-03-19
(86)【国際出願番号】 US2018023177
(87)【国際公開番号】W WO2018175342
(87)【国際公開日】2018-09-27
【審査請求日】2021-03-17
(32)【優先日】2017-03-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518097774
【氏名又は名称】パラブル インコーポレイテッド
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】グリーン、ジャスティン、イー.
【審査官】大石 博見
(56)【参考文献】
【文献】特開2016-096415(JP,A)
【文献】特開2007-188152(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/00
(57)【特許請求の範囲】
【請求項1】
タイムスタンプデータに基づいてセッションを関連付けるための方法であって、
或る時間期間内の1つ以上のセッションの最中に受信されたデータパケットの集合を取得するステップであって、前記データパケットの集合内の各パケットに、それぞれのセッションの一意の識別子が関連付けられているステップと、
前記時間期間内の前記セッションから選択される一セッションのパケットについてスキューを決定するステップであって、前記決定された
スキューは、前記選択されたセッションの前記一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づき、前記選択されたセッションは、クライアントデバイスに関連付けられているステップと、
前記取得したデータパケットの各々についてアップ時間を計算するステップであって、前記計算されるアップ時間は、各々のデータパケットのそれぞれのタイムスタンプが最後にリセットされた時刻を示し、各々のデータパケットの前記それぞれのタイムスタンプは、前記クライアントデバイスからのタイムスタンプおよびサーバからのタイムスタンプを含み、前記決定されたスキューを前記クライアントデバイスのタイムスタンプに乗算し、その積を前記サーバのタイムスタンプから減算することにより、前記アップ時間が計算されるステップと、
前記計算されたアップ時間の各々が、以前に選択されたセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを識別するステップと、
前記それぞれの計算されたアップ時間と前記以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて、前記クライアントデバイスに関連付けられたセッションのリストを更新するステップと
を含む方法。
【請求項2】
前記セッションは、TCPセッションである、請求項1に記載の方法。
【請求項3】
前記取得したパケットのうちの1つを、前記選択されたセッションに関して前記時間期間内で最も最近に受信されたパケットとして識別するステップと、
前記識別されたパケットが前記選択されたセッションの前記一意の識別子に関連付けられていることに基づいて、前記選択されたセッションを識別するステップと
をさらに含む、請求項2に記載の方法。
【請求項4】
IPアドレスに基づいて前記取得したデータパケットをフィルタ処理するステップ
をさらに含む、請求項1に記載の方法。
【請求項5】
少なくとも1つの外れ値データパケットを破棄するステップ
をさらに含む、請求項1に記載の方法。
【請求項6】
前記外れ値データパケットは、それぞれのタイムスタンプデータに基づいて前記集合に関する他のデータパケットに対して選択されたパーセンタイルに入ることに基づいて識別される、請求項5に記載の方法。
【請求項7】
少なくとも1つのデータパケットを、前記少なくとも1つのデータパケットにタイムスタンプデータが関連付けられていない場合に破棄するステップ
をさらに含む、請求項1に記載の方法。
【請求項8】
前記スキューを決定するステップは、
スキューの決定のための前記少なくとも2つのデータパケットを選択するステップであって、前記2つのデータパケットは、前記選択されたセッションから前記時間期間内で最も最近に受信された第1のデータパケットと、前記選択されたセッションに関して所定の時間間隔だけ先に受信された第2のデータパケットとを含むステップと、
前記第1のデータパケットの前記クライアントデバイスのタイムスタンプおよび前記サーバのタイムスタンプ、ならびに前記第2のデータパケットの前記クライアントデバイスのタイムスタンプおよび前記サーバのタイムスタンプに基づいて、前記スキューを計算するステップと
を含む、請求項1に記載の方法。
【請求項9】
前記スキューを計算するステップは、
前記第1のデータパケットの前記サーバのタイムスタンプと前記第2のデータパケットの前記サーバのタイムスタンプとの間の差を決定するステップと、
前記第1のデータパケットの前記クライアントデバイスのタイムスタンプと前記第2のデータパケットの前記クライアントデバイスのタイムスタンプとの間の差を決定するステップと、
前記サーバのタイムスタンプの差を前記クライアントデバイスの差で除算するステップと
を含む、請求項8に記載の方法。
【請求項10】
前記それぞれの計算されたアップ時間は、前記それぞれの計算されたアップ時間が前記以前に計算されたアップ時間の所定の範囲内にある場合に、前記以前に計算されたアップ時間に一致すると見なされる、請求項1に記載の方法。
【請求項11】
前記クライアントデバイスにおけるセッションが、識別子に関連付けられる、請求項1に記載の方法。
【請求項12】
同じ識別子を有するセッションは、単一のセッションとして取り扱われる、請求項11に記載の方法。
【請求項13】
前記更新されたセッションのリストは、後のセッションとの比較の際に単一のセッションとして取り扱われる、請求項11に記載の方法。
【請求項14】
タイムスタンプデータに基づいてセッションを関連付けるためのサーバシステムであって、
メモリに格納された命令を実行するプロセッサであって、前記プロセッサによる前記命令の実行が、
或る時間期間内の1つ以上のセッションの最中に受信されたデータパケットの集合を取得し、前記データパケットの集合内の各パケットに、それぞれのセッションの一意の識別子が関連付けられており、
前記時間期間内の前記セッションから選択される一セッションのパケットについてスキューを決定し、前記決定された
スキューは、前記選択されたセッションの前記一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づき、前記選択されたセッションは、クライアントデバイスに関連付けられており、
前記取得したデータパケットの各々についてアップ時間を計算し、前記計算されるアップ時間は、各々のデータパケットのそれぞれのタイムスタンプが最後にリセットされた時刻を示し、各々のデータパケットの前記それぞれのタイムスタンプは、前記クライアントデバイスからのタイムスタンプおよびサーバからのタイムスタンプを含み、前記決定されたスキューを前記クライアントデバイスのタイムスタンプに乗算し、その積を前記サーバのタイムスタンプから減算することにより、前記アップ時間が計算され、
前記計算されたアップ時間の各々が、選択されたセッション以前に一致したセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを識別する、プロセッサと、
前記クライアントデバイスに関連付けられたセッションのリストを格納するメモリであって、前記格納されたセッションのリストは、前記それぞれの計算されたアップ時間と前記以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて更新されるメモリと
を備えるサーバシステム。
【請求項15】
タイムスタンプデータに基づいてセッションを関連付けるための方法を実行するためにプロセッサによって実行することができるプログラムを具体化させた非一時的なコンピュータ可読記憶媒体であって、
前記方法は、
或る時間期間内の1つ以上のセッションの最中に受信されたデータパケットの集合を取得するステップであって、前記データパケットの集合内の各パケットに、それぞれのセッションの一意の識別子が関連付けられているステップと、
前記時間期間内の前記セッションから選択される一セッションのパケットについてスキューを決定するステップであって、前記決定された
スキューは、前記選択されたセッションの前記一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づき、前記選択されたセッションは、クライアントデバイスに関連付けられているステップと、
前記取得したデータパケットの各々についてアップ時間を計算するステップであって、前記計算されるアップ時間は、各々のデータパケットのそれぞれのタイムスタンプが最後にリセットされた時刻を示し、各々のデータパケットの前記それぞれのタイムスタンプは、前記クライアントデバイスからのタイムスタンプおよびサーバからのタイムスタンプを含み、前記決定されたスキューを前記クライアントデバイスのタイムスタンプに乗算し、その積を前記サーバのタイムスタンプから減算することにより、前記アップ時間が計算されるステップと、
前記計算されたアップ時間の各々が、以前のセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを識別するステップと、
前記それぞれの計算されたアップ時間と前記以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて、前記クライアントデバイスに関連付けられたセッションのリストを更新するステップと
を含む、非一時的なコンピュータ可読記憶媒体。
【請求項16】
前記それぞれのタイムスタンプは、前記クライアントデバイスが再起動されたときに最後にリセットされる、請求項1に記載の方法。
【請求項17】
前記クライアントデバイスは、1つ以上の一意のデバイス識別子に関連付けられており、前記セッションのリストは、前記リストされたセッションの各々に関連した前記デバイス識別子の1つをさらに含む、請求項1に記載の方法。
【請求項18】
前記クライアントデバイスは、前記クライアントデバイスによって使用されるブラウザの1つ以上の一意のブラウザ識別子に関連付けられており、前記セッションのリストは、前記リストされたセッションの各々に関連した前記ブラウザ識別子の1つをさらに含む、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、ウェブサイトおよびアプリケーションに関する。より具体的には、本発明は、(例えば、同じデバイスの)タイムスタンプに基づくセッションの関連付けに関する。
【背景技術】
【0002】
インターネットおよびウェブリソースの使用は、産業化された世界の全体のほぼあらゆる場所に存在する。ユーザは、通常は、無線であるか、あるいは有線接続によるかにかかわらず、通信ネットワークを介して通信を行うことができる多数のコンピューティングデバイスのいずれかを使用してインターネットにアクセスする。より具体的には、ユーザは、コンピューティングデバイス上のアプリケーション(例えば、ブラウザ)を使用して、1つ以上のウェブサーバおよびアプリケーションサーバによってホストされる多数のウェブページおよびウェブサイトのいずれかのコンテンツにアクセスすることができる。本明細書において使用されるとき、ブラウザおよびブラウザ識別子への言及は例示であり、他の種類のアプリケーションを除外するものと解釈されるべきではない。それどころか、本開示は、さまざまなアプリケーションに適用可能であり、さまざまなアプリケーションを含む。
【0003】
要求に応じて、指定されたウェブページに関連するコンテンツをユーザのコンピューティングデバイスにダウンロードすることができ、さらに、ユーザのコンピューティングデバイスが、表示すべきウェブページをレンダリングすることができる。そのようなダウンロードされるコンテンツとして、ドキュメント、グラフィック、オーディオおよびビデオ、などを含むさまざまな異なる種類のファイル、ならびに関連データ(例えば、メタデータ、カスケードスタイルシートを含むスタイルシート)を挙げることができる。ダウンロードされたコンテンツを、コンピューティングデバイスのローカルメモリのブラウザキャッシュに保存することができる。特定のウェブページまたはウェブサイトのさまざまな要素およびコンポーネントは、時間の経過とともに変化する可能性がある(例えば、発行元が新たなコンテンツまたは更新されたコンテンツを公開する場合)。しかしながら、一部のコンポーネントまたは要素は、静的で変更されないままである。ユーザがウェブページを離れ、後に戻ろうとする場合、ブラウザキャッシュにより、コンピューティングデバイスは、ユーザがウェブページの再訪を望むときに同じウェブオブジェクトを再びダウンロードするのではなく、関連のウェブページに関する静的な不変のファイルをローカルメモリから取り出すことができる。
【0004】
現時点において、ブラウザは、ウェブサイトによる入手および使用が可能な一意の識別子を何も含んでおらず、あるいはそのような一意の識別子を露出させることがない。現在のウェブサイトおよびウェブページは、特定のウェブページに関するユーザのアクティビティ(例えば、繰り返しの訪問)に関するデータを追跡および共有することができる。そのようなデータは、状態情報(例えば、好み、ショッピングカートのアイテム)を含むことができ、登録または認証情報(例えば、ユーザ名、パスワード、住所/居所)をもたらすことができ、あるいは閲覧履歴(例えば、どのウェブページを訪問したか、何回訪問したか、いつ訪問したか)を追跡することができる。しかしながら、現代生活のほぼすべての態様がインターネットアクティビティに反映され、あるいは他のかたちでインターネットアクティビティに関係する可能性があるため、追跡されるデータの一部が、特定の個人を個人的に識別できる可能性がある。したがって、このような個人を識別できるデータを含む追跡機構は、私的であり、秘密であり、さらには/あるいは慎重に扱われるべきユーザ情報が漏れる危険性がある。ユーザのプライバシーを保護するために、一部の法的管轄区域では、追跡できるデータの種類を制限する法律または規制すら存在することがある。
【0005】
一方で、さまざまな発行人、サービスプロバイダ、および関連の団体が、所与のウェブページまたはウェブサイトを訪れるユーザトラフィックに関する統計データの取得に関心を持つことがある。ウェブサーバは、特定のウェブページに対するダウンロード要求の数を識別することがあるが、そのような要求が、同じユーザ(または、同じユーザ小集団)によって行われる可能性がある。したがって、このような指標では、ウェブサイトに関するトラフィックまたはユーザアクティビティの正確な状況を表すことができない可能性があるが、上述のさらに詳細なデータを使用すると、特定のユーザを個人的に識別できる情報が漏れる危険性がある。
【0006】
さらに、ユーザは、さまざまなアプリケーションおよびブラウザを使用して、さまざまな異なるウェブサイトおよびコンテンツプロバイダを訪れる可能性がある。このような多様性は、例えばユーザが同じウェブサイトに異なるブラウザまたはアプリケーションを使用してアクセスできる場合に、トラフィックの追跡の可能性を困難にする可能性がある。複数のウェブサイトを考慮すると、問題はさらに複雑になる。このような異なるブラウザは、通常は情報の通信や交換を行わないため、このようなユーザがインターネットでどのように通信することができるかを完全に把握することは、きわめて困難となり得る。
【0007】
したがって、異なるセッションを特定のデバイスに関連付けるための実証済みのシステムおよび方法が、技術的に必要とされている。
【発明の概要】
【0008】
本発明の実施形態は、伝送制御プロトコル(TCP)タイムスタンプに基づくセッションの関連付けを可能にする。或る時間期間内の1つ以上のTCPセッションの最中に受信されたデータパケットの集合を取得することができる。集合の各々のパケットに、それぞれのセッションの一意の識別子(すなわち、セッションの発信元IPアドレスおよびポート)が関連付けられていてよい。時間期間内の選択されたセッションのパケットのスキューを、該選択されたセッションの一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づいて決定することができる。選択されたセッションは、コンピューティングデバイスに関連付けられていてよい。取得されたデータパケットの各々について、決定されたスキューおよび各々のデータパケットのそれぞれのタイムスタンプ情報に基づいて、アップ時間を計算することができる。計算されたアップ時間の各々が、以前のセッションまたは選択されたセッションに以前に関連付けられたセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを、識別することができる。コンピューティングデバイスに関連付けられたセッションのリストを、それぞれの計算されたアップ時間と以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて、更新することができる。
【0009】
さまざまな実施形態が、TCPタイムスタンプに基づくセッションの関連付けのための方法を含むことができる。そのような方法は、或る時間期間内の1つ以上のセッションの最中に受信されたデータパケットの集合を取得するステップであって、各パケットに、それぞれのセッションの一意の識別子が関連付けられているステップと、選択されたセッション(コンピューティングデバイスに関連付けられている)のパケットについてのスキューを、選択されたセッションの一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づいて決定するステップと、取得したデータパケットの各々について、アップ時間を、決定されたスキューおよび該データパケットのそれぞれのタイムスタンプ情報に基づいて計算するステップと、計算されたアップ時間の各々が、以前のセッションまたは選択されたセッションに以前に関連付けられたセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを識別するステップと、それぞれの計算されたアップ時間と以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて、コンピューティングデバイスに関連付けられたセッションのリストを更新するステップとを含むことができる。
【0010】
さらなる実施形態は、タイムスタンプに基づいてセッションを関連付けるためのサーバシステムを含むことができる。そのようなシステムは、或る時間期間内の1つ以上のセッションの最中に受信され、各々のパケットにそれぞれのセッションの一意の識別子が関連付けられているデータパケットの集合を取得し、選択されたセッションのパケットについてのスキューを、選択されたセッションの一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づいて決定し、取得したデータパケットの各々について、アップ時間を、決定されたスキューおよび該データパケットのそれぞれのタイムスタンプ情報に基づいて計算し、計算されたアップ時間の各々が、以前のセッションまたは選択されたセッションに以前に関連付けられたセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを識別するための命令を実行するプロセッサを含むことができる。そのようなシステムは、コンピューティングデバイスに関連付けられたセッションのリストを格納するメモリをさらに含むことができ、該格納されたセッションのリストを、それぞれの計算されたアップ時間と以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて更新することができる。
【0011】
さらなる実施形態は、上述のタイムスタンプに基づくセッションの関連付けのための方法を実行するためにプロセッサによって実行可能なプログラムを具現化した非一時的なコンピュータ可読記憶媒体を含む。
【図面の簡単な説明】
【0012】
【
図1】タイムスタンプに基づくセッションの関連付けのためのシステムを実装することができる典型的なネットワーク環境を示している。
【0013】
【
図2】タイムスタンプに基づくセッションの関連付けのための方法を示すフローチャートである。
【0014】
【
図3】本発明の一実施形態を実施するために使用することができる典型的なコンピューティングシステムを示している。
【発明を実施するための形態】
【0015】
本発明の実施形態は、タイムスタンプに基づくセッションの関連付けを可能にする。或る時間期間内の1つ以上のセッションの最中に受信されたデータパケットの集合を取得することができる。集合の各々のパケットに、それぞれのセッションの一意の識別子(例えば、セッションのクライアントIPアドレスおよびポート)が関連付けられていてよい。時間期間内の選択されたセッションのスキューを、該選択されたセッションの一意の識別子が関連付けられた少なくとも2つのデータパケットのそれぞれの受信デバイスクロックとそれぞれの送信デバイスクロックとの間の速度差に基づいて決定することができる。選択されたセッションは、コンピューティングデバイスに関連付けられていてよい。取得されたデータパケットの各々について、決定されたスキューおよびデータパケットのそれぞれのタイムスタンプ情報に基づいて、アップ時間を計算することができる。計算されたアップ時間の各々が、以前のセッションまたは選択されたセッションに以前に関連付けられたセッションに関連付けられたパケットについて以前に計算されたアップ時間と一致するか否かを、識別することができる。コンピューティングデバイスに関連付けられたセッションのリストを、それぞれの計算されたアップ時間と以前に計算されたアップ時間との間の1つ以上の識別された一致に基づいて、更新することができる。
【0016】
図1が、識別子のタイムスタンプに基づく分析のためのシステムを実装することができるネットワーク環境100を示している。ネットワーク環境100は、通信ネットワーク110、1つ以上のユーザデバイス120A~D、サーバ130、識別子サーバ140、および1つ以上のサービスプロバイダ150を含むことができる。ネットワーク環境100内のデバイスは、通信ネットワーク110を介して互いに通信することができる。
【0017】
通信ネットワーク110は、ローカルの専有ネットワーク(例えば、イントラネット)であってよく、さらには/あるいはより大規模な広域ネットワークの一部であってよい。通信ネットワーク110は、インターネットなどの広域ネットワーク(WAN)に通信可能に接続されてよいローカルエリアネットワーク(LAN)であってよい。インターネットは、相互接続されたコンピュータおよびサーバの広範なネットワークであり、ネットワークサービスプロバイダを介して接続されたユーザ間のインターネットプロトコル(IP)データの伝送および交換を可能にする。ネットワークサービスプロバイダの例は、公衆交換電話網、携帯電話またはモバイルサービスプロバイダ、ケーブルサービスプロバイダ、デジタル加入者線(DSL)サービスのプロバイダ、あるいは衛星サービスプロバイダである。通信ネットワーク110は、ネットワーク環境100の種々の構成要素間の通信を可能にする。
【0018】
ユーザは、汎用コンピュータ、携帯電話機、スマートフォン、スマートウォッチ、ウェアラブルデバイス、携帯情報端末(PDA)、ポータブルコンピューティングデバイス(例えば、ラップトップ、ネットブック、タブレット)、デスクトップコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、または通信ネットワーク110を介して通信することができる任意の他の種類のコンピューティングデバイス、など、任意のいくつかのさまざまな電子ユーザデバイス120A~Dを使用することができる。ユーザデバイス120は、ダウンロードによるサービスの場合に適切である場合があるが、ローカルキャッシュ、メモリカード、またはディスクドライブなどの他の記憶媒体からのデータにアクセスするように構成されてもよい。ユーザデバイス120は、ネットワークおよびメディアインターフェース、非一時的なコンピュータ可読ストレージ(メモリ)、およびメモリに格納され得る命令を実行するためのプロセッサなどの標準的なハードウェアコンピューティングコンポーネントを含むことができる。
【0019】
加えて、ユーザデバイス120は、特定のウェブページおよび他のネットワークアクセス可能なデータの要求をユーザにとって可能にするブラウザアプリケーションを含むさまざまなアプリケーションを含むことができる。本明細書において使用されるとき、ブラウザおよびブラウザ識別子への言及は例示にすぎず、ブラウザおよびブラウザ識別子に関する教示は、他の種類のアプリケーションおよびアプリケーション識別子(例えば、Apple IDFA、Google AdID)にも適用可能である。例えば、ユーザは、ユニホームリソースロケータ(URL)をブラウザアプリケーションに入力することができる。そのようなブラウザは、そのような要求を関連のウェブサーバ(例えば、サーバ130)に送信し、応答データ(例えば、ダウンロードすべき他のファイルへの参照を含むウェブページファイル)を受信し、そのような応答データを使用して、要求されたウェブページをレンダリングして表示することができる。ユーザデバイス120にダウンロードすることができるウェブページファイルは、ウェブページの一部として実際に表示されるコンテンツに対応するファイルだけでなく、関連するファイルも含み得る。
【0020】
サーバ130、識別子サーバ140、およびサービスプロバイダ150は、ネットワークおよびメディアインターフェース、非一時的なコンピュータ可読記憶装置(メモリ)、ならびに命令を実行し、あるいはメモリに保存されていてよい情報にアクセスするプロセッサなどの標準的なハードウェアコンピューティングコンポーネントを含む技術的に知られた任意の種類のサーバまたは他のコンピューティングデバイスを含むことができる。複数のサーバの機能を、単一のサーバに統合してもよい。上述のサーバ(または、統合サーバ)のいずれも、特定のクライアント側、キャッシュ、またはプロキシサーバ特性を呈することができる。これらの特性は、サーバの特定のネットワーク配置またはサーバの特定の構成に依存し得る。
【0021】
サーバ130は、あらゆる種類のウェブページまたはウェブサイトデータを含むウェブコンテンツをホストするために使用されるあらゆる種類のサーバであってよい。各々のウェブサイトに関連付けられた特定のファイルは、発行者(または、指定された管理者)によって管理され得る。ウェブサイトファイルは、他者の管理下のファイルへのリンクを含み得る。この点に関し、サーバ130からダウンロードされたウェブサイトファイルは、識別子ファイルへの参照(例えば、URL)、ならびに識別子ファイルとともに使用される随意によるローダーアプリケーション(例えば、Java(登録商標)scriptコマンド)および関連のコードライブラリを含み得る。このような識別子ファイルは、ウェブサイトに特有であり得る。例えば、特定のウェブサイトの識別子が、そのウェブサイトのドメイン(または、他の特性)を含むことができ、あるいはそのウェブサイトのドメイン(または、他の特性)に基づくことができる。したがって、特定のブラウザ(または、他のアプリケーション)を使用して特定のユーザデバイスによって訪問された各々のウェブサイトを、一意の異なる識別子に関連付けることができる。
【0022】
そのような識別子は、本出願と同時に係属中の関連の米国特許出願第14/716,187号に開示のブラウザ識別子に関して開示されているやり方と同様のやり方で生成および管理することができ、この米国特許出願の開示は、参照により本明細書に援用される。さらに、本明細書で開示されるブラウザ識別子は、関連の米国特許出願第14/716,187号に開示の発明とともに使用されてもよい。ブラウザ識別子は、デバイス上の異なるブラウザセッションに関連付けられ得る。同じデバイス上で異なるブラウザおよび異なるブラウザセッションが使用され得るため、さまざまなインジケータ(例えば、タイムスタンプ)を使用して、このような異なるブラウザおよびセッションを共通のデバイスに関連付けることができる。さらに、各々のセッションを、後述されるように、TLSセッション識別子、TLSセッションチケット、などを含む特定の識別子に同様に関連付けることができる。
【0023】
さらに、識別子サーバ140は、種々の識別子(例えば、セッション識別子、ブラウザ識別子、デバイス識別子)の間の関連付けを引き出すことが可能であってよい。この点に関し、(デバイス識別子によって識別される)特定のユーザデバイス120を、1つ以上のセッションおよびブラウザ(または、他のアプリケーション)に関連付けることができる。したがって、識別子サーバ140は、受信したデータパケットの検査に基づいて1つ以上のそのような識別子(ウェブサイト、ブラウザ、セッション、またはデバイス)を識別することが可能であってよい。識別子サーバ140は、テーブルを作成および更新することにより、さまざまなインジケータの間の関連付けを保存することができる。例えば、セキュアセッション(例えば、セキュアソケットレイヤー(SSL)セッションなど)は、クライアントとサーバとがSSL情報をネゴシエートし、その後にこのネゴシエートされたSSL情報を将来の接続のために再利用する場合に生じるセッションの再開を可能にすることができる。SSLセッションのセットアップは、通常はきわめて時間を消費するため、再度のネゴシエーションが不要であることが望ましい。セッションを再開するために、クライアントがセッションを識別できなければならない。SSLセッションIDおよびTLSセッションチケットが、以前に選択されたセッションの識別および再開を可能にする2つの機構である。
【0024】
追加のインジケータは、伝送制御プロトコル(TCP)情報の使用に基づくことができる。TCPは、ウェブブラウザ、電子メール、およびその他のアプリケーションを含むさまざまなインターネットベースのアプリケーションによって使用される。特定のデバイスによるTCPの使用に関連する情報(例えば、TCPパケットに存在する)は、さまざまなタイムスタンプ情報を含むことができ、あるいは示すことができる。現在の時刻、アップ時間、クロックスキューなど、その他の時間関連情報がTCPパケットに関連付けられ得る。典型的な実施形態において、識別子サーバ140は、選択されたセッションのパケット(例えば、特定の現在の時刻、アップ時間、ソースIPアドレス、クロックスキュー、などのTCPタイムスタンプ情報に関連付けられた)を受信し、パケットの関連付けられたタイムスタンプ情報(例えば、アップ時間)が、選択されたセッションに関連付けられ得る以前に受信したパケットの任意のタイムスタンプ情報と一致するか否かを判断し、一致する場合、セッション間の関連付けを引き出すことができる。さらに、記憶されたパケットリストを、異なる識別子(例えば、同じデバイスの異なるデバイス識別子)間の関連付けを行うために使用され得る関連付けられた識別子または他のインジケータで維持することができる。
【0025】
クライアントのタイムスタンプが、通常はTCPパケットに含まれ、サーバのタイムスタンプが、通常はTCPパケットがサーバによって受信されたときに自動的に追加される一方で、他のタイムスタンプ関連情報(例えば、アップ時間およびクロックスキュー)を決定するために、さらに計算を適用することもできる。例えば、クライアントのタイムスタンプは、典型的にはコンピューティングデバイスが起動されて継続的に動作してからの経過時間を反映する時間の指標を提供する。とくには他のインジケータ(例えば、クロックスキュー)と組み合わせられたとき、計算されたアップ時間(デバイスが最後に起動されたとき)は、特定のデバイスを一意に識別できる可能性があり、何故ならば、お互いの何らかの時間ウインドウ内で受信されたそのデバイスのすべてのパケットは、同じ計算されたアップ時間を共有すると考えられるからである。クライアントのタイムスタンプに関して、デバイスは、デバイスが最後に起動されてから、または経過時間がリセットされてからの経過時間を記録および報告することができる。その経過時間は、さまざまなコンピューティングデバイスのさまざまなスケジュールに基づいてリセットされ得る(例えば、一部のデバイスは数日ごとにリセットされ、他のデバイスは数週間ごとにリセットされる)。経過時間は、異なるデバイスおよびオペレーティングシステムにおいて異なる粒度で増加し得る。増加の粒度は、ティック(tick)という単位で測定される。ティックは異なるシステムにおいて異なる時間を表すこともあり得るため、ティックによって表される時間を決定することによってデバイスの種類を明らかにするために、何らかのデバイス固有の計算が必要になり得る。結果は、リアルタイムで一貫して増加するタイムスタンプである。それを逆方向に計算することで、アップ時間が得られ、これはデバイスが最後に起動された時刻、またはタイムスタンプが最後にリセットされた時刻であり得る。したがって、アップ時間は、通常は、タイムスタンプがリセットされるような時刻まで、たとえ経過時間が増加しても同じままである。
【0026】
したがって、識別子サーバ140によって使用されるそのようなインジケータは、セッション識別子(例えば、トランスポート層セキュリティ(TLS)、セキュアソケット層(SSL))、伝送制御プロトコル(TCP)識別子(例えば、アップ時間、現在時刻、クロックスキュー)、インターネットプロトコル(IP)アドレス、ユーザエージェント識別子、などを含み得る。そのようなインジケータを個別に使用し、あるいは任意の組み合わせ(例えば、SSLセッション識別子およびTCPタイムスタンプ)にて使用して、特定の共通ブラウザおよび/または特定のユーザデバイス120を共通の一致に基づいて識別することができる。典型的な実施形態は、異なるブラウザまたはデバイスの識別子間の接続を識別する際に、それぞれの決定論的値に基づいてインジケータの特定の組を選択することができる。例えば、SSLセッション識別子は、1つ以上のセッションの集合に固有であるため、同じブラウザの異なるブラウザ識別子を互いに関連付けるために使用可能である。同様に、現在の時刻、アップ時間、クロックスキュー、およびソースIPアドレスの組み合わせは、特定のデバイスに固有であるため、デバイスに関連付けられた異なる識別子間の接続を引き出すことを可能にする。
【0027】
例えば、ウェブサイトをダウンロードする特定の要求は、1つ以上のインジケータに関連付けられた識別子(例えば、SSLセッション識別子)を参照することができる。そのようなSSLセッション識別子を、記憶された情報と比較して、同じまたは異なるブラウザ識別子および/またはデバイス識別子と一緒に以前に使用されていたと識別子サーバ140によって判断することができる。同様に、要求側のコンピューティングデバイスに関連付けられたアップ時間を、同じまたは他のブラウザ識別子および/またはデバイス識別子と一緒に以前に識別または使用されたと識別子サーバ140によって判断することができる。
【0028】
識別子に関する情報を、テーブルに格納することができ、テーブルは、同じブラウザ、アプリケーション、セッション、またはデバイスに関連付けられると判断された識別子のリストをさらに含むことができる。参照された識別子(または、関連するインジケータまたは識別子のいずれか)に関して保存されたテーブルが存在しない場合、新たなテーブルを生成することができる。保存されたテーブルが存在する場合、そのような保存されたテーブルを更新することができる。したがって、これらの識別子のうちの1つ以上を有するテーブルを、新たに到着する識別子(特定のインジケータに関連付けられている)および格納されている識別子(同じまたは異なるインジケータに関連付けられている)との一致に基づいて生成および更新することができる。例えば、識別子サーバ140が、2つの異なる識別子が同じインジケータ(例えば、SSLセッション識別子)を有することを発見した場合、識別子サーバ140は、それぞれのセッションが同じデバイスから由来していると判断することができる。各々のインジケータの寿命、可用性、および一意性は、異なるブラウザ、ユーザエージェント、および/またはオペレーティングシステムの間で異なり得る。したがって、例えば、特定のデバイスを除外するためにインジケータを組み合わせて使用することで、一致の検索を容易にすることができる。
【0029】
いくつかの実施形態においては、第一者クッキーを、各々のウェブサイトの永続的識別子として使用することができる。クッキーは或る時間にわたって持続し得るが、そのようなクッキーは定期的に変更され得る。その後に、以下でさらに詳しく説明されるように、さまざまな一致パラメータ(例えば、SSLおよびアップ時間)を使用して、関連するクッキーを一緒に識別して引き出すことができる。この点に関し、識別子サーバ140は、任意の永続的識別子を他の永続的識別子に関連付けるために使用する能力を有すると理解されるべきである。したがって、時間の経過とともに、識別子サーバ140によって構築されたテーブルは、さまざまな識別子間の新たな接続および関連付けを識別するために成長し得る。
【0030】
サービスプロバイダ150は、ブラウザの識別に基づいてさまざまなサービスを提供し得るサーバまたは他のコンピューティングデバイスを含み得る。例えば、サービスプロバイダ140は、リピート訪問に関する情報を使用して、(初回訪問者と比べて)リピート訪問者にターゲットを絞った広告を提供することができる。
【0031】
図2が、タイムスタンプに基づくセッションの関連付けのための典型的な方法200を示すフローチャートである。
図2の方法200は、これらに限られるわけではないがCD、DVD、またはハードドライブなどの不揮発性メモリ、などの非一時的なコンピュータ可読記憶媒体内の実行可能命令として具現化され得る。記憶媒体の命令は、(1つ以上の)プロセッサによって実行されて、記憶媒体をホストし、あるいは他のかたちで記憶媒体にアクセスするコンピューティングデバイスのさまざまなハードウェアコンポーネントに本方法を実施させることができる。
図2で特定されるステップ(および、その順序)は例示にすぎず、これに限られるわけではないが、それらの実行の順序など、それらの種々の代替物、同等物、または派生物を含むことができる。
【0032】
方法200を使用して、時間とともに発生する可能性があるさまざまなネットワーク異常および不整合にもかかわらず、タイムスタンプに基づくセッションの関連付けを可能にすることができる。ネットワークジッタが存在する場合、同じデバイス120から送信されたデータパケットが、タイムスタンプデータの変動を経験する可能性がある。したがって、スキューを含むタイムスタンプに基づく指標は、異なるように見える可能性がある。そのような不規則性を補償するために、方法200は、時間とともに受信されるパケットを評価することができる。そのようなパケットは、デバイス120のセッションの一意の識別子に関連付けられ得る。したがって、アップ時間の一致の識別により、複数のセッションが異なるデバイス識別子、ブラウザ識別子、TLSセッションID、ユーザエージェント、などに関連付けられているにもかかわらず同じデバイス120に属することを、(例えば、共通のアップ時間sに基づいて)識別することができる。これらのステップは、順番に図示および説明されているが、いくつかのステップは、同時に実行されても、異なる順序で実行されてもよい。
【0033】
ステップ205において、データパケットを、所定の時間ウインドウ(例えば、24時間)についてデータストアから取得することができる。データパケットは、ブラウザなどのネットワーク対応アプリケーションを動作させる1つ以上のユーザデバイス120A~Dから送信されてよく、識別子サーバ140において受信およびキャプチャされる。さらに、所定の時間ウインドウの経過の間に、異なるセッションに関連付けられたデータパケットが受信された可能性がある。各々のデータパケットは、IPアドレス、ポート、コンピューティングデバイスのタイムスタンプ、サーバのタイムスタンプ、デバイス識別子、ブラウザ識別子、ユーザエージェント、オペレーティングシステムおよびバージョン、セッション情報(開始時刻)およびその他の情報、などの種々の識別子を含み得る。データパケットがキャプチャされる期間は、設定可能であってよい。
【0034】
ステップ210において、取得されたデータパケットを、サーバのタイムスタンプによって示される受信時刻によって(例えば、最も最近に受信されたデータパケットから最も古いデータパケットに)ソートすることができる。
【0035】
ステップ215において、評価されるパケットのセットは、セッション、発信元デバイス、受信時刻(例えば、最後の24時間)、などを含む種々の因子に基づいてフィルタ処理することができる。対象のパラメータを満たさないデータパケットを、さらなる評価から除くことができる。例えば、ステップ220において、データパケットを、タイムスタンプ情報を有さないという理由でフィルタ処理によって除くことができる。さらに、パケットのセットを、受信時刻に基づいてステップ230(新しすぎる)およびステップ235(古すぎる)においてリファインすることができる。
【0036】
いくつかの実施形態においては、パケットを外れ値であるという理由で評価から除くこともできる。さらに、コンピューティングデバイスがスリープモードに入るとき、クロックの動きがはるかに遅くなり、異常が発生する可能性がある。外れ値のパケットを、コンピューティングデバイスのタイムスタンプとサーバのタイムスタンプとの間の差に関して、所定のパーセンタイル(例えば、95パーセンタイル)に含まれるかどうかに基づいて識別することができる。例えば、差が予想(例えば、95パーセンタイル)よりもはるかに大きい場合、そのパケットを選択せず、計算および比較に含まれないようにすることができる。
【0037】
パケットのリストがフィルタ処理された後に、スキューに関する分析のために2つのパケットが選択される。ネットワークレイテンシが一定ではない可能性があるため、パケットの異なるセットを選択すると、サーバがパケットを受信するタイミングが異なる(したがって、コンピューティングデバイスのタイムスタンプとサーバのタイムスタンプとの間の差が変化する結果となる)がゆえに、スキュー値が異なる可能性がある。選択されたパケットは、最も最近に受信されたパケットと、最も最近に受信されたパケットの受信から少なくとも所定の期間(例えば、少なくとも1秒)に受信された、次に最近受信されたパケットであってよい。他の実施態様では、最も最近に受信したパケットおよび最も古い受信パケットを選択することができる。
【0038】
ステップ240において、取得されたリスト内の最も最近に受信されたパケットが、最後の既知のパケットとして設定される。ステップ245において、最後の既知のパケットの受信から少なくとも所定の最小時間(例えば、少なくとも1秒後)に受信された次の最近受信されたパケットをサーチすることができる。ステップ250で、次のパケットが見つかったかどうかを判断することができる。見つかっていない場合、この方法は、デバイスが一致することなく終了する。次のパケットが見つかった場合、この方法はステップ255に進む。
【0039】
ステップ255において、スキューが計算され得る。スキューを計算するために、同じセッションまたは識別子から受信したデータパケットを一緒にさらに分析することができる(例えば、少なくとも所定の時間間隔を空けて受信した2つのデータパケット)。各々のデータパケットは、コンピューティングデバイス(クライアント)のタイムスタンプおよびサーバのタイムスタンプに関連付けられている。コンピューティングデバイスのタイムスタンプは、TCPプロトコルの下でコンピューティングデバイス120によってパケットに配置される。コンピューティングデバイスのタイムスタンプは、コンピューティングデバイスが再起動されてからの時間を表す(または、到達したタイムスタンプが最大値であり、ロールオーバーされる)。サーバのタイムスタンプは、サーバのクロックによるパケットが受信された実際の時間である。サーバのタイムスタンプおよびコンピューティングデバイスのタイムスタンプのどちらも、リアルタイムで進行する。
【0040】
説明したように、スキューは、サーバのクロックと比較したクライアント(例えば、コンピューティングデバイス)のクロックの増加の速度を表す。そのため、スキュー値は、クライアントのタイムスタンプおよびサーバのタイムスタンプの進行速度の違いであり得、これはCPUアーキテクチャおよびクロック速度の違い、ならびにクライアントとサーバとの間のその他の違いに起因し得る。スキューを、
skew=(p1.s_ts-p2.s_ts)/(p1.c_ts-p2.c_ts)
のように計算することができ、
ここで、p1.s_tsは、第1の選択された(例えば、時間ウインドウ内で最も最近に受信された)データパケットのサーバのタイムスタンプであり、p.2s_tsは、第2の選択された(例えば、第1のパケットの少なくとも所定の時間前に受信された)データパケットのサーバのタイムスタンプであり、p1.c_tsは、第1のパケットのコンピューティングデバイスのタイムスタンプであり、p2.c_tsは、第2のデータパケットのコンピューティングデバイスのタイムスタンプである。
【0041】
ステップ260において、最後の既知のパケットに関連付けられたセッション識別子を、既知のセッションリストに追加することができ、ステップ265において、取得されたリスト内の次のパケットを評価することができる。
【0042】
ステップ270において、各々のパケットに関してアップ時間を計算することができる。説明したように、アップ時間は、クライアント(コンピューティングデバイスなど)のタイムスタンプがゼロになってからの時間を表す。このようなアップ時間を、
uptime=s_ts-(c_ts*skew)
のように計算することができ、
ここでskewは、ステップ255に関して上述したように計算される。ステップ270の実行に続いて、評価される各々のデータパケットは、アップ時間に関連付けられ得る。いくつかの実施形態においては、セット内の最第1のパケット(例えば、以前に受信したパケットがない場合)に、単に第1のアップ時間を割り当てることができる。さらに、いくつかの実施態様においては、スキューをパケットの異なるセットに対して計算し、その後にアップ時間の計算に使用するために平均することができる。
【0043】
ステップ275において、次のパケットに関連付けられたセッション識別子が既知のセッションリストにおいて発見されるかどうかを判定することができる。発見される場合、この方法はステップ280に進み、次のパケットが最後の既知のパケットに指定される。次のパケットに関連付けられたセッション識別子が既知のセッションリストにおいて発見されない場合、この方法はステップ285に進み、次のパケットのアップ時間が最後の既知のパケットのアップ時間と一致するかどうかを判定することができる。2つのアップ時間の値が所定の範囲内にある場合、一致が発見され得る。したがって、わずかな違いがあっても一致となり得る。一致は、関連するデータパケットが同じデバイスから発信された可能性が高いことを示す。アップ時間の一致が発見された場合、この方法はステップ280に進み、次のパケットが最後の既知のパケットに指定される。ステップ280から、アップ時間が一致しない場合に、この方法はステップ290に進み、取得されたリストに別のパケットが存在するかどうかを判定することができる。存在する場合、この方法はステップ265に戻り、リスト内の別の次のパケットを評価のために取得することができる。リストに他のパケットが存在しない場合、この方法は、更新された既知のセッションリストにて終了することができ、更新された既知のセッションリストを、異なるセッション識別子の間の新たに決定された一致に関してさまざまなデータベースを更新するために使用することができる。そのような更新は、デバイス識別子に関連付けられ得る格納されたテーブルに関連付けられたプライマリアップ時間に一致するアップ時間を有するデータパケットに関する情報を含むように(例えば、格納されたテーブル内の)さまざまなフィールドをマージすることを含み得る。したがって、複数の識別子が同じデバイスに関連付けられていると判断でき、異なる識別子に関する情報を共通のデバイスに対応する結合レコードに取り入れ、あるいは他のやり方でマージすることができる。
【0044】
プライマリアップ時間は指定されてよい。(1つ以上のデバイス識別子によって識別されるように)デバイスに対して複数のアップ時間が計算されている場合、1つのアップ時間を選択して、テーブルのプライマリアップ時間として指定することができる。例えば、デバイスに関連付けられた最も最近に計算されたアップ時間をプライマリアップ時間として指定し、その後に、後に計算されるアップ時間との比較に使用することができる。このように、特定のデバイスに関連付けられたプライマリアップ時間を、ネットワークの異常およびジッタの影響に照らして必要に応じて維持および更新することができる。
【0045】
方法200は反復されてよい。
k=n(既知のパケットを第1のパケットとして設定)
sessionList.push(packet(k).sessionid)
n=n+1(パケットインデックスを増やす)
while n<packetList.length(処理すべきさらなるパケットが存在する)
if packet(n).sessionid is in sessionList
k=n(これを最後の既知のパケットにする)
else
if packet(n).uptime matches*packet(k).uptime
k=n(これを最後の既知のパケットにする)
append packet(n).deviceid to sessionList(デバイスを記憶する)
n=n+1(パケットインデックスを増やす)
ここで、nはアレイ内のパケットのインデックスであり、kは既知のデバイスの最後のパケットのインデックスであり、sessionListは最初の既知のセッションと同じデバイスであると判断されたすべてのセッションのリスト(開始する最初の既知のセッションを含む)であり、matchesは所定の設定可能な期間の範囲内の値を指す。
【0046】
図3が、本発明の一実施形態を実施するために使用することができる典型的なコンピューティングシステム300を示している。
図3のシステム300は、ユーザデバイス120A~D、サーバ130、識別子サーバ140、およびサービスプロバイダ150の同類の状況において実装され得る。
図3のコンピューティングシステム300は、1つ以上のプロセッサ310およびメモリ310を含む。メインメモリ310は、一つには、プロセッサ310による実行のための命令およびデータを格納する。メインメモリ310は、動作中に実行可能コードを保存することができる。
図3のシステム300は、大容量記憶装置330、ポータブル記憶媒体ドライブ340、出力装置350、ユーザ入力装置360、グラフィックディスプレイ370、および周辺機器380をさらに含む。
【0047】
図3に示されているコンポーネントは、単一のバス390を介して接続されるものとして示されている。しかしながら、コンポーネントを1つ以上のデータ移送手段を介して接続することが可能である。例えば、プロセッサユニット310およびメインメモリ310を、ローカルマイクロプロセッサバス390を介して接続でき、大容量記憶装置330、周辺機器380、ポータブル記憶装置340、およびディスプレイシステム370を、1つ以上の入力/出力(I/O)バス390を介して接続することができる。
【0048】
磁気ディスクドライブまたは光ディスクドライブで実装され得る大容量記憶装置330は、プロセッサユニット310によって使用されるデータおよび命令を格納するための不揮発性記憶装置である。大容量記憶装置330は、本発明の実施形態を実施するためのシステムソフトウェアを、メインメモリ310にロードする目的で格納することができる。
【0049】
ポータブル記憶装置340は、
図3のコンピュータシステム300にデータおよびコードを入力し、さらには
図3のコンピュータシステム300からデータおよびコードを出力するために、フロッピー(登録商標)ディスク、コンパクトディスク(CD)、またはデジタルビデオディスク(DVD)などのポータブル不揮発性記憶媒体と協働する。本発明の実施形態を実施するためのシステムソフトウェアを、そのようなポータブル媒体に格納し、ポータブル記憶装置340を介してコンピュータシステム300に入力することができる。
【0050】
入力装置360は、ユーザインターフェースの一部を提供する。入力装置360は、英数字および他の情報を入力するためのキーボードなどの英数字キーパッド、あるいはマウス、トラックボール、スタイラス、またはカーソル方向キーなどのポインティングデバイスを含むことができる。加えて、
図3に示されるシステム300は、出力装置350を含む。適切な出力装置の例として、スピーカ、プリンタ、ネットワークインターフェース、およびモニタが挙げられる。
【0051】
ディスプレイシステム370は、液晶ディスプレイ(LCD)または他の適切なディスプレイ装置を含むことができる。ディスプレイシステム370は、テキストおよびグラフィック情報を受け取り、ディスプレイ装置への出力のために情報を処理する。
【0052】
周辺機器380は、コンピュータシステムに追加機能を加えるための任意の種類のコンピュータサポート機器を含むことができる。例えば、周辺機器380は、モデムまたはルーターを含み得る。
【0053】
図3のコンピュータシステム300に含まれるコンポーネントは、本発明の実施形態における使用に好適であり得るコンピュータシステムにおいて典型的に見られるコンポーネントであり、技術的に周知の幅広い種類のそのようなコンピュータコンポーネントを代表するように意図されている。したがって、
図3のコンピュータシステム300は、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、電話機、モバイルコンピューティングデバイス、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、または任意の他のコンピューティングデバイスであってよい。コンピュータは、さまざまなバス構成、ネットワークプラットフォーム、マルチプロセッサプラットフォーム、などを含むこともできる。Unix(登録商標)、Linux(登録商標)、Windows(登録商標)、Macintosh OS、Palm OS、および他の適切なオペレーティングシステムなど、さまざまなオペレーティングシステムを使用することができる。
【0054】
本発明は、さまざまな装置を使用して動作可能であってよいアプリケーションに実装され得る。非一時的なコンピュータ可読記憶媒体は、中央処理装置(CPU)を実行させるための命令を提供することに関与する任意の媒体を指す。そのような媒体は、これらに限られるわけではないが、光または磁気ディスクなどの不揮発性媒体、ならびにダイナミックメモリなどの揮発性媒体など、多くの形態をとることができる。非一時的なコンピュータ可読媒体の一般的な形態として、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD-ROMディスク、デジタルビデオディスク(DVD)、任意の他の光学媒体、RAM、PROM、EPROM、FLASHEPROM、ならびに任意の他のメモリチップまたはカートリッジが挙げられる。
【0055】
さまざまな形態の伝送媒体が、CPUを実行させるための1つ以上の命令の1つ以上のシーケンスの運搬に関与することができる。バス(例えば、バス390)が、データをシステムRAMに運び、CPUがシステムRAMから命令を取り出して実行する。システムRAMが受信した命令を、随意により、CPUによる実行の前または後に、固定ディスクに保存することができる。さまざまな保存の形態、ならびにそれを実現するために必要なネットワークインターフェースおよびネットワーク接続形態を、同様に実装することができる。
【0056】
種々の実施形態を上述したが、それらはあくまでも例として提示されているにすぎず、限定ではないことを理解すべきである。説明は、本発明の範囲を本明細書に記載の特定の形態に限定しようとするものではない。したがって、好ましい実施形態の幅および範囲は、上述の典型的な実施形態のいずれによっても制限されるべきではない。以上の説明が例示的であり、限定的なものではないことを理解すべきである。それどころか、この説明は、添付の特許請求の範囲によって定義され、あるいは他のやり方で当業者によって理解される本発明の精神および範囲内に含まれ得るような代案、修正、および同等物を包含するように意図される。したがって、本発明の範囲は、上記の説明を参照して決定されるべきではなく、代わりに、添付の特許請求の範囲およびその均等物の全範囲を参照して決定されるべきである。