(57)【特許請求の範囲】
【請求項１】
電気通信ネットワーク（１２）にわたって送信元（１０．１；１０．２）とサーバー（１３）との間で交換されるデータストリームをリアルタイムに処理する方法であって、
該方法は、分類器（１５）によって実行され、
該分類器は、少なくとも１つのテストのセットと、既存のＴＣＰ接続のリストとを記憶し、
該方法は、
前記データストリームのＴＣＰセグメントを受信すること（４００）であって、該ＴＣＰセグメントは、データペイロードを含み、該ペイロードは、ＨＴＴＰメッセージの少なくとも部分を含むことと、
前記ＴＣＰセグメントが属する第１のＴＣＰ接続を識別すること（４０１）、又は、前記受信されたＴＣＰセグメントについての新たな第１のＴＣＰ接続を作成することと、
前記ＨＴＴＰメッセージの前記部分内で、ＪＳＯＮデータの存在を検出すること（４０６）と、
ＪＳＯＮデータが検出された場合、該ＪＳＯＮデータに基づいて木グラフを構築すること（４０９）と、
前記構築された木グラフのプロパティ上の前記セットのうちの少なくとも１つのテストを実行して（４１０）、前記ＪＳＯＮデータが不当であるか否かを判断することと、
前記ＪＳＯＮデータが不当である場合、前記第１のＴＣＰ接続を中断すること（４１１）と、
を含む、方法。
【請求項２】
前記木グラフは、複数のノード（５００）を含み、
各ノードは、以下のタイプ、すなわち、
数値と、
文字列と、
ブール値と、
配列と、
オブジェクトと、
ヌル値と、
の中の所与のノードタイプに対応する、
請求項１に記載の方法。
【請求項３】
前記木グラフは、複数のノード（５００）を含み、
該ノードは、根ノード及び該根ノードの少なくとも１つの子ノードを含み、
前記木グラフのプロパティは、以下、すなわち、
該木グラフのノードの総数と、
該木グラフの深度と、
前記オブジェクトタイプ又は前記配列タイプからのノードの子ノードの最大数と、
の任意の組み合わせを含む、
請求項２に記載の方法。
【請求項４】
数値タイプ、文字列タイプ又はブール値タイプを有する前記木グラフの各ノード（５００）は、キー及び該キーの値と関連付けられ、
前記組み合わせは、
キーの最大長、及び／又は、値の最大長、を更に含む、
請求項３に記載の方法。
【請求項５】
前記セットの各テストは、前記木グラフの前記プロパティのうちの１つをそれぞれの所定値と比較することにあり、
前記プロパティが前記それぞれの所定値を超えている場合、カウンターが増分され、
前記カウンターが所定の閾値を超えている場合、前記ＪＳＯＮデータが不当であると分類される、
請求項３又は４に記載の方法。
【請求項６】
前記少なくとも１つのテストを実行した後に前記ＪＳＯＮデータが不当であると分類されない場合、ＪＳＯＮコンテンツ仕様を用いて完成されたＪＳＯＮスキーマに基づいた意味分類が前記ＪＳＯＮデータ上で実行され、該ＪＳＯＮデータが妥当であるか又は不当であるかが分類される、
請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記第１のＴＣＰ接続は、前記分類器（１５）によって、第１のＴＣＰセグメントを前記送信元（１０．１；１０．２）に、及び、第２のＴＣＰセグメントを前記サーバー（１３）に送信することによって中断され、
前記第１のＴＣＰセグメント及び前記第２のＴＣＰセグメントは、リセットフラグを含む、
請求項１から６のいずれか１項に記載の方法。
【請求項８】
ＪＳＯＮデータが前記ＴＣＰセグメントにおいて検出されない場合、該ＴＣＰセグメントは、前記送信元及び前記サーバーの中の前記ＴＣＰセグメントの受信者に転送される、
請求項１から７のいずれか１項に記載の方法。
【請求項９】
前記分類器（１５）は、監視されるＴＣＰ接続のリストを記憶するメモリを備え、
前記方法は、
前記第１のＴＣＰ接続を識別すると、該第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属することを検証すること（４０２）と、
前記第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属さない場合、前記ＴＣＰセグメントを前記送信元及び前記サーバーの中の該ＴＣＰセグメントの受信者に転送すること（４０３）と、
を更に含む、請求項１から８のいずれか１項に記載の方法。
【請求項１０】
前記分類器は、監視されるＴＣＰ接続のリストを記憶するメモリを備え、
各監視されるＴＣＰ接続について、ＴＣＰ接続情報が保持され、
該ＴＣＰ接続情報は、ウィンドウの底部を含み、
前記受信されたＴＣＰセグメントは、ＴＣＰシーケンス番号を含み、
前記方法は、
前記第１のＴＣＰ接続を識別すると、該第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属することを検証すること（４０２）と、
前記第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属する場合、前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応することを検証すること（４０４）と、
前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応していない場合、前記ＴＣＰセグメントを前記送信元及び前記サーバーの中の該ＴＣＰセグメントの受信者に転送すること（４０３）と、
前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応する場合、前記第１のＴＣＰ接続の前記ウィンドウの底部を更新し（４０４）、ＪＳＯＮデータの存在を検出することを続行することと、
を含む、請求項１から９のいずれか１項に記載の方法。
【請求項１１】
各既存のＴＣＰ接続は、送信元アドレス、ＴＣＰ送信元ポート、ＩＰ宛先アドレス及びＴＣＰ宛先ポートを含む識別情報によって識別され、
前記受信されたＴＣＰセグメントは、第１の送信元アドレス、第１のＴＣＰ送信元ポート、第１のＩＰ宛先アドレス及び第１のＴＣＰ宛先ポートを示すヘッダーを含む、
請求項９又は１０に記載の方法。
【請求項１２】
ＪＳＯＮデータの存在は、前記ＨＴＴＰメッセージの第１のＨＴＴＰヘッダー値に少なくとも基づいて検出される、
請求項１から１１のいずれか１項に記載の方法。
【請求項１３】
前記分類器は、ＨＴＴＰ再組み立てバッファーを含み、
該再組み立てバッファーのサイズは、少なくとも前記第１のＨＴＴＰヘッダー値の最大サイズに等しい、
請求項１２に記載の方法。
【請求項１４】
前記第１のＨＴＴＰヘッダー値は、フィールド「Content-Type」に対応する値であり、
ＪＳＯＮデータ長は、フィールド「Content-Length」に対応する第２のＨＴＴＰヘッダー値に基づいて検出される、
請求項１２又は１３に記載の方法。
【請求項１５】
コンピューティングデバイス内にロード可能であり、該コンピューティングデバイス内にロードされて、該コンピューティングデバイスによって実行されると、該コンピューティングデバイスに請求項１〜１４のいずれか１項に記載の方法を実行させるように構成されたコンピュータープログラム命令を記憶したコンピューター可読媒体を備える、
コンピュータープログラム製品。
【請求項１６】
電気通信ネットワーク（１２）にわたって送信元（１０．１；１０．２）とサーバー（１３）との間で交換されるデータストリームをリアルタイムに処理する分類器であって、  該分類器（１５）は、
少なくとも１つのテストのセットと、既存のＴＣＰ接続のリストとを記憶するメモリ（２０４）と、
前記データストリームのＴＣＰセグメントを受信するように構成された入力インターフェース（２０１）であって、前記ＴＣＰセグメントは、データペイロードを含み、該ペイロードは、ＨＴＴＰメッセージの少なくとも部分を含む、入力インターフェースと、
プロセッサ（２０２）であって、
前記ＴＣＰセグメントが属する第１のＴＣＰ接続を識別すること、又は、前記受信されたＴＣＰセグメントについての新たな第１のＴＣＰ接続を作成することと、
前記ＨＴＴＰメッセージの前記部分内で、ＪＳＯＮデータの存在を検出することと、
ＪＳＯＮデータが検出された場合、該ＪＳＯＮデータに基づいて木グラフを構築することと、
前記構築された木グラフのプロパティ上の前記セットのうちの少なくとも１つのテストを実行して、前記ＪＳＯＮデータが不当であるか否かを判断することと、
前記ＪＳＯＮデータが不当である場合、前記第１のＴＣＰ接続を中断することと、
を行うように構成されたプロセッサと、
を備える、分類器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的には、通信ネットワークにおけるデータ解析に関し、より正確には、データストリームの分類に関する。
【背景技術】
【０００２】
このセクションにおいて記述される手法は追及することはできたが、必ずしも以前から考えられてきたか、又は追及されてきた手法であるとは限らない。それゆえ、本明細書において別の指示がない限り、このセクションにおいて記述される手法は、本出願における特許請求の範囲に対する先行技術でもなければ、このセクションに含めることによって従来技術であると認めるものでもない。
【０００３】
ＨＴＴＰプロトコルは、インターネットエンジニアリングタスクフォース（ＩＥＴＦ）によってＲＦＣ２６１６として標準化され、ＴＣＰ／ＩＰスタック（伝送制御プロトコル／インターネットプロトコル）上で伝送される。ＨＴＴＰプロトコルは、セッションレベルの一部とみなすことができる。
【０００４】
ＨＴＴＰは、非常に多くのサービスを実施するのに使用されており、そして最も使用されるセッションプロトコルである。実際に、ますます多くのアプリケーションがウェブブラウザー内で実行され、それらのアプリケーションの通信は、ＨＴＴＰに基づいている。
【０００５】
ＨＴＴＰの１つの利点は単純さである。なぜならば、このプロトコルがサポートする要求方法は少数であり、基本的なアプリケーションが用いる要求方法は２つ又は３つ（主として、ＧＥＴ及びＰＯＳＴと呼ばれる方法）であるからである。
【０００６】
ＨＴＴＰプロトコルによれば、ＨＴＴＰコンテンツは、ＨＴＴＰメッセージのＨＴＴＰ本体部（又はペイロード）内に挿入され、ＨＴＴＰヘッダー部は、ＨＴＴＰメッセージの制御情報を含む。
【０００７】
ＨＴＴＰプロトコルの効率を改善するために、持続的接続及びパイプライン化等の幾つかの拡張が、ＨＴＴＰプロトコル標準規格に従って開発されてきた。
【０００８】
持続的接続は、ＨＴＴＰ要求の完了後（サーバーからのＨＴＴＰ応答の受信後）、ＨＴＴＰクライアントとＨＴＴＰサーバーとの間のＨＴＴＰセッションを搬送するＴＣＰ接続をオープンに維持することにある。その場合、ＨＴＴＰクライアントは、同じＴＣＰ接続上で別のＨＴＴＰ要求を送信することができる。
【０００９】
ＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクトノーテーション（ＪＳＯＮ：JavaScript Object Notation）は、人間可読テキストを用いて、属性（名前又はキーとも称される）値のペアからなるデータオブジェクトを伝送する、オープン標準のフォーマットである。
【００１０】
ＪＳＯＮは、非同期のブラウザー／サーバー通信に用いられる主要なデータフォーマットのうちの１つであり、主にＸＭＬ（拡張可能マークアップ言語）に置き換わるものである。
【００１１】
ＪＳＯＮは、２０１４年３月に、ＩＥＴＦ  ＲＦＣ  ７１５９によって定義されている。
【００１２】
ＪＳＯＮプロトコルは、多くの実装において展開され、ＸＭＬ−ＲＰＣ又はシンプルオブジェクトアクセスプロトコル（ＳＯＡＰ：Simple Object Access Protocol）の代替として選択することができるＲＰＣプロトコルであるＪＳＯＮ−ＲＰＣ（リモートプロシージャコール）によって用いられる。
【００１３】
ＪＳＯＮは、少数のデータタイプ及びコマンドのみを定義するシンプルなプロトコルである。このＪＳＯＮは、非同期ＪａｖａＳｃｒｉｐｔ及びＸＭＬ（ＡＪＡＸ：Asynchronous JavaScript and XML）技術においても用いることができる。ＡＪＡＸは、通常は表示されたウェブページ上でのユーザーの動作に応答して、ウェブページがウェブブラウザーにロードされて表示された後に新たなデータを要求する、ウェブページの機能についての用語である。
【００１４】
ＪＳＯＮは、Ｆａｃｅｂｏｏｋ（登録商標）、Ｇｏｏｇｌｅ（登録商標）、Ｓｐｏｔｉｆｙ（登録商標）等のウェブサービスにアクセスする、多くのオープンのレプリゼンテーショナルステートトランスファー（ＲＥＳＴ：REpresentational State Transfer）ＡＰＩによってサポートされるフォーマットとして用いられる。この場合、このＪＳＯＮは、一般的には、ＴＣＰを介して搬送されるＨＴＴＰ／ＨＴＴＰＳプロトコルと関連付けられる。
【００１５】
その場合、ＪＳＯＮコンテンツは、ＨＴＴＰ  ＧＥＴリクエスト及び／又はレスポンスのＨＴＴＰ本体の部分である。
【００１６】
ＨＴＴＰヘッダー「Content-Type（コンテンツタイプ）」に設定されるＭＩＭＥ（多目的インターネットメール拡張）タイプは、「application-JSON（アプリケーション−ＪＳＯＮ）」である。
【００１７】
ＪＳＯＮは、以下の５つの基本タイプを定義する。
数値：小数部を含むことができ、かつ指数Ｅ表記を用いることができる、符号付き小数。
文字列：０以上のユニコード文字のシーケンス。文字列は、二重引用符で囲まれ、バックスラッシュによるエスケープ構文をサポートする。
ブール値：真又は偽の値のいずれか。
配列：０以上の値の順序付けられたリスト、この値の各々は、任意のタイプのものとすることができる。配列は、要素をコンマで区切る、角括弧表記を用いる。
オブジェクト：名前／値のペアの順序付けられていない集合体。ここで、名前（キーとも称される）は文字列である。オブジェクトは連想配列を表現するように意図されているため、必須ではないが、各キーがオブジェクト内で一意であることが推奨される。オブジェクトは、波括弧で囲まれており、コンマを用いて各ペアを区切る。各ペア内で、記号「：」が、キー又は名前をその値から区切る。
ヌル値：nullの語を用いる、空値。
【００１８】
構文要素の前後又は構文要素の間のホワイトスペースは許容され、無視される。４つのＡＳＣＩＩ文字、すなわち、スペース、水平タブ、ラインフィード及びキャリッジリターンが、ホワイトスペースとみなされる。
【００１９】
ＪＳＯＮスキーマは、クライアントから提出されたデータの自動テスト又はバリデーション（validation：妥当性確認）の目的で、ＪＳＯＮベースのフォーマットを指定してＪＳＯＮデータの構造を規定する。ＪＳＯＮスキーマは、ＸＭＬＳスキーマ（ＸＳＤ）に由来する概念に基づいているが、ＪＳＯＮベースである。ＪＳＯＮデータスキーマを用いて、ＪＳＯＮデータの妥当性確認を行う（validate）ことができる。
【００２０】
ＪＳＯＮの主要な利点は、単純さ及び融通性である。
【００２１】
しかしながら、ＪＳＯＮの主要な欠点は、単一のメッセージが異なる表現を有するおそれがあることに起因して、構文解析（parsing：パース）の複雑性をもたらすテキスト表現である。この理由のため、ＪＳＯＮの構文解析には、多量のリソースを要し、ＪＳＯＮベースのサービスは、サービス拒否攻撃（Deny of Service attacks）をより容易に受けてしまう場合がある。
【００２２】
また、場合によっては、融通性の高さも、複雑な実装を認めてしまうがゆえに、欠点である。したがって、ソフトウェアバグの確率も上昇する。
【００２３】
したがって、ＪＳＯＮベースのサービスは、ファジング攻撃を受けてしまう場合がある。このファジング攻撃では、攻撃者は、ＡＰＩサーバーにランダムデータを送信することによって、ＡＰＩサーバー内のセキュリティホールを見つけ出そうとする。
【００２４】
したがって、ＨＴＴＰによって搬送されたＪＳＯＮデータをリアルタイムで解析し、ＪＳＯＮ構造の妥当性及び構成要素の意味をチェックし、何らかのウェブサービスを守るために、潜在的な脅威を表すデータを破棄することが可能な効率的な方法が必要とされている。
【発明の概要】
【００２５】
これらの需要のうちの少なくとも幾つかに対処するために、本発明の第１の態様は、電気通信ネットワークにわたって送信元とサーバーとの間で交換されるデータストリームをリアルタイムに処理する方法であって、該方法は、分類器と、少なくとも１つのテストの第１のセットと、既存のＴＣＰ接続のリストとによって実行され、該方法は、
前記データストリームのＴＣＰセグメントを受信することであって、該ＴＣＰセグメントは、ペイロードを含み、該ペイロードは、ＨＴＴＰメッセージの少なくとも部分を含むことと、
前記ＴＣＰセグメントが属する第１のＴＣＰ接続を識別すること、又は、前記受信されたＴＣＰセグメントについての新たな第１のＴＣＰ接続を作成することと、
前記ＨＴＴＰメッセージの前記部分内で、ＪＳＯＮデータの存在を検出することと、
ＪＳＯＮデータが検出された場合、該ＪＳＯＮデータに基づいて木グラフを構築することと、
前記構築された木グラフのプロパティ上の前記第１のセットのうちの少なくとも１つのテストを実行して、前記ＪＳＯＮデータが不当である（invalid）か否かを判断することと、
前記ＪＳＯＮデータが不当である場合、前記第１のＴＣＰ接続を中断することと、
を含む、方法に関する。
【００２６】
したがって、高負荷の計算リソースを要することなく、ＪＳＯＮデータの早期分類を実行することができる。実際には、木グラフ構造により、ＪＳＯＮデータに容易にアクセスすることが可能になり、早期分類が、木グラフのプロパティ（例えば、グラフの構造特徴）上で実行される。これにより、サーバー（又はクライアント）を攻撃者から保護することが可能になる。加えて、本方法は、ＴＣＰレベルにおいて実行されるので、端末ピアにとってトランスペアレントであるとともに、リアルタイムで実行することができる。
【００２７】
幾つかの実施形態によれば、前記木グラフは、複数のノードを含み、各ノードは、以下のタイプ、すなわち、
数値と、
文字列と、
ブール値と、
配列と、
オブジェクトと、
ヌル値と、
の中の所与のノードタイプに対応することができる。
【００２８】
したがって、木グラフの構造は、特に、ＪＳＯＮ言語に専用である。
【００２９】
補足として、前記木グラフは、複数のノードを含むことができ、該ノードは、根ノード及び該根ノードの少なくとも１つの子ノードを含み、前記木グラフのプロパティは、以下、すなわち、
該木グラフのノードの総数と、
該木グラフの深度と、
前記オブジェクトタイプ又は前記配列タイプからのノードの子ノードの最大数と、
の任意の組み合わせを含むことができる。
【００３０】
更なる補足として、数値タイプ、文字列タイプ又はブール値タイプを有する前記木グラフの各ノードは、キー及び該キーの値と関連付けることができ、前記組み合わせは、
キーの最大長、及び／又は、
値の最大長、
を更に含むことができる。
【００３１】
したがって、早期分類は、木グラフのプロパティを簡単に計算することができるので、高負荷の計算リソースを要しない。
【００３２】
補足又は一変形として、前記第１のセットの各テストは、前記木グラフの前記プロパティのうちの１つをそれぞれの所定値と比較することにあることができ、前記プロパティが前記それぞれの所定値を超えている場合、カウンターを増分することができ、前記カウンターが所定の閾値を超えている場合、前記ＪＳＯＮデータを不当であると分類することができる。
【００３３】
したがって、早期分類は、ＪＳＯＮデータの分類が比較のみに基づいているので、高負荷の計算リソースを要しない。
【００３４】
幾つかの実施形態によれば、前記少なくとも１つのテストを実行した後に前記ＪＳＯＮデータが不当であると分類されない場合、ＪＳＯＮコンテンツ仕様を用いて完成されたＪＳＯＮスキーマに基づいた意味分類が前記ＪＳＯＮデータ上で実行され、該ＪＳＯＮデータが妥当である（valid）か又は不当であるかを分類することができる。
【００３５】
したがって、計算リソースの観点において早期分類よりも労力を要する意味分類は、ＪＳＯＮデータが不当であると分類されていない場合にのみ実行される。
【００３６】
幾つかの実施形態によれば、前記第１のＴＣＰ接続は、前記分類器によって、第１のＴＣＰセグメントを前記クライアントに、及び、第２のＴＣＰセグメントを前記サーバーに送信することによって中断することができ、前記第１のＴＣＰセグメント及び前記第２のＴＣＰセグメントは、リセットフラグを含む。
【００３７】
これにより、サーバー（又はクライアント）を攻撃者から保護することが可能になる。加えて、本方法は、ＴＣＰレベルにおいて実行されるので、端末ピアにとってトランスペアレントであるとともに、リアルタイムで実行することができる。
【００３８】
幾つかの実施形態によれば、ＪＳＯＮデータが前記ＴＣＰセグメントにおいて検出されない場合、該ＴＣＰセグメントは、前記クライアント及び前記サーバーの中の前記ＴＣＰセグメントの受信者に転送することができる。
【００３９】
これにより、ＪＳＯＮデータを含まないデータストリームのレイテンシーに悪影響を与えることを回避することが可能になる。
【００４０】
幾つかの実施形態によれば、前記分類器は、監視されるＴＣＰ接続のリストを記憶するメモリを備えることができ、
前記方法は、
前記第１のＴＣＰ接続を識別すると、該第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属することを検証すること（verifying）と、
前記第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属さない場合、前記ＴＣＰセグメントを前記クライアント及び前記サーバーの中の該ＴＣＰセグメントの受信者に転送することと、
を更に含むことができる。
【００４１】
これにより、分類に関連しないデータストリーム（例えば、信頼されたクライアントとのＴＣＰ接続）のレイテンシーに悪影響を与えることを回避することが可能になる。
【００４２】
幾つかの実施形態によれば、前記分類器は、監視されるＴＣＰ接続のリストを記憶するメモリを備えることができ、各監視されるＴＣＰ接続について、ＴＣＰ接続情報を保持することができ、該ＴＣＰ接続情報は、ウィンドウの底部（Bottom of Window）を含み、前記受信されたＴＣＰセグメントは、ＴＣＰシーケンス番号を含むことができ、
前記方法は、
前記第１のＴＣＰ接続を識別すると、該第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属することを検証することと、
前記第１のＴＣＰ接続が前記監視されるＴＣＰ接続のリストに属する場合、前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応することを検証することと、
前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応していない場合、前記ＴＣＰセグメントを前記クライアント及び前記サーバーの中の該ＴＣＰセグメントの受信者に転送することと、
前記ＴＣＰシーケンス番号が前記第１のＴＣＰ接続の前記ウィンドウの底部に対応する場合、前記第１のＴＣＰ接続の前記ウィンドウの底部を更新し、ＪＳＯＮデータの存在を検出することを続行することと、
を更に含むことができる。
【００４３】
補足として又は一変形において、各既存のＴＣＰ接続は、送信元アドレス、ＴＣＰ送信元ポート、ＩＰ宛先アドレス及びＴＣＰ宛先ポートを含む識別情報によって識別することができ、前記受信されたＴＣＰセグメントは、第１の送信元アドレス、第１のＴＣＰ送信元ポート、第１のＩＰ宛先アドレス及び第１のＴＣＰ宛先ポートを示すヘッダーを含むことができる。
【００４４】
これにより、ＴＣＰセグメントを効率的に構文解析して、これらのＴＣＰセグメントが、既存のＴＣＰ接続に属するのか否かを検出することが可能になる。
【００４５】
幾つかの実施形態によれば、ＪＳＯＮデータの存在は、前記ＨＴＴＰメッセージの第１のＨＴＴＰヘッダー値に少なくとも基づいて検出することができる。
【００４６】
補足として、前記分類器は、ＨＴＴＰ再組み立てバッファーを含むことができ、該再組み立てバッファーのサイズは、少なくとも前記第１のＨＴＴＰヘッダー値の最大サイズに等しくすることができる。
【００４７】
これにより、再組み立てに必要とされるメモリリソース量を低減することが可能になり、このことは、多数の同時のＴＣＰ接続をサポートする上で明らかに利点である。
【００４８】
補足又は一変形として、前記第１のＨＴＴＰヘッダー値は、フィールド「Content-Type」に対応する値とすることができる。ＪＳＯＮデータ長も、フィールド「Content-Length」に対応する第２のＨＴＴＰヘッダー値に基づいて検出することができる。
【００４９】
本発明の第２の態様は、コンピューティングデバイス内にロード可能であり、このコンピューティングデバイス内にロードされて、このコンピューティングデバイスによって実行されると、このコンピューティングデバイスに本発明の第１の態様による方法を実行させるように構成されたコンピュータープログラム命令を記憶したコンピューター可読媒体を備える、コンピュータープログラム製品に関する。
【００５０】
本発明の第３の態様は、電気通信ネットワークにわたって送信元とサーバーとの間で交換されるデータストリームをリアルタイムに処理する分類器であって、
少なくとも１つのテストの第１のセットと、既存のＴＣＰ接続のリストとを記憶するメモリと、
前記データストリームのＴＣＰセグメントを受信するように構成された入力インターフェースであって、前記ＴＣＰセグメントは、データペイロードを含み、該ペイロードは、ＨＴＴＰメッセージの少なくとも部分を含む、入力インターフェースと、
プロセッサであって、
前記ＴＣＰセグメントが属する第１のＴＣＰ接続を識別すること、又は、前記受信されたＴＣＰセグメントについての新たな第１のＴＣＰ接続を作成することと、
前記ＨＴＴＰメッセージの前記部分内で、ＪＳＯＮデータの存在を検出することと、
ＪＳＯＮデータが検出された場合、該ＪＳＯＮデータに基づいて木グラフを構築することと、
前記構築された木グラフのプロパティ上の前記第１のセットのうちの少なくとも１つのテストを実行して、前記ＪＳＯＮデータが不当であるか否かを判断することと、
前記ＪＳＯＮデータが不当である場合、前記第１のＴＣＰ接続を中断することと、
を行うように構成されたプロセッサと、
を備える、分類器に関する。
【００５１】
本発明は、添付図面の図に、限定としてではなく例として示される。添付図面において、同様の参照符号は同様の要素を参照する。
【図面の簡単な説明】
【００５２】
【図１】本発明の１つの実施形態による電気通信システムを表す図である。
【図２】本発明の１つの実施形態による分類器を表す図である。
【図３】本発明の１つの実施形態による分類器のプロセッサを示す図である。
【図４】本発明の幾つかの実施形態による方法のステップを示す図である。
【図５】本発明の幾つかの実施形態による、ＪＳＯＮデータを表す木グラフを示す図である。
【発明を実施するための形態】
【００５３】
図１は、本発明の一実施形態によるシステムを示している。
【００５４】
本システムは、幾つかのクライアント１０．１及び１０．２を備える。これらのクライアントは、例えば、ラップトップ１０．１及びデスクトップコンピューター１０．２とすることができる。
【００５５】
クライアント１０．１及び１０．２に限定が加えられることはなく、これらのクライアントは、ラップトップ、デスクトップコンピューター、タッチパネル又はスマートフォン等の任意のユーザーデバイスとすることができる。
【００５６】
クライアント１０．１及び１０．２は、それぞれアクセスルーター１１．１及び１１．２を介してインターネット等の電気通信ネットワーク１２にアクセスすることができる。
【００５７】
図１において、アクセスポイント１１．１及び１１．２は、有線手段を介してアクセスされる。しかしながら、アクセスルーター１１．１及び１１．２は、例えばＷｉ−ｆｉを介してクライアント１０．１及び１０．２がアクセスすることができる無線アクセスポイントとすることもできる。
【００５８】
したがって、クライアントは、アクセスルーター１１．１及び１１．２並びにネットワーク１２を通じてアクセスすることができるサーバー１３とデータストリームを交換することができる。
【００５９】
例えば、サーバー１３は、ＪＳＯＮを用いるアプリケーションサーバーである。
【００６０】
エンティティ１４は、サーバー１３とネットワーク１２との間に位置する。このエンティティは、例えば、ファイアーウォール又は侵入防止システム（ＩＰＳ）とすることができる。エンティティ１４は、本発明による分類器１５を含む。
【００６１】
分類器１５の位置に限定が加えられることはなく、この分類器は、代替的に、ネットワーク１２内に又はクライアント側に（例えば、アクセスルーター１０．１又は１０．２内に）位置することができる。
【００６２】
分類器１５は、クライアント１０．１及び１０．２とサーバー１３との間のデータストリーム、特にサーバー１３が受信したデータをフィルタリングすることを担当する。
【００６３】
図２は、本発明の幾つかの実施形態による分類器１５の詳細な構造を示している。
【００６４】
分類器１５は、ＩＰパケット受信機等の入力インターフェース２０１と、プロセッサ２０２と、ランダムアクセスメモリ２０３と、マスストレージメモリ２０４と、ＩＰパケット送信機等の出力インターフェース２０５とを備える。
【００６５】
プロセッサ２０２の内部構造が図３に示されており、このプロセッサは、ＴＣＰ／ＩＰプロセッサ３０１と、ＨＴＴＰプロセッサ３０２と、ＪＳＯＮプロセッサ２０３とを備える。
【００６６】
以下で説明するように、ＴＣＰ／ＩＰプロセッサ３０１は、ＩＰパケット受信機２０１から受信されたＴＣＰセグメントを分類することと、幾つかのＴＣＰ接続及び関連付けられた情報コンテキストを管理することと、所与のＴＣＰ接続について、ＴＣＰシーケンス番号に従って受信されたＴＣＰセグメントを順序付けることとを行うように構成される。
【００６７】
ＨＴＴＰプロセッサ３０２は、上記で説明したように、順序付けられたＴＣＰセグメントを受信し、ＨＴＴＰヘッダーを明確化（delineating：境界を確定）し、ＨＴＴＰメソッド、ＵＲＬ又はContent-Type等の何らかの特定のＨＴＴＰヘッダー等の有用なＨＴＴＰ情報を抽出するように構成される。特に、「application/json」等のContent-Typeが検出されると、ＨＴＴＰプロセッサ３０２は、ＨＴＴＰ本体も明確化する。反対に、ＪＳＯＮデータを含むいかなるＨＴＴＰ本体部も搬送しないＴＣＰセグメントは、ＩＰパケット送信機２０５を通じてサーバー１３に自動的に転送することができる。
【００６８】
ＪＳＯＮプロセッサ３０３は、ＪＳＯＮスキーマを考慮に入れてＪＳＯＮデータを構文解析するように構成される。このＪＳＯＮスキーマは、マスストレージメモリ２０４に記憶された事前定義された文法及び意味規則のセットであり、ＪＳＯＮコンテンツ仕様によって完成され、これは、マスストレージメモリ２０４に記憶された事前定義された意味仕様を含む。受信されたＴＣＰセグメントは、ＪＳＯＮデータの分類に基づいて（受信者に転送されるか否かについて）フィルタリングされる。
【００６９】
図４は、本発明の幾つかの実施形態による、分類器１５によって実行される方法のステップを示すフローチャートである。
【００７０】
以下の例において、クライアント１０．１及び１０．２によってサーバー１３に送信されたリクエストのみが分類器１５によって処理される。サーバー１５によって返されるレスポンスは処理されない。なぜなら、例えば、サーバー５は信頼性があるとみなされるためである。しかしながら、幾つかの場合において、分類器１５は、サーバー１５が感染しており、クライアント１０．１及び１０．２を脅威にさらそうとしているか否かを判断するために、サーバーレスポンスを解析及びフィルタリングすることができる。この場合、サーバー１５からクライアント１０．１及び１０．２のうちの一方に流動するＴＣＰセグメントについて、同一の方法ステップを分類器１５によって実行することができる。
【００７１】
ＴＣＰ接続は、２つの独立した半分ずつのＴＣＰ接続（クライアント１０．１又は１０．２からサーバー１３への一方の接続、及びサーバー１３からクライアント１０．１又は１０．２への他方の接続）として見ることができるので、例示の目的で、以下の説明において、クライアント１０．１又は１０．２からサーバー１３へ流動するデータストリームの解析及びフィルタリングのみを検討する。
【００７２】
ステップ４００において、ＴＣＰセグメントがＩＰパケット受信機２０１によって受信される。
【００７３】
ステップ４０１において、ＴＣＰセグメントは、既存のＴＣＰ接続に属するのか又は新たなＴＣＰ接続に属するのかについて分類される。例えば、ＴＣＰ接続は、４つ組｛ＩＰ送信元アドレス、ＴＣＰ送信元ポート、ＩＰ宛先アドレス、ＴＣＰ宛先ポート｝によって識別することができる。ＴＣＰセグメントを構文解析して、４つ組要素を取得することができ、この抽出された４つ組を、オープン接続の４つ組と比較することができる。オープン接続のリストは、例えば、マスストレージメモリ２０４に記憶することができる。
【００７４】
新たなＴＣＰ接続は、同一の４つ組を有するＴＣＰ接続がマスストレージメモリ２０４に未だリスティングされていない場合、ＳＹＮ及びＳＹＮ−ＡＣＫハンドシェイクパケットを有するＴＣＰセグメントの連続受信に際して監視することができる。
【００７５】
例えば、第１のＴＣＰ接続との一致が検出された場合、ＴＣＰセグメントは、第１のＴＣＰ接続に属すると分類することができる。そうでない場合、新たなＴＣＰ接続が作成され、オープンＴＣＰ接続のリストに追加される。新たなＴＣＰ接続は、受信されたＴＣＰセグメントの４つ組と関連付けられる。
【００７６】
サーバー１３のオープンＴＣＰ接続のリストの中から、分類器１５は、監視されるＴＣＰ接続のリストを保持することができる。監視されるＴＣＰ接続は、分類器１５によって観察されることになるＴＣＰ接続であり、一方、監視されないＴＣＰ接続は、観察する必要がない。例えば、監視されるＴＣＰ接続のリストは、マスストレージメモリ２０４に記憶することができる。追加規則を定義して、新たなＴＣＰ接続が、監視されるＴＣＰ接続のリストに属するか否かを判断することができる。例えば、サーバー１３に関連するデータストリームのみを観察することは有用であり得る。この場合、宛先ポート（例えば、ポート８０）上のフィルターを設定することができ、自らの４つ組にこの宛先ポートを有するＴＣＰ接続のみが監視される。
【００７７】
ステップ４０２において、第１のＴＣＰ接続が、監視されるＴＣＰ接続のリストに属するか否かが判断される。
【００７８】
第１のＴＣＰ接続が、監視されるＴＣＰ接続のリストに属さない場合、ＴＣＰセグメントは、ステップ４０３において、サーバー１３並びにクライアント１０．１及び１０．２の一方の中からＴＣＰセグメントの受信者に転送される。
【００７９】
第１のＴＣＰ接続が、監視されるＴＣＰ接続のリストに属する場合、ステップ４０４において、この第１のＴＣＰ接続と関連付けられた内部データ構造を更新することができる。内部データ構造は、接続状態、ウィンドウの底部等の、第１のＴＣＰ接続に関連する持続データを格納するＴＣＰ情報コンテキストを含む。また、内部データ構造は、受信されたＴＣＰセグメントをそのセグメント番号によって順序付けて集めるＴＣＰセグメントペンディングリストも含む。新たなＴＣＰ接続を検出すると、ＴＣＰ／ＩＰプロセッサ３０１は、このＴＣＰ接続に新たなデータ構造を割り当てる。ＴＣＰ接続は、ＲＳＴ又はＦＩＮフラッグを有するＴＣＰセグメントを受信すると、リリースされる。
【００８０】
更新ステップ４０４は、シーケンス番号によって順序付けられた第１のＴＣＰ接続のＴＣＰセグメントペンディングリスト内に、受信されたＴＣＰセグメントを挿入することを含む。受信されたＴＣＰセグメントのシーケンス番号が第１のＴＣＰ接続のウィンドウの底部に等しくない（すなわち、ＴＣＰセグメントのシーケンス外である）場合、方法は、ステップ４０３に進み、ＴＣＰセグメントは、このＴＣＰセグメントの受信者に転送される。そうでない場合、ステップ４０４において、ウィンドウの底部が、ＴＣＰセグメント長の長さに基づいて更新される。
【００８１】
転送されないＴＣＰセグメントは、ステップ４０５からの、上位層プロセッサ３０２及び３０３によって更なる解析のために保持される。
【００８２】
ステップ４０５において、ＴＣＰセグメント（転送されていないもの）及びＴＣＰペンディングリストの更なる連続セグメントは、ＨＴＴＰプロセッサ４０５によって処理及び解析される。
【００８３】
例えば、１つ以上のＴＣＰセグメントのペイロード内にカプセル化されたＨＴＴＰメッセージは、以下の構造を有することができる。
【表１】
0006548823.tif 000002
【００８４】
ＨＴＴＰメッセージは、幾つかの連続ＴＣＰセグメントにわたって分割される可能性があるため、ＨＴＴＰメッセージの幾つかの部分を再組み立てする必要がある場合がある。しかしながら、ステップ４０５における再組み立てプロセスには、ステップ４０６において、ＨＴＴＰメッセージ内のＪＳＯＮデータの存在又は欠如を検出するように、Content-Type、Content-Length（コンテンツ長）等の関連ＨＴＴＰヘッダー値を抽出する必要があるのみである。
【００８５】
したがって、本発明は、抽出されたヘッダー値の最大長（Content-Type値及びContent-Length値の最大長）に設定される深度を有する再組み立てバッファーを用いることを提案する。これにより、必要とされるメモリリソース量を低減することが可能になり、このことは、多数の同時ＴＣＰ接続が監視される場合、明確な利点である。
【００８６】
例えば、２つの連続ＴＣＰセグメントを以下のものとすることができる。
【表２】
0006548823.tif 000003
【００８７】
上記で示したこの特定の例において、関連ＨＴＴＰヘッダー値（Content-Typeに対応する）は、２つのＴＣＰセグメントにわたって分割され、このことは、再組み立てバッファーがステップ４０６においてＪＳＯＮデータの存在を検出するのに有用であり得ることを示している。
【００８８】
ステップ４０６においてＪＳＯＮデータの欠如が検出される場合、ステップ４０３においてウィンドウの底部に位置する受信されたＴＣＰセグメントが転送される。
【００８９】
ＨＴＴＰメッセージの本体は、最後のＨＴＴＰヘッダーの後ろ（この例のContent-Typeフィールドの後ろ）に空の行を見つけることによって識別することができる。ステップ４０６においてＪＳＯＮデータの存在が検出された場合、ＪＳＯＮデータは、ステップ４０７において圧縮され（ホワイトスペース記号が除去されることを意味する）、圧縮されたＪＳＯＮデータは、ステップ４０８において、ＪＳＯＮデータ再組み立てバッファー内でコピーすることができる。ＪＳＯＮデータの長さは、「Content-Length」ＨＴＴＰヘッダーによって与えられる。ＨＴＴＰ持続的接続が用いられる場合、ＪＳＯＮデータの最後が検出されると、次のＨＴＴＰリクエスト／レスポンスを明確化することができる。
【００９０】
ＪＳＯＮプロセッサ３０３は、ＪＳＯＮデータの内部表現を木グラフとして生成するために、ステップ４０９において、ＪＳＯＮデータ再組み立てバッファー内に含まれるＪＳＯＮデータを構文解析するように構成される。
【００９１】
木グラフは、複数のノードを含み、各ノードは、例えば、以下の要素の任意の組み合わせを含む構造によって表される。
ノードタイプ：数値（０）、文字列（１）、ブール値（２）、配列（３）、オブジェクト（４）、ヌル値（５）、
圧縮ＪＳＯＮテキストデータへのキー文字列開始インデックス、
キー文字列長（特に配列アイテムにおいて、キー名がない場合、０に等しいものとすることができる）、
ブール値ノード、整数ノード及び文字列ノードについての値文字列開始インデックス、
ブール値ノード、整数ノード及び文字列ノードについての値文字列長。
【００９２】
配列アイテムについて、キー文字列開始インデックスをこの配列の内側のインデックスに置き換えることができ（第１のアイテムについて０、第２のアイテムについて１、等）、キー文字列長は、０に設定することができる。
【００９３】
オブジェクト及び配列について、値文字列開始インデックス及び値文字列長は、子ノードに向かうポインターのリストに置き換えることができる。
【００９４】
ＪＳＯＮデータに基づく木グラフを構築するためのこれらの規則は、例示の目的でのみ与えられ、本発明は、ＪＳＯＮデータに基づく木グラフを構築するためのあらゆる方法を包含する。
【００９５】
図５は、上記で与えられたＪＳＯＮデータの例に基づいて取得することができる内部木グラフ構造を示している。
【００９６】
図５において、各ノードは、５００で参照され、上記で詳述したように、ノードタイプ２０１と、キー文字列開始インデックス５０２と、キー文字列長５０３と、値文字列開始インデックス５０４と、値文字列長５０５とを含む。
【００９７】
例えば、根ノードは、オブジェクト（タイプ＝４）であり、それゆえ、キー文字列開始長は０である。値文字列開始インデックス及び値文字列長は、上記で説明したように、４つの子ノード５０６、５０７、５０８及び５０９へのポインターである。
【００９８】
第１の子ノード５０６は、ＪＳＯＮデータ部分“firstName":"John"を表す。
フィールド５０１内の「１」は、ノードが文字列であることを意味する、
フィールド５０２内の「２」は、ＪＳＯＮデータ内のインデックス２（ＪＳＯＮデータの２番目の記号）においてノードのキー"firstName"が開始することを意味する、
フィールド５０３内の「９」は、キー"firstName"の長さである、
フィールド５０４内の「１１」は、ＪＳＯＮデータ内のインデックス１１においてノードの値"John"が開始することを意味する、
フィールド５０５内の「４」は、値"John"の長さである。
【００９９】
子ノード５０７は、ＪＳＯＮデータ部分"age":25を表し、これは数値である。子ノード５０８は、配列"phoneNumbers"を表し、子ノード５０９は、配列"children"を表す。
【０１００】
したがって、ＪＳＯＮプロセッサ３０３は、ステップ４０９において、ＪＳＯＮデータ再組み立てバッファーからＪＳＯＮデータを得て木グラフを構築するように構成される。幾つかの実施形態によれば、構文解析ステップ４０９は、ノードの記述が不完全である（すなわち、ＪＳＯＮデータ再組み立てバッファーが十分なＪＳＯＮデータを含んでいない）場合、中断することができる。その場合、解析終了ポインター（end-of-analysis pointer）を、不完全なノードの記述の開始点に移動させることができる。構文解析ステップ４０９は、ウィンドウの底部に等しいシーケンス番号を有する第１のＴＣＰ接続の次のＴＣＰセグメントの受信時に再開することができる。
【０１０１】
そのような木グラフは、任意のＪＳＯＮノードに迅速にアクセスしてＪＳＯＮデータをブラウズするように、ＪＳＯＮプロセッサ３０３によって有利に用いることができる。
【０１０２】
図４に戻って参照すると、ステップ４１０において、生成された木グラフのプロパティを用いてＪＳＯＮデータの早期分類を実行することもできる。
【０１０３】
早期分類は、以降で説明するように、意味分類等の、より深層の分類への予備である分類を指す。
【０１０４】
例えば、以下の木グラフプロパティのうちの１つ又は幾つかを、ステップ４１０における早期分類の考慮に入れることができる。
ノードの総数、
木グラフの深度、
オブジェクト／配列についての子ノードの最大数、
キーの最大長、
値の最大長。
【０１０５】
ＪＳＯＮスキーマに基づいて、これらのプロパティ上の幾つかの基準を、ステップ４１０における早期分類のために事前定義し、チェックすることができる。
【０１０６】
例えば、ＪＳＯＮスキーマは、サーバー１３によって用いられるＪＳＯＮ  ＡＰＩの文法及び意味を詳述している。ＪＳＯＮコンテンツ仕様は、サーバー１３によって用いられるＪＳＯＮ  ＡＰＩの意味を完成させることができる。
【０１０７】
例えば、シンプルなＡＰＩについて、ノードの総数はＮ未満（Ｎは整数）であり、グラフは最大深度Ｍ（Ｍは整数）を有するとみなすことができる。また、オブジェクト／配列についての子ノードの数は、ＪＳＯＮ  ＡＰＩに依拠する所定の値に制限することができる。
【０１０８】
したがって、テストの第１のセットが事前定義される。これらのテストの各々は、結果、例えばＯＫ（成功）又はＮＯＫ（失敗）を返すことができる。ＮＯＫの数が第１の所定の閾値以上である場合、ＪＳＯＮデータは不当であると分類することができる。ＮＯＫの数は、テストについてＮＯＫ結果が発行される度にカウンターを増分することによって求めることができる。
【０１０９】
代替的に、１つのテストのみを適用することができる。この場合、テストの結果を用いて、ステップ４１０においてＪＳＯＮデータを分類する。
【０１１０】
ＪＳＯＮデータがステップ４１０において早期分類によって不当であると分類される場合、ＴＣＰ／ＩＰプロセッサ３０１は、ステップ４１１において第１のＴＣＰ接続を中断することができる。例えば、ＴＣＰ／ＩＰプロセッサ３０１は、リセットフラグを含む２つのＴＣＰセグメントを生成して、この生成されたＴＣＰセグメントを送信元と受信者とに送信し、それによって第１のＴＣＰ接続をクローズすることができる。これにより、高負荷の計算リソースを要することなく端末ピアを保護することが可能になる。なぜなら、早期分類は所定の閾値との比較しか要しないためである。
【０１１１】
ＪＳＯＮデータがステップ４１０において不当であると分類されない場合、ＪＳＯＮプロセッサ３０３は、ステップ４１２において、意味分類を実行することができる。
【０１１２】
例えば、サーバー１３によって用いられるＪＳＯＮ  ＡＰＩと関連付けられるＪＳＯＮコンテンツ仕様から、キー及び値の要素に関連する意味規則を、各ＪＳＯＮノード意味タイプについて定義することができる。各キー文字列を、ＪＳＯＮデータを表す木グラフ内のノードの位置に依拠した辞書（すなわち、可能な値のセット）と照合することができる。
【０１１３】
例えば、図５の例において、木グラフの第１のレベルにおいて可能なキー値は、｛"firstName"，"age"，"phoneNumbers"，"children"｝であり、"phoneNumbers"オブジェクト内で可能なキー値は、｛"type"，"Number"｝である。
【０１１４】
値に関して、ノードが数値であるか、文字列であるか又はブール値であるかに依拠して異なる規則を定義することができる。
数値について、その数値が所定の範囲に属することをチェックすることができる、
文字列について、文字セットを事前定義することができ、これには、ＡＳＣＩＩＩ又はＵＴＦ−８文字セットが含まれる。例えば、電話番号値は、数字及びハイフンのみを含む。
【０１１５】
所与のノードについてチェックされる各規則は、所与のノードの意味タイプに依拠する。
【０１１６】
さらに、テスト（又は規則）の第２のセットをチェックすることができ、ＯＫ及びＮＯＫ等の結果を返すことができる。ＮＯＫの結果の数が第２の事前定義された閾値を超える場合、ＪＳＯＮデータを不当であると分類することができ、ＴＣＰ／ＩＰプロセッサ３０１は、ステップ４１１において第１のＴＣＰ接続を中断することができる。そうでない場合、ＪＳＯＮデータを妥当と分類することができ、ステップ４０３において、ウィンドウの底部に位置する受信されたＴＣＰセグメントが転送される。
【０１１７】
したがって、図１で示したように、本発明による方法は、好ましくは、分類器１５において、ウェブサービスを運用する保護されたサーバー１３の手前で実行される。そのようなトポロジーにおいて、分類器１５は、ウェブＡＰＩを用いた信頼されていないクライアント１０．１又は１０．２によって送信される、着信リクエストを搬送するいかなるＴＣＰ／ＩＰパケットをも中断することが可能である。システムによって解析されると、ＩＰパケット（又はＴＣＰセグメント）は、意図されたウェブサーバー１５に単に転送される。ＪＳＯＮデータが危険であると検出された場合、本発明による方法は、サーバー１３を保護するように、ＴＣＰセグメントを転送する代わりにＴＣＰ接続をリセットすることを提案する。ＴＣＰ確認応答スキームは、端末ピア（サーバー１３並びにクライアント１０．１及び１０．２）によって管理されるので、ＴＣＰレベルにおいて解析プロセスはトランスペアレントである。したがって、本発明による方法は、複雑なＴＣＰ管理層を要さず、このことは明らかに利点である。なぜなら、これにより、多数の同時接続を一斉に処理することが可能になるためである。
【０１１８】
本発明はコンピュータープログラム製品に組み込むこともでき、そのコンピュータープログラム製品は、本明細書において説明される方法を実施できるようにする全ての機構を含み、情報処理システムにロードされるときに、情報処理システムを生成する。この文脈におけるコンピュータープログラム手段又はコンピュータープログラムは、情報処理能力を有するシステムが直接、又は別の言語への変換後に特定の機能を実行するように意図される１組の命令に関する、任意の言語、コード又は表記における任意の表現を意味する。そのようなコンピュータープログラムは、データ、命令、メッセージ又はメッセージパケット及び他の機械可読情報を媒体から読み出すことができるようにする、コンピューター可読媒体又は機械可読媒体上に記憶することができる。コンピューター可読媒体又は機械可読媒体は、ＲＯＭ、フラッシュメモリ、ディスクドライブメモリ、ＣＤ−ＲＯＭ及び他の永久記憶装置のような不揮発性メモリを含むことができる。さらに、コンピューター可読媒体又は機械可読媒体は、例えば、ＲＡＭ、バッファー、キャッシュメモリ、及びネットワーク回線のような揮発性記憶装置を含む場合がある。さらに、コンピューター可読媒体又は機械可読媒体は、有線ネットワーク又は無線ネットワークを含む、ネットワークリンク及び／又はネットワークインターフェースのような一時的状態の媒体内にあるコンピューター可読情報又は機械可読情報を含むことができ、デバイスがそのようなコンピューター可読情報又は機械可読情報を読み出すことができるようになる。
【０１１９】
「備える」、「含む」、「組み込む」、「収容する」、「である」、及び「有する」のような表現は、説明及び関連する特許請求の範囲を解釈する際に非排他的に解釈されるべきであり、すなわち、同様に存在していると明示的には規定されない他の項目又は構成要素を考慮に入れるように解釈されるべきである。単数形への参照は複数形への参照であるとも解釈されるべきであり、その逆も同様である。
【０１２０】
現時点で本発明の好ましい実施形態であるとみなされるものが図示及び説明されてきたが、本発明の真の範囲から逸脱することなく、種々の他の変更を加えることができること、及び代わりに均等物を用いることができることは当業者には理解されよう。さらに、本明細書において記述される中心的な発明の概念から逸脱することなく、特定の状況を本発明の教示に適合させるように数多くの変更を加えることができる。さらに、本発明の実施形態は、上記の特徴の全てを含むとは限らない場合がある。それゆえ、本発明は開示される特定の実施形態に限定されるのではなく、上記で広く定義されたように本発明の範囲内に入る全ての実施形態を含むことを意図している。
【０１２１】
本明細書において開示される種々のパラメーターを変更できること、及び本発明の範囲から逸脱することなく、開示及び／又は特許請求される種々の実施形態を組み合わせることができることは当業者には容易に理解されよう。
【図１】
0006548823.tif 000004
【図２】
0006548823.tif 000005
【図３】
0006548823.tif 000006
【図４】
0006548823.tif 000007
【図５】
0006548823.tif 000008