(57)【特許請求の範囲】
【請求項１】
ネットワークを介して各々通信するメディアプレーヤーとプレイスシフト装置との間のメディアストリーミング接続を確立する方法であって、前記プレイスシフト装置は、前記メディアプレーヤーにコンテンツを送信するサーバであり、前記方法は、
前記メディアプレーヤーによって送信された第一リクエストを、中継サーバによって受信することであって、前記中継サーバによる前記第一リクエストの受信は、前記メディアプレーヤーと前記プレイスシフト装置との間のユーザ・データグラム・プロトコル（ＵＤＰ）接続の失敗に応答して行われる、ことと、
前記中継サーバが、前記第一リクエストと、前記プレイスシフト装置によって送信された第二リクエストとを受信したことに応答して、前記中継サーバと前記メディアプレーヤーとの間の第一接続と、前記中継サーバと前記プレイスシフト装置との間の第二接続とを、前記中継サーバによって確立することであって、前記中継サーバとは独立しているメッセージサーバが、コネクション型プロトコルを用い、前記ネットワークを介した前記プレイスシフト装置との接続を既存の接続として予め確立し且つ維持するように構成され、前記既存の接続は、前記中継サーバが前記第一リクエストを受信する前に確立され、前記プレイスシフト装置に前記中継サーバへ前記第二リクエストを送信することを命令するメッセージが、前記既存の接続を介して、前記メッセージサーバから前記プレイスシフト装置に送信される、ことと、
前記中継サーバによって前記第一接続で受信されたデータを前記第二接続へ中継し、かつ、前記中継サーバによって前記第二接続で受信されたデータを前記第一接続へ中継することで、前記中継サーバを介した前記メディアプレーヤーと前記プレイスシフト装置との間の前記メディアストリーミング接続を確立することと、
を含むことを特徴とする方法。
【請求項２】
前記第一及び第二接続が、通信制御プロトコル（ＴＣＰ）接続である、請求項１に記載の方法。
【請求項３】
前記メディアストリーミング接続が確立されることにより前記メディアプレーヤーと前記プレイスシフト装置との間のデータの中継が開始され、かつ、該データの中継の開始から所定時間が経過した後、前記メディアストリーミング接続を切断することをさらに含む、請求項１に記載の方法。
【請求項４】
前記メディアストリーミング接続が確立されることにより前記メディアプレーヤーと前記プレイスシフト装置との間のデータの中継が開始され、かつ、該中継されたデータの量が所定量に達した後、前記メディアストリーミング接続を切断することをさらに含む、請求項１に記載の方法。
【請求項５】
前記プレイスシフト装置、前記メディアプレーヤー、及び前記プレイスシフト装置のユーザのうち少なくとも１つに関連する識別情報に基づいて、前記第一及び第二接続を確立する前に前記メディアストリーミング接続を承認することをさらに含む、請求項１に記載の方法。
【請求項６】
ネットワークを介して各々通信するクライアント装置とサーバとの間の接続を、中継サーバを介して確立する方法であって、
前記クライアント装置と前記サーバ間でネットワークを介してコネクションレス型セッションを確立するように試行することと、
前記コネクションレス型セッションの確立が失敗したとき、前記サーバに、前記ネットワークを介して前記中継サーバに接続するよう、前記中継サーバとは独立しているメッセージサーバによって命令することであって、前記サーバは、前記中継サーバへ第二リクエストを送信することを命令するメッセージを、前記メッセージサーバから前記ネットワーク上の既存の接続を介して受信することで命令される、ことと、
前記中継サーバが、前記クライアント装置によって送信された第一リクエストと前記第二リクエストとを受信したことに応答して、前記中継サーバと前記クライアント装置との間の第一接続と、前記中継サーバと前記サーバとの間の第二接続とを確立することであって、前記メッセージサーバが、コネクション型プロトコルを用い、前記ネットワークを介した前記サーバとの接続を、前記既存の接続として予め確立し且つ維持するように構成され、前記既存の接続は、前記中継サーバが前記第一リクエストを受信する前に確立され、前記中継サーバへ前記第二リクエストを送信することを命令する前記メッセージが、前記既存の接続を介して、前記メッセージサーバから前記サーバに送信される、ことと、
前記中継サーバによって前記第一接続で受信されたデータを前記第二接続へ中継し、かつ、前記中継サーバによって前記第二接続で受信されたデータを前記第一接続へ中継することで、前記中継サーバを介した前記クライアント装置と前記サーバとの間の前記接続を確立することと、
を含むことを特徴とする方法。
【請求項７】
前記コネクションレス型セッションが、ユーザ・データグラム・プロトコル（ＵＤＰ）セッションであり、前記第一及び第二接続が通信制御プロトコル（ＴＣＰ）接続である、請求項６に記載の方法。
【請求項８】
ネットワークを介して各々通信するメディアプレーヤーとプレイスシフト装置との間のメディアストリーミング接続を確立するためのシステムであって、前記プレイスシフト装置は、前記メディアプレーヤーにコンテンツを送信するサーバであり、前記システムは、
コネクション型プロトコルを使用してネットワークによって前記プレイスシフト装置との接続を既存の接続として予め確立し且つ維持し、前記既存の接続によって、前記プレイスシフト装置に中継サーバへ第二リクエストを送信させるための命令メッセージを、前記プレイスシフト装置へ送信するメッセージサーバと、
前記メディアプレーヤーによって送信された第一リクエストと前記第二リクエストとを受信し、前記各リクエストへの応答として、前記メディアプレーヤーとの第一接続、及び前記プレイスシフト装置との第二接続を確立し、前記第一接続で受信されたデータを前記第二接続へ中継し、かつ、前記第二接続で受信されたデータを前記第一接続へ中継し、これにより前記メディアプレーヤーと前記プレイスシフト装置との間の前記メディアストリーミング接続を確立させる中継サーバと、
を含み、
前記既存の接続は、前記中継サーバが前記第一リクエストを受信する前に確立され、
前記プレイスシフト装置に前記第二リクエストを送信させるための命令メッセージが、前記既存の接続を介して、前記メッセージサーバから前記プレイスシフト装置に送信され、
前記中継サーバによる前記第一リクエストの受信は、前記メディアプレーヤーと前記プレイスシフト装置との間のユーザ・データグラム・プロトコル（ＵＤＰ）接続の失敗に応答して行われる、ことを特徴とするシステム。
【請求項９】
前記第一及び第二接続が通信制御プロトコル（ＴＣＰ）接続である、請求項８に記載のシステム。
【請求項１０】
情報を保存するように構成されたデータベースをさらに含み、前記中継サーバが、前記データベースに保存された前記情報に基づいて前記メディアストリーミング接続を許可し、または許可しない、請求項８に記載のシステム。
【請求項１１】
前記データベースに保存された前記情報が、前記メディアストリーミング接続が確立されている経過時間を含み、前記中継サーバが、前記経過時間が所定の数値を超過すると前記メディアストリーミング接続を許可しないよう、さらに構成されている、請求項１０に記載のシステム。
【請求項１２】
前記データベースに保存された前記情報が、前記プレイスシフト装置が前記システムを使用している総計時間を含み、前記中継サーバが、前記総計時間が所定の数値を超過すると前記メディアストリーミング接続を許可しないよう、さらに構成されている、請求項１０に記載のシステム。
【請求項１３】
前記データベースに保存された情報が、前記メディアストリーミング接続が確立されている経過時間を含み、前記中継サーバが、前記経過時間が所定の数値を超過すると前記メディアストリーミング接続を許可しないよう、さらに構成されている、請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、２００９年４月１７日に出願された米国非予備特許出願番号第１２／４２６，１０３号から優先権の利益を主張する。
【０００２】
本明細書の開示内容は、一般的に、ネットワーク上で通信する装置間の接続を確立するシステムならびに方法に関する。かかるシステム及び技術は、例えば、１つまたは複数のファイアウォールによって互いにロジカルに分離された装置間の接続を確立するうえで有用たり得る。様々な実施形態において、均等の概念がその他の用途や設定の数々においてただちに適用されるものの、以下に説明される技術及びシステムは、ネットワーク上でメディアコンテントを供給するメディアプレーヤーと場所移動装置との間のストリーミング接続を確立するために使用され得る。  
【背景技術】
【０００３】
インターネット及びその他のデジタル通信ネットワークは、個人的及び専門的生活の全ての側面で重要な効果を有し続けている。ネットワーク通信は、費用低減、携帯型コンピュータ装置の能力の高まり、携帯電話通信及びその他の無線通信技術の普及の増大と能力の高まり、及びその他の要因によってますます普及が進んでいる。その結果、消費者間で、コンテンツが物理的または地理的に近いところにあるか否かに関わりなく、データ、娯楽、及びその他のメディアへのアクセスの期待が高まっている。  
【０００４】
１つの例として、消費者は、視聴者の本来のテレビ受像機以外の場所で、テレビやその他のメディアコンテンツを遠隔視聴し得る「場所移動（プレイスシフト）」装置への関心を大いに示している。かかる「場所移動（プレイスシフト）」装置は、一般的には、ローカルエリアネットワークまたは広域ネットワークによって携帯用コンピュータ、携帯電話、携帯端末、遠隔テレビまたはその他のパケット化されたメディアストリームを視聴者用に再生可能な遠隔装置へと伝達され得るメディアコンテンツをパケット化する。したがって、場所移動によって、消費者は今いる場所とは別の部屋、ホテル、オフィス、及び／またはその他携帯用メディアプレーヤー装置が無線またはその他の通信ネットワークへアクセスし得る任意の場所など離れた場所からメディアコンテンツを視聴できる。その他のメディア及びその他のデータ集約的な用途も同様に幅広い層のクライアントの関心を集めている。
【０００５】
現代のコンピュータ及びネットワーク技術がその移動性を増大させ、所望のコンテントへのアクセスを改良している一方で、アクセスと安全性とのトレードオフがしばしば存在する。ファイアウォール及びその他の構造が効果的にネットワークの安全性を維持し得るにもかかわらず、これらの構造自体が所望のサービスへのアクセスを妨害するという望ましくない効果を有し得る。場所移動を１つの例として使用すると、通信を希望する２者間に存在するファイアウォールまたはその他の安全性のための構造が存在する場合、場所移動装置とメディアプレーヤーとの間で接続を確立することは至難の業となり得る。安全なネットワークに対する望ましくないアクセスを妨害することに加えて、ファイアウォールは、特にこれがユーザによって間違って、または不完全に設定された場合に、場所移動サービスまたはその他のサービスへの正当かつ所望のアクセスを妨害し得る。
【０００６】
場所移動、メディアストリーミング、及び／またはその他の用途のためのクライアントとサーバ間の接続を効果的に確立するうえで、困難な課題は頻繁に起こり得る。したがって、ネットワーク上でクライアントとサーバ間で信頼性かつ利便性を有するシステムならびに方法を創り出すことが望ましい。これらの、及びその他の所望の特性及び特徴は、後続の発明の詳細な説明及び、添付の請求項、そして添付の図面と、この背景技術の項目も併せて読めば明らかになるだろう。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
様々な実施形態において、システムならびに方法はネットワークを介して各々通信するクライアント装置とサーバ装置の間の接続を確立する目的で説明される。以下で説明する特定の方法及び技術は、いくつかの例において、ファイアウォールまたは直接的なネットワーク通信を妨げるその他の障害物が存在するときに、メディアプレーヤーと場所移動装置との間のメディアストリーミング接続を確立するために使用され得る。その他の実施形態も、メディアストリーミングなどに関する任意の設定を含むその他の設定において均等の範囲で使用され得る。
【０００８】
様々な実施形態において、各々がネットワークを介して通信するメディアプレーヤーと場所移動装置の間のメディアストリーミング接続を確立するための方法が提供される。中継サーバが、メディアプレーヤーと関連する第一リクエスト及び場所移動装置と関連する第二リクエストを受信する。かかる第一、第二リクエストを受信すると、その対応として第一接続が中継サーバとメディアプレーヤーとの間で、また第二接続が中継サーバと場所移動装置との間で、確立される。各第一及び第二接続上で中継サーバによって受信されたデータは、前記とは別の第一接続及び第二接続へと中継され、これによって、中継サーバを介してクライアントとサーバとの間のメディアストリーミング接続が確立される。
【０００９】
その他の実施形態において、方法は、ネットワークを介してその各々が通信するクライアント装置とサーバ装置との間の中継サーバを介した接続を確立するために提供される。まず、コネクションレスのセッションがネットワーク上のクライアント装置とサーバ装置との間で試行される。かかるコネクションレスのセッションが成功しなかった場合、クライアントとサーバはネットワークを介して中継サーバに接触するよう命令を受けるが、前記サーバは、ネットワーク上の既存の接続を介して伝達されるメッセージによって命令を受ける。引き続いて中継サーバに接触したクライアントとサーバへの対応とし、第一接続が中継サーバとクライアントとの間に確立され、第二接続が中継サーバとサーバの間に確立される。第一及び第二接続の一方上で中継サーバによって受信されたデータは、第一接続及び第二接続の他方へと中継され、これによって、中継サーバを介してクライアントとサーバ間の接続が確立される。
【００１０】
さらにその他の実施形態において、システムが、ネットワークを介してその各々が通信するメディアプレーヤーと場所移動装置との間のメディアストリーミング接続を確立するために提供される。中継マネージャモジュールが、メディアプレーヤーと場所移動装置との間のメディアストリーム接続を確立することのリクエストを受信するよう構成される。中継インスタンスモジュールが、前記リクエストへの対応として、メディアプレーヤーとの第一接続、及び場所移動装置との第二接続を確立するよう、また、第一及び第二接続の一方上で受信されたデータを、第一接続及び第二接続の他方へと中継し、これによって、メディアプレーヤーと場所移動装置との間のメディアストリーミング接続が確立されるよう、構成される。
【００１１】
様々な実施形態、実施態様、及びその他の特徴（機構）が以下でさらに詳細に説明される。
【図面の簡単な説明】
【００１２】
例示としての実施形態は、下記の図面と併せて以後説明される。ここで、類似の参照番号は類似の構成要素を指す。
【００１３】
【図１】図１は、クライアントノードとサーバノードとの間の中継接続を確立し、支援するためのシステム例のブロック図である。
【図２】図２は、信頼性を伴ってクライアントとサーバとの間の接続を確立するためのプロセスの例を示す、メッセージの流れ図である。
【図３】図３は、クライアントノードとサーバノードとの間の中継接続を確立するためのプロセスの例を示す流れ図である
【発明を実施するための形態】
【００１４】
以下の本発明の詳細な説明は、単なる例示としての性質を有するものであり、本発明または本発明の応用（用途）及び使用を限定することを意図していない。さらに、先行する背景技術や以下に述べる、発明の詳細な説明において提供されるいかなる理論によっても限定されることは意図していない。
【００１５】
様々な実施形態において、中継サーバは、直接的な接続ができない場合に、２つの装置間の通信を効果的につなぐために、クライアントとサーバに対して個別の接続を確立し得る。中継サーバは、例えば、メディアプレーヤーと場所移動装置に対して個別の接続を確立し得て、その後、必要に応じて２つの接続間のデータを中継し得る。さらに、中継サーバと、クライアント及びサーバのいずれか１つまたは両方との間で確立された２つの接続が任意のプロトコルまたは技術によって実施され得たとしても、いくつかの実施態様においては、かかる接続は、ファイアウォールの背後で生じ得る信頼性を有する接続である〔例えば、通信制御プロトコル（ＴＣＰ接続）〕。２つの別個の接続間の情報をクライアント及びサーバに中継し得る中継サーバを提供することにより、ユーザは、クライアント・サーバ接続を容易に確立するための極めて信頼性の高いメカニズムを供給されることになる。そのうえ、かかる接続を構成するのに必要な情報の多くは多くの実施態様においてただちに自動化できるものであり、これによって、かかる接続を構成する関連で生じる複雑性（それゆえに不満）を減らしつつ、同時にクライアントとサーバの接続が成功する可能性を劇的に高める。
【００１６】
以下の議論では、例示の利便性より、しばしば場所移動装置とその技術を指すことになるが、これらと均等の実施形態も任意の数のその他の設定において、本明細書で説明されたものと同じ構成及び方法に適用し得る。実際、本明細書で説明される技術は、任意の種類のネットワーク上の任意の種類のクライアント及び／またはサーバ間の通信を確立するためにただちに使用され得る。かかる応用の例としては、任意の種類のメディアストリーミングへの応用、任意の種類のメディア共有または保存への応用、若しくは、クライアントが、ファイアウォールまたはその他の安全性のためのメカニズムを介してクライアントからロジカルに分離されたサーバとの通信を確立しようとするような、その他の任意の応用を含み得る。
【００１７】
図面に説明を戻し、最初に図１を参照して、ネットワーク１１０上のクライアント１０２とサーバ１０４との間の接続を確立するための例示的なネットワークシステム１００が、クライアント１０２とサーバ１０４に対して別個に確立された２つの接続間でデータを中継する中継システム１１６を適切に含む。したがって、システム１００は、以下でより詳細に説明するように、システム１００がなければファイアウォール１０６によってクライアント１０２とサーバ１０４の間の直接的な通信が妨げられるものであっても、かかるシステム１００があることにより、クライアント１０２とサーバ１０４が中継システム１１６を用いて通信することを可能にする。
【００１８】
クライアント１０２は、任意の装置、コンポーネント、モジュール、ハードウェア、ソフトウェア、及び／またはその他の、ネットワーク１１０を介して１つまたは複数のサーバ１０４によって提供されるファイルベースの及び／またはその他のデータのストリーミングの受信が可能なネットワークノードである。クライアント１０２は、任意の種類のハードウェア、ソフトウェア、ファームウェア、及び／または任意の汎用または特殊用途のコンピューティング・プラットフォームを含むその他のものとともに実施され得る。様々な実施形態において、クライアント１０２は、パーソナル・コンピュータ（デスクトップのコンピュータも使用可能であるが、例えば、「ラップトップ」や同様に携帯可能なコンピュータ）、携帯電話、携帯端末、セットトップボックス（ＳＴＢ）、任意の種類のオーディオ／ビデオレシーバ、ビデオゲームプレーヤー、ナビゲーション装置、（フランス国イーニュのＡｒｃｈｏｓ社より入手可能なＡＲＣＨＯＳ製品などの）パーソナルメディアプレーヤーなどである。多くの実施形態において、クライアント１０２は、ソフトウェアまたはファームウェアにおけるメディアプレーヤーまたはその他の応用を含み、以下でより詳細に説明するようにサーバ１０４へ確実に接続し、適宜、コンテントを受信し、ユーザへ提供することが可能な汎用コンピューティング装置である。しかしながら、その他の実施形態において、クライアント１０２はネットワーク１１０の任意の場所を介してデータを受信し、受信したデータをデコードしてユーザに適切なアウトプット（例えば、テレビやその他のディスプレイ上のアウトプット）を提供することが可能な独立型の、またはその他の別個のハードウェア装置である。その他の製品も同等に使用され得るが、いくつかの実施形態において使用され得る独立型のメディアレシーバ製品の１つの例は、カリフォルニア州、フォスターシティのＳｌｉｎｇ  Ｍｅｄｉａ社から入手可能なＳＬＩＮＧＣＡＴＣＨＥＲ製品である。
【００１９】
サーバ１０４は、任意のコンポーネント、ハードウェア、ソフトウェアロジック及び／またはネットワーク１１０上のパケット化されたデータを伝達し得るその他のものである。いくつかの実施形態において、パケット化されたデータは、ＭＰＥＧ、Ｑｕｉｃｋｔｉｍｅ、Ｗｉｎｄｏｗｓ  Ｍｅｄｉａ、Ｒｅａｌ  Ｍｅｄｉａ、またはその他任意のフォーマットにおけるメディアコンテントのパケット化されたストリームであるが、その他の実施形態において任意のストリーミング、ファイルベース及び／またはその他のデータが同等に適用され得る。サーバ１０４は、従来の任意の種類のパーソナル・コンピュータ、ワークステーションまたはその他のサーバシステムを含む、任意の種類の汎用または特殊用途のハードウェア、ソフトウェア、及び／またはファームウェアとともに実施され得る。
【００２０】
場所移動への応用のために適切に使用されるサーバ１０４のいくつかの例は、カリフォルニア州、フォスターシティのＳｌｉｎｇ  Ｍｅｄｉａ社から入手可能な様々なＳＬＩＮＧＢＯＸ製品のうちの任意のものを使用して実施され得るが、その他の製品またはサーバ１０４が、その他の実施形態において使用され得る。多くの異なる種類の場所移動装置は、通常任意の種類のデジタル・ビデオ・レコーダ（ＤＶＲ）、セットトップボックス（ＳＴＢ）、ケーブルまたは衛星プログラムソース、ＤＶＤプレーヤー、及び／またはその他のものなどの外部ソースからメディアコンテントを受信することが可能である。その他の実施形態において、サーバ１０４は、任意のコンテント受信、またはその他の能力と統合され得る。サーバ１０４は、例えばトランスコード及び場所移動の特徴（機構）をも提供するハイブリッドＳＴＢまたは、その他のレシーバであってもよい。かかる装置は、アンテナ、モデム、サーバ、及び／またはその他のソースから受信されたテレビプログラムやその他のコンテントをエンコードする衛星、ケーブル、放送、及び／またはその他の信号を受信し得る。レシーバは、受信した信号をさらに復調し、またはそうでなくてもデコードして、ローカル視聴が可能な、及び／または適宜遠隔なクライアント１０２へと場所移動可能なプログラムを抽出することができる。かかる装置は、パーソナルまたはデジタル・ビデオ・レコーダ（ＤＶＲ）特徴（機構）若しくはその他のコンテントライブラリを適宜支援するために、ハードディスクドライブ、メモリ、またはその他の記憶媒体に保存されたコンテントデータベースも含み得る。したがって、いくつかの実施形態において、メディアソースは共通のコンポーネント、筐体、またはケース内に、サーバ１０４とともに物理的に、及び／または論理的に収納されていてもよい。従来の場所移動機能、特徴（機構）、システム、及び構造の例は、米国特許公開公報第２００６／００９５４７１号に記載されているが、本明細書で説明されている特徴（機構）は、前記特定の公開公報に記載された技術及び構造に加えて任意の数のその他の技術及び構造とともに均等に適用される。  
【００２１】
さらにその他の実施形態において、サーバ１０４は、従来のコンピューティングシステム（例えば、パーソナル・コンピュータ）において実行されるソフトウェアプログラム、アプレットなどである。かかる実施形態において、サーバ１０４は、例えば、遠隔の位置へと場所を移動させるためのコンピューティングシステムのユーザに一般的に提供されるスクリーンディスプレイの例えば一部または全部をエンコードし得る。かかる機能を提供し得る１つの装置は、従来のパーソナル・コンピュータ上で実行するカリフォルニア州、フォスターシティのＳｌｉｎｇ  Ｍｅｄｉａ社から入手可能なＳｌｉｎｇＰｒｏｊｅｃｔｏｒ製品であるが、その他の製品も同様に使用され得る。そして再び、システム１００において使用されるクライアント１０２及びザーバ１０４の種類は、場所移動装置に限定されない。すなわち、ネットワーク１１０上で通信可能なその他の任意のクライアント１０２及びサーバ１０４が均等に適用を受け得る。
【００２２】
その他の実施形態において、サーバ１０４は、単にストリーミング、ファイルベース及び／またはその他、データへのクエリーへの応答などを含む、任意の情報をネットワーク１１０上に提供する。上記の通り、この特徴（機構）は、場所移動への応用に限定されず、ネットワーク１１０上で動作する任意の従来のサーバ１０４装置への応用にも使用され得る。
【００２３】
ネットワーク１１０は、送信者（例えば、サーバ１０４）と受信者（例えば、クライアント１０２）間でメッセージを伝達可能な任意のデジタルまたはその他の通信ネットワークである。様々な実施形態において、ネットワーク１１０は、任意の数の公的、私的データ接続、若しくは、任意の数の通信プロトコルを支援するリンクまたはネットワークを含む。ネットワーク１１０は、例えば、インターネット若しくはＴＣＰ／ＩＰに基づくその他のネットワークまたはその他の従来のプロトコルを含む。様々な実施形態において、ネットワーク１１０は、携帯電話、携帯端末及び／またはその他と通信するためのセル方式の通信ネットワークなどの、無線及び／または有線の電話ネットワークも組み入れる。ネットワーク１１０は、１つまたは複数のＩＥＥＥ８０２．３及び／またはＩＥＥＥ８０２．１１ネットワークなどの、任意の種類の無線または有線ローカルエリアネットワークも組み入れることができる。
【００２４】
上記の通り、クライアント１０２とサーバ１０４との間の直接的な通信は、１つまたは複数のファイアウォール１０６の存在により、いつも可能な訳ではない。ファイアウォール１０６は、クライアント１０２とサーバ１０４の間の通信を制限するために使用される、任意の種類のハードウェア、ソフトウェア、及び／またはハードウェアとソフトウェアの組合わせを指す。ファイアウォール１０６は、サーバ及び／またはクライアントシステム、ルータコントロール〔例えば、アクセスコントロール（ＡＣＬｓ）〕、及び／またはその他のアーキテクチャとともに実装され得る場合もあるものの、場合によっては、専用のハードウェアを使用して実装され得る。しばしば、ファイアウォールは、家庭用ＬＡＮまたは事業所用ＬＡＮとケーブル、光ファイバー、デジタル加入者回線（ＤＳＬ）及び／またはその他のプロバイダ接続間の所望のインターフェースを提供するために使用されるルータなど、単にルータ内で実装される特徴（機構）である。
【００２５】
ファイアウォール１０６またはその他の特徴（機構）が、クライアント１０２とサーバ１０４との直接的な接続を妨げる場合、接続を確立するためのその他の技術が試みられ得る。例えば、仲介サーバ１１２が、ユーザ・データグラム・プロトコル（ＵＤＰ）などを使用した接続を支援するために使用され得る。したがって、仲介サーバ１１２は、クライアント１０２とサーバ１０４との間の間接的な接続を確立し、クライアントとサーバ間の同期する詳細事項に対処し、ならびに、システム１００のその他の部分と通信する、いわば「門番」的な機械としての機能を果たす。
【００２６】
多くの実施態様において、仲介サーバ１１２は、ＵＤＰまたはその他のコネクションレスのセッションを、クライアント１０２及びサーバ１０４の両方に確立し得る。クライアント１０２が、既に仲介サーバと通信中のサーバ１０４への接続をリクエストすると、提供されたセッションへ向かう前記２当事者は、しばしば、単にＵＤＰ（またはその他の）パラメータを交換し、通信を継続することができる。この技術は、しばしば「ＵＤＰホールパンチ」と呼ばれ、従来のネットワークアドレス変換（ＮＡＴ）技術に基づくことが多い。しかしながら、かかる技術は、特にクライアント１０２とサーバ１０４が、ＵＤＰセッション（例えば、仲介サーバ１１２）確立時に関わった当事者が、クライアント１０２がサーバ１１２で以前使用したパラメータを予測の後、通信に関わる当事者でなくなったことを認識し得る、相対的に高機能のファイアウォール１０６（例えば多くの企業ネットワークと関連するファイアウォール）によって分離されるとき、しばしば失敗を伴う。さらに、ＵＤＰまたは類似のセッションは、ユーザによるいくつかの手動構成を含み得るが、かかる構成は、特に比較的不慣れなユーザには不便であり、またしばしば困難となり得る。ユーザが直接的な接続もＵＤＰ型のプロクシサーバの業務も利用できないときは、かかる状況であってもクライアント１０２によるサーバ１０４との通信を可能にする、追加的な接続機構を提供することが望ましいだろう。
【００２７】
したがって、様々な実施形態において、クライアント１０２とサーバ１０４との別々の接続を確立し、２つの接続を中継することが可能で、これによりクライアント１０２とサーバ１０４との間の橋渡し的な接続を作り出す中継システム１１６が提供される。この目的のために、中継システム１１６は、任意の数のクライアント１０２とサーバ１０４の間の様々な接続を確立し、処理が可能な１つまたは複数の中継サーバ１２０を含むことが適切である。様々な実施形態において、各中継サーバ１２０は、以下でより詳細に説明するように、接続のためのリクエストを受信したら、その対応として中継セッションを処理する任意の数の中継インスタンス１２４を呼び出す中継マネージャモジュール１２２を含む。また、中継マネージャモジュール１２２は、中継機能へのアクセスを制御し、業務ルールを実施し、及び／またはその他所望の行動をとるために、データベース１２６及び／または管理インターフェース１２８と相互に作用し得る。
【００２８】
様々な実施形態において、中継サーバ１２０及び／またはその他の資源を効率的かつ効果的に配分するために、ロードバランサ１１８も提供され得る。ロードバランサ１１８は、ハードウェア及び／またはソフトウェア資源の任意の組み合わせを使用して実施され得て、また、ネットワークトラフィック、サーバ１２０上のプロセッサロード、クライアント１０２及び／またはサーバ１０４の地理的分布、ならびに／若しくは適宜その他の要因に基づくことができる。
【００２９】
様々な実施形態において、各中継サーバ１２０は、従来のコンピュータサーバ・ハードウェア及びソフトウェアを使用して実施される。各中継サーバ１２０は、例えば、任意のプロセッサ、アーキテクチャ、及び／またはオペレーティングシステムに基づくサーバコンピュータシステムによって実施され得る。様々な実施形態において、各中継サーバ１２０は、任意のバージョンのＬＩＮＵＸ、ＵＮＩＸ、ＳＯＬＡＲＩＳ、ＮＥＴＷＡＲＥ、ＷＩＮＤＯＷＳ、ＯＳ／Ｘ、ＡＩＸ及び／またはその他のオペレーティングシステムなどを実装する、実際の、またはネットワーク上のコンピュータシステムである。一般に、様々なＵＮＩＸ／ＬＩＮＵＸオペレーティングシステムは、アプリケーションとして中継マネージャモジュール１２２を実装し得るコンピューティング・コア、ならびに、要望に応じて、任意の数のデーモン、プロセス、アプリケーション、またはその他の中継インスタンスモジュール１２４を提供する。例示的な実施形態において、中継マネージャモジュール１２２は、カリフォルニア州、サニーベールのサンマイクロシステムズ社から入手可能なＪＡＶＡ環境を使用して、中継インスタンスモジュール１２４が従来のＣ、Ｃ＋＋またはその他のプログラムと実装されて、実装される。その他の実施形態は、その他の任意のプログラム言語、スクリプト言語、開発または実行環境及び／またはその他を使用して、様々なシステム１１６のコンポーネントを実装し得る。
【００３０】
例示的な実施形態において、中継接続のリクエストが仲介サーバ１１２、クライアント１０２またはその他の請求当事者から受信されると、中継マネージャモジュール１２２は、サーバ１２０上、入ってきたポート番号を接続へと配分し、新たな中継インスタンス１２４を呼び出して、かかる接続を処理させる。インスタンスは、配分されたポート番号を受信し、クライアント１０２とサーバ１０４の両方が接続をリクエストするために中継サーバ１２０に接触するまで待機する。クライアント１０２とサーバ１０４からのリクエストがシステム１１６で受信され、ロードバランス機構１１８などによって適切なポートへと送られる。接続はＴＣＰ、ＵＤＰ、またはその他任意のプロトコルを使用して確立され得るが、様々な実施形態においては、妨げとなり得る任意のファイアウォール１０６を取り下げる際の一助としてＴＣＰプロトコルを使用したクライアント１０２とサーバ１０４によって接続が起きる。多くのファイアウォール１０６が、信頼性のあるネットワーク内で起きるＴＣＰ接続を遮らないため、かかる接続は中継サーバ１２０を通る接続を確立するうえで非常に効果的たり得る。
【００３１】
クライアント１０２とサーバ１０４との別々の接続を確立した後、中継インスタンス１２４が、一方の接続において適切に受信したデータを他方の接続へと中継して、クライアント１０２とサーバ１０４間にネットワーク上のチャンネルを作り出す。このネットワーク上の接続は、任意の基準に基づいて維持され、また任意の基準に基づいて任意の時間に終了させることもできる。様々な実施形態において、中継インスタンス１２４は、接続開始以来の経過時間及び／または接続の進行中に処理されるデータの量を追跡する。この情報は、所定時間の経過またはトラフィックの所定量が処理された後に接続を終了させるために、中継マネージャ１２２と共有され得る。時間及びバンド幅の消費量は、データベース１２６にさらに保存され得て、さらなるデータ確認、権限付与及び／またはその他の関連事項を可能にする。
【００３２】
サーバ１０４からの、中継システム１１６との接続は、任意の方法で開始され得る。様々な実施形態において、サーバ１０４は、ユーアールエル（ＵＲＬ）または、ファイアウォール１０６の背後でただちに接続が可能なその他のネットワークアドレスで、メッセージサーバ１１４と比較的一定の接続を維持する。メッセージサーバ１１４は、例えば、サーバ１０４が開始したときに自動的にアクセスされる、単なるＴＣＰサーバであってよい。かかる場合において、サーバ１０４は開始時（またはその他の一時的な時間帯）にメッセージサーバ１１４と接触し、ＴＣＰまたは類似の接続を確立し、さらなる行動を待ち受ける。この接続は、ＴＣＰプロトコルの一部である「キープアライブ（ｋｅｅｐ  ａｌｉｖｅ）」特徴という比較的低いバンド幅を使用して有効に維持され得る。サーバ１０４からメッセージサーバ１１４への接続を予め確立することによって、たとえサーバがファイアウォール１０６の背後にあっても、サーバ１０４へ命令やリクエストを送信するために使用され得るチャンネルが維持される。その理由は、ファイアウォール１０６において使用される多くのルータが、入ってくるＴＣＰ（及びその他の）接続を許可しない一方で、信頼性の高い空間内で起きる、外部へのＴＣＰ接続を許可するからである。ＴＣＰまたはサーバ１０４からメッセージサーバ１１４へのその他の接続を確立した後、かかる既存の接続が命令をサーバ１０４へ伝達して中継サーバ１１６との別々の接続を確立するために使用され得る。かかる第二の接続は、ファイアウォール１０６によって遮られる可能性のない、他の送信されるＴＣＰ（またはその他のプロトコル）接続として確立され得る。すなわち、メッセージサーバ１１４は、サーバ１０４に対して中継サーバと別々に接触するよう指令する既存のチャンネルによって命令を伝達し得る。この命令は、接続のリクエストをするクライアント１０２またはその他の当事者についての情報を選択的に含み得るが、かかる情報は全実施形態に存在する必要はない。前記の命令があると、以下で、より詳細に説明するように、サーバ１０４は、適切に、クライアント１０２へデータを伝達するために使用され得る、中継サーバとＴＣＰ接続またはその他の接続を確立する。
【００３３】
上記のように、中継サーバ１１６は、クライアント１０２及びサーバ１０４の両方と接続を確立し得て、データが一方の接続から他方の接続へ中継されるようにする。データの中継がサーバ１１６上に追加的な処理ロードを配置する一方、これは実際にクライアントとサーバとの接続を確立するための非常に利便性の高い、かつ効果的なメカニズムを創出する。
【００３４】
図２に戻って、ネットワーク１１０上でクライアント１０２とサーバ１０４との間の接続を確立するための例示的なプロセス２００が示される。この例において、クライアント１０２は、最初にサーバ１０４との直接的な接続を試みるが、かかる接続２０２は、ファイアウォール１０６によって遮られる。
【００３５】
直接的な接続を創出する試みが失敗に終わった後、クライアント１０２は、仲介サーバ１１２を使用して仲介接続２０５を創出しようと試みる。このシナリオにおいて、クライアント１０２はメッセージ２０４を仲介サーバ１１２へ送信し、かかる仲介サーバ１１２とＵＤＰ（またはその他の）セッション２１０をリクエストする。同様に、サーバ１０４は、リクエスト２０６を伝達して、仲介サーバ１１２とＵＤＰセッション２０８を確立する。サーバ１０４からの、かかるリクエスト２０６は、クライアント１０２がメッセージ２０４を送信する前を含む任意の時間に送信され得る。サーバ１０４は、例えば、開始時に仲介サーバ１１２とメッセージ２０６とを自動的に接触させ得て、ＵＤＰセッション２０８が、クライアント１０２がサーバ１０４へのアクセスをリクエストした時には既に使用可能となるようにする。クライアント１０２とサーバ１０４とが共通のプロクシサーバ（例えばサーバ１１２）と通信した後、かかるプロクシサーバは、図２のセッション２１２及び２１３が示すように、その後クライアント１０２とサーバ１０４とが、プロクシサーバから共有のＵＤＰ情報を使用して直接的に通信できることを希望して、クライアント１０２と関連するＵＤＰ（またはその他の）情報をサーバ１０４へ回送し得て、逆もまた然りである。しかしながら、上記のように、多くのファイアウォール１０６がかかる接続を許可しないだろう。
【００３６】
再び、サーバ１０４が、メッセージサーバ１１４とＴＣＰまたはその他の信頼性の高い接続２１４を従前に確立したことを想起すると、この既存の接続２１４は、サーバ１０４から中継サーバ１１６への中継接続を確立するために使用され得る。プロクシ型の接続が成功しないとき、メッセージサーバ１１４が、（メッセージ２１８を介して）サーバ１０４に対して、中継システム１１６と別々に接続を開始するよう、適切に命令する。図２は、メッセージサーバ１１４からサーバ１０４へ送信されるメッセージ２１８を示すが、任意の数のソースから受信されたリクエスト２１６への対応として、かかるメッセージ２１８を開始させることができる。様々な実施形態において、仲介サーバ１１２が、メッセージサーバ１１４へリクエスト２１６を送信し、サーバ１０４に対して中継サーバ１１６と接触するよう命令する。その他の実施形態においては、リクエスト２１６がクライアント１０２によって伝達されて命令メッセージ２１８を開始する。いずれの場合においても、サーバ１０４からメッセージサーバ１１４へと確立された既存の接続２１４は、適宜、中継システム１１６と接触することをサーバ１０４に命令するために使用される。かかる命令を受けると、サーバ１０４はリクエスト２２０を中継サーバ１１６へ送信する。かかるリクエスト２２０は、システム１１６で適切に処理されてＴＣＰ、ＵＤＰ、及び／またはその他の任意の適切なプロトコルを使用した接続２２６を創出する。
【００３７】
中継システム１１６とクライアント１０２との間の接続は、任意の方法で確立され得る。図２に示される例示的な実施形態において、クライアント１０２または仲介サーバ１１２のいずれかが、リクエスト２２２を開始し、その結果、中継サーバ１１６とクライアント１０２との間の接続２２４がなされる。プロクシ接続が成功しなかったとき、仲介サーバ１１２からクライアント１０２への命令の対応としてリクエスト２２２が開始され得る。しかしながら、その他の実施形態においては、その他の任意の方法にてリクエスト２２２を開始し得る。再び、クライアント１０２がＴＣＰを使用して接続を開始すると、次期接続２２４が、大きな問題もなく、任意のファイアウォール１０６を通過する可能性が非常に高くなる。しかしながら、その他の実施形態もＵＤＰまたはその他のプロトコルを適宜使用し得る。
【００３８】
接続２２４と２２６が整うと、クライアント１０２とサーバ１０４との間のデータ中継が、中継接続２２８上で上記のように進行し得る。場所移動への応用においては、例えば、接続２２８によって、ストリーミングメディアがメディアプレーヤークライアント１０２上でプレイされるために、場所移動サーバ１０４から提供され得る。かかる実施形態において、中継伝達中は、バンド幅やサーバ１２０上での処理能力に関する問題点を減らすために、メディアストリームのビットレート、フレームレート、分解能またはその他のエンコードパラメータを制限することが望ましいかもしれない。かかる制限は、要望に応じて、例えば、中継サーバ１１６またはその他のソースからサーバ１０４へ伝達される命令によって課され得る。代替的に、接続が中継サーバ１１６を通過してなされるたびに、ファームウェアまたはサーバ１０４におけるその他の命令が、エンコード、ストリーミング、またはその他の要望に応じた特徴（機構）を構成し得る。再び、場所移動に加えて、その他の特徴（機構）と実施態様が考えられ得る。  
【００３９】
図３に戻って、クライアント１０２とサーバ１０４との間の接続を確立する例示的な方法３００が、中継サーバ１２０でクライアント１０２とサーバ１０４から各々リクエスト２２２、２２０を受信すること（機能３１０）；クライアント１０２とサーバ１０４との間で２つの接続２２４、２２６を確立すること（機能３１４）；中継接続２２８を確立するために、中継サーバ１２０で２つの接続２２４、２２６との間のデータを中継すること（機能３１６）という、幅広い工程を適切に含む。その他の実施形態は、中継接続を承認すること（機能３１２）、時間またはバンド幅の制限超過後に中継接続を切断すること（機能３１８）などの追加的な特徴（機構）も含み得る。
【００４０】
上記の通り、中継接続は、サーバ１２０上で実際に資源を消費するので、多くの実施形態において、中継接続を試みる前に、クライアント１０２を促して直接的な接続（機能３０２及び３０４）及び／または仲介的な接続（機能３０６及び３０８）を試行させることが望ましいかもしれない。直接的な接続及び／または仲介的な接続が成功しないとき、中継接続が試行され得る。中継の特徴（機構）が任意の特定のユーザ、クライアント１０２、及び／またはサーバ１０４に対して利用可能なときと場合に、任意の数の規則や手続きが主として実施され得る。図３に示された例示的な実施形態において、サーバ１２０を使用した中継接続が、直接的な接続（機能３０２）及び／または仲介的な（例えばＵＤＰ）接続（機能３０６）がともに失敗した後に試行される（機能３０４、３０８）。その他の実施形態により、ユーザが中継接続を手作業で行うことや、直接的または仲介的な接続が成功しないとわかったとき（または確信的に予測したとき）に、自動的に中継状態を開始することが可能である。かかる特徴（機構）は、クライアント１０２にて実行するメディアプレーヤーまたはその他のクライアントのアプリケーションにコード化され得て、及び／またはデータベース１２６内に保存された業務ルールなどを使用して実行され得る。
【００４１】
上記の通り、中継サーバ１２０は、サーバ１０４とクライアント１０２から各々受信された接続リクエスト２２０、２２２への対応として、中継接続２２８を創出する。例示的な実施形態において、中継インスタンス１２４が適切な時間にわたって、中継マネージャモジュール１２２によって識別されたポートをモニタリングする。リクエスト２２０及び２２２が適切なタイムアウト時間（例えば、数秒単位など）満了前に受信されると、処理が継続される。クライアント１０２またはサーバ１０４のいずれか若しくは両方からリクエストが受信されなかった場合は、接続は停止され得る。
【００４２】
接続は、任意の適切なルールによって承認または拒絶され得る（機能３１２）。上記の通り、任意の数の業務ルールが中継サーバへのアクセスを制限または限定するために実施され得る。かかるルールは、特徴（機構）を特定のユーザ、特定のサーバ及び／または特定のクライアントに限定することを含み得る。さらにその他の実施形態において、ユーザ（若しくはサーバまたはクライアント）は、許可される中継サービスの数を限定され得る。かかる限定は、総数（例えばクライアントまたはサーバの存続期間）であってもよいし、または適切な時期後に初期化されたもの（例えば、１ヶ月当たり１０の中継接続）であってもよい。
【００４３】
ユーザは、ユーザＩＤ／パスワード、デジタル署名、生体認証、またはその他の任意のデジタル認証にて識別され得る。クライアント１０２及びサーバ１０４は、同様にデジタル署名またはその他の識別子（例えば、整理番号、ＭＡＣアドレス、及び／またはその他）を含む任意の種類のデジタル認証にて識別され得る。かかる情報は、リクエスト２２０及び／または２２２に含められ得て、データベース１２６、または要望に応じてその他別の場所に保存された情報と比較され得る。その他の実施形態が中継インスタンス１２４、管理インターフェース１２８、及び／または要望に応じてその他の任意の特徴（機構）を用いて承認を処理され得るものの、多くの実施形態においては、中継マネージャモジュールによって承認が処理され得る。  
【００４４】
承認がなされると、中継サーバ１２０から接続２２４と接続２２６が確立され（機能３１４）、クライアント１０２とサーバ１０４との間のデータの中継が、中継接続２２８によって開始され得る（機能３１６）。様々な実施形態において、データベース１２６内及び／または中継インスタンス１２４内に保存されたデータは、適切なルールに従って接続２２８を切断するために使用され得る。いくつかの実施形態において、所定時間の経過後（他の実施形態ではこれより長くても短くてもよいが、例えば３０分程度）または所定量のデータが処理された後（例えば１月当たり１０ギガバイトまたはその他の値）に、全ての接続（または特定のクライアント、サーバまたはユーザに関連する接続のみ）を切断することが望ましいかもしれない（機能３１８）。実施される特定のルールまたはパラメータが実施形態ごとに異なるだろう。また、任意の数のルールが、要望に応じてデータベース１２６のルールエンジンを使用して実施され得る。一般的に言って、方法３００の様々な工程が、システム１００内の任意の種類のハードウェア、ソフトウェア、及び／またはファームウェアロジックによって実行され得る。方法３００は、例えば、任意の適切なクライアント１０２及び／またはサーバ１０４とともに適宜、動作する、中継サーバ１２０（図１）によって実行され得る。また、図３は、上記のように直接的または仲介的接続を試行することに関連する機能３０２、３０４、３０６、３０８を示す。実際には、これらの特徴（機構）は、中継サーバ１２０によるよりは、クライアント１０２またはサーバ１０４によって実行され得る。様々な実施形態において、方法３００の様々な工程が、メモリ、またはディスクドライブならびに／若しくは中継サーバ１２０及び／またはクライアント１０２と関連するその他の記憶装置に保存されたソフトウェアまたはファームウェアの命令への対応として実施される。かかる命令は、任意のプロセッサ及び／またはサーバ１２０な内の処理機構、クライアント１０２などによって実行され得る。図３に示す様々な機能の各々を実施するために使用される特定の手段は、任意のフォーマットで従来のソフロウェアロジックを実行する、任意の種類の処理用ハードウェア（図１のサーバ１２０、クライアント１０２及び／またはサーバ１０４など）たり得る。
【００４５】
本明細書で説明されたように、デジタルネットワーク上でクライアントとサーバとの間の接続を確立するための新たなシステムならびに技術が説明された。本明細書にて説明された様々な技術により、クライアント及びサーバがクライアントとサーバの間のネットワーク上のポイトツーポイントのリンクを接続するために、別々に２つの接続の間のデータを効果的に中継する中継サーバとＴＣＰ接続またはその他の接続を行うことを可能にしている。クライアントとサーバの各々が共通の中継サービスとの接続を開始できるようになることで、そうでなければクライアントとサーバとの間の直接的な接続を妨げていたファイアウォールは取り下げられ得て、これにより、ネットワークの安全性について妥協することなく、データ伝達またはその他のクライアントとサーバとの間の通信が可能になる。かかるサービスは、場所移動サーバ装置が中継サーバへとメディアデータをストリーム可能にすることで、そして、これにより、受信されたストリームをメディアプレーヤークライアントへ中継することで、場所移動またはその他のストリーミングメディアへの応用を支援するためにも使用され得る。任意のストリーム、ファイルベース、パケットベース、またはその他任意のフォーマットのデータ伝達のために均等範囲の実施形態が、同様の特徴（機構）を提供する。
【００４６】
本明細書で、「例示」なる用語は、１つの例、事例、または例示にすぎず、任意の数の代替物を有し得る。本明細書にて例示的として説明された任意の実施態様は、必ずしも他の実施態様よりも好ましいものや有利なものとして構成されているわけではない。いくつかの例示的な実施形態が前述の発明の詳細な説明で提供されたが、多くの数の代替的態様であるが均等の範囲に属する態様が存在することが認識されるべきである。そして、本明細書で提供された例は、いかなる方法においても本発明の範囲、利用性、または構成を限定するものと解釈されることを意図していない。そうではなく、特許請求項ならびにその法的な均等の範囲から逸脱することなく本明細書で説明された機能、要素のアレンジなどの様々な変形態様がなされ得る。
【図１】
0005927113.tif 000002
【図２】
0005927113.tif 000003
【図３】
0005927113.tif 000004