(57)【要約】本明細書に記載される実施形態は、概して、任意のバイナリデータをＨＴＴＰエンドポイントと任意の宛先との間でトンネリングするための方法およびシステムに関する。そのようなデータのトンネリングは、例えば、ブラウザベースクライアントがＨＴＴＰプロトコルで通信を行い、ＨＴＴＰではない通信を理解するリモートのエンドポイントとのデータの交換を望む環境において有益である。中継サーバはクライアントを宛先に接続させる「仲介者」として使用され、データ交換に必要なプロトコルをサポートするコンポーネントが中継サーバにプラグインされる。信頼性のある順序化されたデータ送信を達成するために、中継サーバは、セッション識別子の割り当てを介してセッションをグループ化し、シーケンス番号および確認応答番号の割り当てを介したメッセージの交換を追跡する。さらに、中継サーバは、宛先とのＨＴＴＰエンドポイントの認証を行い、ウェブベースクライアントの制限された環境では利用できない他の操作を扱う。
2013524727.tif 000002
【特許請求の範囲】
【請求項１】
プロトコルデータをＨＴＴＰ（Hypertext Transfer Protocol）により中継サーバを通じてトンネリングすることによってクライアントの機能性を拡張するため、コンピュータによって実装される方法であって、前記方法は、
前記中継サーバにおいて前記クライアントから通信を受け取り、リモートエンドポイントとの中継セッションを作成するステップと、
前記クライアントを認証するステップであって、前記クライアントを認証することは、チャレンジ応答データを前記クライアントに送信することを含む、ステップと、
前記中継セッションを構成するステップと、
前記中継セッションのセッション識別子を生成するステップと、
前記セッション識別子をクライアントに送信するステップと、
ＨＴＴＰ要求とＨＴＴＰ応答を前記クライアントに転送し、前記リモートエンドポイントとデータを交換するステップであって、前記ＨＴＴＰ要求がセッション識別子を含む、ステップと
を含むことを特徴とする方法。
【請求項２】
前記セッション識別子を使用して、同一の中継セッションに属する要求をグループ化することを特徴とする請求項１に記載の方法。
【請求項３】
前記セッション識別子は、暗号化乱数発生機により生成されることを特徴とする請求項２に記載の方法。
【請求項４】
シーケンス番号と確認応答番号が、同一のセッションに属するＨＴＴＰ要求とＨＴＴＰ応答に対して割り当てられることを特徴とする請求項２に記載の方法。
【請求項５】
開始要求と開始応答が、前記中継セッションを開始し、後続のＨＴＴＰ要求が、ＳＩＰ（Session Initiation Protocol）データを、ＨＴＴＰを介して前記中継サーバを通じて前記リモートエンドポイントに転送することを特徴とする請求項１に記載の方法。
【請求項６】
前記ＳＩＰデータはＨＴＴＰを介してトランスポート機構に転送され、前記トランスポート機構は、ＴＣＰ（Transmission Control Protocol）、ＵＤＰ（User Datagram Protocol）、およびＴＬＳ（Transport Layer Security）から成る群のうちの１つを含むことを特徴とする請求項５に記載の方法。
【請求項７】
開始要求と開始応答が中継セッションを開始し、後続のＨＴＴＰ要求が、ＲＤＰ（Remote Desktop Protocol）データを、ＨＴＴＰを介して前記中継サーバを通じて前記リモートエンドポイントに転送することを特徴とする請求項１に記載の方法。
【請求項８】
前記ＲＤＰデータはＨＴＴＰを介してトランスポート機構に転送され、前記トランスポート機構は、ＲＴＰ／ＳＲＴＰ、ＴＬＳ、ＵＤＰ、およびＴＣＰから成る群のうちの１つを含むことを特徴とする請求項７に記載の方法。
【請求項９】
プロセッサによって実行されると、プロセッサに、ＨＴＴＰを介して中継サーバを通してプロトコルデータをトンネリングすることによってクライアントの機能性を拡張する方法を実行させる、コンピュータ実行可能命令を記憶するコンピュータ記憶媒体であって、前記方法は、
前記中継サーバにおいて前記クライアントから通信を受け取り、リモートエンドポイントとの中継セッションを作成するステップと、
前記クライアントを認証するステップであって、前記クライアントを認証することは、チャレンジ応答データを前記クライアントに送信することを含む、ステップと、
前記中継セッションを構成するステップと、
前記中継セッションのセッション識別子を生成するステップと、
前記セッション識別子をクライアントに割り当てるステップと、
ＨＴＴＰ要求を転送して前記リモートエンドポイントとデータを交換するステップであって、前記ＨＴＴＰ要求は、前記セッション識別子とシーケンス番号を含み、前記シーケンス番号は、前記中継サーバによってＨＴＴＰヘッダとして受け取られる、ステップと、
ＨＴＴＰ要求とＨＴＴＰ応答を前記クライアントに転送するステップであって、前記クライアントへのＨＴＴＰ要求は前記セッション識別子を含むステップと、
前記中継サーバがシーケンス番号を使用するステップと、
確認応答番号を生成するステップと、
前記確認応答番号をＨＴＴＰ応答とともに前記クライアントに渡すステップと
を含むことを特徴とするコンピュータ記憶媒体。
【請求項１０】
前記方法は、前記セッション識別子を使用して同一の中継セッションに属する要求をグループ化するステップをさらに含み、要求のグループはＲＤＰ要求を含むことを特徴とする請求項９に記載のコンピュータ記憶媒体。
【請求項１１】
前記セッション識別子はＧＵＩＤであることを特徴とする請求項９に記載のコンピュータ記憶媒体。
【請求項１２】
前記認証することは、前記中継サーバにおいて認証ブローカを用いて実行されることを特徴とする請求項９に記載のコンピュータ記憶媒体。
【請求項１３】
ＨＴＴＰを介してトンネリングされる前記プロトコルデータは、任意のプロトコルデータを含むことを特徴とする請求項９に記載のコンピュータ記憶媒体。
【請求項１４】
前記プロトコルデータは、ＲＤＰデータとＳＩＰデータとから成る群のうちの１つまたは複数を含むことを特徴とする請求項９に記載のコンピュータ記憶媒体。
【請求項１５】
プロトコルデータを、クライアントとリモートエンドポイントとの間で中継サーバを通してＨＴＴＰを介してトンネリングするように構成されたシステムであって、
プロセッサと、
前記プロセッサに結合されるメモリであって、前記プロセッサによって実行可能なコンピュータプログラム命令を含み、
前記中継サーバ内のセッション管理コンポーネントであって、セッション識別子（セッションＩＤ）を生成し、ＨＴＴＰ要求をグループ化して前記セッションＩＤを前記クライアントに戻す、セッション管理コンポーネントと、
前記中継サーバ内の中継エンジンコンポーネントであって、１つまたは複数のシーケンス番号と１つまたは複数の確認応答番号とをＨＴＴＰ要求とＨＴＴＰ応答に割り当てる、中継エンジンコンポーネントと、
前記中継サーバ内のプラットフォームサービスコンポーネントであって、前記クライアントの認証を可能にして前記クライアントの機能性を拡張する、プラットフォームサービスコンポーネントと、
前記中継サーバ内のプラグイントランスポートモジュールであって、前記プロトコルデータのトンネリングをサポートする、プラグイントランスポートモジュールと
を提供する前記メモリと
を備えたことを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＨＴＴＰを介した信頼性のあるプロトコルトンネリングのための方法およびシステムに関する。
【背景技術】
【０００２】
ウェブ会議は、インターネットやワールドワイドウェブを介してライブミーティング、プレゼンテーション、研修セミナーなどを実施する上でますます有用なツールとなっている。典型的なウェブ会議においては、会議の複数の参加者が自分のパーソナルコンピュータからインターネットを介して相互に接続される。ウェブ会議の能力を提供するソフトウェアプラットフォームの例には、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ社が製造するＭＩＣＲＯＳＯＦＴ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳ  ＳＥＲＶＥＲがある。クライアントがオンライン会議に参加することを望むが、例えば、Ｏｆｆｉｃｅ  Ｃｏｍｍｕｎｉｃａｔｏｒがクライアントコンピュータにインストールされていない場合、クライアントが会議に参加できるように、典型的には、ＡＪＡＸ（「Asynchronous JavaScript and XML」）ベースのＣＷＡ（Communicator Web Access）クライアントが使用される。ＡＪＡＸベースのＣＷＡクライアントは、会議に参加可能ではあるが、クライアント経験はＪａｖａｓｃｒｉｐｔ（登録商標）を介して利用可能な機能に制限される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
クライアントアプリケーションの明示的なインストールを必要とせずに、ブラウザベースのクライアントのミーティング経験を向上させるために、ＡＪＡＸベースのＣＷＡクライアントとは異なるタイプのクライアントを使用しても良い。例えば、ワシントン州レドモンドのＭＩＣＲＯＳＯＦＴ社が製造するＭＩＣＲＯＳＯＦＴ  ＳＩＬＶＥＲＬＩＧＨＴプラットフォームに由来するＳＩＬＶＥＲＬＩＧＨＴベースのクライアントを使用することができる。ＳＩＬＶＥＲＬＩＧＨＴは、機能性のみならずサーバとの通信に使用される基本のプロトコルの双方の観点からネイティブアプリケーションとほぼ同等の機能豊富なアプリケーションの開発を可能にする。しかし、ＳＩＬＶＥＲＬＩＧＨＴタイプのプラットフォームは、そのようなアプリケーション開発の可能性において、依然として幾らかの制限がある。例えば、ブラウザベースのクライアントは典型的に、ウェブミーティングの会議能力を提供するリモートサーバへのＴＣＰ（Transmission Control Protocol）ソケット接続に対応していない。そのようなソケット接続は、クライアントの企業ネットワークに固有の強化されたセキュリティ機構に基づいて可能にされておらず、このようなネットワークでは、ポートの制限およびファイアウォールを横断できないという全体的な不能性のためにポリシーファイル取り出しが阻止される。実際、ファイアウォール化されたネットワークやプロキシサーバの背後にあるネットワークなどの状況においては、ネットワーク接続に制限が存在する。ポリシーファイルが無い場合、ブラウザベースのクライアントは、リモートサーバへのソケット接続のオープンを拒否する。さらに、ＮＴＬＭ（ＮＴ LAN Manager）認証、ケルベロス認証プロトコル、または証明書認証などの特定のセキュリティパッケージへのアクセスが、そのアプリケーションに対して利用可能でないことがある。そのような認証能力が無い場合、ブラウザベースのクライアントを、ネイティブクライアントと同じプロトコルを使用してセッション開始プロトコル（ＳＩＰ：Session Initiation Protocol）サーバに対して承認することができない。
【０００４】
上記においては、特定の問題を扱ったが、本開示はいかなる方法においてもそれらの特定の問題を解決することに限定されるわけではない。
【課題を解決するための手段】
【０００５】
諸実施形態は概して、会議プラットフォームにおいて、ウェブベースのクライアントを、例えばリモートサーバなどのリモートエンドポイントに接続するための「仲介者（middle man）」として動作するサーバエンティティを用いることによって、リモートサーバに対していかなる変更も必要とせずに、ウェブベースのクライアントに豊富なミーティング経験と向上した機能性を提供することに関する。そのような「仲介者」サーバは、例えば、「中継サーバ」と呼ばれる。諸実施形態は、中継サーバに接続し、従って中継サーバの機能性を利用することによって、制限された環境にあるクライアントがその機能を拡張できるように、中継サーバを提供する。中継サーバは、例えばＷｉｎｄｏｗｓプラットフォームなど、その環境に関連する機能を有する。ウェブベースのクライアントは典型的に、ウェブ環境におけるデータの通信および交換にＨＴＴＰ（Hypertext Transfer Protocol）またはＨＴＴＰＳ（Hypertext Transfer Protocol Secure）を使用する。以下の実施形態の記載では、「ＨＴＴＰ」と称する。しかし、そのような実施形態において、「ＨＴＴＰ」へ言及する際には「ＨＴＴＰＳ」が含まれることは当業者には理解されよう。ＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥ  ＣＯＭＭＵＮＩＣＡＴＩＯＮＳサーバ（「ＯＣＳサーバ」）などの会議プラットフォームにおけるリモートサーバが、例えばＨＴＴＰベースではない、既存の通信プロトコルを有する場合、中継サーバを使用することで、クライアントまたはＨＴＴＰエンドポイントとリモートサーバまたは他の任意の宛先との間でＨＴＴＰを介して任意のバイナリデータ、または任意のプロトコルのデータをトンネリングすることにより、ウェブベースクライアントとリモートサーバとの間のデータ交換が許可される。このように、実施形態では、ＨＴＴＰを介していずれか任意のデータのトンネリングを行う。例えば、実施形態では、ＨＴＴＰを介した信頼できるプロトコルのトンネリングのための中継サーバを使用する以下の例を提供する。すなわち、任意のデータを、ＨＴＴＰを介してリアルタイムトランスポートプロトコル（ＲＴＰ：Real-Time Transport Protocol）／セキュアリアルタイムトランスポートプロトコル（ＳＲＴＰ：Secure Real-Time Transport Protocol）にトンネリングすること、リモートデスクトッププロトコル（ＲＤＰ：Remote Desktop Protocol）をＨＴＴＰによって任意のトランスポート機構（例えば、ＴＣＰまたはユーザデータグラムプロトコル（ＵＤＰ：User Datagram Protocol））にトンネリングすること、ＲＤＰをＨＴＴＰによってＲＴＰ／ＳＲＴＰにトンネリングすること、ＳＩＰをＨＴＴＰソリューションによってトンネリングすること、などである。
【０００６】
ＨＴＴＰは、簡素な要求／応答プロトコルであるため、クライアントからサーバまでの複数の接続をサポートし、従って、要求および応答のメッセージの順序化された配信を保証しない。要求および応答のメッセージがメッセージの送信時に失われる可能性がある場合も、信頼性のあるメッセージ配信は保証されない。例えば、中間ＨＴＴＰプロキシは、ＨＴＴＰ応答を失うことがある。メッセージの信頼性のある順序化された編成および配信は、ウェブ会議環境には有益である。このため、本開示の実施形態では、同一の中継セッションに属する要求をグループ化するのに使用されるセッション識別子を提供する。さらに、信頼性のある順序化されたメッセージ配信は、要求を１回に１つの保留中アップストリーム要求および１つの保留中ダウンストリーム要求に制限することにより達成される。実施形態ではまた、失われたメッセージの検出と失われたデータの再送信とを確実にするのに使用されるシーケンス／確認応答番号を提供する。実施形態においては、否定のＨＴＴＰ応答は要求を再試行するために処理されて、ロバストな、例えばＨＴＴＰを介したロスレスのデータ送信およびシステム弾力性が促進される。加えて、実施形態では、中継サーバの一部としてプラットフォームサービスを提供し、そのようなプラットフォームサービスには、例えば、一般的な暗号化操作の性能、ＤＮＳ（Domain Name Service）操作、および認証ブローカの使用が含まれ、会議環境における宛先との認証ハンドシェイクを計算する際にウェブベースクライアントを支援する。さらに、実施形態では、プラグ可能な性質を持ち、従ってウェブベースクライアントの機能性を拡張させるシステムコンポーネントを提供する。例えば、実施形態に従って、プラグ可能なトランスポートコンポーネントを中継サーバ上に有することにより、任意のプロトコルトンネリングが達成される。このプラグ可能なトランスポートプロトコルでは、トランスポートレイヤセキュリティ（ＴＬＳ：Transport Layer Security）／セキュアソケットレイヤ（ＳＳＬ：Secure Sockets Layer）トランスポートの使用がＳＩＰトンネリングにおいて可能にされ、一方、例えば、ＳＲＴＰトランスポートがＲＤＰトンネリングにおいて使用される。さらに、本開示の一実施形態に従って、プラットフォームサービスコンポーネントのプラグ可能な性質により、クライアントは認証ブローカを使用してＳＩＰ認証を実行することができる。
【０００７】
本要約は、以下の「発明を実施するための形態」でさらに述べる概念の選択を簡潔に紹介するために提供するものである。この要約は、請求の主題の重要または主要な特徴を確認することを意図しておらず、請求の主題の範囲を制限するものとして使用することも全く意図していない。
【０００８】
本開示の実施形態は、添付の図面を参照することによりさらに容易に説明することができる。図面において、同様の項目は同様の数字で参照される。
【図面の簡単な説明】
【０００９】
【図１】本明細書に開示される実施形態に従って、ウェブベースのクライアント参加者間の会議を開始するための環境またはシステムを論理的に表現した例を示す図である。
【図２】本開示の実施形態に従って、図１に例示される会議用の中継サーバを使用してＨＴＴＰを介して任意のバイナリデータをトンネリングするための環境またはシステムの論理的表現の例を示す図である。
【図３】本開示の実施形態に従って、図２に示される中継サーバを使用したＨＴＴＰを介したプロトコルトンネリングのための例示の機能コンポーネントモジュールの論理的表現の例を示す図である。
【図４】本開示の一実施形態に従って、図３に示される機能コンポーネントモジュールの対話を示すプロセスの操作的特徴を示すフロー図である。
【図５】本開示の実施形態に従って、中継サーバを使用したシステムのプラグ可能な性質を例示するプロセスの操作的特徴を示すフロー図である。
【図６】本開示の一実施形態に従って、中継セッションに属する要求を（セッション識別子の使用を介して）グループ化するためのプロセスの操作的特徴を示すフロー図である。
【図７】本開示の一実施形態に従って、シーケンス番号および確認応答番号を要求および応答に割り当てて、信頼性のある順序化されたメッセージ配信を確実にするためのプロセスの操作的特徴を示すフロー図である。
【図８Ａ】本開示の実施形態に従って、データをトンネリングするための中継サーバの例示の機能コンポーネントモジュールの論理的表現の例を示す図である。
【図８Ｂ】本開示の一実施形態に従って、図８Ａに示される機能コンポーネントモジュールの対話を示すプロセスの操作的特徴を示すフロー図である。
【図９】本開示の一実施形態に従って、中継サーバ上で認証ブローカの使用を介して任意の宛先とのＨＴＴＰのエンドポイントの認証を行うためのプロセスの操作的特徴を示すフロー図である。
【図１０】本開示の実施形態に従って、ＲＤＰデータをトンネリングするための中継サーバの例示の機能コンポーネントモジュールの論理的表現の例を示す図である。
【図１１】本開示の一実施形態に従って、図１０に示される機能コンポーネントモジュールの対話を示すプロセスの操作的特徴を示すフロー図である。
【図１２】本開示の実施形態を実装することができる例示のコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１０】
本開示では、以下において、添付の図面を参照して例示の実施形態についてさらに詳しく説明し、特定の実施形態を示す。しかし、他の態様を多くの異なる形式で具現化することができ、本開示に特定の実施形態を含めることは、そのような態様を本明細書に記載される実施形態の態様に限定するものとして解釈されるべきではない。むしろ、図面に示される実施形態は、完全な開示を提供し、かつ意図された範囲を当業者に十分に伝達する開示を提供するために含まれている。点線は、選択的な構成要素または操作を示すために使用される。
【００１１】
実施形態は概して、中継サーバを使用して、ウェブ会議環境において、ブラウザベースまたはウェブベースのクライアント機能を拡張することに関する。代替実施形態において、クライアントは、ブラウザベースのクライアントでも、ウェブベースのクライアントでもなく、当業者により理解される任意のタイプのクライアントである。中継サーバは、例えば、ウェブベースのクライアントまたはＨＴＴＰのエンドポイントと、任意の宛先またはリモートサーバとの間で任意のバイナリデータのトンネリングを行う。そのようなトンネリングは有用であるが、これはウェブベースのクライアントが一般的にはＨＴＴＰプロトコルを使用して通信し、リモートサーバが理解するトランスポートプロトコルを使用して通信することはできないためである。そのようなトランスポートプロトコルには、例えば、ＴＣＰ、ＵＤＰ、ＳＲＴＰ、ＴＬＳなどが含まれる。これらのプロトコルは、単なる例として提示される。当業者により理解されるように任意の数のトランスポートプロトコルを、リモートサーバによって使用することができる。従って、ＳＩＰおよびＲＤＰなどのいずれかの任意のプロトコルのＨＴＴＰを介したトンネリングが、中継サーバを使用することにより提供される。中継サーバは、あるタイプの「仲介者」として動作し、ＨＴＴＰ要求を介してバイトバッファを受け取り、その要求を宛先に中継する。同様に、中継サーバは、宛先からデータを受け入れ、そのデータをＨＴＴＰ応答によりクライアントに中継する。
【００１２】
一実施形態において、中継サーバは、例えば、インターネット情報サーバ（ＩＩＳ：Internet Information Server）サーバに配置されるウェブアプリケーションとして設計される。そのような実施形態における中継サーバは、セッション管理コンポーネント、中継エンジンコンポーネント、および選択的なプラットフォームサービスコンポーネントを備える。任意の数のタイプの構成要素を、実施形態において組み合わせまたは単独で使用することができ、また、一部の構成要素は、図示されるように実施形態において選択的なものとすることもできる。中継サーバは、任意のトランスポート機構を使用してＨＴＴＰエンドポイントからトンネリングされたデータを受け入れることを可能にするように拡張可能に設計される。中継サーバでは、任意のバイナリデータがトンネリングされる。例えば、実施形態においてはＳＩＰおよびＲＤＰのトラフィックがトンネリングされる。しかし、他の実施形態では、ファイルトランスポートデータを含む任意のデータのトンネリングが提供される。中継セッションの確立においては、実施形態では中継サーバを提供し、宛先エンドポイントと通信して接続をセットアップするため、宛先エンドポイントが理解する特定のプロトコルのデータが交換可能にされる。中継サーバはこのように構成され、任意のプロトコルで通信して接続をセットアップする。
【００１３】
中継セッションを確立するための実施形態に従って、クライアントが、中継サーバのセッション管理コンポーネントにおけるセッションの作成を要求する。クライアントと中継サーバとの間のこの対話を、中継セッションの第１の「レッグ（区間）」と呼ぶことができる。実施形態において、中継サーバは、選択的なプラットフォームサービスを用いて構成され、例えば、認証であろうとＤＮＳルックアップであろうと、セッション確立に役立つ。中継サーバはまた、１つまたは複数のトランスポートモジュールで構成され、トランスポートモジュールはリモートサーバと特定のプロトコルで通信する。セッション管理コンポーネントは、例えば、ウェブサービス呼び出しを介してクライアントからの潜在的な助けを用いてリモートサーバに接続するようトランスポートモジュールを推進する。「ウェブサービス呼び出し」は、そのような情報を通信する方法の単なる例として提示される。当業者が理解する他のタイプの通信を使用しても良い。実施形態において、中継セッションの第１のレッグの間、セッション管理コンポーネントが、中継エンジンコンポーネントと対話し、セッション識別子（セッションＩＤ）を生成してＨＴＴＰ側のトラフィックをグループ化し、セッションＩＤをクライアントに返す。セッションＩＤを用いて、クライアントと中継サーバとの間の仮想接続がＨＴＴＰを介して確立される。このセッションＩＤは、実施形態に従い、クライアントが送信する各ＨＴＴＰ要求に存在する。セッションＩＤ（シーケンス／確認応答番号と共に）と、一実施形態に従い、各方向（アップストリームおよびダウンストリーム）に多くとも１つの保留中要求があるというエンフォースメントと、例えば、障害が発生した時などに所定回数ＨＴＴＰ要求の送信の再試行することとにより、クライアントと中継サーバとの間のＨＴＴＰを介した信頼性のある順序化された双方向のデータ配信の方法が提供される。なお、実施形態において述べたように、この接続は中継セッションの１つのレッグであり、中継サーバからリモートサーバへの中継セッションの第２のレッグがあり、そこでは任意のトランスポートプロトコルが使用される。実施形態に従い、トランスポートスタックが中継サーバに搭載され、プロトコルのトンネリングが可能にされる。
【００１４】
プロトコルのデータを、ＨＴＴＰを介してトンネリングすることにより、本開示の実施形態では、ウェブベースクライアントの機能性を有意に拡張するが、これは中継サーバが各可能性のある宛先エンドポイントへの接続のための異なる種々の手段への適合を可能にするためである。例えば、宛先エンドポイントがサーバである場合、特定のタイプのサーバに接続するために、例えば、ＳＩＰサーバに対してＴＬＳ、画面共有サーバに対してＲＴＰ／ＳＲＴＰなど、異なる手段が使用される。
【００１５】
さらに、本開示の実施形態はまた、セキュリティ特性を強化するために使用される企業ファイアウォールおよび制限されたポートが原因となる制限を補償する。企業ネットワークに存在する制限されたポートのため、ポリシーファイルをウェブベースクライアントから検索することは、不可能ではなくとも難しいことがある。例えば、ポート９４３はＳＩＬＶＥＲＬＩＧＨＴプラットフォームにポリシーファイルの実装を保持する。ＳＩＬＶＥＲＬＩＧＨＴクライアントコンピュータは、ウェブサイトにポート９４３上のポリシーファイルへのアクセスの要求を送信するする。しかし、ポート９４３は通常、企業ネットワークではオープンされていない。従って、全てが不可能にされているのではないなら、ポリシーファイルの検索は阻止される。ポリシーファイルが無い場合、ブラウザベースのクライアントは、リモートサーバへのソケット接続のオープンを拒否する。従って、ウェブベースクライアントとリモートサーバとの間の通信は一般的には可能ではない。しかし、本開示の実施形態では、中継サーバを使用してウェブベースクライアントとリモートサーバを接続させる。ＨＴＴＰでクライアントと通信する中継サーバの能力により、企業ファイアウォールを横断することが可能になる。例えば、ＨＴＴＰをトランスポート機構として使用することにより、企業ファイアウォールの横断の問題が減少されるが、それはポート８０／４４３（ＨＴＴＰ８０／ＴＣＰ、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  ＨＴＴＰ；ＨＴＴＰＳ４４３／ＴＣＰ、ＴＬＳ／ＳＳＬを介したＨＴＴＰプロトコル）は典型的に、企業ネットワークにおいてオープンされているからである。
【００１６】
実施形態において、ウェブベースクライアントは従って、クライアントとリモートサーバとの間の通信のための中継器として動作する中継サーバへのＨＴＴＰ接続をオープンすることが可能である。そして、ウェブベースクライアントはＨＴＴＰ要求を使用して中継サーバと通信する。ＨＴＴＰ要求を受け取ると、中継サーバは、交換用の実際のデータを「アンラップ（unwrap）」し、リモートサーバが理解するトランスポートプロトコルを使用してリモートホストに送る。同様に、リモートサーバが使用するトランスポートプロトコルでデータを受け取ると、中継サーバはデータをＨＴＴＰプロトコルで「ラップ（wrap）」し、ＨＴＴＰ応答の一部としてウェブベースクライアントに送信または転送する。
【００１７】
ＨＴＴＰが簡素な要求／応答のプロトコルであり、クライアントからサーバまでの複数の接続をサポートするため、順序化されたメッセージ配信は保証されない。さらに、ＨＴＴＰプロトコルの簡素な要求／応答の性質のため、信頼性のあるメッセージ配信を確実にするためのビルトイン機構は備えておらず、従って、応答がクライアントに到着する前に失われることがある。さらに、これらのプロトコルでは、要求をグループ化してセッションを形成する方法が提供されない。信頼性のある順序化されたメッセージ配信が保証不可能であることは、ウェブ会議の成功には不利益である。このため、本開示の実施形態では、セッション識別子（セッションＩＤ）、例えば、ＧＵＩＤ（グローバル一意識別子）のようなセッション識別子または他の暗号的に強力な識別子などの使用を提供して、上記で検討したように、同一の中継セッションに属する要求をグループ化する。セッション識別子は、中継サーバにおいて暗号化乱数発生機を使用してランダムに生成される。暗号化乱数発生機を使用することにより、第三者により番号が推測され、システムが提供するサービスが攻撃されることを阻止する。さらなるセキュリティのため、中継サーバだけが知る秘密を使用してセッション識別子に署名をして、任意の推測攻撃を阻止することもできる。このように、セッション識別子の能力により、セキュリティが強化され、ＨＴＴＰ環境に特有の複数の接続が特定の中継セッションに編成される。
【００１８】
順序化されたメッセージ配信をさらに達成させるために、本開示の実施形態は、アップストリームおよびダウンストリームの要求を追跡し、１回に１つの保留中アップストリーム要求および１つの保留中ダウンストリーム要求のみを許可するようにする。シーケンス番号および確認応答番号は、要求および応答のメッセージに割り当てられて、データ交換が追跡され、失われたメッセージが探索される。失われたメッセージの検出時、または、否定／失敗のＨＴＴＰ応答（２００ＯＫ以外の何らかのステータスコードを伴う応答など）の表示を受け取った時、否定／失敗のＨＴＴＰ応答に対応するＨＴＴＰ要求が、セッション終了前に、所定回数再送信および／または再試行される。そのようなメッセージ追跡は、ロスレスデータ送信およびシステム弾力性の達成に役立つ。
【００１９】
さらなる実施形態では、宛先と通信するための制限された環境においてウェブベースクライアントの機能拡張のために、選択的プラットフォームサービスコンポーネントが、制限された環境では利用できない機能の提供を支援する。異なるプロトコルのデータが中継される場合、異なるプラットフォームサービスが必要とされる可能性がある。そのようなサービスはシステムに対してプラグ着脱可能である。一例として、プラットフォームサービスは、ＳＩＰデータをトンネリングする一方、クライアントがＳＩＰサーバから開始されたセキュリティチャレンジに対して成功裏に応答することを支援する、認証ブローカを含む。そのようなチャレンジに対してウェブベースクライアントが成功裏に応答できないことは、制限されたクライアント環境においてセキュリティに対する十分なソフトウェアパッケージが無いことに起因する。ウェブベースクライアントは、本開示の実施形態において、その制限された機能性を、認証能力を認証ブローカに委託することにより拡張させるが、これはＳＩＰデータをトンネリングするためのプラットフォームサービスの一部であり、その使用はＳＩＰデータのトンネリングに限定されない。中継サーバは、実施形態において、制限されたクライアント環境よりも多くの機能性を有するが、それは十分に機能的なサーバであるからである。例えば、実施形態の中継サーバは、より多くのソフトウェアパッケージがインストールされている。実施形態において中継サーバだけが要求される機能性を提供できない場合、中継サーバのプラットフォームサービスは、他のサーバコンポーネントに行き、クライアントに対して満足できる結果を調整することができる。一実施形態において、例えば、中継サーバ上の認証ブローカモジュールが利用されて、宛先との認証ハンドシェイクを計算する際にクライアントを支援する。従って、ウェブベースクライアントは、暗号化呼び出しを中継サーバに委託し、暗号化呼び出しとリモートサーバにおいてプロトコル通信に必要なアドレスとを処理するツールとして中継サーバを使用する。他の実施形態では、ウェブベースクライアントの機能性の拡張は、中継サーバのプラットフォームサービスコンポーネントに、例えば、（中継サーバ上に必要なアルゴリズムを実装することによる）ハッシュ計算の処理、または（ホスト名をＩＰアドレスに解決するための）ドメイン名解決ＡＰＩ呼び出しの処理を委託することにより行われる。本明細書に提供される操作は、単なる例として提示される。
【００２０】
複数の参加者間のウェブ会議を開催するための一例である論理的な環境またはシステム１００が図１に示される。参加者１０２および１０４は、ウェブ会議を共に行いたいと考える。ここで、クライアント１０６および１１８が、例えば、それぞれネットワーク１０８および１２０を介してＳＩＰサーバなどのサーバ１１０にコンタクトし、それぞれ会議１１４および１２４に参加することを要求する。セッション開始要求が了解され有効にされると、ＳＩＰサーバ１１０が受諾メッセージ１１６および１２２をそれぞれクライアント１０６および１１８に送る。しかし、クライアント１０６とＳＩＰサーバ１１０との間が接続されていない場合、例えば、セッション要求１１４は完全に無制約で変更可能となるかまたは拒否される（図示せず）。そのようなシナリオが存在するのは、例えば、ウェブベースクライアントなどのクライアント１０６の制限された環境により、ソケット接続（図示せず）がサーバ１１０に対してオープンされることが阻止される場合である。さらに、クライアント１０６は、ＨＴＴＰにおける通信のみ可能であり、したがって、サーバ１１０によって理解されるプロトコル、例えばＴＬＳまたはＴＣＰを介して通信することができないことがある。従って、クライアント１０６が、ＨＴＴＰのみで通信するウェブベースのクライアントである場合、あるいは、例えば、企業ファイアウォールネットワーク、ネットワーク裏のプロキシサーバ、ＮＡＴなどの何らかの他の形式の制限されたネットワーク接続を有するウェブベースクライアントである場合に、ＳＩＰを、例えばＨＴＴＰを介してトンネリングすることが望ましい。
【００２１】
図１が一般的な会議環境を例示するのに対し、図２は、制限された環境にあるウェブベースクライアント２０２の機能性を中継サーバ２０６の使用により拡張し、宛先２０８とのリッチな会議経験を可能にするための、一例の論理的な環境またはシステム２００を示す。ウェブベースクライアント２０２は、図２ではトンネリングクライアント２０２とも称する。さらに、ウェブベースクライアントは、実施形態においては、「ブラウザベースクライアント」などの任意のタイプの任意のエンドポイントと称することもできる。用語「ウェブベース」のクライアントは、単なる例として提示される。ウェブベースクライアント２０２の通信がＨＴＴＰベースである場合、宛先エンドポイント２０８がＨＴＴＰベースでない既存の通信プロトコルを有すると、クライアント２０２は宛先エンドポイント２０８に接続できない。一実施形態において、宛先２０８はＳＩＰサーバ等のリモートサーバである。別の実施形態において、宛先２０８は画面共有サーバである。さらに他の実施形態において、宛先２０８はクライアント自身である。さらに、省略の点２１０および宛先２１２により図示されるように、任意の数の宛先エンドポイント２０８が使用されて良い。
【００２２】
ウェブベースクライアントすなわちトンネリングクライアント２０２は、ＨＴＴＰ要求２１４を、ネットワーク２０４を介して中継サーバ２０６に送る。中継サーバ２０６は、要求２１４内のデータをアンラップし、アンラップされたデータ２１６を宛先２０８が理解するプロトコルを使用してネットワーク２１８を介して宛先２０８に送る。実施形態において、中継サーバ２０６は、このようにデータ、例えば、ＳＩＰおよびＲＤＰプロトコルのデータを、ＨＴＴＰを介してトンネリングする。上記で検討したように、いずれか任意のバイナリデータが中継サーバ２０６によりトンネリングされて良い。そのような環境では、中継サーバ２０６は、ＲＴＰ／ＳＲＴＰまたはＴＬＳなどの適切なトランスポートスタックを、必要に応じて搭載して既に有しており（図示せず）そのようなトンネリングを可能にする。
【００２３】
受け取ったプロトコルデータ２１６を処理した後、宛先２０８はプロトコルデータ２２０を中継サーバ２０６に送る。中継サーバ２０６は、宛先２０８から受け取ったデータをＨＴＴＰプロトコルでラップして、ＨＴＴＰ応答２２２の一部としてクライアント２０２に送る。任意のタイプの任意のデータを、本明細書に開示される実施形態に従って、トンネリングすることができる。例えば、環境またはシステム２００は、実施形態に従って、任意のデータを、ＨＴＴＰを介してＲＴＰ／ＳＲＴＰにトンネリングすること、ＲＤＰを、ＨＴＴＰを介してＲＴＰ／ＳＲＴＰにトンネリングすること、ＲＤＰを、ＨＴＴＰを介して任意のトランスポート機構（ＴＣＰまたはＵＤＰなど）にトンネリングすること、およびＳＩＰを、ＨＴＴＰを介してトンリングすることを可能にする。
【００２４】
論理的環境２００は、任意の特定の実装に限定されず、むしろ、本明細書に記載される環境の機能性を実践することができる任意のコンピュータ環境を具現化する。例えば、当業者が理解する任意のタイプのクライアントコンピュータ２０２を、実施形態に従って使用して良い。さらに、ネットワーク２０４および２１８は、個々の単一のネットワークとして図示されるが、当業者が理解する従来の任意のタイプのネットワークトすることができる。実施形態に従うと、ネットワークは、グローバルなネットワーク（例えば、インターネットやワールドワイドウェブ、略して「ウェブ」）とすることができる。例えば、イントラネットなどのローカルエリアネットワーク、またはワイドエリアネットワークとしても良い。実施形態に従うと、ネットワーク２０４および２１８を介した通信は、１つまたは複数の標準パケットベースのフォーマット、例えば、Ｈ．３２３、ＩＰ、イーサネット（登録商標）、および／またはＡＴＭに従って発生する。
【００２５】
さらに、当業者が理解するような任意の想到し得る環境またはシステムは、本開示の実施形態に従って使用されて良い。図２は、本明細書に開示される実施形態の教示を理解する目的のためだけに例示される。例えば、図２は、中継サーバ２０６ならびに宛先２０８、２１０および２１２を示す。しかし、実施形態では、任意のタイプのサーバ、別個のサーバ、サーバファーム、または他のメッセージサーバも包含される。さらに、図２はクライアントコンピュータ２０２を示す。しかし、本明細書に開示される実施形態の精神および範囲から逸脱することなく当業者が理解するような、任意のタイプの小型コンピュータ装置が使用されて良い。クライアントコンピュータ２０２は１つだけ図示されるが、例えば、別の実施形態では、中継サーバ２０６と通信する複数の小型コンピュータ装置が提供される。一実施形態において、各小型コンピュータ装置は、ネットワーク２０４と通信し、または、他の実施形態では、複数の別個のネットワークが小型コンピュータ装置と通信する。さらに別の実施形態において、各小型コンピュータ装置は別々のネットワークと通信する。実際、環境またはシステム２００は、本明細書に記載される実施形態を実践する有効な方法を示すが、本開示の範囲に決して制限されない。さらに、例示のネットワーク環境２００は、例えば、中継サーバ、クライアントなどの記載される特定のコンポーネントの観点から検討しても良く、あるいは、そのようなユニットに対応する類似のモジュールの観点から検討しても良い。
【００２６】
図２が、ＨＴＴＰを介したプロトコルトンネリングのための例示の環境またはシステム２００を示すのに対し、図３は、本開示の実施形態に従い、ブラウザベースのクライアント３０２の機能性を、中継サーバ３０４を介して拡張させるためのソフトウェア機能モジュール３００を例示する。ソフトウェア機能モジュール３００は、本明細書に開示される実施形態に従い、図３に示すコンピュータシステムにおいて実行される。図３に示す実施形態において、ブラウザベースのクライアント３０２は、ウェブサービス呼び出し３２２を介するなどして、中継サーバ３０４にコンタクトして中継セッションを作成する。中継サーバ３０４のセッション管理コンポーネント３１０は、ウェブサービス３１２を備え、メソッド呼び出し３１５を介して、例えば、プレーンＨＴＴＰウェブハンドラ３１６を備える中継エンジン３１４と対話して要求された中継セッションを構成する。実施形態において、セッション管理コンポーネント３１０は、クライアント３０２とリモートサーバ３０８などの宛先との間の接続を、セッション識別子を生成することなどにより開始およびセットアップするため、例えば、会議に含まれるエンティティ間の接続を確立するため、および、同一の中継セッションに属する要求をグループ化するための、機能性を提供する。実施形態に従うと、セッション識別子は、例えば、ウェブサービス呼び出し戻り値を介してクライアントに戻される。セッションが一度確立されると、中継エンジンコンポーネント３１４は、クライアント３０２とリモートサーバ３０８との間のデータ交換を行う。中継エンジン３１４はまた、実施形態において、要求および応答のメッセージの信頼性のある順序化された配信を確実にするためにシーケンス番号および確認応答番号の割り当てを行う。
【００２７】
一実施形態において、セッション管理コンポーネント３１０は、まずプラットフォームサービスコンポーネント３２０、または認証コンポーネント３２０にコンタクトし３２４、中継セッションを構成するための許可にアクセスする。（いくつかの実施形態において、プラットフォームサービスコンポーネント３２０は、点線３２０で示すように選択的なものである。）実施形態に従うと、プラットフォームサービスコンポーネント３２０は、例えば、クライアント３０２の認証の実行、また、暗号化呼び出し操作およびＤＮＳ解決操作の処理を行う。これらのサービスは単なる例として提示される。他の追加的なタイプのサービスが、プラットフォームサービスコンポーネント３２０により実行される。一部の実施形態において、プラットフォームサービスコンポーネント３２０は、ブラウザベースクライアント３０２が直接呼び出しても良い。実施形態に従うと、ブラウザベースクライアント３０２は、リモートサーバすなわち宛先３０８との会議に参加するためには認証される必要がある場合がある。さらなる実施形態において、認証コンポーネント３２０は、ブラウザベースクライアント３０２とリモートサーバ３０８との間の「仲介者」として動作する中継サーバ３０４との中継セッションを作成する前に認証を行うための、ブラウザベースクライアント３０２に渡すチャレンジデータなどの情報またはデータを有する。さらなる実施形態において、認証コンポーネント３２０は、中継セッションを作成するクライアント要求をリモートサーバ３０８に提示することにより、および／または、チャレンジ応答メッセージ３２２の構築のためにクライアント３０２に送る３２２ための、チャレンジデータなどの認証情報またはデータ、および実施形態において一意的な識別子を取得することにより、会議参加のために、リモートサーバ３０８にコンタクトし３２６、クライアント３０２を検証する。認証コンポーネント３２０とリモートサーバ３０８との間のコンタクトの選択的な性質が、点線３２６で示される。リモートサーバ３０８がコンタクトされる場合、実施形態に従い、リモートサーバ３０８は中継サーバ３０４が提供する秘密を検証しても良く、そのような検証が成功した場合、チャレンジデータ（実施形態に従う一意的な識別子を含む）が認証コンポーネント３２０（コンタクト３２６の双方向性により示されるように）に提供される。さらに他の実施形態において、リモートサーバ３０８には秘密が提供されず、中継サーバ３０４からの要求について任意の検証を行わずに、リモートサーバ３０８がチャレンジ／識別子のデータを提供する。
【００２８】
認証が要求されて成功する（または、上記で検討したように、最初は認証が要求されない）実施形態において、セッション管理コンポーネント３１０は、例えば、メソッド呼び出しを介して中継エンジンコンポーネント３１４と対話し３１５、中継セッションを構成する。中継セッションの作成に成功すると、セッション管理コンポーネント３１０はセッションＩＤをクライアント３０２に割り当てる。一実施形態において、クライアント３０２に割り当てられたセッションＩＤを使用して、同一のセッションに属する要求がグループ化される。一実施形態において、セッションＩＤはＧＵＩＤのような、または他の暗号的に強力な、セッション識別子である。ＧＵＩＤのような識別子は単なる例として提示される。セキュリティをさらに強化するような他のタイプのセッション識別子が、本開示の実施形態に従って使用されて良い。一実施形態において、１つのセッションＩＤがＳＩＰ要求に対して割り当てられ、別のセッションＩＤが、例えば、ブラウザベースクライアント３０２からのＲＤＰ要求に対して割り当てられる。そのようなセッションＩＤは中継サーバ３０４からブラウザベースクライアント３０２に送られ３２２、クライアント３０２はそのセッションＩＤをＨＴＴＰヘッダとして使用して中継エンジン３１４と通信を行う３２８。ブラウザベースクライアント３０２からデータを受け取ると、中継エンジン３１４はトランスポートコンポーネント３１８と対話して３３０、リモートサーバ３０８とのデータの中継をする３３２。このように、中継エンジン３１４は、受け取ったかまたは転送されたデータをＨＴＴＰ要求でラップして、そのデータをそのようなトランスポートに適切なプロトコルでリモートサーバ３０８に送る。従って、中継サーバ３０４は、所望のネットワークプロトコルで通信するための「トンネル」として動作する。ソフトウェア機能モジュール３００は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示される。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび／またはサブモジュール、追加のモジュールおよび／またはサブモジュール、モジュールおよび／またはサブモジュールの組み合わせ、図示されるモジュールおよび／またはサブモジュールを拡張したもの、などを含んでも良い。
【００２９】
実施形態に従うと、中継サーバ３０４上のモジュールに対応するモジュールがブラウザベースクライアント３０２およびリモートサーバ３０８上にも存在し、そのような通信およびトランスポートを可能にする。クライアント側において、実施形態では、例えば、ＨＴＴＰ要求を開始し、セッションＩＤをＨＴＴＰヘッダとして要求に配置し、アップストリームデータ用にシーケンス番号を割り当て、確認応答番号を使用して、ダウンストリーム用にシーケンス番号を使用し確認応答番号を生成する、などを行う中継サーバに対応するモジュールを備える。リモートサーバ側において、実施形態に従うと、中継サーバに対応する部分がプロトコル参加者である。一実施形態において、プロトコル参加者は、例えばＴＣＰ参加者であり、中継サーバとリモートサーバとの間のデータの移動を支援する。
【００３０】
図３に示される種々のソフトウェア機能モジュールの対話が、本明細書に開示される実施形態に従って、ＨＴＴＰを介してプロトコルデータをトンネリングするための、図４に示される操作ステップ４００にさらに例示される。開始操作４０２が開始され、プロセス４００が進行して、例えばウェブサービス呼び出しを介するなどして、ブラウザベースクライアントからコンタクトを受け取り、中継セッションを作成する４０４。要求された中継セッションを構成する４１０前に、プロセス４００は、選択的に（点線で示す）最初にクエリ４０６に進み、クライアントが、宛先とのセッションを作成することが許可されるかどうか、例えば、認証されるかおよび／または認可されるか、をプラットフォームサービスコンポーネントから判定しても良い。そのような判定４０６を行う際に、中継サーバは、プラットフォームサービスコンポーネント３２０を介するなどして、選択的に図３のリモートサーバ３０８などの宛先にコンタクトし４０８、クライアントと宛先との間のハンドシェイクを完全にして要求されるセッションを構成するためのチャレンジデータおよび／または他の認証データを取得しても良い。ステップ４０６および４０８は双方とも、記載される実施形態に従って選択的なステップとして図示され、他の実施形態では、４０６におけるそのような認証判定を必要とするが、４０８のリモートサーバとのコンタクトを必要としない。さらなる実施形態において、ステップ４０６および４０８の双方が、必要とされる認証および／または認可のステップである。ステップ４０６および４０８に含まれる認証は、プラットフォームサービスのプラグ可能な性質、例えば、本開示の実施形態において使用される認証ブローカを示す。クライアントが中継セッションのセットアップについて認証および／または認可されているとクエリ４０６が判定した場合、プロセス４００はＹＥＳに進み中継セッションを構成する４１０。クライアントが認証されず、本明細書に開示される実施形態に従って処理を進めるためにそのような認証が必要な場合、プロセス４００はＮＯで終了操作４２２に進み、プロセス４００が終了する。クライアントが中継セッションの構成を許可され、そのようなセッションが構成される４１０場合、プロセス４００はセッションＩＤの生成４１２および割り当て４１４の各処理に進み、セッションＩＤが生成されてクライアントに割り当てられる。一実施形態において、セッションＩＤが生成され割り当てられて、同一の中継セッションに属する要求がグループ化される。一実施形態において、そのようなセッションＩＤは、中継サーバにおいて、例えば、セッション管理コンポーネントにおいて、暗号化乱数発生機を用いてランダムに生成される。検討してきたように、ＧＵＩＤセッションＩＤについて記述したが、このタイプの識別子は単なる例として提示されている。任意の数のタイプの識別子が、本開示の精神および範囲から逸脱することなく、当業者が理解するように使用されて良い。
【００３１】
次に、プロセス４００は、セッションＩＤをクライアント４１６に送る処理に進み、特定の中継セッションに属する要求に割り当てられたセッションＩＤがクライアントに送られる。すると、クライアントはセッションＩＤをＨＴＴＰヘッダとして使用し、さらなるデータ交換のために中継サーバと通信して、中継サーバが、セッションＩＤを有するＨＴＴＰ要求を受け取る４１８。次に、データがリモートサーバ４２０との間で中継サーバを介して交換され、プロセス４００はＥＮＤ操作４２２にて終了する。図４は、本明細書に開示される実施形態に従う、中継サーバを使用してＨＴＴＰを介したプロトコルトンネリングを行うための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００３２】
次に、図５では、本開示の実施形態に従い、システムのプラグ可能な性質を例示する。例えば、上記で検討したように、プラットフォームサービスコンポーネントは、制限された環境にあるクライアントにサービスを提供するべくプラグ可能である。例えば、認証ブローカは、実施形態に従うプラットフォームサービスコンポーネントの一部であり、ＳＩＰ認証を用いてクライアントを支援する。さらに、トランスポートがプラグ可能である。トランスポートのプラグ可能な性質により、任意のデータのトンネリングが可能になるが、それは、トンネリングしたいデータについての任意の適切なプロトコルが使用できるからである。例えば、ＳＩＰトンネリングでは、実施形態においてＴＬＳがトランスポートとして使用され、ＲＤＰトンネリングでは実施形態においてＳＲＴＰがトランスポートとして使用される。図５は、実施形態に従って、中継サーバを、開発者などが性質上プラグ可能に構成するためのプロセスを例示する。プロセス５００は、開始操作５０２にて開始され、クエリ５０４に進み、中継サーバを構成してデータをトンネリングさせるかどうかを判定する。ＮＯの場合、プロセス５００は終了操作５２８に進み、プロセス５００は終了する。ＹＥＳの場合、プロセス５００はＹＥＳに進み、操作５０６を判定し、ＳＩＰデータをトンネリングするかどうかを判定する。ＹＥＳの場合、プロセス５００は処理を進め、プラグインＴＬＳ／ＳＳＬトランスポートモジュール５０８を追加し、ＴＬＳ／ＳＳＬは、実施形態においてＳＩＰトンネリングの際にトランスポートとして使用される。別の実施形態において、別のタイプのプロトコルが、ＳＩＰトンネリングのためのトランスポートに使用される。次に、プロセス５００は、クエリ５１０に進み、任意の他のプラグインが追加されるかどうかを判定する。プラグインがそれ以上不要な場合は、プロセス５００はＮＯで終了操作５３４に進み、プロセス５００は終了される。別のプラグインが必要な場合、プロセス５００はＹＥＳに進み、例えば、認証ブローカプラグインを追加する５１２。実施形態において、認証ブローカは、ＳＩＰ認証の実行においてクライアントを支援するプラットフォームサービスのセットである。プラグイン認証ブローカの追加５１２に続き、プロセス５００はクエリ５１４に進み、任意の他のプラグインが必要かどうかを判定する。ＹＥＳの場合、プラグインが追加され５１６、プラグインがそれ以上不要になるまでステップ５１４から５１６が繰り返される。プラグインがそれ以上不要な場合、プロセス５００はＮＯから終了操作５３４に進み、終了する。
【００３３】
クエリ５０６に戻り、ＳＩＰトンネリングが必要な場合、プロセス５００はＮＯからクエリ５１８に進み、ＲＤＰデータをトンネリングする必要があるかどうかを判定する。ＲＤＰデータのトンネリングが必要な場合、プロセス５００はＹＥＳに進み、ＲＴＰ／ＳＲＴＰトランスポートモジュールのためのプラグインを追加し５２０、ＲＤＰトンネリングではＲＴＰ／ＳＲＴＰがトランスポートとして使用される。次に、任意の他のプラグインを追加する必要があるかどうかが判定される５２２。プラグインがそれ以上不要な場合、プロセス５００はＮＯから終了操作５３４に進み、プロセス５００は終了する。他のプラグインが必要な場合、プロセス５００はＹＥＳに進みプラグインを追加し５２４、クエリ５２２に進んで再度、任意の他のプラグインが必要かどうかが判定され、これらのステップが繰り返される。プラグインがそれ以上不要な場合、プロセス５００はＮＯから終了操作５３４に進み、プロセス５００が終了する。
【００３４】
ステップ５１８に戻り、ＲＤＰのトンネリングが不要な場合、プロセス５００はＮＯからクエリ５２６に進み、いずれか任意のデータのトンネリングが必要かどうかが判定される。ＮＯの場合、プロセス５００は終了操作５２８にて終了する。任意のデータのトンネリングが必要な場合、プロセス５００はＹＥＳに進み、適切なプロトコルトランスポートモジュールをプラグインして５３０、任意のプロトコルデータのトンネリングをサポートする。次に、操作５３２にて任意の他のプラグインが必要かどうかが判定される。他のプラグインが必要である場合、プロセス５００はＹＥＳに進んでプラグインを追加し５２４、これらのステップは、プラグインがそれ以上不要となるまで繰り返される。プラグインがそれ以上不要な場合、プロセス５００はＮＯから終了操作５３４に進み、プロセス５００は終了する。図５は、本明細書に開示される実施形態に従って、性質上プラグ可能な中継サーバを、開発者などによって構成するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせることおよび／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００３５】
次に、図６は、本明細書に開示される実施形態に従って、セッションＩＤを割り当てて同一の中継セッションに属する要求をグループ化するための例示の操作ステップ６００を示す。プロセス６００は、開始操作６０２にて開始され、処理を進めて中継セッションを作成する要求を受け取り６０４、ここではブラウザベースクライアントからのＳＩＰ要求などの要求が中継サーバにおいて受け取られる。中継セッションが操作６０６にて作成され、ＳＩＰ要求などの要求を同一の中継セッションに属するグループに割り当てるために、セッションＩＤが暗号化乱数発生機を用いてランダムに生成される６０８。一実施形態において、セッションＩＤはＧＵＩＤのようなセッションＩＤである。次に、プロセス６００は処理を進めて、操作６１０にて乱数をグループ１に割り当てる。グループの番号は、例えば、「グループ１」のクライアントに送られる６１２。次に、プロセス６００は処理を進めて、例えば、ＲＤＰデータを求める要求をブラウザベースのウェブアプリケーションから受け取る６１４。次に、別のセッションＩＤが生成され６１６、例えばＲＤＰデータを求める要求が「グループ２」にグループ化される。グループ番号を「グループ２」のクライアントに割り当てるためのセッションＩＤが、クライアントに送られ６１８、プロセス６００は終了操作６２０にて終了する。図６は、本明細書に開示される実施形態に従って、セッションＩＤを割り当てて同一の中継セッションに属する要求をグループ化するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００３６】
さらに、図７は、本明細書に開示される実施形態に従って、シーケンス番号および確認応答番号を割り当てて、ウェブブラウザベースクライアントなどのクライアントと中継サーバとの間の信頼性のある順序化されたデータ配信を確実にする方法を実行するための例示としての操作ステップ７００を示す。プロセス７００は、開始操作７０２にて開始され、処理を進めてブラウザベースクライアントにてＨＴＴＰ要求を生成し７０４、ここでプロセス７００はブラウザベースクライアントからリモートサーバへ中継サーバを介して移動するアップストリームデータを例示する。操作７０４にて、シーケンス番号もクライアントにより要求に割り当てられる。次に、シーケンス番号を有するＨＴＴＰ要求が中継サーバにて受け取られる７０６。中継サーバはシーケンス番号を使用し７０８、ここでシーケンス番号はＨＴＴＰヘッダとして中継サーバに渡される。中継サーバは次に、確認応答番号を生成する７１０。中継サーバは、ＨＴＴＰ応答に対するＨＴＴＰヘッダとして、および／または、実施形態に従う応答の主部として、確認応答番号をＨＴＴＰ応答と共にクライアントに戻す。クライアント側では、ＨＴＴＰ応答（受け取った場合）が保留中の要求（図示せず）とマッチングされる。ＨＴＴＰ応答とその要求とのマッチングは、実施形態に従いウェブブラウザなどの基本のプラットフォームによりクライアントにおいて実行される。そのような実施形態において、ＨＴＴＰ応答は、要求が送られたのと同じ、ＴＣＰなどの接続を介して、クライアントにおいて受け取られる。実施形態において、要求／応答のシーケンス番号および確認応答番号のこのマッチングおよび追跡により、ＨＴＴＰを介した順序化された信頼性のあるデータ送信の支援が可能となる。
【００３７】
応答メッセージおよび確認応答番号は、中継サーバからクライアントへの送信中に失われる可能性があるため、プロセス７００は、クエリ７１４にて、クライアントが、ＨＴＴＰ要求で送ったデータに対応する確認応答を受け取ったかどうかの判定を行う。例えば、アップストリームデータについては、本明細書に開示される実施形態に従うと、クライアントから開始された各ＨＴＴＰ要求は、特定の要求が担持するデータの最初のバイトにシーケンス番号を担持する。加えて、各要求は要求が担持するデータのバイト数を表す長さ数を有する。中継サーバ側では、応答メッセージのために生成された確認応答番号は、中継サーバが受け取った最後のバイトである。この確認応答番号の前のシーケンス番号を有する全てのデータは、従って、直近の確認応答番号でも確認される。クライアントは、数バイトのデータを受け取ったことを確認すると、そのバイトデータをキャッシュから削除する。あるいは、確認が受け取れない場合は、実施形態に従って、データは再配信される。例えば、シーケンス番号が１で始まり、要求の長さが１００バイトである時、クライアントが探す確認応答番号は１００である。第２の要求が送られる場合、シーケンス番号は１０１で始まり、長さが２００であれば、クライアントは対応する確認応答番号である３００を探す。
【００３８】
図７に戻り、７１４にて、確認応答が受け取られた場合（要求／応答メッセージの信頼性のある配信を示す）、プロセス７００はＹＥＳでクエリ７１６に進み、クライアントが任意の他の要求を、中継サーバを介してリモートサーバに送ることを求めているかどうかを判定する。他の要求が求められている場合、プロセス７００はＹＥＳに進み、ＨＴＴＰ要求を生成し、シーケンス番号を次の要求に割り当てる７０４。要求が求められていない場合、プロセス７００はＮＯから終了操作７１８に進み、プロセス７００を終了する。
【００３９】
クエリ７１４が、確認応答が受け取られていないと判定する場合、または、他の実施形態において、否定の処理および／または失敗の処理を示す応答が受け取られたと判定する場合、プロセス７００はＮＯからクエリ７２０に進み、所定の待ち時間が過ぎたかどうかを判定する。実施形態においてタイマが示すように、確認応答についての待ち時間が超過していない場合、プロセス７００はクエリ７１４に戻って確認応答が受け取られたどうかを判定し、ステップ７１４および７２０を繰り返す。所定の待ち時間が超過したと判定される場合、プロセス７００はＹＥＳから操作７２２に進み、要求の送信を再試行し、そしてプロセス７００は再度操作７０６に進む。ステップ７０６から７１６までを繰り返した後、プロセス７００は最終的に終了操作７１８に進み、プロセス７００が終了する。図７は、本明細書に開示される実施形態に従う、シーケンス番号を割り当て、要求の確認応答を追跡して、順序化された信頼性のあるメッセージ配信を行うための、可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせる、および／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００４０】
確認応答のクエリおよび／または確認応答番号を使用し、第１の要求が受け取られたという応答確認がなされるまで第２の要求の送信を待つことにより、プロセス７００は、メッセージを追跡して、データの喪失を防ぎシステム弾力性のあるロスレスなデータ送信を達成することにより、信頼性のある順序化されたメッセージ配信を行う。さらに、本明細書に開示される実施形態に従って、要求／応答のメッセージを追跡することにより、１回に１つの保留中アップストリーム要求および１つのダウンストリーム要求のみを行い、第１の要求／応答が確認応答されるまで第２の要求が送信されないようにすることにより、システムは順序化された配信を維持することができる。さらに、確認応答番号を使用することにより、システムは、再試行される要求を追跡して、要求を担持するデータに加えて新しいデータを一緒に送ることができる。加えて、検討したように、ＨＴＴＰが、例えば、一度に複数の接続を可能にすることを考慮すると、順序化されたメッセージ配信はＨＴＴＰ要求／応答での会議環境において有益である。図７は、クライアントと中継サーバとの間の信頼性のある順序化されたデータ配信を達成するためのステップを例示するが、その逆も同様であり、本明細書に開示される実施形態に従って、それらの間で使用されるプロトコルにより、中継サーバとリモートサーバとの間のデータの信頼性のある順序化された配信が指示される。
【００４１】
図７は、中継サーバを介したクライアントからリモートサーバへのアップストリームデータ用シーケンス番号／確認応答番号を示すが、本明細書に開示される実施形態に従って、中継サーバを介したリモートサーバからクライアントへのダウンストリームデータには対応するステップが含まれる。一実施形態において、シーケンス番号が中継サーバ側で生成され、クライアントにより使用される。そして、実施形態に従って、クライアントは確認応答番号を生成し、この確認応答番号は中継サーバにて使用される。
【００４２】
上述の図３は、中継サーバ３０４を介してブラウザベースクライアント３０２の機能性を拡張させるための例示のソフトウェア機能モジュール３００を示すが、図８Ａは、本明細書に開示される実施形態に従い、ＳＩＰデータをトンネリングするための、かつ、システムにプラグされる選択的なプラットフォームサービスを使用して、認証を実行することなどによりＳＩＰデータのトンネリングを支援するための例示のソフトウェア機能モジュール８００を示す。ブラウザベースクライアント８０２は、例えば、ウェブサービス呼び出しを介して８２２、中継サーバ８０４にコンタクトし、中継セッションを構成する。中継サーバ８０４のウェブサービス８１２を備えるセッション管理コンポーネント８１０は、例えば、メソッド呼び出し８０６を介して、プレーンＨＴＴＰウェブハンドラ８１６を備える中継エンジン８１４と対話し、要求される中継セッションを作成する。実施形態において、セッション管理コンポーネント８１０は、クライアント８０２とリモートサーバ８０８などの宛先との間の接続に対するＳＩＰセッションを、セッション識別子を生成することなどにより開始およびセットアップするため、例えば、会議に含まれるエンティティ間の接続を確立するため、および、同一の中継セッションに属する要求をグループ化するための、機能性を提供する。実施形態に従うと、セッション識別子は、例えば、ウェブサービス呼び出し戻り値を介して８２２クライアントに戻される。セッションが一度確立されると、中継エンジンコンポーネント８１４は、クライアント８０２とリモートサーバ８０８との間のデータ交換を行う。中継エンジン８１４はまた、実施形態において、要求および応答のメッセージの信頼性のある順序化された配信を確実にするためにシーケンス番号および確認応答番号の割り当てを行う。
【００４３】
一実施形態において、選択的な（点線８２０で図示するように）プラットフォームサービスコンポーネント８２０が、所望の中継セッションを構成するための許可にアクセスするため、最初にコンタクトされる８２４。実施形態に従うと、プラットフォームサービスコンポーネント８２０は、例えば、クライアント８０２の認証の実行、また、暗号化呼び出し操作およびＤＮＳ解決操作の処理を行う。さらなる実施形態において、認証ブローカ８２１は、ＳＩＰ認証の実行においてクライアントを支援するプラグ可能プラットフォームサービスのセットとして使用される。認証ブローカは、そのような実施形態において、チャレンジデータなどの情報またはデータを有し、ブラウザベースクライアント８０２とリモートサーバ８０８との間の「仲介者」として動作する中継サーバ８０４との中継セッションの作成の前に、認証のために、ブラウザベースクライアント８０２にそれを渡す。さらなる一実施形態において、認証コンポーネントは、中継セッションを作成するクライアント要求をリモートサーバ８０８に提示することにより、および／または、チャレンジ応答メッセージ８２２の構築のためにクライアント８０２に送る８２２ための、チャレンジデータなどの認証情報またはデータ、および実施形態において一意的な識別子を取得することにより、リモートサーバ８０８にコンタクトし８２６、クライアント８０２の会議参加を検証する。認証コンポーネント８２０とリモートサーバ８０８との間のコンタクト８２６の選択的な性質が、点線８２６で示されている。リモートサーバ８０８がコンタクトされる場合、実施形態に従い、リモートサーバ８０８は中継サーバ８０４が提供する秘密を検証することができ、そのような検証が成功した場合、チャレンジデータ（実施形態に従う一意的な識別子を含む）が認証コンポーネント８２０（コンタクト８２６の双方向性により示されるように）に提供される。さらに他の実施形態においては、リモートサーバ８０８に秘密が提供されず、中継サーバ８０４からの要求について任意の検証を行わずに、リモートサーバ８０８がチャレンジ／識別子のデータを提供する。
【００４４】
認証が実行されて成功する（または、上記で検討したように、最初は認証が要求されない）実施形態において、セッション管理コンポーネント８１０は、例えば、メソッド呼び出しを介して中継エンジンコンポーネント８１４と対話し、中継セッションを構成する。中継セッションの作成に成功すると、セッション管理コンポーネント８１０はセッションＩＤをクライアント８０２に割り当てる。一実施形態において、クライアント３０２に割り当てられたセッションＩＤを使用して、同一のセッションに属する要求がグループ化される。そのようなセッションＩＤは中継サーバ８０４からブラウザベースクライアント８０２に送られ８２２、クライアント８０２はそのセッションＩＤをＨＴＴＰヘッダとして使用して中継エンジン８１４と通信を行う８２８。ブラウザベースクライアント８０２からデータを受け取ると、中継エンジン８１４はＳＳＬストリームトランスポートモジュール８１８と対話して８３０、例えばＴＬＳ／ＳＳＬを使用して８３２、リモートサーバ８０８とのデータの中継をする８３２。このように、中継エンジン８１４は、受け取ったまたは転送されたデータをＨＴＴＰ要求でラップして、そのデータをトランスポート用ＴＬＳ／ＳＳＬプロトコルでリモートサーバ８０８に送る。従って、中継サーバ８０４は、ＳＩＰで通信するための「トンネル」として動作する。例示のソフトウェア機能モジュール８００は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示されている。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび／またはサブモジュール、追加のモジュールおよび／またはサブモジュール、モジュールおよび／またはサブモジュールの組み合わせ、図示されるモジュールおよび／またはサブモジュールを拡張したものなどを含んでも良い。
【００４５】
続いて図８Ｂを参照すると、図８Ａに図示されるような、かつ、本明細書に開示される実施形態に従う、ＳＳＬストリームトランスポートモジュールおよびプラグ可能認証モジュールを使用してＳＩＰデータをトンネリングするための例示の操作ステップ８３４が示される。プロセス８３４が開始操作８３６で開始され、処理を進めて、例えば、ウェブサービス呼び出しを介するなどして中継サーバのセッション管理コンポーネントにてコンタクトを受け取り、中継セッションを作成する８３８。次に、セッション管理コンポーネントは中継エンジンと対話して、要求される中継セッションを構成する８４４。しかし、プロセス８３４は最初に選択的にクエリ８４０に進んで、クライアントが、セッションを作成することが許可されるかどうか、例えば、認証されるかおよび／または認可されるか、をプラットフォームサービスコンポーネントから判定しても良い。この判定を行う８４０際に、中継サーバは、プラットフォームサービスコンポーネント８２０および／または認証ブローカ８２１を介するなどして、選択的にリモートサーバ８０８にコンタクトし８４２、クライアント８０２とリモートサーバ８０８との間のハンドシェイク（ステップ８４０と８４２との間の矢印の選択的な双方向の性質により示されるように）を完全にするためにチャレンジデータおよび／または認証データを取得しても良い。他の実施形態において、認証ブローカ８２１は、ハンドシェイクを完全にするためのチャレンジデータおよび／または認証データを提供する。クライアント８０２が、中継セッションを作成することを認証されないおよび／または認可されない場合、プロセス８３４はＮＯから終了操作８５６に進み、プロセス８３４が終了する。認証および／または認可が求められ成功した場合、プロセス８３４はＹＥＳから中継セッション構成の操作８４４に進み、中継セッションが構成される８４４。セッション管理コンポーネントにてセッションＩＤが生成され８４６、クライアントに対して割り当てられ８４８、クライアントに送られる８５０。そして、中継エンジンは、ＳＩＰトンネリングのためのトランスポートモジュール、例えば、ＳＳＬストリームモジュールと対話して、リモートサーバに対してデータを中継する８５２。次に、ＳＳＬストリームトランスポートモジュールが、リモートサーバと通信してデータを交換し８５４、プロセス８３４が終了操作８５６にて終了する。図８Ｂは、本明細書に開示される実施形態に従う、クライアントとリモートサーバとの間の中継サーバを使用してＨＴＴＰを介してＳＩＰをトンネリングするための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせることおよび／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００４６】
次に、図９では、選択的なプラットフォームサービスがどのようにシステム全体にプラグインされて、例えばＳＩＰなどの特定のプロトコルのデータのトンネリングを支援するかを示す、例示の操作ステップ９００が示される。例えば、図９は、本明細書に開示される実施形態に従う、例えばリモートサーバなどの宛先との認証のハンドシェイクを完全にする際における、例えばＨＴＴＰエンドポイントなどのクライアントを支援するためのプラグ可能な認証モジュールの使用を示す。従ってプロセス９００は、ブラウザベースクライアントによる、中継サーバへの認証の委託を示す。プロセス９００は開始操作９０２にて開始され、処理を進めてブラウザベースのウェブアプリケーションからチャレンジデータを受け取る９０４。そして、中継サーバが、ブラウザベースクライアントから受け取ったチャレンジデータを使用して認証を実行し９０６、チャレンジ応答を生成して、そのチャレンジ応答をクライアントに送る９０８。一実施形態において、中継サーバは、認証を実行する９０６リモートサーバにコンタクトし、別の実施形態においては、ブラウザベースクライアントに対するチャレンジ応答を生成するために、中継サーバが認証を実行する。チャレンジ応答を受け取ると、ブラウザベースのアプリケーションは戻されたチャレンジ応答を、中継サーバおよびリモートサーバとのセッションを開始するための新しいＳＩＰメッセージなどの新しい要求メッセージに組み立てる。そして、中継サーバが新しい要求を組み立てたチャレンジ応答と共に受け取り９１０、新しい要求を、例えば、セッションを開始するためにリモートサーバ９１２に送る。クライアントが有効な参加者であると判定されると（図示せず）、リモートサーバが中継サーバに承認を送り、中継サーバが受け取る９１４。次に、中継サーバは、ブラウザベースのウェブアプリケーションにセッションの承認と開始を通知する９１６。そして中継サーバにてブラウザベースのウェブアプリケーションから交換用のデータを受け取り９１８、プロセス９００は終了操作９２０にて終了する。図９は、本明細書に開示される実施形態に従う、認証を中継サーバに委託することによりブラウザベースのウェブアプリケーションと宛先との間のハンドシェイクを認証するための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせること、および／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００４７】
次に、図１０では、本開示の一実施形態に従い、媒体スタックなどのトランスポートスタックをシステム全体にプラグインして、ＲＴＰ／ＳＲＴＰを介したＲＤＰデータのトンネリングを支援するための、例示のソフトウェア機能モジュール１０００が示される。ブラウザベースクライアント１００２は、例えばウェブサービス呼び出しを介して１０１８、中継サーバ１００４の構成コンポーネント１００８にコンタクトし、ＳＲＴＰチャネルを構成する。実施形態において、構成コンポーネント１００８は、ウェブサービス１０１０を備え、チャネルを構成するために、例えばメソッド呼び出しを介して１０２６中継エンジン１０１２と対話する。次に、構成コンポーネント１００８は、中継サーバ１００４に搭載された媒体スタック１０１６を構成する１０２０。
【００４８】
媒体スタック１０１６は、他のモジュールの中でも、中継サーバ１００４がブラウザベースクライアント１００２の機能性を拡張させることを可能にする。実施形態に従うと、媒体スタックは、中継サーバに搭載されて特定プロトコルのトンネリングを可能にする。例えば、ＲＤＰの中継のシナリオにおいて、ＲＤＰデータをＲＴＰ／ＳＲＴＰを介して移送するために、実施形態においてＲＴＰ／ＳＲＴＰおよびＩＣＥ（Interactive Connectivity Establishment）の知見も使用される。ＩＣＥを使用して、例えば、ＲＴＰ／ＳＲＴＰトラフィックがファイアウォールを横断することが可能となる。従って、中継サーバがＲＴＰ／ＳＲＴＰ／ＩＣＥをサポートする媒体スタックを搭載するのは、ＲＤＰデータが典型的にはＲＴＰ／ＳＲＴＰを介して画面共有サーバに移送されるからである。ＲＤＰ中継を含み、画面共有サーバとの接続をセットアップする一実施形態においては、ウェブベースクライアントはＳＩＰで画面共有サーバと通信し、中継サーバと画面共有サーバとの間のＲＴＰ／ＳＲＴＰ／ＩＣＥ接続をセットアップする。ＲＴＰ／ＳＲＴＰ／ＩＣＥのための媒体スタックを中継サーバに搭載することにより、このプロセスが促進される。そして、ＳＩＰメッセージ本文の一部、すなわち、セッション記述プロトコル（ＳＤＰ：Session Description Protocol）の一部が中継サーバからウェブサービス呼び出しを介して読みだされるため、クライアントがＳＩＰで画面共有サーバと通信可能になる。同様に、画面共有サーバからのＳＩＰ要求のＳＤＰは、ウェブサービス呼び出しを介して中継サーバに渡される。従って、中継サーバが媒体スタックを搭載することにより、ＲＤＰデータのトランスポートなどが制限された環境において、そのようなトランスポートを行うことが可能にされる。例えば、ＲＴＰ／ＳＲＴＰおよびＩＣＥの媒体スタックは、典型的にはＭａｃプラットフォームでは利用できない。Ｍａｃプラットフォームでは、例えば、開発者は、媒体スタックをネイティブマックに移植するか、ウェブベースクライアントで媒体スタックを開発する。しかし、そのような手法は複雑であり、そのような移植および／または開発には依然として機能性の制約が存在する。
【００４９】
図１０に戻ると、上記で検討したように、ＲＴＰ／ＳＲＴＰを介してＲＤＰデータを移送するために、実施形態においてＲＴＰ／ＳＲＴＰおよびＩＣＥの知見が使用される。一実施形態において、そのような構成には、接続が可能であるかどうかを判定する接続チェックのためにリモートのＳＩＰ／ＲＴＰエンドポイント１００６に対して通信することが含まれる。別の実施形態において、接続チェックは行われない。ＳＲＴＰチャネルおよび媒体スタックが構成されると、クライアント１００２は、中継セッションを構成するためのプレーンＨＴＴＰウェブハンドラ１０１４を備える中継エンジン１０１２に対して、ＨＴＴＰを介して１０２２ＲＤＰデータを送受信する。そして、中継エンジン１０１２は、媒体スタック１０１６と通信して１０２４、媒体スタック１０１６とリモートＲＴＰエンドポイント１００６との間でＲＴＰ関連のメッセージを交換することにより１０２８、ＲＤＰデータを取得する。ソフトウェア機能モジュール１０００は、記載される実施形態の可能性のあるソフトウェア機能モジュールの一例として提示される。他の実施形態では、図示されるモジュール、図示されるものよりも少ないモジュールおよび／またはサブモジュール、追加のモジュールおよび／またはサブモジュール、モジュールおよび／またはサブモジュールの組み合わせ、図示されるモジュールおよび／またはサブモジュールを拡張したものなどを含んでも良い。
【００５０】
図１０は、媒体スタックなどのトランスポートスタックをシステム全体にプラグインして、ＲＴＰ／ＳＲＴＰを介してＲＤＰデータをトンネリングするための例示のソフトウェア機能モジュールを示すが、図１１では、本開示の一実施形態に従い、プラグ可能なトランスポートスタックを使用して、ＲＴＰ／ＳＲＴＰを介してＲＤＰデータをトンネリングするための例示の操作ステップ１１００が示される。プロセス１１００は開始操作１１０２にて開始され、操作１１０４に進み、中継サーバが、例えば、ウェブサービス呼び出しなどを介して、クライアントとリモートＲＴＰエンドポイントとの間でコンタクトされ、ＲＤＰデータをトンネリングするためのＳＲＴＰチャネルが構成される。次に、構成コンポーネントが、プラグ可能な媒体スタックを構成し１１０６、その際、選択的に（点線で示されるように）接続チェック１１０７のためにリモートＲＴＰエンドポイントと通信する。ＲＴＰエンドポイントは、１１０６と１１０７との間の矢印の双方向の性質により示されるように、情報を用いて応答する。クライアントはその後、ＨＴＴＰを介してＲＤＰデータを中継エンジン１１０８へ/から送受信する。すると中継エンジンが媒体スタックと通信してＲＤＰデータを取得する１１１０。ＲＤＰデータを取得するためには、媒体スタックはリモートＲＴＰエンドポイントとＲＴＰメッセージを交換する１１１２。プロセス１１００は終了操作１１１４にて終了する。図１１は、本明細書に開示される実施形態に従って、プラグ可能なトランスポートスタックを使用してＲＴＰ／ＳＲＴＰを介してＲＤＰデータをトンネリングするための可能性のある操作的特徴の一例である。図示される操作のステップは、他のステップと組み合わせ、および／または再配置することができる。さらに、例えば、より少ないステップまたは追加のステップが使用されても良い。
【００５１】
最後に、図１２では、本明細書に開示される実施形態を実装することができる一例のコンピュータシステム１２００が示される。クライアントコンピュータ２０２、中継サーバ２０６、またはリモートサーバ２０８などの、図２に示すようなメッセージデータを交換するための少なくとも１つのプロセッサ１２０２を有するコンピュータシステム１２００が、本明細書に開示される実施形態に従って図示される。システム１２００は、例えば、システムメモリ、揮発性メモリおよび不揮発性メモリを備えるメモリ１２０４を有する。その最も基本的な構成で、コンピュータシステム１２００が図１２において点線１２０６で示される。加えて、システム１２００は、磁気または光のディスクまたはテープを含むがこれに限定されない追加の記憶装置（取り外し可能および／または取り外し不可能）を含んでも良い。そのような追加の記憶装置は、図１２において取り外し可能記憶装置１２０８および取り外し不可能記憶装置１２１０により例示される。
【００５２】
本明細書において使用されるとき、用語「コンピュータ読取可能媒体」は、コンピュータ記憶媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される、揮発性および不揮発性、取り外し可能および取り外し不可能の媒体が含まれて良い。システムメモリ１２０４、取り外し可能記憶装置１２０８、および取り外し不可能記憶装置１２１０は全てコンピュータ記憶媒体の例（すなわち、メモリ記憶装置）である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（electrically erasable read-only memory）、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disk）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク装置や他の磁気記憶装置、または、情報を記憶するために使用可能かつコンピュータ装置１２００によりアクセス可能な任意の他の媒体、が含まれても良いがこれらに限定されない。任意のそのようなコンピュータ記憶媒体は装置１２００の一部であって良い。図１２に例示されるものは、本開示の範囲に全く限定されないよう意図されている。
【００５３】
本明細書で使用されるとき、用語「コンピュータ読取可能媒体」は、通信媒体を含むこともできる。通信媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、または搬送波もしくは他のトランスポート機構などの変調データ信号内の他のデータにより具現化されて良く、任意の情報配信媒体を含む。用語「変調データ信号」には、信号内の情報を符号化する様式で１つまたは複数の特徴が設定または変更された信号を記述して良い。制限ではなく例として、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、無線周波数（ＲＦ）、赤外線および他の無線媒体などの無線媒体を含んで良い。
【００５４】
システム１２００は、装置を他の装置と通信させる通信接続１２１６を含んでも良い。加えて、本開示の一実施形態に従って、例えば、クライアントコンピュータ２０２の対応するＵＩモジュール（図示せず）により提供されるような、例えば、クライアントコンピュータ２０２上のユーザインターフェース（ＵＩ）のフィールドにコンテンツを入力するために、システム１２００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１２１４を有しても良い。ディスプレイ、スピーカ、プリンタなどの出力装置１２１２を含んでも良い。これらの装置の全ては当該技術において周知であり、ここで詳細を検討する必要はない。上述の装置は例であり、他の装置を使用することもできる。
【００５５】
上記では、本開示の実施形態について図面を参照して説明したが、当業者に対して示唆され、本開示の範囲および精神に包含され、そして添付の請求項に定義されるような多数の修正を、実施形態に対して行って良いことは理解されるべきである。実際、実施形態は開示を目的として記載されているが、本開示の範囲内にある種々の変更および修正を行うことができる。
【００５６】
同様に、本開示では、構造的特徴、 方法論的動作、およびそのような動作を含むコンピュータ読取可能媒体に特有の言語を使用したが、添付の請求項に定義する主題は、必ずしも本明細書に記載する特有の構造、動作、特徴または媒体に限定されないことは理解されたい。むしろ、上述の特有の構造、特徴、動作および/または媒体は、請求項を実装する例示の形態として開示されている。実施形態の態様では、複数のクライアントコンピュータ、複数のリモートサーバ、複数の中継サーバ、および複数のネットワークなどが考慮される。または、他の実施形態においては、単一のクライアントコンピュータと単一のリモートサーバ、単一の中継サーバ、および単一のネットワークが使用される。当業者は、本開示の範囲および精神に含まれる他の実施形態または実装を認識するであろう。従って、特有の構造、動作または媒体が、本開示を実装する例示の実施形態として開示される。本開示は添付の請求項により定義される。
【図１】
2013524727.tif 000003
【図２】
2013524727.tif 000004
【図３】
2013524727.tif 000005
【図４】
2013524727.tif 000006
【図５】
2013524727.tif 000007
【図６】
2013524727.tif 000008
【図７】
2013524727.tif 000009
【図８Ａ】
2013524727.tif 000010
【図８Ｂ】
2013524727.tif 000011
【図９】
2013524727.tif 000012
【図１０】
2013524727.tif 000013
【図１１】
2013524727.tif 000014
【図１２】
2013524727.tif 000015
【国際調査報告】
2013524727.tif 000016
2013524727.tif 000017