(57)【要約】ＶＰＮを使用するアプリケーションは、プロキシトラフィックをリモートプロキシサーバへ送信するようにプログラムされる。プロキシサーバへのトラフィックは、傍受され、ユーザ空間に移され、１つ以上のオプションに従って処理される。トラフィックは、トラフィック内のドメイン名を解決し、参照されるコンテンツをリクエストするローカルプロキシによって終結され得る。傍受されたトラフィックは、異なるプロキシサーバへ転送する前に暗号化されるヘッダ内にプレーンテキストを含み得る。トラフィックは、ブロック、抑圧、ローカルな終結、ＶＰＮを通じた送信、又はその他のオプション等のルーティング選択を判定するために、ユーザエージェント文字列等が評価され得る。多数のＶＰＮは、同じユーザコンピュータ上で動作し得、プロキシトラフィックは、それを、ＶＰＮを通じて送信することによって、全てのＶＰＮを通過することによって、又は異なるＶＰＮを通じてルーティングすることによって、傍受及び処理され得る。【選択図】図４
2021506144.tif 000002
【特許請求の範囲】
【請求項１】
プロキシサーバへのリクエストを処理するための方法であって、
ユーザのコンピュータのネットワーク識別子とは異なるネットワーク識別子である第１の識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第１のリクエストを、ユーザのコンピュータ上の第２のコンピューティングモジュールから、ユーザの前記コンピュータ上で実行する第１のコンピューティングモジュールにより受信することと、
前記第１の識別子と関連付けられた宛先へ前記第１のリクエストを送信することなく、ユーザの前記コンピュータ上で実行する第３のコンピュータモジュールにより前記第１のリクエストを終結することと
を含む、方法。
【請求項２】
前記第１のリクエストは、コンテンツサーバと関連付けられた第１のドメイン名を含み、
前記方法は、
前記第１のドメイン名と関連付けられた第２の識別子を、前記第３のコンピュータモジュールにより取得することと、
前記第１の識別子と関連付けられた宛先へ第２のリクエストを送信することなく、前記第２の識別子と関連付けられた宛先へ、ユーザの前記コンピュータから前記第２のリクエストを送信することと
を更に含む、請求項１に記載の方法。
【請求項３】
前記第２の識別子を取得することは、前記第１のドメイン名を解決するためにドメイン名サービス（ＤＮＳ）リクエストを発行することを含む、請求項２に記載の方法。
【請求項４】
前記ＤＮＳリクエストは、ユーザの前記コンピュータ上で実行する１つ以上のアプリケーションにより使用されるＤＮＳサーバのＩＰアドレスとは異なるＩＰアドレスに発行される、請求項３に記載の方法。
【請求項５】
前記ＤＮＳリクエストへのレスポンスを受信することと、
ユーザの前記コンピュータ上で実行される前記１つ以上のアプリケーションにより使用されるＤＮＳキャッシュを更新することなく、ユーザの前記コンピュータ上に前記レスポンスを格納すること
を更に含む、請求項３に記載の方法。
【請求項６】
前記第１のモジュールにより前記第１のリクエストを受信することは、ネットワークトラフィックをカーネル空間からユーザ空間へ移すことが可能な仮想ネットワークデバイスから前記第１のリクエストを受信することを含む、請求項１に記載の方法。
【請求項７】
前記第３のコンピューティングモジュールはローカルプロキシサーバである、請求項１に記載の方法。
【請求項８】
前記第１のリクエストを受信する前に、前記第１のネットワーク識別子を含むプロキシのセッティングをユーザの前記コンピュータ上で指定すること
を更に含む、請求項１に記載の方法。
【請求項９】
前記プロキシのセッティングは、仮想プライベートネットワーク（ＶＰＮ）の前記セッティングの内の１つとして指定される、請求項８に記載の方法。
【請求項１０】
前記第１のネットワーク識別子はＩＰアドレスである、請求項１に記載の方法。
【請求項１１】
プロキシサーバへのリクエストを処理するための方法であって、
ユーザのコンピュータのネットワーク識別子とは異なるネットワーク識別子である第１の識別子と関連付けられた宛先の第１のプロキシサーバへのリクエストとしてフォーマット化された第１のリクエストを、ユーザのコンピュータ上の第２のコンピューティングモジュールから、ユーザの前記コンピュータ上の第１のコンピューティングモジュールにより受信することと、
暗号化された部分を取得するために、受信された前記第１のリクエストの少なくとも一部をユーザの前記コンピュータ上で暗号化することと、
前記第１の識別子と関連付けられた前記宛先へ、暗号化された前記部分を送信することなく、前記第１の識別子とも、ユーザの前記コンピュータの前記ネットワーク識別子とも異なるネットワーク識別子である第２の識別子と関連付けられた宛先へ、暗号化された前記部分を送信することと、
を含む、方法。
【請求項１２】
第２の識別子と関連付けられた前記宛先へ、暗号化された前記部分を送信することは、前記第２の識別子と関連付けられた第２のプロキシサーバへ、暗号化された前記部分をリダイレクトすることを含む、請求項１１に記載の方法。
【請求項１３】
前記第１のリクエストの前記少なくとも一部を暗号化することは、ＣＯＮＮＥＣＴと、ＨＯＳＴと、ユーザエージェントとのヘッダを含むグループからの１つ以上のプレーンテキストのヘッダを暗号化することを含む、請求項１１に記載の方法。
【請求項１４】
前記第１のリクエストの前記少なくとも一部を暗号化することと、前記第２の識別子と関連付けられた前記宛先へそれを送信することとは、ユーザの前記コンピュータ上のＶＰＮクライアントから前記第２の識別子と関連付けられたＶＰＮサーバへ、暗号化された仮想プライベートネットワーク（ＶＰＮ）トンネル内で前記少なくとも一部を送信することを含む、請求項１１に記載の方法。
【請求項１５】
前記第１のリクエストを受信する前に、前記第１の識別子を含むプロキシのセッティングをユーザの前記コンピュータ上で指定することを更に含む、請求項１１に記載の方法。
【請求項１６】
前記プロキシのセッティングは、仮想プライベートネットワーク（ＶＰＮ）に対するセッティングに含まれる、請求項１５に記載の方法。
【請求項１７】
前記第２の識別子と関連付けられた前記宛先へ、前記第１のリクエストの前記少なくとも一部を送信することは、前記第１のプロキシサーバとは異なる第２のプロキシサーバへ、前記ＶＰＮのＶＰＮトンネルを通じて前記第１のリクエストを送信することを含む、請求項１４に記載の方法。
【請求項１８】
前記第１のモジュールにより前記第１のリクエストを受信することは、カーネル空間からユーザ空間へ前記第１のリクエストのデータを移す仮想ネットワークデバイスから、前記第１のリクエストの前記データを受信することを含み、前記第１のモジュールは前記ユーザ空間でも動作する、請求項１１に記載の方法。
【請求項１９】
前記第１のプロキシサーバへのリクエストとしてフォーマット化された前記第１のリクエストをユーザの前記コンピュータ上で受信することに加えて、１つ以上のコンテンツサーバへのリクエストとしてフォーマット化された１つ以上の追加のリクエストであって、１つ以上の第３の識別子にアドレス指定されている前記１つ以上の追加のリクエストをユ
ーザの前記コンピュータ上で受信することと、
前記第１のリクエストの一部として前記第１の識別子にアドレス指定された、受信されたトラフィックの少なくとも一部を、前記第２の識別子と関連付けられたリモートプロキシサーバへ送信することと、
前記１つ以上のコンテンツサーバへの１つ以上のリクエストの内の少なくとも一部を、前記第１の識別子及び前記第２の識別子とは異なるネットワーク識別子である第４の識別子と関連付けられたＶＰＮサーバへ送信することと
を更に含む、請求項１１に記載の方法。
【請求項２０】
前記リモートプロキシサーバ及び前記ＶＰＮサーバは、ユーザの前記コンピュータとは異なる同じコンピュータ上に設置される、請求項１９に記載の方法。
【請求項２１】
前記１つ以上の第３の識別子と関連付けられたドメイン名に対する１つ以上のドメイン名サービス（ＤＮＳ）リクエストを、ユーザの前記コンピュータにより発行することと、
前記第１のリクエストの前記トラフィックに対する、前記第１の識別子にアドレス指定された何れのＤＮＳリクエストも、ユーザの前記コンピュータにより発行されることを控えることと
を更に含む、請求項１９に記載の方法。
【請求項２２】
リモートプロキシサーバを通じてプロキシＶＰＮトラフィックにＶＰＮサービスを命令するプロキシのセッティングを含む１つ以上の仮想プライベートネットワーク（ＶＰＮ）セッティングをユーザのコンピュータ上で指定することと、
前記リモートプロキシサーバへの前記プロキシのセッティングに従ってルーティングされたネットワークトラフィックを傍受するようにプログラムされた、ユーザの前記コンピュータ上のプロキシ傍受モジュールを実行することと、
前記１つ以上のＶＰＮセッティングに従って、ユーザの前記コンピュータ上で前記ＶＰＮサービスをアクティブにすることと、
前記１つ以上のＶＰＮセッティングに従って、前記リモートプロキシサーバにアドレス指定されたネットワークトラフィックを前記プロキシ傍受モジュールにより傍受することと、
前記ＶＰＮセッティングに含まれる前記リモートプロキシサーバ以外の宛先へ、傍受された前記ネットワークトラフィックを送信することと、
前記ＶＰＮセッティング内で参照される前記リモートプロキシサーバへ、傍受された前記ネットワークトラフィックを送信することを控えることと
を含む、方法。
【請求項２３】
前記プロキシのセッティングは、前記リモートプロキシサーバの第１のネットワーク識別子及び宛先ポートを含み、
前記方法は、
傍受される前記ネットワークトラフィックの傍受を可能にするために、前記第１のネットワーク識別子と前記識別ポートとの内の少なくとも１つを前記プロキシ傍受モジュールに提供することと、
傍受されるネットワークトラフィック内で前記第１のネットワーク識別子と前記識別ポートとの内の前記少なくとも１つを検出することに応答して、傍受される前記ネットワークトラフィックを前記プロキシ傍受モジュールにより傍受することと
を更に含む、請求項２２に記載の方法。
【請求項２４】
前記第１のネットワーク識別子は、プロキシサーバとして機能することが可能なコンピュータと関連付けられていない、請求項２３に記載の方法。
【請求項２５】
前記第１のネットワーク識別子は、ルーティング不可能なＩＰアドレスと、予約されたＩＰアドレスと、テストＩＰアドレスとを含むグループから選択される、請求項２４に記載の方法。
【請求項２６】
前記第１のネットワーク識別子は、ＤＮＳ（ドメイン名サービス）記録と関連付けられていないドメイン名である、請求項２３に記載の方法。
【請求項２７】
前記ドメインへのＤＮＳリクエストを傍受することと、前記ＤＮＳリクエストが発行される前にユーザの前記コンピュータ上の前記プロキシ傍受モジュールによりアクセス可能なＩＰアドレスを、前記ＤＮＳリクエストのソースへ返すことと
を更に含む、請求項２６に記載の方法。
【請求項２８】
前記プロキシのセッティング内の設定パラメータとして、前記第１のネットワーク識別子と関連付けられたＩＰアドレスを提供すること
を更に含む、請求項２３に記載の方法。
【請求項２９】
前記ネットワークトラフィックを傍受することは、カーネル空間からユーザ空間へ前記ネットワークトラフィックを移すようにプログラムされた仮想ネットワークデバイスから前記トラフィックを受信することを含む、請求項２２に記載の方法。
【請求項３０】
前記ＶＰＮセッティングに含まれる前記リモートプロキシサーバ以外の前記宛先へ、傍受されたネットワークトラフィックを送信することは、ユーザの前記コンピュータ上のローカルプロキシサーバへ前記ネットワークトラフィックを送信することを含む、請求項２２に記載の方法。
【請求項３１】
１つ以上の処理ユニットと、前記１つ以上の処理ユニットに動作可能に結合された１つ以上のメモリユニットとを含むシステムであって、
前記１つ以上のメモリユニットは、
第１のネットワーク識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第１のリクエストであって、第１のドメイン名及びユーザエージェント文字列を含む前記第１のリクエストを、前記１つ以上の処理ユニットを含む第１のコンピューティングモジュールにより受信することと、
前記ユーザエージェント文字列のコンテンツに少なくとも部分的に基づいて、各リクエストに適用するための複数の処理選択肢の内の選択された処理選択肢を、前記第１のコンピューティングモジュールにより選択すること
を前記１つ以上の処理ユニットにさせるのに有効な実行可能コードを格納し、
前記複数の処理選択肢の内の第１の処理選択肢は、
ユーザの前記コンピュータ上のローカルプロキシにより前記第１のリクエストを終結することと、
前記第１のネットワーク識別子と関連付けられた前記宛先へ前記第１のリクエストの何れの部分も転送することなく、前記第１のドメイン名と関連付けられた宛先へ前記第１のリクエストをその後送信することと
を含む、
システム。
【請求項３２】
前記複数の処理選択肢の内の第２の処理選択肢は、前記第１のネットワーク識別子とは異なる第２のネットワーク識別子と関連付けられたリモートプロキシへ、前記第１のリクエストの少なくとも一部を転送することを含む、請求項３１に記載のシステム。
【請求項３３】
前記複数の処理選択肢の内の第２の処理選択肢は、前記第１のネットワーク識別子と関
連付けられた前記宛先、及び前記第１のドメイン名と関連付けられた前記宛先の何れかへ前記第１のリクエストからデータを送信することなく、前記第１のリクエストをブロックすることを含む、請求項３１に記載のシステム。
【請求項３４】
前記実行可能コードは、前記ユーザエージェント文字列の少なくとも一部を分析することによって、前記複数の処理選択肢の内の前記処理選択肢を選択することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項３１に記載のシステム。
【請求項３５】
前記実行可能コードは、コンピュータネットワーク内のリモート分類コンピュータへ分類リクエストを送信することと、前記分類コンピュータから分類レスポンスを受信することとによって、前記ユーザエージェント文字列の前記少なくとも一部を分析することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項３４に記載のシステム。
【請求項３６】
前記第１のリクエストのペイロードが前記第１のコンピューティングモジュールにより受信される前に暗号化される一方で、前記第１のドメイン名及び前記ユーザエージェント文字列は、プレーンテキストとして前記第１のリクエストに含まれる、請求項３１に記載のシステム。
【請求項３７】
前記ペイロードは、ハイパーテキストトランスポートプロトコルセキュア（ＨＴＴＰＳ）の仕様に従って暗号化される、請求項３６に記載のシステム。
【請求項３８】
前記第１のドメイン名は、ＣＯＮＮＣＴと、ＨＯＳＴと、ＳＮＩとのヘッダを含むグループから選択されたヘッダ内の前記第１のリクエストに含まれる、請求項３１に記載のシステム。
【請求項３９】
１つ以上の処理ユニットと、前記１つ以上の処理ユニットに動作可能に結合された１つ以上のメモリユニットとを含むシステムであって、
前記１つ以上のメモリユニットは、
第１のネットワーク識別子と関連付けられた宛先のプロキシサーバへのリクエストとしてフォーマット化された第１のリクエストであって、第１のドメイン名を含む前記第１のリクエストを、１つ以上のユニットを含む第１のコンピューティングモジュールにより受信することと、
前記第１のリクエストを発行したアプリケーションを判定することと、
前記第１のリクエストを発行した前記アプリケーションに基づいて、前記第１のリクエストに適用するための、複数の処理選択肢の内の選択された処理選択肢を選択することと
を前記１つ以上の処理ユニットにさせるのに有効な実行可能コードを格納し、
前記複数の処理選択肢の内の第１の処理選択肢は、前記第１のリクエストをローカルプロキシにより終結することと、前記第１のネットワーク識別子と関連付けられた前記宛先へ前記第１のリクエストの何れの部分も転送することなく、前記第１のドメイン名と関連付けられた宛先へ前記リクエストをその後送信することを含む、
システム。
【請求項４０】
前記第１のリクエストを発行した前記アプリケーションを判定することは、前記第１のドメイン名に少なくとも部分的に依存する、請求項３９に記載のシステム。
【請求項４１】
前記実行可能コードは、前記第１のリクエストに含まれるＣＯＮＮＣＴと、ＨＯＳＴと、ＳＮＩとのヘッダを含むグループから選択された少なくとも１つのヘッダのコンテンツを使用して、前記第１のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項３９
に記載のシステム。
【請求項４２】
前記第１のリクエストは、ユーザエージェント文字列を付加的に含み、
前記実行可能コードは、前記ユーザエージェント文字列のコンテンツに基づいて、前記第１のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記１つ以上の処理ユニットにさせるのに更に有効である、
請求項３９に記載のシステム。
【請求項４３】
前記実行可能コードは、前記第１のリクエストに含まれる、ユーザエージェントと、ＣＯＮＮＣＴと、ＨＯＳＴと、ＳＮＩとのヘッダを含むグループから選択された少なくとも２つのヘッダのコンテンツに基づいて、前記第１のリクエストを発行した前記アプリケーションを少なくとも部分的に判定することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項４２に記載のシステム。
【請求項４４】
前記実行可能コードは、１つ以上の異なるアプリケーションと関連付けられた、以前に傍受された１つ以上のリクエストを分析することによって、前記第１のリクエストに対して、前記複数の処理選択肢の内の選択された前記処理選択肢を選択することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項３９に記載のシステム。
【請求項４５】
前記実行可能コードは、以前に傍受された前記１つ以上のリクエストが、高優先度のアプリケーションの予め定義されたリストからの１つ以上のアプリケーションと関連付けられていた場合に、前記第１のリクエストをブロックすることを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項４４に記載のシステム。
【請求項４６】
前記実行可能コードは、以前に傍受された前記１つ以上のリクエストが、前記第１のリクエストを発行した前記アプリケーションよりも高い優先度を有するアプリケーションと関連付けられていた場合に、発行された前記第１のリクエストをブロックすることを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項４４に記載のシステム。
【請求項４７】
前記第１のネットワーク識別子とは異なる第２のネットワーク識別子と関連付けられたリモートプロキシを更に含み、前記複数の処理選択肢の内の第２の処理選択肢は、前記第１のリクエストの少なくとも一部を前記リモートプロキシへ転送することを含む、請求項３９に記載のシステム。
【請求項４８】
前記リモートプロキシは、前記第１のリクエストを発行した前記アプリケーションと、前記第１のドメイン名と関連付けられた前記コンテンツサーバとの間のデータ交換のレートを抑圧するようにプログラムされる、請求項４７に記載のシステム。
【請求項４９】
前記複数の処理選択肢の内の第２の処理選択肢は、ローカル仮想プライベートネットワーク（ＶＰＮ）クライアントとリモートＶＰＮサーバとの間に確立された暗号化トンネルを通じて前記第１のリクエストの少なくとも一部を送信することを含む、請求項３９に記載のシステム。
【請求項５０】
前記複数の処理選択肢の内の第２の処理選択肢は、前記第１のリクエストを発行した前記アプリケーションと関連付けられたトラフィックにより消費されるデータの量を測定することを含む、請求項３９に記載のシステム。
【請求項５１】
１つ以上の処理ユニットと、前記１つ以上の処理ユニットに動作可能に結合された１つ以上のメモリユニットとを含むシステムであって、
前記１つ以上のメモリユニットは、
第１のネットワーク識別子を含むプロキシのセッティングを含む第１の仮想プライベートネットワーク（ＶＰＮ）サービスに対するセッティングと、第２のＶＰＮサービスに対するセッティングとを受信することと、
第１の仮想ネットワークデバイス（ＶＮＤ）と関連付けられた前記第１のＶＰＮサービスと、第２のＶＮＤと関連付けられた前記第２のＶＰＮサービスとをアクティブにすることと、
前記第２のＶＰＮサービスと第１のＶＰＮサーバとの間に第１のトンネルを確立することと、
前記第１のネットワーク識別子と関連付けられたネットワークトラフィックを前記第１のＶＮＤにルーティングすることと、
前記第１のネットワーク識別子と関連付けられていない少なくとも幾つかのネットワークトラフィックを前記第２のＶＮＤにルーティングすることと
を前記１つ以上の処理ユニットにさせるのに有効な実行可能コードを格納する
システム。
【請求項５２】
前記実行可能コードは、
前記第１のネットワーク識別子への第１のリクエストであって、第１のドメイン名を含む前記第１のリクエストを前記第１のＶＮＤから傍受することと、
前記第１のネットワーク識別子と関連付けられた宛先へ前記第１のリクエストを送信することなく、ローカルプロキシサーバにより前記第１のリクエストを終結することと、
前記第２のＶＰＮサービスにより確立された前記第１のトンネルを通じて前記第１のＶＰＮにルーティングされるリダイレクトされた前記リクエストを、前記第１のドメイン名と関連付けられた宛先に発行することと
を前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５１に記載のシステム。
【請求項５３】
前記実行可能コードは、
前記第１のネットワーク識別子への第２のリクエストであって、第２のドメイン名を含む前記第２のリクエストを前記第１のＶＮＤから傍受することと、
前記第１のネットワーク識別子と関連付けられた宛先へ前記第２のリクエストを送信することなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバを使用して前記第２のリクエストを終結することと、
前記第１のＶＮＤ及び前記第２のＶＮＤの何れかを通じて第３のリクエストをルーティングすることなく、前記第２のドメイン名と関連付けられた宛先に前記第３のリクエストを発行することと
を前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５２に記載のシステム。
【請求項５４】
前記実行可能コードは、ユーザの前記コンピュータに接続された何れのＶＰＮトンネルをも迂回して、前記第２のドメイン名と関連付けられた前記宛先へ前記第３のリクエストを送信することを前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５３に記載のシステム。
【請求項５５】
前記実行可能コードは、
何れのＶＰＮトンネルをも迂回して、前記第１のトンネルを通じてルーティングされていない前記第１のＶＰＮサービスに、前記第１のＶＰＮサービスによって全てのトラフィックをルーティングすること
を前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５３に記載のシステム。
【請求項５６】
前記実行可能コードは、
前記第１のＶＰＮサービスによって、それ自体と第２のＶＰＮサーバとの間に第２のトンネルを確立することと、
前記第２のトンネルを通じて、前記第２のドメイン名と関連付けられた前記宛先へ前記第３のリクエストを送信することと
を前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５３に記載のシステム。
【請求項５７】
前記第１のＶＰＮサービス及び前記第２のＶＰＮサービスは、前記第１のＶＰＮトンネル及び前記第２のＶＰＮトンネルを確立するために、異なるＶＰＮプロトコルを使用する、請求項５６に記載のシステム。
【請求項５８】
前記第２のＶＰＮサービスは、前記ＶＰＮトンネルを確立するために、ＩＰＳＥＣ（インターネットプロトコルセキュア）プロトコルを使用する、請求項５７に記載のシステム。
【請求項５９】
前記実行可能コードは、
前記第１のＶＮＤにルーティングされた前記ネットワークトラフィックを検査及び変更することをオペレーティングシステムによって前記第１のＶＰＮサービスに許可することと、
前記第２のＶＮＤにルーティングされた少なくとも幾つかのネットワークトラフィックの前記第２のＶＰＮサービスによる検査及び変更を前記オペレーティングシステムによって防止することと
を前記１つ以上の処理ユニットにさせるのに更に有効である、請求項５１に記載のシステム。
【請求項６０】
前記第１のＶＰＮサービスは、前記オペレーティングシステムに含まれないＶＰＮクライアントを使用する一方で、前記第２のＶＰＮサービスは、前記オペレーティングに含まれるネイティブＶＰＮクライアントを使用する、請求項５９に記載のシステム。
【請求項６１】
前記第１のＶＮＤを通じてドメイン名サービス（ＤＮＳ）リクエストをルーティングすることを更に含む、請求項５１に記載のシステム。
【請求項６２】
第１のネットワーク識別子を含むプロキシのセッティングを含むユーザのコンピュータ上の第１の仮想プライベートネットワーク（ＶＰＮ）サービスに対するセッティングと、第２のＶＰＮサービスに対するセッティングとをユーザの前記コンピュータ上で指定することと、
第１の仮想ネットワークデバイス（ＶＮＤ）と関連付けられた前記第１のＶＰＮサービスと、第２のＶＮＤと関連付けられた第２のＶＮＤサービスであって、それ自体と第１のＶＰＮサーバとの間に第１のトンネルを確立する前記第２のＶＰＮサービスとをユーザの前記コンピュータ上でアクティブにすることと、
前記第１のネットワーク識別子と関連付けられたネットワークトラフィックをユーザの前記コンピュータによって前記第１のＶＮＤにルーティングすることと、
前記第１のネットワーク識別子と関連付けられていない少なくとも幾つかのネットワークトラフィックをユーザの前記コンピュータによって前記第２のＶＮＤにルーティングすることと、
前記第１のネットワーク識別子への第１のリクエストであって、第１のドメイン名を含む前記第１のリクエストをユーザの前記コンピュータによって前記第１のＶＮＤから傍受することと、
前記第１のネットワーク識別子と関連付けられた宛先へ前記第１のリクエストを送信す
ることなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバによる前記第１のリクエストをユーザの前記コンピュータにより終結することと、
前記第２のＶＰＮサービスによって確立された前記第１のトンネルを通じて前記第１のＶＰＮサーバにルーティングされる、リダイレクトされたリクエストを、ユーザの前記コンピュータによって、前記第１のドメイン名と関連付けられた宛先に発行することと
を含む、方法。
【請求項６３】
前記第１のネットワーク識別子への第２のリクエストであって、第２のドメイン名を含む前記第２のリクエストをユーザの前記コンピュータによって前記第１のＶＤＮから傍受することと、
前記第１のネットワーク識別子と関連付けられた宛先へ前記第２のリクエストを送信することなく、ユーザの前記コンピュータ上で実行するローカルプロキシサーバを使用して前記第２のリクエストをユーザの前記コンピュータによって終結することと、
前記第１のＶＮＤ及び前記第２のＶＮＤの何れかを通じて第３のリクエストをルーティングすることなく、前記第２のドメイン名と関連付けられた前記コンテンツサーバに前記第３のリクエストを発行することと
を更に含む、請求項６２に記載の方法。
【請求項６４】
ユーザの前記コンピュータに接続された何れのＶＰＮトンネルをも迂回して、前記第２のドメイン名と関連付けられた宛先へ前記第３のリクエストを送信することを更に含む、請求項６３に記載の方法。
【請求項６５】
前記第１のＶＰＮサービスは、何れのＶＰＮトンネルをも迂回して、前記第１のトンネルを通じてルーティングされない全てのトラフィックを送信する一方で、前記第２のＶＰＮサービスのみが、それ自体と前記第１のＶＰＮサーバとの間にトンネルを確立する、請求項６３に記載の方法。
【請求項６６】
前記第１のＶＰＮサービスによって、それ自体と第２のＶＰＮサーバとの間に第２のトンネルを確立することと、
前記第２のトンネルを通じて、前記第２のドメインと関連付けられた前記宛先へ前記第３のリクエストを送信することと
を更に含む、請求項６３に記載の方法。
【請求項６７】
前記第１のＶＰＮサービス及び前記第２のＶＰＮサービスは、前記第１のＶＰＮトンネル及び前記第２のＶＰＮトンネルを確立するために、異なるＶＰＮプロトコルを使用する、請求項６６に記載の方法。
【請求項６８】
前記第２のＶＰＮサービスは、前記ＶＰＮトンネルを確立するためにＩＰＳＥＣ（インターネットプロトコルセキュア）プロトコルを使用する、請求項６７に記載の方法。
【請求項６９】
前記第１のＶＮＤにルーティングされた前記ネットワークトラフィックを検査及び変更することを、ユーザの前記コンピュータ上の前記オペレーティングシステムによって前記第１のＶＰＮサービスに許可することと、
前記第２のＶＮＤにルーティングされた少なくとも幾つかのネットワークトラフィックの前記第２のＶＰＮサービスによる検査及び変更を、ユーザの前記コンピュータ上の前記オペレーティングシステムによって防止することと
を更に含む、請求項６２に記載の方法。
【請求項７０】
前記第１のＶＰＮサービスは、前記オペレーティングシステムに含まれないＶＰＮクライアントを使用する一方で、前記第２のＶＰＮサービスは、前記オペレーティングシステ
ムに含まれるネイティブＶＰＮクライアントを使用する、請求項６９に記載の方法。
【請求項７１】
前記第１のＶＮＤを通じてドメイン名サービス（ＤＮＳ）リクエストをルーティングすることを更に含む、請求項６２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２０１７年１２月１日に出願の米国仮特許出願整理番号６２／５９３，７１９、２０１８年１月１７日に出願の米国仮特許出願整理番号６２／６１８，３９７、２０１８年８月８日に出願の米国特許出願整理番号１６／０５８，５１１、２０１８年８月８日に出願の米国特許出願整理番号１６／０５８，５６７、及び２０１８年８月８日に出願の米国特許出願整理番号１６／０５８，６１０の利益を主張し、それらは、全ての目的で、その全体が参照により本明細書にこれにより組み込まれる。
【０００２】
本発明は、一般的に、プロキシ接続を実装するためのシステム及び方法に関する。
【背景技術】
【０００３】
コンピュータネットワーク上のデータトラフィックの急速な拡大は、規則ベースのトラフィック処理に対するサポートの増加を必要とする。企業は、選択されたリソースへのアクセスに対してユーザ毎の許可をセットし得、エンドユーザは、ソースＩＰアドレスを秘匿することによって彼らのプライバシーを保つために、選択されたリソースを、仲介サーバを通じてアクセスすることを欲し得、その他のアプリケーションに対するトラフィックが遅延又は抑圧され得る一方で、ボイスオーバーＩＰ等の選択されたアプリケーションに対するトラフィックは、利用可能な最低のレイテンシで搬送されるべきである。
【０００４】
他のサーバからリソースを探索しているクライアントからのリクエストに対する仲介としての機能を果たすコンピュータシステム又はアプリケーションであるプロキシサーバを配備することによって、規則ベースのトラフィック処理はしばしば実装される。プロキシサーバの一タイプはフォワードプロキシである。フォワードプロキシは、クライアントとは異なるコンピュータ上にあり得（リモートフォワードプロキシ）、又は、クライアントと同じコンピュータ上にあり得る（ローカルフォワードプロキシ）。
【０００５】
フォワードプロキシ、特に、ローカルフォワードプロキシの改善された実装を提供することは、当該技術分野の進歩があるであろう。
【図面の簡単な説明】
【０００６】
発明の利点を容易に理解するために、上で簡単に説明した発明のより具体的な説明は、添付の図面に説明された特定の実施形態への参照によって与えられるであろう。これらの図面は、発明の典型的な実施形態のみを描写し、それ故、その範囲を限定するとみなすべきではないと理解し、発明は、添付の図面の使用を通じて、付加的な特殊性及び詳細と共に説明及び解説されるであろう。
【０００７】
【図１】ＶＰＮと関連付けられたリモートフォワードプロキシを通じてトラフィックをルーティングするための従来技術のネットワーク環境の概略的ブロック図である。
【図２】本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するためのネットワーク環境の概略的ブロック図である。
【図３】本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するための方法の処理フロー図である。
【図４】本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするためのネットワーク環境の概略的ブロック図である。
【図５】本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするための方法の処理フロー図である。
【図６】本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する異なる処理選択肢の内の１つを動的に選択するためのネットワーク環境の概略的ブロック図である。
【図７】本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する異なる処理選択肢の内の１つを動的に選択するための方法の処理フロー図である。
【図８】本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックに対して、異なるＶＰＮとプロキシルーティングのオプションとを動的に選択するためのネットワーク環境の概略的ブロック図である。
【図９】本明細書で説明するシステム及び方法を実装するために使用され得るコンピューティングデバイスの概略的ブロック図である。
【発明を実施するための形態】
【０００８】
本明細書の図に一般的に説明及び例証されるような本発明のコンポーネントは、多種多様な異なる構成で配置及び設計され得ることは容易に理解されるであろう。したがって、図に表されるような発明の実施形態の以下のより詳細な説明は、請求される発明の範囲を限定することを意図せず、発明に従って目下考えられている実施形態の幾つかの例を単に表すにすぎない。目下説明される実施形態は、同様の部分が全体を通じて同様の数字により指し示された図面を参照することによって最もよく理解されるであろう。
【０００９】
発明は、当該技術分野の現在の水準に応じて、具体的には、現在利用可能な装置及び方法によってでは完全には未だ解決されていない当該技術分野の問題及び必要性に応じて、開発されている。
【００１０】
本発明に従った実施形態は、装置、方法、又はコンピュータプログラム製品として具体化され得る。したがって、本発明は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又は、“モジュール”若しくは“システム”として本明細書で一般的に全て称され得る、ソフトウェアとハードウェアとを組み合わせた実施形態の形式を取り得る。更に、本発明は、媒体内に具体化されたコンピュータ使用可能プログラムコードを有する表現の任意の有形媒体内に具体化されたコンピュータプログラム製品の形式を取り得る。
【００１１】
１つ以上のコンピュータ使用可能又はコンピュータ可読媒体の任意の組み合わせが利用される。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）デバイス、リードオンリーメモリ（ＲＯＭ）デバイス、消去可能プログラム可能リードオンリーメモリ（ＥＰＲＯＭ又はフラッシュメモリ）デバイス、ポータブルコンパクトディスクリードオンリーメモリ（ＣＤＲＯＭ）、光ストレージデバイス、及び磁気ストレージデバイスの内の１つ以上を含み得る。選択された実施形態では、コンピュータ可読媒体は、命令実行システム、装置、又はデバイスによる、又はそれらと関連した使用のためのプログラムを含み得、格納し得、通信し得、伝搬し得、又はトランスポートし得る任意の非一時的媒体を含み得る。
【００１２】
実施形態はまた、クラウドコンピューティング環境で実装され得る。この説明及び以下の請求項において、“クラウドコンピューティング”は、仮想化を介して迅速に提供され得、最小限の管理努力又はサービスプロバイダのインタラクションで解放され得、それに応じてその後スケール設定され得る、構成可能なコンピューティングリソース（例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス）の共有プールへのユビキタスで便利なオンデマンドのネットワークアクセスを可能にするためのモデルと
して定義され得る。クラウドモデルは、様々な特徴（例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、迅速な拡張性、及び計測サービス）、サービスモデル（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“ＳａａＳ”）、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“ＰａａＳ”）、及びＩｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（“ＩａａＳ”））、並びに配備モデル（例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド）から構成され得る。
【００１３】
本発明の動作を実行するためのコンピュータプログラムコードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、若しくはＣ＋＋等のオブジェクト指向プログラミング言語と、“Ｃ”プログラミング言語若しくは同様のプログラミング言語等の従来の手続型プログラミング言語とを含む１つ以上のプログラミング言語の任意の組み合わせで書き込まれ得る。プログラムコードは、スタンドアローンなソフトウェアパッケージとしてコンピュータシステム上で全体的に、スタンドアローンなハードウェアユニット上で、コンピュータから幾らか離間したリモートコンピュータ上で部分的に、又はリモートコンピュータ若しくはサーバ上で全体的に、実行し得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）若しくは広域エリアネットワーク（ＷＡＮ）を含む任意の種類のネットワークを通じてコンピュータに接続され得、或いは、該接続は、（例えば、インターネットサービスプロバイダを使用するインターネットを通じて）外部のコンピュータに作り出され得る。
【００１４】
本発明は、発明の実施形態に従った方法、装置（システム）、及びコンピュータプログラム製品のフローチャートの説明及び／又はブロック図を参照しながら以下に説明される。フローチャートの説明及び／又はブロック図の各ブロック、並びにフローチャートの説明及び／又はブロック図中のブロックの組み合わせは、コンピュータプログラム命令又はコードにより実装され得ることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータ又はその他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中で指定された機能／作用を実装するための手段を作り出すように、マシンを生み出すための汎用コンピュータ、専用コンピュータ、又はその他のプログラム可能データ処理装置のプロセッサに提供され得る。
【００１５】
これらのコンピュータプログラム命令は、フローチャート及び／又はブロック図の１つ以上のブロック中で指定された機能／作用を実装する命令手段を含む製品をコンピュータ可読媒体内に格納された命令が生み出すように、コンピュータ又はその他のプログラム可能データ処理装置を特定の方法で機能させるように指示し得る非一時的コンピュータ可読媒体中にも格納され得る。
【００１６】
コンピュータプログラム命令は、コンピュータ又はその他のプログラム可能装置上で実行する命令が、フローチャート及び／又はブロック図の１つ以上のブロック中で指定された機能／作用を実装するためのプロセスを提供するようなコンピュータ実装プロセスを、コンピュータ又はその他のプログラム可能装置上で実行される一連の動作可能なステップに生み出させるために、コンピュータ又はその他のプログラム可能データ処理装置上にもロードされ得る。
【００１７】
典型的なフォワードプロキシは、明確なクライアント設定を必要とする。実例として、ユーザのコンピュータ上の１つ以上のアプリケーションには、ＩＰアドレス又はドメイン名及び宛先ポート等の、プロキシサーバのネットワーク識別子が提供され得る。
【００１８】
ユーザのコンピュータとは異なるコンピュータ上に設置されたフォワードプロキシサー
バ、例えばローカルネットワークの外側のアドレスに設置されたフォワードプロキシサーバは、リモートフォワードプロキシとして周知である。ユーザのＩＰアドレスを秘匿し、ユーザのコンピュータとコンテンツサーバとの間のルーティング経路を制御し、ユーザのコンピュータからのＤＮＳリクエストを抑制するために、また、選択されたトラフィックをそれがユーザのコンピュータに到達する前にブロック又は抑圧するために、それは使用され得る。しかしながら、リモートプロキシを通じてユーザのトラフィックを転送することは、ルーティングのホップ数の増加及び追加のバッファリングに起因してアクセスのレイテンシを増加させ得る。
【００１９】
ウェブブラウザ等の、リモートフォワードプロキシを使用するように構成されたアプリケーションは、リクエストの本体がＨＴＴＰＳプロトコルを使用して暗号化される場合であっても、コンテンツサーバのドメイン名を含むヘッダ等の１つ以上のヘッダをプレーンテキストで通常送信する。このことは、ユーザのプライバシーに影響を及ぼし得、閲覧履歴を外部の観察者に晒す。
【００２０】
ユーザのコンピュータ上に設置されたフォワードプロキシサーバは、ローカルフォワードプロキシとして周知である。それは、アクセスのレイテンシを著しく増加させることなく、ユーザのトラフィックを分析し、フィルタリングし、又は抑圧するために使用され得る。しかしながら、ローカルプロキシは、ユーザのＩＰアドレスを秘匿することができず、及び、ＤＮＳリクエストがユーザのコンピュータから発行されることを防ぐことができない。Ａｐｐｌｅ株式会社により開発されたｉＯＳ（登録商標）オペレーティングシステム等の幾つかのオペレーティングシステムでは、ローカルフォワードプロキシは、バックグランドプロセスになった後の数分内に終結（terminate）させられる。ローカルプロキ
シが仮想プライベートネットワーク（ＶＰＮ）に対するセッティングの一部として指定される場合、それを終結することは、コンピュータネットワーク上でトラフィックを交換する能力を該デバイスから喪失させ得る。
【００２１】
プロキシ自動設定（ＰＡＣ）ファイル等の周知の解決方法は、第１のプロキシが応答しない場合に、別のプロキシへの直接接続又は切り換えにフォールバックすることを可能にする。しかしながら、こうしたフォールバックは、ユーザのリクエストが無効の又は不存在のプロキシに送信される毎に追加の遅延を生じさせる。ＰＡＣファイルは、該リクエストのホスト名又はユニバーサルリソースロケータ（ＵＲＬ）に基づいてフォワードプロキシを選択することもサポートし得るが、該リクエストを発行するプロセス等といった、その他の情報パラメータに基づいてルーティングのオプションを選択することを可能にはしない。
【００２２】
リクエストベースのルーティングのオプションは、ＶＰＮが使用される場合には更に減少する。例えば、プロキシの異なるセッティングを有する多数のＶＰＮ間での自動的なリクエストベースの切り換えのための解決方法は知られていない。
【００２３】
したがって、
・バックグラウンドのプロキシのプロセスを終結するリスクがないローカルなトラフィックのフィルタリング等、ローカルプロキシとリモートプロキシとの利点を組み合わせること
・リモートフォワードプロキシを使用する場合にユーザのプライバシーを保護すること
・プロキシのルーティングのオプションのリクエスト依存の選択の性能及び柔軟性を改善すること
・プロキシの異なるセッティングと関連付けられた異なるＶＰＮのリクエスト依存の選択を可能にすること
の必要性がある。
【００２４】
図１は、ＶＰＮと関連付けられたリモートフォワードプロキシを通じてトラフィックをルーティングするための従来技術のネットワーク環境を説明する。この環境では、ＶＰＮのセッティングは、リモートフォワードプロキシのＩＰアドレス（ＩＰ＿０）を含む。ＶＰＮが有効である場合、ユーザのコンピュータ１１２上のアプリケーション１１０は、ＣＯＮＮＥＣＴメソッドを使用して、その全てのトラフィックをＩＰアドレスＩＰ＿０へ送信する。
このトラフィックは、仮想ネットワークデバイス（ＴＵＮ）１１５により取得され、ユーザ空間へ移され、そこでは、それは、ＶＰＮクライアント１２０によってセキュアなＶＰＮトンネル１２５にカプセル化され、コンピュータネットワークを通じてＶＰＮサーバ１３０へ送信される。ＶＰＮサーバ１３０は、ＶＰＮトンネル１２５を終結し、トラフィックをリモートフォワードプロキシ１４０へ送信し、これにより、リモートフォワードプロキシ１４０は、コンテンツリクエスト毎のＣＯＮＮＥＣＴヘッダ内の、リモートプロキシに提供されるドメイン名を解決するように、ＤＮＳリソルバ１３５に依頼する。ＤＮＳリソルバ１３５は、このリクエストをＤＮＳサーバ１６０へ転送し、レスポンスをキャッシュする。プロキシサーバ１４０は、ＤＮＳサーバ１６０からレスポンスを受信し、各コンテンツプロバイダ１５０との接続１４５を確立するために該レスポンス内のＩＰアドレスを使用する。プロキシサーバ１４０は、レスポンスをコンテンツサーバ１５０から受信し、該レスポンスを、ＶＰＮトンネルを通じて、プロキシされたアプリケーション１１０へ転送する。本明細書に開示される実施形態の何れかに説明されるローカル又はリモートの任意のプロキシサーバは、該プロキシサーバにルーティングされるトラフィックに含まれるコンテンツリクエストにおいて参照される、コンテンツプロバイダのＩＰアドレスを判定するために、ＤＮＳ解決を実施し得ることに留意されたい。
【００２５】
図２は、本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するためのネットワーク環境を説明する。この実施形態では、ＶＰＮのセッティングは、リモートフォワードプロキシのＩＰアドレス（プロキシＩＰ＿０）をも含む。ＩＰ＿０へのプロキシトラフィックは、ユーザのコンピュータ２０５上のアプリケーション２０１により生成され、仮想ネットワークデバイス２２０によりユーザ空間へ移される。例えば、アプリケーション２０１は、仮想ネットワークデバイス２２０によってカーネル空間からユーザ空間へ移されるリモートフォワードプロキシ（例えば、ＩＰアドレスＩＰ＿０）にアドレス指定されるコンテンツリクエストを生成し得る。本明細書に開示されるその他の実施形態では、ユーザ空間への移動は、カーネル空間からユーザ空間への移動を含むと理解されるであろう。同様に、ユーザ空間へ移されたトラフィックの後続の処理は、ユーザ空間内で実施されることも理解されるであろう。同様に、ユーザ空間へ移された後のトラフィックの後続の処理を実施するモジュールは、ユーザ空間内で実行していることも理解されるであろう。
【００２６】
図１に示したアプローチとは対照的に、コンテンツリクエストは、プロキシトラフィックインターセプタ２３０により傍受され、ＶＰＮトンネルを通じて送信されることなく、また、ＩＰ＿０により参照されるリモートプロキシへ転送されることなく、ローカルプロキシサーバ２４０により終結される。プロキシトラフィックインターセプタ２３０は、ユーザ空間内で動作し得る。代わりに、ローカルプロキシ２４０は、解決リクエストをローカルＤＮＳリソルバ２３５へ送信し、該解決リクエストは、コンテンツリクエストのＣＯＮＮＥＣＴヘッダ内の、リモートプロキシに提供されているであろうドメイン名を含む。ローカルＤＮＳリソルバ２３５は、解決リクエストをＤＮＳサーバ２６０へ転送し、ＤＮＳサーバ２６０から受信した、解決リクエストへのレスポンスをキャッシュする。
【００２７】
ローカルプロキシサーバ２４０は、コンテンツリクエスト内のドメイン名により参照されるコンテンツプロバイダ２５０に対するアドレス（例えば、ＩＰアドレス）を含む、解
決リクエストへのレスポンスにアクセスする。その後、ローカルプロキシサーバ２４０は、コンテンツプロバイダ２５０との接続を確立し、ローカルプロキシサーバ２４０は、コンテンツリクエストにより参照されるコンテンツをリクエストし、リクエストしたコンテンツを受信し、リクエストしたコンテンツを、プロキシされたアプリケーションに提供する。このプロセスは、任意の数のコンテンツプロバイダからの任意の数のコンテンツリクエストに対して繰り返され得る。
【００２８】
図２の実施形態では、ＣＯＮＮＥＣＴヘッダ内で指定されるコンテンツプロバイダへのコンテンツリクエストは、ＶＰＮのセッティングで指定されるリモートフォワードプロキシの識別子（例えば、ＩＰ＿０）へそれを転送することなく送信され得る。幾つかの実施形態では、こうしたリモートプロキシの識別子は、何れのリモートプロキシサーバと関連付けられていない、また、コンピュータネットワーク内の何れのコンピュータと関連付けられていないＩＰアドレスに対応し得る。それは、ローカルプロキシサーバ２４０により傍受及び終結されるトラフィックを識別するために、プロキシトラフィックインターセプタ２３０によって使用されるのみである。例えば、リモートプロキシの識別子（例えば、ＩＰ＿０）は、ユーザのコンピュータ２０５のローカルネットワークとは異なる範囲からのルーティング不可能なＩＰアドレスと関連付けられ得る。幾つかの実施形態では、リモートプロキシの識別子は、将来の使用のために予約された、範囲２４０．０．０．０／４からの１つ等の、予約されたＩＰアドレスと、又は、ドキュメンテーション及び例示のために割り当てられるが公的に使用されるべきではない、範囲２０３．０．１１３．０／２４からの１つ等のテストＩＰアドレスと関連付けられる。したがって、プロキシトラフィックインターセプタ２３０は、プロキシサーバ２４０及びＤＮＳリソルバ２３５を使用して、上で説明したような処理のためのこのＩＰアドレスを含むコンテンツリクエストを傍受するようにプログラムされ得る。
【００２９】
図２の実施形態は、バックグラウンドの動作に移動した後に終結され得る別個のアプリケーションを創出することなく、ローカルプロキシの機能を提供する。ｉＯＳ（登録商標）等のオペレーティングシステムは、それ故、ＶＰＮ拡張を通じてトラフィックを送信し続けることがあり、それは、続いて、ＶＰＮサーバ又はリモートプロキシへ送信する代わりに、ローカルプロキシ２４０上でトラフィックを終結する。このことは、例えば、モバイルデバイスのオペレーティングシステムへのルートアクセスを必要とすることなく、リアルタイムでのマルウェアの検出又は帯域制御のためにモバイルデバイス上でトラフィックをフィルタリング又は抑圧する能力を可能にする。
【００３０】
幾つかの実施形態では、ＤＮＳリソルバ２３５は、ユーザのコンピュータ２０５上の１つ以上のアプリケーション２１０に既知のＤＮＳサーバのアドレスとは異なるＩＰアドレスを有するＤＮＳサーバ２６０を使用するように構成され得る。例えば、ＤＮＳリソルバ２３５により発行されたＤＮＳリクエストへのレスポンスは、ユーザのコンピュータ上の１つ以上のアプリケーション２１０により使用されるＤＮＳキャッシュを更新することなく、ユーザのコンピュータ上に格納され得る。この方法では、ローカルプロキシサーバ２４０は、クライアントアプリ―ケーション２１０により通知されることなく、ＤＮＳサーバをトランスペアレントに変更することが可能にする。このことは、例えば、ＤＮＳ  ＳＥＣ（ドメイン名システムセキュリティ拡張）プロトコルを実施するために利用され得、それにより、第三者によるＤＮＳトラフィックの傍受及び変更を防止する。
【００３１】
幾つかの実施形態では、リモートプロキシのセッティングは、それらをＶＰＮのセッティングに統合することなく指定され得る。例えば、リモートプロキシは、システムプロキシとして、又は、アプリケーション固有のプロキシ（実例としては、ウェブブラウザに対するプロキシ）として、指定され得る。別の例では、リモートプロキシは、ユーザのコンピューティングデバイス２０５に対する無線ネットワーク（ＷｉＦｉ）の一部として指定
され得る。
【００３２】
幾つかの実施形態では、リモートプロキシトラフィックは、仮想ネットワークデバイス２２０を使用することなく傍受され得る。実例として、これは、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムのために、Ｍｉｃｒｏｓｏｆｔ株式会社により提供されるウィンドウズフィルタリングプラットフォーム（ＷＦＰ）を使用することにより代わりに実装され得る。
【００３３】
幾つかの実施形態では、リモートプロキシトラフィックは、（プロキシドメインから最初に指定又は解決された）宛先ＩＰアドレス等のそのネットワーク識別子による傍受のために、又は、宛先ポートによる傍受のために、検出され得る。幾つかの実施形態では、リモートプロキシトラフィックは、１つ以上のその他のパターンによる傍受のために、例えば、ＣＯＮＮＥＣＴ又はＨＯＳＴのヘッダの内の少なくとも１つの存在による傍受のために、検出され得る。
【００３４】
図３は、本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックをローカルに傍受するための方法３００を説明する。方法３００は、図２のネットワーク環境を使用して実行され得る。リモートプロキシのＩＰアドレスにアドレス指定された、アプリケーション２１０からのトラフィックが傍受され（３１０）、ローカルプロキシサーバ２４０によりその後終結される（３２０）。コンテンツリクエストに含まれるドメインは、プロキシヘッダから抽出され（３３０）、コンテンツプロバイダのＩＰアドレスを取得するために解決される（３４０）。解決することは、図２を参照しながら上で説明したような、ローカルＤＮＳリソルバ２３５の使用を含み得る。コンテンツプロバイダのＩＰアドレスを取得した後、ローカルプロキシサーバによってＩＰアドレスへのリクエストが発行され（３５０）、リモートプロキシにアドレス指定されたトラフィックをリモートプロキシのＩＰアドレスへ送信することなく、レスポンスが受信される（３６０）。レスポンスは、プロキシトラフィックインターセプタ２３０及び仮想ネットワークデバイス２２０を通じる等して、トラフィックを生成したアプリケーション２１０にその後提供される。
【００３５】
この処理フローは、ＶＰＮの有無にかかわらず、多数の実装に適用可能である。説明された方法は、トラフィックがリモートプロキシにより処理される場合と同じ方法でアプリケーション及びオペレーティングシステムが動作している間、ローカルプロキシ２４０の使用を可能にする。特に、アプリケーション及びオペレーティングシステムは、ローカルプロキシ２４０と協働して動作するための変更を必要としない。
【００３６】
図４は、本開示の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするためのネットワーク環境を説明する。この実施形態では、ＶＰＮのセッティングは、アドレスＩＰ＿０と関連付けられた宛先のリモートプロキシを指定する。ＩＰ＿０へのプロキシトラフィックは、ユーザのコンピュータ４３５上のアプリケーション４０１により生成され、仮想ネットワークデバイス４２５によりユーザ空間に移される。プロキシトラフィックは、プロキシトラフィックエンクリプタ４３０によってユーザ空間内でその後処理される。
【００３７】
幾つかの実施形態では、エンクリプタ４３０は、ＣＯＮＮＥＣＴ、ＨＯＳＴ、又はユーザエージェントのヘッダ等の、プレーンテキストとしてアプリケーション４１０により送信されたプロキシトラフィックの少なくとも一部を暗号化し、それにより、ユーザのトラフィックのプライバシーを保護する。プロキシリダイレクタ４４０は、少なくとも部分的に暗号化されたプロキシトラフィック（“暗号化プロキシトラフィック”）をエンクリプタ４３０から受信し、暗号化プロキシトラフィックの宛先を変更し、ＩＰアドレスＩＰ＿
０へ送信される代わりに、暗号化プロキシトラフィックは異なるアドレスＩＰ＿１のプロキシサーバ４６０へ送信される。プロキシサーバ４６０は、暗号化プロキシトラフィックを受信し、暗号化された部分を復号する。プロキシサーバ４６０は、暗号化プロキシトラフィックに含まれるドメイン名に対するコンテンツプロバイダ４８０のＩＰアドレスを取得するために、ＤＮＳリソルバ４７０及びＤＮＳサーバ４７５とその後インタラクトし得る。プロキシサーバ４６０はまた、暗号化プロキシトラフィック内で参照されるコンテンツ、例えばＵＲＬにより参照されるウェブページ又はメディアファイルをリクエストするコンテンツプロバイダ４８０のＩＰアドレスへコンテンツリクエストを送信し得る。プロキシサーバ４６０は、コンテンツをコンテンツプロバイダ４８０から受信し、リクエストされたコンテンツをユーザのコンピュータ４３５へ返す。
【００３８】
幾つかの実施形態では、プロキシトラフィックの少なくとも一部の暗号化は、暗号化プロキシトラフィックをリモートプロキシサーバ４６０と交換するために使用される通信プロトコルを変更することを伴う。実例として、こうしたプロトコルは、プロキシトラフィックを生成したオペレーティングシステム又はアプリケーション４１０への通知なしに、及び、プロトコルの変更を実装するためにオペレーティングシステム又はアプリケーション４１０を変更する必要なく、ハイパーテキストトランスポートプロトコルバージョン２．０（ＨＴＴＰ２．０）に変更され得る。例えば、このプロトコルの変更は、エンクリプタ４３０により実装され得る、別の例では、プロキシトラフィックエンクリプタ４３０及びプロキシリダイレクタ４４０は、プロトコルの変更及びトラフィックのリダイレクトの両方を担当する単一のモジュールに組み合わせられる。
【００３９】
説明される実施形態では、プロキシトラフィックは、オペレーティングシステム又はプロキシされたアプリケーション４１０への通知なしに、及び、アドレスの変更を実装するためにオペレーティングシステム又はプロキシされたアプリケーション４１０の変更を必要とすることなしに、プロキシされたアプリケーション４１０に既知のＩＰアドレスとは異なるＩＰアドレス（ＩＰ＿！＝ＩＰ＿１）へ送信される。幾つかの実施形態では、プロキシされたアプリケーション４１０が使用するようにプログラムされているネットワーク識別子（ＩＰ＿０）にはトラフィックが何ら送信されない。例えば、この識別子は、ローカルネットワーク上で利用可能な、何れのプロキシサーバ又は何れのコンピュータと関連付けられなくてもよい。プロキシＩＰアドレスをより容易にそれに動的に変更させることに加えて、これはまた、プロキシトラフィックの検出を簡単にし、プロキシのセッティングは、プロキシトラフィックエンクリプタ４３０、プロキシリダイレクタ４４０、又はトラフィックを傍受するようにプログラムされたその他のモジュールに提供される予め定義された同じＩＰアドレスを使用し得、それらは、上で説明したような処理のために、予め定義されたＩＰアドレスを含むトラフィックをその後傍受するであろう。
【００４０】
幾つかの実施形態では、プロキシＩＰアドレスは、ＶＰＮのセッティングで指定され、少なくとも幾つかのトラフィックは、ＶＰＮクライアント４４５からセキュアなトンネル４４５を通じてＶＰＮサーバ４６５へ送信され、プロキシＩＰアドレスにより参照されるリモートプロキシを通じて転送されることなく、コンテンツプロバイダ４８０の内の１つへその後送信される。こうしたトラフィックは、システムプロキシのセッティングを無視するプロキシされていないアプリケーションによって、例えば、ユニファイドデータグラムプロトコル（ＵＤＰ）を使用するボイスオーバーＩＰ（ＶｏＩＰ）によって、又は、システムプロキシのセッティングを無視するように構成されたウェブブラウザによって、生成され得る。
【００４１】
幾つかの実施形態では、プロキシされていないアプリケーション４１０は、同じコンピュータ４３５上で実行するＤＮＳリソルバ４１５を使用し、ＤＮＳリクエストをＶＰＮクライアント４４５及びトンネル４５５を通じてＤＮＳサーバへ送信するが、該ＤＮＳサー
バは、プロキシサーバ４６０により使用されるＤＮＳサーバ４７５と同じであってもよく、又は異なっていてもよい。こうした実施形態では、プロキシされたトラフィックに対してユーザのコンピュータ４３５からＤＮＳリクエストが何ら発行されない一方で、ユーザのコンピュータからのプロキシされていないトラフィックのみがＤＮＳリクエストを含む。代わりに、プロキシサーバ４６０によって、プロキシされたトラフィックに対してドメイン名が解決される。
【００４２】
幾つかの実施形態では、プロキシサーバ４６０及びＶＰＮサーバ４６５の両方は、ユーザのコンピュータ４３５とは異なる、同じコンピュータ上に設置される。例えば、プロキシサーバ４６０及びＶＰＮサーバ４６５の両方が、同じＩＰアドレスと関連付けられる。別の実装では、プロキシサーバ４６０及びＶＰＮサーバ４６５は、異なるコンピュータ上に設置され、実例として、ＶＰＮサーバ４６５がプロキシサーバ４６０よりもＶｏＩＰサーバ又はリレーの近くに設置される一方で、プロキシサーバ４６０はＶＰＮサーバ４６５よりもＨＴＴＰコンテンツプロバイダ４８０の近くに設置され得る。
【００４３】
図５は、本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックを異なるリモートプロキシへリダイレクトするための方法５００を説明する。方法５００は、図４のネットワーク環境を使用して実行され得る。ユーザのコンピュータ４３５上の１つ以上のアプリケーション４１０からのトラックは、仮想ネットワークデバイス４２５によりユーザ空間に移され（５１０）、トラフィックがＶＰＮプロファイル内で指定されるプロキシに向けられているか否かを判定するために、その後分析される（５２０）。そうである場合、トラフィックは、異なるリモートプロキシへリダイレクトされる（５３０）。リダイレクトすること（５３０）は、図４を参照しながら上で説明したように、トラフィックを少なくとも部分的に暗号化することを含み得る。
【００４４】
リモートプロキシ４６０からレスポンスを受信する（５５０）と、該レスポンスは、リクエストしているアプリケーション４１０へ返送される（５６５）。受信されたトラフィックがプロキシトラフィックと識別されない場合（５２０）、トラフィックは、ＶＰＮトンネル４５５を通じてＶＰＮサーバ４６５へ送信され（５４０）、ＶＰＮサーバ４６５からレスポンスが受信される（５６０）と、このレスポンスも、リクエストしているアプリケーション４１０へ返送される（５６５）。
【００４５】
幾つかの実施形態では、リダイレクトされたプロキシトラフィック及び非プロキシトラフィックの両方は、セキュアなＶＰＮトンネル４５５を通じて送信される。この場合、プレーンテキストのプロキシトラフィックの暗号化は、ＶＰＮクライアント４４５により行われ、プロキシプロトコルは変更されないままであり得る。
【００４６】
上で説明した実施形態の内の幾つか又は全ては、アプリケーション及びオペレーティングシステムに対してトランスペアレントである方法で、異なるリモートフォワードプロキシサーバの使用を可能にし、それらは、ＶＰＮのセッティング、Ｗｉ−Ｆｉのセッティング、システムプロキシのセッティング、又は、アプリケーション若しくはオペレーティングシステムに既知の任意のその他のプロキシのセッティングで指定されたリモートプロキシへ、トラフィックを送信するようにプログラムされる。
【００４７】
図６は、本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する複数の異なる処理選択肢の内の１つを動的に選択するためのネットワーク環境を説明する。説明される実施形態では、ユーザのコンピュータ６３５上の１つ以上のアプリケーション６１０は、ＩＰアドレスＩＰ＿０等の特定のネットワーク識別子と関連付けられたプロキシサーバを通じて、それらのトラフィックを送信するように命令される。この命令は、アプリケーション６１０により読み出されるＶＰＮのセッティングの形式で、又はさもなけ
ればアプリケーション６１０に入力されるＶＰＮのセッティングの形式で、受信され得る。
【００４８】
アプリケーション６１０の内の幾つか又は全ては、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）又はＨＴＴＰセキュア（ＨＴＴＰＳ）を使用し得、それらは、コンテンツリクエストを含むペイロードと共に、コンテンツサーバのリクエストされたドメイン名と、リクエストしているアプリケーション６１０により供給されるユーザエージェント文字列との内の一方又は両方を含むプレーンテキストの送信ヘッダを含む。
【００４９】
幾つかの実施形態では、プロキシのセッティングは、コンピュータ６３５上のＶＰＮのセッティングの一部として指定される。リモートプロキシサーバに向けられた（例えば、ＩＰ＿０にアドレス指定された）アプリケーションのトラフィックは、仮想ネットワークデバイス６２０によりユーザ空間に移され、プロキシトラフィックインターセプタ６３０により傍受される。傍受されたトラフィックは、トラフィックマネージャ６４０へ送信され、トラフィックマネージャ６４０は、トラフィックに対する多数の処理選択肢の内の１つを選択する。
【００５０】
図６は、プロキシトラフィックインターセプタ６３０がユーザエージェント文字列のコンテンツを抽出し、トラフィックマネージャ６４０が処理選択を選択するのを助けるためにそれらをトラフィックマネージャ６４０へ別々に送信する場合を説明する。他の実装では、トラフィックマネージャ６４０は、プロキシトラフィックインターセプタ６３０と組み合わせられ得、又はこうした抽出をそれ自体で実施し得る。これらの実装の共通の特徴は、現在のコンテンツリクエストのために、どの処理選択肢を選択するかを決定するために、ユーザエージェント文字列のコンテンツが使用されることである。リクエストされたＵＲＬ、又はトラフィック内のパケットのヘッダ内の任意のその他のフィールド等、トラフィック内のその他の情報は、処理選択肢を選択するために追加的に又は代替的に使用され得る。
【００５１】
幾つかの実施形態では、これらの処理選択肢の内の１つは、プロキシトラフィックを外部のＩＰアドレスＩＰ＿０へ送信する代わりに、ローカルプロキシサーバ６５０によってプロキシ接続を終結することを含む。ローカルプロキシサーバ６５０は、プロキシトラフィックによりリクエストされたコンテンツを検索するために、何れのトラフィックをＩＰ＿０へ送信することなくコンテンツプロバイダ６９０と直接通信し得る。コンテンツプロバイダ６９０は、コンテンツをコンピュータ６３５へ返す。トラフィックマネージャ６４０は、仮想ネットワークデバイス６２０を通じる等して、プロキシトラフィックを生成したプロキシされたアプリケーション６１０へコンテンツを返す。
【００５２】
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィック内の選択されたリクエストを、それを抑圧プロキシサーバ６７０等のリモートプロキシサーバへ転送することによって、抑圧することを含み得る。例として、抑圧プロキシサーバ６７０は、消費される帯域幅を減少させるために、コンテンツプロバイダ６９０からの動画トラフィックを抑圧するために使用され得る（ＨＬＳ又はＭＰＥＧ−ＤＡＳＨプロトコルを使用する動画サーバを実装するコンテンツプロバイダ６９０は、低帯域幅を検出すると、解像度を自動的に減少させるであろう）。この例では、プロキシサーバ６７０は、（ＩＰ＿０）を使用するように命令されたアプリケーション６１０のＩＰアドレスとは異なるＩＰアドレスと関連付けられ得る。別の例では、プロキシサーバ６７０は、指定されたリモートプロキシサーバを識別するためにアプリケーション６１０に既に提供されたＩＰアドレスＩＰ＿０と関連付けられ得る。両例の共通の特徴は、トラフィックマネージャ６４０による等して、ユーザエージェント文字列のコンテンツを分析することによって、トラフィックをリモートプロキシサーバ６７０へ転送する決定がなされることである。
【００５３】
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィックに含まれるコンテンツリクエストを、コンテンツプロバイダ６９０又は任意のプロキシサーバの何れかに送信することなくブロックすることを含む。こうしたブロックすることは、例えば、リクエストにより参照されるコンテンツプロバイダ６９０との接続を確立することなくリクエストを終結するようにローカルプロキシ６５０に命令することによって達成され得る。例えば、コンテンツリクエストは、トラフィックマネージャ６４０に提供される１つ以上の所定の規則に従って判定されるようなプライバシー又はセキュリティのリスクを提示するので、ブロックされ得る。幾つかの実施形態では、ユーザエージェント文字列のコンテンツは、既知の悪意のあるアプリケーションにより、又は、サードパーティのソフトウェア開発キット（ＳＤＫ）等の独立したユーザエージェントを有するモジュールにより、こうした悪意のあるリクエストが発行されたと認識することによって、こうした悪意のあるリクエストを検出するのに役立つ。
【００５４】
その他の処理選択肢は、幾つかのリクエストを、抑圧プロキシ６７０又は幾つかのその他のリモートプロキシ等のリモートプロキシへ転送するとしないとにかかわらず、ＶＰＮトンネルを通じて外部のＶＰＮサーバへ送信することを含み得る。
【００５５】
幾つかの実施形態では、ユーザエージェント文字列のトラフィックマネージャ６４０の分析は、ユーザエージェント文字列の少なくとも一部をリクエスト分類器６６０等の外部の分類サービスへ送信することを含む。説明される実施形態では、リクエスト分類器６６０は、未知のユーザエージェント文字列の少なくとも一部をアプリケーション認識器６８０へ送信する。未知のユーザエージェント文字列は、トラフィックマネージャ６４０にローカルにアクセス可能な規則で指定されるパターンと合致しないユーザエージェント文字列であり得る。アプリケーション認識器６８０は、ユーザエージェント文字列内のパターン分類（善意、悪意等）に関連付ける規則を適用することによる等して、ユーザエージェント文字列の少なくとも一部を使用することによって、未知のユーザエージェント文字列により参照されるアプリケーションを識別し得る。アプリケーション認識器はまた、未知のユーザエージェント文字列を含む元のプロキシトラフィック内に存在する１つ以上のその他のヘッダのコンテンツ、例えば、ＣＯＮＮＥＣＴと、ＳＮＩ、ＨＯＳＴのヘッダとの内の少なくとも１つの内に存在するドメイン名を受信及び評価し得る。アプリケーション認識器６８０は、ユーザエージェントを善意又は悪意としてその後分類し得、リクエスト分類器６６０を経由する等して、この判定をトラフィックマネージャ６４０へ返す。リクエスト分類器は、ユーザエージェント文字列の少なくとも一部に対するこの判定を格納し得、他の分類リクエストがユーザエージェント文字列の少なくとも一部に合致する他の分類リクエストに応答して、この判定を使用し得る。
【００５６】
幾つかの実施形態では、トラフィックマネージャ６４０又はリクエスト分類器は、１つ以上の異なるユーザエージェント又はアプリケーションと関連付けられた、以前に傍受された１つ以上のコンテンツリクエストを考慮することによって処理選択肢を決定し得る。幾つかの実施形態では、アプリケーション又はユーザエージェントと関連付けられたコンテンツリクエストは、以前に傍受された１つ以上のコンテンツリクエストが、予め定義されたリストから、アプリケーション又はユーザエージェントと関連付けられている場合にブロックされる。例えば、トラフィックマネージャ６４０は、高優先度のアプリケーションがアクティブに維持される間、他のアプリケーションからの全てのトラフィックをブロックし得る。こうした高優先度のアプリケーションは、実例として、銀行業務アプリケーション、又はユーザが支払い取引を実施する電子商取引アプリケーションであり得る。バックグラウンドのアプリケーションをブロックすることは、（サイドチャネルトラフィック分析を防止することによって）ユーザのプライバシー及びセキュリティを改善するために、及び（低優先度のトラフィックをブロックすることによって）アプリケーションの性
能を向上させるために、使用され得る。
【００５７】
図７は、本発明の実施形態に従った、リモートプロキシ向けのトラフィックに対する異なる処理選択肢の内の１つを動的に選択するための方法７００を説明する。方法７００は、図６のネットワーク環境を使用して実行され得る。アプリケーションからリモートプロキシのＩＰアドレスへ送信されたトラフィックは、傍受され（７１０）、（幾つかの実装では、ＣＯＮＮＥＣＴのヘッダ、ＨＯＳＴのヘッダ、又はＳＮＩのヘッダ等のその他のヘッダと共に）ユーザエージェントのヘッダのコンテンツを使用することによる等して、トラフィック内のユーザエージェント文字列を取得する（７２０）ために分析され、トラフィックを生成したアプリケーションに対するアプリケーション名を判定する（７３０）。例えば、ルーティング規則又はクオリティオブサービス（ＱｏＳ）規則をアプリケーションのトラフィックに適用することによって、処理選択肢を判定７４０するために、（幾つかの実装では、コンテンツリクエストの以前の履歴と共に）アプリケーション名が使用される。幾つかの実装では、処理選択肢は、例えば、検閲器によるそのブロックを防止するために、特定のトラフィックを抑圧するための条件、又は、１つ以上の規則で指定される特定のプロトコルを使用して特定のトラフィックを送信するための条件を含み得る。
【００５８】
ブロックすることを必要とする規則のパターンに合致するアプリケーション名が発見された場合（７５０）、トラフィックはブロックされる（７６０）。規則は、如何なるトラフィックをブロックするかを判定するための規則の管理者又はその他のソースによって、トラフィックマネージャ６４０に提供され得る。ブロックすることは、上で説明したように、ローカルプロキシサーバ６５０を使用して実施され得る。
【００５９】
抑圧することを必要とするＱｏＳ規則の既知のパターンに合致するアプリケーション名が発見された場合（７７０）、トラフィックは、上で説明したように、抑圧プロキシサーバ６７０を通じて送信される（７８０）。
【００６０】
幾つかの実施形態では、トラフィックに対するデフォルト処理は、上で説明したように、ローカルプロキシサーバ６５０を通じて、トラフィックによりアドレス指定されたコンテンツプロバイダ６９０へそれを送信すること（７８５）である。
【００６１】
幾つかの実施形態では、処理選択肢の内の１つは、ステップ７３０で判定されたアプリケーション名と関連付けられたトラフィックにより消費されるデータの量を更新することであり得る。したがって、消費されるデータの量が閾値レベルに達すると、アプリケーション名に対するトラフィックの抑圧を開始することによって、又は抑圧の量を増加することによって、アプリケーション名に対する処理は変更され得る。
【００６２】
幾つかの実施形態では、処理選択肢の内の１つは、リモートプロキシサーバにアドレス指定された、例えば、ＩＰ＿０にアドレス指定されたトラフィックの少なくとも一部を、ＶＰＮトンネルを通じてＶＰＮサーバへ送信することを含み得る。これは、それ故、コンテンツリクエスト等のトラフィックを暗号化することと、暗号化されたトラフィックを、ＶＰＮトンネルを通じてＶＰＮサーバへ送信することとを含む。
【００６３】
図６の環境及び図７の方法７００に従って受信されたトラフィックは、図４及び図５を参照しながら上で説明したように、部分的に暗号化され得ることに留意されたい。例えば、コンテンツリクエストのペイロードデータは暗号化され得るが、一方、コンテンツサーバのドメイン名又は１つ以上のヘッダ（ＣＯＮＮＥＣＴ、ＨＯＳＴ、ＳＮＩ、又はユーザエージェント文字列等）等のプレーンテキスト内にあるその他のデータが暗号化されない。したがって、処理選択肢の内の１つは、図４及び図５を参照しながら上で説明した方法で、暗号化されたリクエストを取得するためにプレーンテキストのデータを暗号化するこ
とと、暗号化されたリクエストをリモートプロキシサーバへ送信することとを含み得る。
【００６４】
多数の処理選択肢が同じリクエストに適用され得る。例えば、トラフィックは、トラフィックに含まれるＩＰアドレスとは異なるＩＰアドレスを有するリモートプロキシを通じて共にリダイレクトされ得、そのスループットを抑圧し、消費されるデータの量を測定する。
【００６５】
明らかなように、説明される実装の１つの利点は、アプリケーションにリモートプロキシの使用を強いることが、アプリケーションからのトラフィック内のペイロードデータがＨＴＴＰＳプロトコルを使用して暗号化される場合であっても、処理選択肢を選択するのに有用であり得る付加的な情報を提供することである。同時に、開示される実施形態は、アプリケーションに入力されるプロキシのセッティングの存在が追加のレイテンシ、又はアプリケーションに入力されるプロキシアドレスへ全てのトラフィックを送信する必要性を創出しないことを確保する。ユーザエージェント若しくユーザエージェントから導き出されるアプリケーション名の全て又は一部等、この追加の情報は、マルウェアの検出、アプリケーションの監視、サービスの品質、及びユーザの体感に影響を及ぼすその他の要因を改善するために使用され得る。
【００６６】
図８は、本発明の実施形態に従った、ＶＰＮと関連付けられたリモートプロキシ向けのトラフィックに対して、異なるＶＰＮ及びプロキシルーティングのオプションを動的に選択するためのネットワーク環境を説明する。この実施形態では、少なくとも２つの異なるＶＰＮがユーザコンピュータ上で定義される。これらのＶＰＮの内の少なくとも１つに対するセッティングは、ネットワーク識別子と関連付けられたリモートプロキシに対するセッティングを含み得る。実例として、リモートプロキシサーバのドメイン名若しくはＩＰアドレス及び宛先ポート。幾つかの実施形態では、少なくとも２つの指定されたＶＰＮは、同時にアクティブに維持され、両ＶＰＮは、異なる仮想ネットワークデバイス（ＶＤＮ）８２０、８３０と関連付けられる。多数のＶＰＮをアクティブにすることに加えて、ユーザのコンピュータ８３５上のオペレーティングシステムは、各ＶＰＮのＶＤＮに対する異なるルーティングを可能にするようにリクエストされ得る。
【００６７】
説明される実施形態では、第１のＶＰＮは、プロキシＩＰアドレスＩＰ＿０と関連付けられ、ＶＤＮ  ＴＵＮ＿０（８２０）を使用し、一方、第２のＶＰＮは、プロキシのセッティングと関連付けられず、ＶＤＮ  ＴＵＮ＿１（８３０）を使用する。ＩＰ＿０にアドレス指定されたトラフィックは、ＴＵＮ＿０にルーティングされ、一方、その他の全てのＩＰアドレスへのトラフィックは、ＴＵＮ＿１にルーティングされる。このことは、例えば、ＩＰ＿０をｕｔｕｎ０（ＴＵＮ＿０）にルーティングするための、及び、０．０．０．０トラフィックをｕｔｕｎ１（ＴＵＮ＿１）にルーティングするための、‘ｒｏｕｔｅ’コマンド又は‘ｉｐｒｏｕｔｅ２’コマンドを使用することによって達成され得る（ルーティングテーブルをパースするときには、より具体的なルートが優先する）。
【００６８】
別の実装では、２つ以上のＩＰアドレスはＴＵＮ＿０にルーティングされ得、一方、残りがＴＵＮ＿１にルーティングされる。例えば、プロキシ及びＤＮＳの両トラフィックは、ＴＵＮ＿０を通じて送信され得、プロキシトラフィック及びＤＮＳトラフィックの両方を同じＶＰＮが分析及び変更することを可能にする。
【００６９】
説明される実施形態では、アプリケーション８１０は、そのトラフィックをアドレスＩＰ＿０へ、又は、アプリケーション８１０に提供されるＶＰＮのセッティングで指定されるプロキシサーバへ、送信する。このトラフィックは、ＶＮＤ  ０（ＴＵＮ＿０、８２０）にルーティングされる。幾つかの実施形態では、アプリケーション８１５は、プロキシ（例えば、ＵＤＰプロトコルを使用するＶｏＩＰアプリケーション）を使用することを可
能にされていない。そのトラフィックは、それ故、ＶＤＮ  １（ＴＵＮ＿１）にルーティングされ、ＶＤＮ  １（ＴＵＮ＿１）は、そのトラフィックを、ＶＰＮクライアント８５５を通じ、セキュアなトンネルを通じて、ＶＰＮサーバ７０へ送信する。ＶＰＮサーバ８７０は、トラフィック、例えば、コンテンツリクエストを１つ以上のコンテンツプロバイダ８８０へ転送する。コンテンツプロバイダ８８０は、コンテンツリクエストに応答してコンテンツをＶＰＮサーバ８７０へ返す。ＶＰＮサーバ８７０は、コンテンツをユーザのコンピュータ８３５へその後返し、ユーザのコンピュータ８３５では、コンテンツは、ＶＰＮクライアント８５５及びＶＤＮ  １（ＴＵＮ＿１、８３０）によって、プロキシされたアプリケーションにルーティングされる。
【００７０】
アプリケーション８１０から等のプロキシトラフィックは、ＴＵＮ＿０によってユーザ空間に移され、プロキシトラフィックマネージャ８４０により受信され、プロキシトラフィックマネージャ８４０は、ＣＯＮＮＥＣＴのヘッダ、ＳＮＩのヘッダ、ＨＯＳＴのヘッダ、ＧＥＴのヘッダ、及びユーザエージェントのヘッダのグループからの１つ以上のヘッダ等の、特定のコンテンツリクエストのパラメータに依存して、複数の処理選択肢の内の１つを選択する。処理選択肢、及びそれらが選択される方法は、図６及び図７を参照しながら上で説明したアプローチに従い得る。
【００７１】
幾つかの実施形態では、これらの処理選択肢の内の１つは、プロキシ接続がアドレス指定される外部のＩＰアドレスＩＰ＿０へプロキシトラフィックを送信する代わりに、ローカルプロキシサーバ８５０によってプロキシトラフィックを終結することを含む。ローカルプロキシサーバ８５０は、プロキシトラフィックにより参照されるコンテンツプロバイダ８８０への直接接続８６５を確立すること、又は、別のＶＰＮを通じてプロキシトラフィックを送信することの何れかを更に命令され得る。別の例では、ローカルプロキシ８５０は、新たなソケットを、何れのＶＰＮと関連付けられていないインタフェースに結び付けるために“ｓｅｔｓｏｃｋｏｐｔ”コマンドを使用して直接接続を確立する。ローカルプロキシ８５０は、新たなソケットを、第２のＶＰＮ（例えば、ｕｔｕｎ１）と関連付けられたインタフェースに結び付けるために“ｓｅｔｓｏｃｋｏｐｔ”コマンドを使用することによって、トラフィックを別のＶＰＮを通じてルーティングし得る。例えば、ローカルプロキシリクエストは、新たなソケット８２５をＶＤＮ８３０に結び付け得、トラフィックをＶＤＮ８３０及びＶＰＮクライアント８５５を通じてＶＰＮサーバ８７０にルーティングし得る。ＶＰＮサーバ８７０は、トラフィック内で参照されるコンテンツを、トラフィック内で参照されるコンテンツプロバイダ８８０にその後リクエストし得、リクエストされたコンテンツをコンテンツプロバイダ８８０から受信し得、ＶＤＮ８３０、ローカルプロキシサーバ８５０、プロキシトラフィックマネージャ８４０、及びＶＤＮ８２０を経由する等して、リクエストされたコンテンツを、リクエストしているアプリケーション８１０に返し得る。
【００７２】
幾つかの実施形態では、別の処理選択肢は、プロキシトラフィックを、第１のＶＰＮにより確立されたＶＰＮトンネルを通じてＶＰＮクライアント８４５からＶＰＮサーバ８６０へ送信することを含む。例えば、トラフィックマネージャ８４０は、プロキシＩＰアドレスをＩＰ＿０からＩＰ＿１に変更し得る。ＶＰＮサーバ８６０は、ＩＰ＿１により参照されるプロキシサーバ８７５へトラフィックをその後送信し、プロキシサーバ８７５は、プロキシトラフィック内のリクエストされたコンテンツを検索し、検索されたコンテンツを、ＶＰＮ８４５、プロキシトラフィックマネージャ８４０、及びＶＮＤ  ０（ＴＵＮ＿０、８２０）を経由する等して、プロキシトラフィックを生成したプロキシされたアプリケーション８１０へ返すために、プロキシトラフィックにより参照されるコンテンツプロバイダ８８０との直接接続を確立する。
【００７３】
結果として、本明細書に開示される実施形態は、リモートプロキシを迂回する、又は異
なるリモートプロキシを通じる、若しくは多数のＶＰＮの内の１つを通じる、の何れかで、プロキシトラフィックをルーティングし得る。このことは、例えば、ＶＰＮの内の１つのみがユーザのコンピュータ上のトラフィックを検査又は変更することが可能である場合に有用である。
【００７４】
例えば、第１のＶＰＮは、Ａｐｐｌｅ株式会社により開発されたｉｐｈｏｎｅ（登録商標）等のｉＯＳ（登録商標）デバイス上にあり得、サードパーティのソフトウェアがトラフィックを検査又は変更することを可能にするカスタムＶＰＮ拡張であり得る。同じｉＯＳ（登録商標）デバイス上の第２のＶＰＮは、オペレーティングシステムにより提供されるネイティブＶＰＮクライアントであり得、サードパーティのソフトウェアにより生成されたトラフィックへのアクセスを有しない。
【００７５】
幾つかの実施形態では、第２のＶＰＮのみが、そのクライアント８５５とＶＰＮ８７０との間にトンネルを確立し、一方、第１のＶＰＮは、第２のＶＰＮのＶＤＮ  １（ＴＵＮ＿１、８３０）を通じてルーティングされていない全てのトラフィックを、何れのＶＰＮトンネルをも迂回して、送信する。
【００７６】
幾つかの実施形態では、第１のＶＰＮ及び第２のＶＰＮは、ＶＰＮトンネルを確立するために異なるＶＰＮプロトコルを使用する。例えば、第２のＶＰＮは、ＶＰＮを確立するためにＩＰＳＥＣ（インターネットプロトコルセキュリティ）プロトコルを使用し得、一方、第１のＶＰＮは、異なるプロトコル、例えば、ＧＮＵ一般公衆利用許諾書の下で発行されたインスタンスＯｐｅｎＶＰＮプロトコルを使用する。
【００７７】
説明される実施形態の一例示的使用は、ネイティブＩＰＳＥＣ  ＶＰＮクライアントを通じて送信されるトラフィックのクライアント側でのフィルタリング及び変更を可能にすることである。ＩＰＳＥＣプロトコルは、企業のＶＰＮによりしばしば使用される。多数の企業は、それらの自社運用のインストールされたＩＰＳＥＣ  ＶＰＮサーバを有する。企業のＶＰＮのセッティングは、処理選択肢を限定している、ネイティブＩＰＳＥＣクライアントに対するプロファイルとしてしばしば提供される。上で説明した実施形態は、例えば、クライアントのデバイス上のマルウェア関連のリクエストを、ＩＰＳＥＣ  ＶＰＮを通じて送信する代わりに、検出及びブロックすることを可能にし得る。
【００７８】
説明される実施形態の別の例示的使用は、特定の企業リソースと関連付けられたドメイン又はＩＰアドレスにアクセスするための企業ＶＰＮの使用を限定することである。例えば、ｉＯＳ（登録商標）オペレーティングシステムは、オンデマンドなＶＰＮ規則をサポートしているが、合致するドメインが発見されるとすぐに、全てのトラフィックを、選択されたドメインに限定する代わりに、ＶＰＮを通じて送信する。
【００７９】
説明される実施形態の別の例示的使用は、ユーザのプライベートなコンテンツの保護と、企業リソースへのユーザのアクセスとのために、異なる種類のＶＰＮを利用することである。多くの企業は、それらの従業員が、彼らが所有するデバイスを持ち込むこと（ＢＹＯＤ）を許容し、同じ携帯電話がビジネス目的と私的目的との両方に使用されることが許容される。本明細書に開示される実施形態は、企業ＶＰＮと私的ＶＰＮとの間で再接続を強いることなく、両種のトラフィックの保護を可能にし得、両ＶＰＮは、同時にアクティブにされ得る。
【００８０】
本明細書で説明されるコンピューティングデバイス（ユーザコンピュータ、プロキシサーバ、ＶＰＮサーバ、コンテンツサーバ等）、ネットワークコンポーネント、及びモジュールは、図９のコンピューティングデバイス９００の属性の幾つか又は全てを有し得る。具体的には、コンピュータ又はコンピューティングデバイスとして上で説明されるコンポ
ーネントは、図９のコンピューティングデバイス９００の属性の幾つか又は全てを有し得る。図９は、本明細書に開示されるシステム及び方法を実装するために使用され得る例示的コンピューティングデバイス９００を説明するブロック図である。
【００８１】
コンピューティングデバイス９００は、１つ以上のプロセッサ９０２、１つ以上のメモリデバイス９０４、１つ以上のインタフェース９０６、１つ以上の大容量ストレージデバイス９０８、１つ以上の入出力（Ｉ／Ｏ）デバイス９１０、及び表示デバイス９３０を含み、それらの全てはバス９１２に結合される。プロセッサ９０２は、メモリデバイス９０４及び／又は大容量ストレージデバイス９０８内に格納された命令を実行する１つ以上のプロセッサ若しくはコントローラを含む。プロセッサ９０２は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
【００８２】
メモリデバイス９０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）９１４）及び／又は不揮発性メモリ（例えば、リードオンリーメモリ（ＲＯＭ）９１６）等の様々なコンピュータ可読媒体を含む。メモリデバイス９０４は、フラッシュメモリ等の再書き込み可能なＲＯＭをも含み得る。
【００８３】
大容量ストレージデバイス９０８は、磁気テープ、磁気ディスク、光ディスク、及び固体状態メモリ（例えば、フラッシュメモリ）等の様々なコンピュータ可読媒体を含む。図９に示すように、具体的な大容量ストレージデバイスはハードディスクドライブ９２４である。様々なコンピュータ可読媒体からの読み出しを可能にし、及び／又は様々なコンピュータ可読媒体への書き込みを可能にするために、大容量ストレージデバイス９０８には様々なドライブも含まれ得る。大容量ストレージデバイス９０８は、取り外し可能媒体９２６及び／又は非取り外し可能媒体を含む。
【００８４】
Ｉ／Ｏデバイス９１０は、データ及び／又はその他の情報がコンピューティングデバイス９００に入力されること、又はコンピューティングデバイス９００から検索されることを可能にする様々なデバイスを含む。例示的なＩ／Ｏデバイス９１０は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びＣＣＤ若しくはその他の画像取込デバイス等を含む。
【００８５】
表示デバイス９３０は、コンピューティングデバイス９００の１人以上のユーザに情報を表示可能な任意の種類のデバイスを含む。表示デバイス９３０の例には、モニタ、表示端末、及びビデオ投影デバイス等が挙げられる。
【００８６】
インタフェース９０６は、コンピューティングデバイス９００がその他のシステム、デバイス、又はコンピューティング環境とインタラクトすることを可能にする様々なインタフェースを含む。例示的インタフェース９０６は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等の、任意の数の異なるネットワークインタフェース９２０を含む。その他のインタフェースは、ユーザインタフェース９１８及び周辺デバイスインタフェース９２２を含む。インタフェース９０６は、１つ以上のユーザインタフェース要素９１８をも含む。インタフェース９０６は、プリンタ、ポインティングデバイス（マウス、トラックパッド等）、及びキーボード等に対するインタフェース等の、１つ以上の周辺インタフェースをも含み得る。
【００８７】
バス９１２は、プロセッサ９０２、メモリデバイス９０４、インタフェース９０６、大容量ストレージデバイス９０８、及びＩ／Ｏデバイス９１０が、バス９１２に結合されたその他のデバイス若しくはコンポーネントと共に、相互に通信することを可能にする。バ
ス９１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、及びＵＳＢバス等の幾つかの種類のバス構造の内の１つ以上を表す。
【００８８】
プログラム及びその他の実行可能なプログラムコンポーネントは、こうしたプログラム及びコンポーネントがコンピューティングデバイス９００の異なるストレージコンポーネント内に様々な時間に存在し得、プロセッサ９０２により実行されるものと理解されるが、説明の目的のために、別々のブロックとして本明細書に示される。或いは、本明細書に記述されるシステム及び手続は、ハードウェア内に、又はハードウェア、ソフトウェア、及び／若しくはファームウェアの組み合わせ内に実装され得る。例えば、本明細書に説明されるシステム及び手続の内の１つ以上を実行するように、１つ以上の特定用途向け集積回路（ＡＳＩＣ）はプログラムされ得る。
【００８９】
上の開示では、本明細書の一部を形成し、開示が行われ得る特定の実装の説明を通じて示される添付の図面を参照してなされている。本開示の範囲から逸脱することなく、その他の実装が利用され得、構造的変更がなされ得ることは理解される。明細書中の“一実施形態”、“実施形態”、“例示的実施形態”等への言及は、説明される実施形態が特定の機構、構造、又は特徴を含み得るが、あらゆる実施形態が特定の機構、構造、又は特徴を必ずしも含まなくてもよいことを示す。更に、こうした句は、同じ実施形態に必ずしも言及していない。更に、特定の機構、構造、又は特徴は、実施形態と組み合わせて記述され、明確に記述されているか否かに係わらず、その他の実施形態と組み合わせたこうした機構、構造、又に特徴に影響を及ぼすことは当業者の認識の範囲内であると言える。
【００９０】
本明細書に開示されるシステム、デバイス、及び方法の実装は、本明細書で論じられるように、例えば、１つ以上のプロセッサ及びシステムメモリ等のコンピュータハードウェアを含む専用又は汎用コンピュータを含み得、又は該コンピュータを利用し得る。本開示の範囲内にある実装は、コンピュータ実行可能命令及び／又はデータ構造を搬送又は格納するための物理的媒体及びその他のコンピュータ可読媒体をも含み得る。こうしたコンピュータ可読媒体は、汎用又は専用コンピュータシステムによりアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ実行可能命令を格納するコンピュータ可読媒体は、コンピュータストレージ媒体（デバイス）である。コンピュータ実行可能命令を搬送するコンピュータ可読媒体は伝送媒体である。したがって、例として、非限定的に、開示の実装は、少なくとも２つの別々の異種のコンピュータ可読媒体、コンピュータストレージ媒体（デバイス）と伝送媒体とを含み得る。
【００９１】
コンピュータストレージ媒体（デバイス）は、コンピュータ実行可能命令若しくはデータ構造の形式で所望のプログラムコード手段を格納するために使用され得、汎用又は専用コンピュータによりアクセスし得るＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、（例えば、ＲＡＭに基づく）固体状態ドライブ（“ＳＳＤ”）、フラッシュメモリ、相変化メモリ（“ＰＣＭ”）、その他の種類のメモリ、その他の光ディスクストレージ、磁気ディスクストレージ若しくはその他の磁気ストレージデバイス、又は任意のその他の媒体を含む。
【００９２】
本明細書に開示されるデバイス、システム、方法の実装は、コンピュータネットワークを通じて通信し得る。“ネットワーク”は、コンピュータシステム及び／又はモジュール及び／又はその他の電子デバイス間で電子データの移送を可能にする１つ以上のデータリンクとして定義される。情報がネットワーク又は別の通信接続（有線、無線、又は有線若しくは無線の組み合わせ）に通じてコンピュータに転送又は提供される場合、コンピュータは、該接続を伝送媒体と適切に見なす。伝送媒体は、コンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコード手段を搬送するために使用され得、汎用又は専用コンピュータによりアクセスされ得るネットワーク及び／又はデータリンクを含み得る
。上記の組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【００９３】
コンピュータ実行可能命令は、例えば、プロセッサで実行される場合に、汎用コンピュータ、専用コンピュータ、又は専用処理デバイスにある一定の機能又は機能のグループを実施させる命令又はデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語等の中間フォーマット命令、又はソースコードであり得る。構造的機構及び／又は方法論的行為に特有の言語で主題が記述されているが、添付の請求項で定義される主題は、記述される機構又は上述の行為に必ずしも限定されないと理解されるべきである。むしろ、記述される機構及び行為は、請求項を実装する例示的形式として開示される。
【００９４】
開示は、ダッシュボード埋め込み車両コンピュータ、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの若しくはプログラム可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、モバイルフォン、ＰＤＡ、タブレット、ページャー、ルータ、スイッチ、及び様々なストレージデバイス等を含む多くの種類のコンピュータシステム構成を用いてネットワークコンピューティング環境中で行われ得ると当業者は認識するであろう。開示は、ネットワークを通じて（有線データリンクにより、無線データリンクにより、又は有線及び無線のデータリンクの組み合わせにより）リンクされたローカルコンピュータシステム及びリモートコンピュータシステムが共にタスクを実施する分散システム環境中でも行われ得る。分散システム環境では、プログラムモジュールは、ローカルのメモリストレージデバイス及びリモートのメモリストレージデバイスの両方に設置され得る。
【００９５】
更に、必要に応じて、本明細書に記述される機能は、ハードウェア、ソフトウェア、ファームウェア、デジタルコンポーネント、又はアナログコンポーネントの内の１つ以上で実施され得る。例えば、１つ以上の特定用途向け集積回路（ＡＳＩＣ）は、本明細書に説明されるシステム及び手続の内の１つ以上を実行するようにプログラムされ得る。説明及び請求項の全体を通じて使用される幾つかの用語は、特定のシステムコンポーネントを指す。当業者に認識され得るように、コンポーネントは異なる名前で呼ばれることがある。この文献は、機能は異ならないが名前が異なるコンポーネント間の区別を意図しない。
【００９６】
上で論じられたセンサの実施形態は、それらの機能の少なくとも一部を実施するためのコンピュータハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組み合わせを含み得る。例えば、センサは、１つ以上のプロセッサ内で実行されるように構成されたコンピュータコードを含み得、コンピュータコードにより制御されるハードウェア論理／電気回路を含み得る。これらの例示的デバイスは、説明目的で本明細書に提供され、限定することを意図しない。本開示の実施形態は、当業者に周知であるように、更なる種類のデバイス内に実装され得る。
【００９７】
開示の少なくとも幾つかの実施形態は、任意のコンピュータ使用可能媒体上に格納された（例えば、ソフトウェアの形式の）こうした論理を含むコンピュータプログラム製品に向けられている。こうしたソフトウェアは、１つ以上のデータ処理デバイスで実行される場合に、本明細書に説明されるようにデバイスを動作させる。
【００９８】
本開示の様々な実施形態が上述されているが、それらは、単なる非限定的な例として提供されていると理解されるべきである。開示の精神及び範囲から逸脱することなく、形式及び詳細に様々な変更がなされ得ることは、当業者には明らかであろう。したがって、本開示の幅及び範囲は、上述した例示的実施形態の何れかに限定されるべきではないが、以下の請求項及びそれらの均等物に従ってのみ定義されるべきである。
【００９９】
前述の記述は、説明及び記述の目的で提供されている。網羅的であること、又は開示された正確な形式に開示を限定することを意図しない。上の教示に照らして多くの変更及び変形が可能である。更に、前述の代替的な実装の何れか又は全ては、開示の付加的で複合的な実装の形成を要望する任意の組み合わせで使用され得ることに留意すべきである。
【図１】
2021506144.tif 000003
【図２】
2021506144.tif 000004
【図３】
2021506144.tif 000005
【図４】
2021506144.tif 000006
【図５】
2021506144.tif 000007
【図６】
2021506144.tif 000008
【図７】
2021506144.tif 000009
【図８】
2021506144.tif 000010
【図９】
2021506144.tif 000011
【国際調査報告】
2021506144.tif 000012