"第3のコンピューティングデバイスの指示で、2つのコンピューティングデバイス間でデータを転送するためのコンピューター実施方法であって、送信元サーバーと宛先サーバーの間でのデータのダイレクト転送を要求する指示クライアントから転送要求を受信するステップと、1つまたは複数のネットワークに照会して、前記指示クライアント、前記送信元サーバー、および前記宛先サーバーの間の接続を特定するステップと、前記特定された接続を測定して、ネットワークパフォーマンスに基づいて前記接続をランク付けするステップと、少なくとも部分的にそれぞれの接続の前記測定されたネットワークパフォーマンスに基づいて、前記転送を実行する接続を選択するステップと、最初に前記指示クライアントにデータを転送することなく、前記指示クライアントの代わりに前記送信元サーバーから前記宛先サーバーに前記データを直接転送するステップと、前記転送の結果を前記指示クライアントに報告するステップとを含み、前記諸ステップが少なくとも1つのプロセッサによって実行される、方法。前記転送要求を受信するステップが、前記送信元サーバーが、前記転送をより速く完了させることができる前記クライアントよりも良好な、前記宛先サーバーへの接続を有するかどうかを決定するステップを含む、請求項1に記載の方法。前記転送要求を受信するステップが、前記送信元サーバーが、前記指示クライアントの代わりに、前記送信元サーバーから前記宛先サーバーへのデータのダイレクト転送のためのプロトコルをサポートするかどうかを決定するステップを含む、請求項1に記載の方法。代理で前記転送が行われる前記転送要求に関連するセキュリティ資格情報を決定するステップと、前記指示クライアントが前記転送を実行していた場合の資格情報に類似した資格情報を使用して前記送信元サーバーから前記転送を行うことができるように、前記決定されたセキュリティ資格情報を偽装するステップとをさらに含み、セキュリティ資格情報を決定するステップが、前記セキュリティ資格情報を前記指示クライアントに照会するステップを含む、請求項1に記載の方法。1つまたは複数のネットワークに照会するステップが、ルーターまたはネットワーク情報の他のソースに照会して、前記ネットワークに接続されたコンピューティングデバイスを特定するステップを含む、請求項1に記載の方法。前記特定された接続を測定するステップが、それぞれの接続の帯域幅および遅延を決定するステップを含む、請求項1に記載の方法。前記接続を選択するステップが、前記送信元サーバーが、前記宛先サーバーに対して、前記指示クライアントが有するよりも高いスループット接続を有すると決定すると、前記送信元サーバーを選択して前記転送を直接実行するステップを含む、請求項1に記載の方法。セキュリティ資格情報を偽装するステップが、前記指示クライアントから前記送信元サーバーに認証情報を転送するステップを含む、請求項1に記載の方法。セキュリティ資格情報を偽装するステップが、前記指示クライアントから前記宛先サーバーに認証情報を転送するステップを含む、請求項1に記載の方法。データを転送するステップが、前記2つのサーバー間のより高速なネットワーク接続を介して前記転送を完了させることによって、前記クライアントのより低速なネットワーク接続を回避するステップを含む、請求項1に記載の方法。前記結果を報告するステップが、前記指示クライアントで、前記送信元サーバーからの前記転送の進行状況を明記した情報を受信するステップを含む、請求項1に記載の方法。リモートパーティ間の通信のサードパーティ開始を実行するためのコンピューターシステムであって、以下のコンポーネント内に具備されたソフトウェア命令を実行するように構成されたプロセッサーおよびメモリーと、指示クライアントから、宛先サーバーに転送されるべきデータを含む送信元サーバーで要求を受信する要求受信コンポーネントと、1つまたは複数のネットワークに照会して、コンピューティングデバイスを特定し、どのコンピューティングデバイスがそれぞれのネットワークを介して互いに連絡を取ることができるかを決定する接続照会コンポーネントと、1つまたは複数のパフォーマンス基準に従って前記要求された転送を完了させることができる1つまたは複数の可能な接続のなかから、接続を選択する接続選択コンポーネントと、前記指示クライアントから前記送信元サーバーに要求を送信して、最初に前記指示クライアントにデータを送信することなく前記送信元サーバーから前記宛先サーバーに前記データを直接送信するダイレクト転送コンポーネントと、前記指示クライアントに前記転送の結果を返すことを管理する結果処理コンポーネントとを含む、システム。前記要求受信コンポーネントが、転送されるべき前記データの識別子、転送されるべき前記データの一部分、および前記指示クライアントに関連するセキュリティ資格情報のセットのうちの少なくとも1つを含むパラメータを、前記要求と共に受信する、請求項12に記載のシステム。コンピューティングデバイス間の1つまたは複数の可能な接続について1つまたは複数のテストを実行して、前記接続の1つまたは複数のデータ転送機能を決定する接続ベンチマークコンポーネント130をさらに含み、前記接続ベンチマークコンポーネントが、テストを実行して、それぞれの接続の帯域幅および遅延を決定する、請求項12に記載のシステム。前記指示クライアントの資格情報を偽装する前記送信元サーバーの資格情報を作成する資格情報偽装コンポーネント150をさらに含む、請求項12に記載のシステム。リモートパーティ間の通信のサードパーティ開始を提供する。0004本明細書において、サードパーティクライアントコンピューターの要求により、2つのコンピューティングデバイス間でデータを直接送信することができるデータ転送システムについて記載する。このシステムにより、サードパーティは、ネットワークファイルシステム内のコンピューター間でデータ転送を開始することができる。より遅い可能性があるサードパーティの接続を介してデータがほとんどまたは全く移動しないので、このことは著しい速度増加をもたらす。データ転送システムは、それぞれのコンピューティングデバイス間の帯域幅および遅延の測定値に基づいて、ダイレクト転送directtransferが2つの別個の読み取り操作および書き込み操作よりも効率的であるかどうかを決定するための機構を提供する。あるいはまたはそれに加えて、それぞれのコンピューティングデバイスは、短いベンチマーキングプロセスに関与して、様々な接続についての統計情報を集めることができる。データ転送システムは、サードパーティクライアントの指示で、送信元サーバーがデータを圧縮し、宛先サーバーがデータを圧縮解除して、ネットワーク帯域幅をさらに節約するためのサポートを提供する。データ転送システムは、従来のファイルシステムプロトコルを拡張して、サーバーAがサーバーAに保存されたファイルFaからデータを読み取り、書き込み操作をサーバーBに直接送信して、データをファイルFbに転送することをクライアントCが要求することができる操作をサポートする。したがって、より高速なネットワーク接続がサードパーティコンピューター間で直接利用可能であるとき、データ転送システムは、サードパーティコンピューター間の非効率的なネットワークを介したデータ転送を低減する。0005この発明の概要は、選ばれた概念を簡略化された形で紹介するために提供され、この概念について、発明を実施するための形態において以下でさらに記載する。この発明の概要は、特許請求される主題の主な特徴または不可欠な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。0010本明細書において、サードパーティクライアントコンピューターの要求により、2つのコンピューティングデバイス間でデータを直接送信することができるデータ転送システムについて記載する。このシステムにより、サードパーティは、ネットワークファイルシステム内のコンピューター間でデータ転送を開始することができる。例えば、低速Wi-Fi接続を介してホームネットワークに接続されたラップトップ上のユーザーが大量のファイルをサーバーAからサーバーBに転送することを要求し、サーバーAおよびBが高速ネットワーク接続によって接続されている場合、ラップトップは、最初にラップトップにデータをルーティングすることなく、サーバーAがサーバーBにデータを直接転送することを要求することができる。ラップトップの低速接続を介してデータがほとんどまたは全く移動しないので、このことは著しい速度増加をもたらす。データ転送システムは、それぞれのコンピューティングデバイス間の帯域幅および遅延の測定値に基づいて、ダイレクト転送directtransferが2つの別個の読み取り操作および書き込み操作よりも効率的であるかどうかを決定するための機構を提供する。例えば、前の例におけるラップトップおよび2つのサーバーのオペレーティングシステムは、それぞれのシステム間での転送の速度についての統計情報を維持することができる。あるいはまたはそれに加えて、それぞれのコンピューティングデバイスは、短いベンチマーキングプロセスに関与して、様々な接続についての統計情報をコンパイルすることができる。0011いくつかの実施形態では、データ転送システムは、サーバーAがデータを圧縮し、サーバーBがデータを圧縮解除して、ネットワーク帯域幅をさらに節約するためのサポートを提供する。これは、ネットワークが通信の各端での圧縮および圧縮解除によって導入された遅延オーバーヘッドよりも遅い場合、より高速な転送をもたらすことができる。システムは、差分圧縮を使用して、サーバーBがまだ有していないデータの部分のみを送信することもできる。例えば、AおよびBが更新されたファイルを頻繁に交換する場合、ファイルの多くの部分はBで既に利用可能である可能性があり、その結果として、Aはこれらの部分を再送する必要がない。データ転送システムは、2つ以上のファイルサーバーに同一のデータを書き込むなどの効率的なレプリケーションを実行する類似の機構を使用する。0012データ転送システムは、従来のファイルシステムプロトコルを拡張して、サーバーAがサーバーAに保存されたファイルFaからデータを読み取り、書き込み操作をサーバーBに直接送信して、データをファイルFbに転送することをクライアントCが要求することができる操作をサポートする。既存のプロトコルは、このタイプの転送について以下の擬似コードによって例証されるメッセージを使用する。CからAReadRequestFileA,offset100AからCReadReponseDataCからBWriteRequestFileB,offset200,DataBからCWriteResponseOK0013データ転送システムを使用すると、会話は以下の擬似コードに示されるように変化する。CからAReadWriteRequestFileA,offset100,ServerB,FileB,offset200AからBWriteRequestFileB,offset200,DataBからCReadWriteResponseOK0014例えば、AがCに読み取り応答を送信し、BがCに書き込み応答を送信するといった、この会話に代わる多くの代替案がある。あるいは、AにBの応答を送信し、AがCにその応答を転送することができる。別の代替案は、データが反対の方向でコピーされる、すなわち、CがAにBからデータを読み取り、そのデータをAで書き込むよう依頼するケースである。0015クライアントCはAおよびBと事前にネゴシエートして、様々なネットワークパフォーマンス特性を決定し、AとCの間でセッション/接続を作成することができ、それにより、BはAにCとして働いて操作を実行するのをまかせる。これにより、上記のメッセージからいくつかのパラメータを省略することができる。C、A、およびBはよく知られている技法例えば、パケットペア、ピング、およびtracertを使用して、3つのネットワーク経路の帯域幅および遅延を決定し、AとCの間のダイレクト転送がパフォーマンス改善をもたらすかどうかを決定する。あるいは、MICROSOFT商標LinkLayerTopologyDiscoveryLLTD機構により、ネットワーク接続されたデバイスがホームネットワークのマップを作り、それぞれのリンクのボトルネック帯域幅を決定することができる。いくらかの追加の中央処理装置CPU時間を犠牲にして、システムは、Aでデータを圧縮し、Bでデータを圧縮解除することができ、その結果として、より少ないデータがネットワークを介して送信されるが、遅延はわずかに高くなる。したがって、より高速なネットワーク接続がサードパーティコンピューター間で直接利用可能であるとき、データ転送システムは、サードパーティコンピューター間の非効率的なネットワークを介したデータ転送を低減する。0016データ転送システムが直面する2つの他の考慮事項は、非対称接続およびセキュリティ資格情報credentialに関するものである。非対称接続は、コンピューターAはコンピューターBと通信することができ、コンピューターBはコンピューターCと通信することができるが、コンピューターAはコンピューターCと通信することができないという現代のネットワーキングで生じる可能性がある状況を指す。これは、例えば、コンピューターBおよびCはネットワークアドレス変換器NATの後ろにあるが、コンピューターAは公共インターネット接続に接続されているときに生じる可能性がある。場合によっては、コンピューターBは、MICROSOFT商標WINDOWS商標HomeServerまたは家の外の外部アクセス専用の他のコンピューターであってもよい。コンピューターBはルーターによって非武装地帯DMZに配置されてもよく、または外部ネットワーク接続を直接受信することが可能であってもよいが、コンピューターCはそうすることができない。そのような状況では、従来のシステムではAはBに直接アクセスすることができるが、Cに直接アクセスすることができないので、家の外から接続しているコンピューターAは、コンピューターBとコンピューターCの間でファイルをコピーすることが全くできない可能性がある。しかし、データ転送システムを使用すると、コンピューターBが、両方ともファイアウォールの後ろの同じホームネットワーク内で接続されているので接続がコンピューターBから直接コンピューターCに利用可能であることを決定した後で、そのような転送が可能になる。0017第2の考慮事項は、セキュリティ資格情報である。コンピューターAがファイルをコンピューターCに転送すると、コンピューターCはコンピューターAまたはコンピューターAの資格情報を使用するユーザーをチェックし、要求された操作が許可されていることを確認し、次いで、操作を実行する。コンピューターAがコンピューターBに本明細書において記載されるデータ転送システムを使用してファイルまたは他のリソースをコンピューターCに転送するよう指示すると、コンピューターBは、コンピューターAと同じであるか、少なくとも類似の権限を有する資格情報がコンピューターCへの転送に使用されることを保証する。そうでなければ、コンピューターAは、通常のセキュリティ制限を回避することができる。いくつかの実施形態では、コンピューターAが、転送を実行するためのコンピューターBに対するセキュリティプリンシパルを特定し、そのセキュリティプリンシパルがコンピューターBを満足させるものであることを認証し、次いで、コンピューターBがコンピューターCへの転送のためのセキュリティプリンシパルを偽装する。これを行うことによって、コンピューターCは、従来より実行していたものと同じ承認チェックを実行することができ、コンピューターBは、コンピューターAの要求で、コンピューターAがそれ自体で実行したはずである、これらの操作のみを実行することができる。これは、MICROSOFT商標WINDOWS商標設定における偽装としてしばしば知られている。セキュリティ機構が特権の委任を可能にするか、アクセス制御が機能に基づく環境では、他の実装形態が可能であり得る。0018図1は、一実施形態における、データ転送システムのコンポーネントを示すブロック図である。システム100は、要求受信コンポーネント110と、接続照会コンポーネント120と、接続ベンチマークコンポーネント130と、接続選択コンポーネント140と、資格情報偽装コンポーネント150と、ダイレクト転送コンポーネントdirectedtransfercomponent160と、結果処理コンポーネント170とを含む。これらのコンポーネントのそれぞれについて、本明細書においてさらに詳細に記載する。0019要求受信コンポーネント110は、指示クライアントdirectingclientから、宛先サーバーに転送されるべきデータを含む送信元サーバーで要求を受信する。要求は、データ例えば、ファイルパスまたは他の識別子、転送されるべきデータの一部分例えば、ファイルオフセット、データサイズ、またはデータの一部もしくはすべての他の仕様、指示クライアントまたは指示クライアントのユーザーに関連するセキュリティ資格情報のセットなどを特定するパラメータを含み得る。指示クライアントは、クライアントで実行中のアプリケーションから要求を受信して、送信元サーバーから宛先サーバーにデータを転送する。0020ダイレクト転送を使用すべきかどうか、また、いつダイレクト転送を使用すべきかをシステムが決定するための多くの方法がある。いくつかの実施形態では、クライアントは、送信元サーバーに要求を送信して、送信元サーバーが、最初に指示クライアントにデータを送信することなく、指示クライアントの代わりにデータを宛先サーバーに直接送信することができるダイレクト転送を送信元サーバーがサポートするかどうかを決定する。送信元サーバーがダイレクト要求をサポートするまた、宛先サーバーへの送信元サーバーの接続が、送信元サーバーと宛先サーバーの両方へのクライアントの接続よりも高速である場合、クライアントは、送信元サーバーに宛先サーバーに対して直接転送を完了するよう指示する。この機構を使用するという決定を開始時に一度行い、次いで、定期的にチェックするか、いずれかのマシンがネットワーク状態の変更を通知した際にチェックすることができる。この決定は、サーバーAまたはBと話すことによって行われないことがあり、時として例えば、LLTDプロトコルを用いてネットワーク上のすべてのマシンが、ネットワークトポロジおよび帯域幅を決定し、解析することが可能である。0021接続照会コンポーネント120は、1つまたは複数のネットワークに照会して、コンピューティングデバイスを特定し、どのコンピューティングデバイスがどのネットワークを介して互いに連絡を取るreachことができるかを決定する。家庭環境では、例えば、それぞれのネットワークを介してデータをブロードキャストすることによって、または動的ホスト構成プロトコルDHCPを使用してインターネットプロトコルIPアドレスをネットワーク上のそれぞれのコンピューティングデバイスに提供するルーターに接続することによって指示クライアントから特定することができる、有線ネットワークおよびワイヤレスネットワークが存在することがある。LLTDおよび/またはBANDプロトコルを使用して、ネットワーク情報を発見することもできる。コンピューティングデバイスおよびコンピューティングデバイスが接続されている方法を特定した後、システムは、それぞれの潜在的な接続についての統計情報を収集することによって続行することができる。0022接続ベンチマークコンポーネント130は、コンピューティングデバイス間の1つまたは複数の可能な接続について1つまたは複数のテストを実行して、接続の1つまたは複数のデータ転送機能を決定する。例えば、システムは、ピングテスト、パケットペアテスト、またはそれぞれの接続の帯域幅、遅延、バッファー容量、およびデータ転送速度に影響を及ぼす他のネットワークパラメータを決定するように設計された他のテストを実行することができる。システムは、LLTDレスポンダーなどのエージェントをそれぞれのコンピューティングデバイスにインストールすることができ、またはそれぞれのデバイスは、システムがそれぞれのコンピューティングデバイスに、そのデバイスから別のデバイスにベンチマーキングテストを実行するよう指示することができる修正されたオペレーティングシステムを有することができる。完了すると、システムは、利用可能な接続をそのデータ転送機能毎に並べ替える接続優先テーブルconnectionpreferencetableを作ることができる。0023接続選択コンポーネント140は、1つまたは複数のパフォーマンス基準に従って要求された転送を完了させることができる1つまたは複数の可能な接続のなかから、接続を選択する。典型的には、パフォーマンス基準は、最少の時間で転送を完了させることを目的とする。しかし、他の考慮事項が、さらなる貴重な高速帯域幅を消費することなく、より低速なアイドル接続を使用して転送を完了させること、バッテリ電力をあまり使用しない接続タイプを介して転送を完了させること、1日のうちのアイドル期間中に転送を完了させることなどの他のパフォーマンス基準をもたらすことがある。クライアントが選択された接続を要求することができるように、接続選択コンポーネント140は転送を行う接続を選び、指示クライアントに通知する。場合によっては、システムは、事前に決定された接続優先テーブルを維持し、システムはそのテーブルを転送時に参照して、特定されたサーバーのセット間で最速の接続を選択する。0024資格情報偽装コンポーネント150は、指示クライアントの資格情報を偽装する送信元サーバーの資格情報を作成する。指示クライアントは資格情報のセットを提供することができ、または送信元サーバーは資格情報のセットを自動的に決定することができる。場合によっては、送信元サーバーが、クライアントの代わりに資格情報の正確なセットを使用してデータを宛先サーバーに転送することができるように、その送信元サーバーは、パスワードなどの、指示クライアントからの追加の情報を要求することができる。これにより、送信元サーバーがアクションを実行することを承認されている場合でも、指示クライアントが、指示クライアントが実行することを承認されていないこれらのアクションを完了させることを防止する。0025ダイレクト転送コンポーネント160は、指示クライアントから送信元サーバーに要求を送信して、最初に指示クライアントにデータを送信することなく送信元サーバーから宛先サーバーにデータを直接送信する。サーバーが高速ネットワークによって接続され、クライアントが低速ネットワークによってサーバーに接続されている場合、ダイレクト転送は一般的に、クライアントへの従来の転送が最初に完了するよりもはるかに速く完了する。ダイレクト転送コンポーネント160は、サードパーティが送信元サーバーから他のサーバーに転送を指示することができるSMBおよび/またはNFSレイヤーの改訂などの、ダイレクト転送を可能にするための送信元サーバーのネットワーク関連ソフトウェアに対する修正を含み得る。いくつかの実施形態では、ダイレクト転送コンポーネント160は、データ圧縮またはデータ転送パフォーマンスをさらに高めるための他の省スペース技術を要求する。0026本明細書ではクライアントおよびサーバーとして特定されているが、当業者であれば、任意のコンピューティングデバイスは、ある時にはクライアントのように、それ以外の時にはサーバーのように働くことができ、これらの名称は、それぞれのコンピューティングデバイスの任意の特定の機能または機能の欠如を示すものではないことが理解されよう。0027結果処理コンポーネント170は、指示クライアントに転送の結果を返すことを管理する。事前に、指示クライアントはそれぞれのアクションを実行しており、転送の結果をそれぞれのサーバーから直接受信する。データ転送システム100を使用すると、指示クライアントは、データを転送する最初の要求の後、ほとんど会話に入っておらずただし、システムは進行状況メッセージを提供することができる、したがって、転送結果の最初の受信者にならない。例えば、何か問題があった場合、または転送が成功裏に完了した場合、宛先サーバーは送信元サーバーに通知するが、その情報を指示クライアントに伝えるかどうかは送信元サーバー次第である。したがって、送信元サーバーが転送の結果を指示クライアントに提供することができるように、送信元サーバーは、何の代わりに送信元サーバーが転送を実行していたかを特定する、それぞれの転送についての状態情報を追跡することができる。送信元サーバーおよび/または指示クライアントは、再試行のための論理または障害に対する他の処理を含み得る。0028データ転送システムが実装されるコンピューティングデバイスは、中央処理装置、メモリ、入力デバイス例えば、キーボードおよびポインティングデバイス、出力デバイス例えば、ディスプレイデバイス、および記憶デバイス例えば、ディスクドライブまたは他の不揮発性記憶媒体を含み得る。メモリおよび記憶デバイスは、システムを実施するまたは有効にするコンピューター実行可能命令例えば、ソフトウェアを用いて符号化することができるコンピューター可読記憶媒体である。加えて、データ構造およびメッセージ構造を保存するか、通信リンク上の信号などのデータ伝送媒体を介して伝送することができる。インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、ポイントツーポイントダイヤルアップ接続、携帯電話ネットワークなどの様々な通信リンクが使用され得る。0029システムの実施形態は、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルコンシューマーエレクトロニクス、デジタルカメラ、ネットワークPC、ミニコンピューター、メインフレームコンピューター、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、セットトップボックス、システムオンチップSOCなどを含む様々な運用環境で実施され得る。コンピューターシステムは、携帯電話、携帯情報端末、スマートフォン、パーソナルコンピューター、プログラマブルコンシューマーエレクトロニクス、デジタルカメラなどであってもよい。00301つまたは複数のコンピューターもしくは他のデバイスによって実行されるプログラムモジュールなどのコンピューター実行可能命令の一般的な文脈において、システムについて記載することができる。一般的に、プログラムモジュールは、特定のタスクを実行するまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。典型的には、プログラムモジュールの機能を、様々な実施形態において所望される通りに組み合わせるまたは分散することができる。0031図2は、一実施形態における、第3のコンピューティングデバイスの指示で、データ転送システムが2つのコンピューティングデバイス間でファイルを転送する処理を示す流れ図である。ブロック210で開始して、システムは、送信元サーバーと宛先サーバーの間でのデータのダイレクト転送を要求する指示クライアントから転送要求を受信する。例えば、クライアントはWi-Fiを介してホームネットワークに接続されてもよく、送信元サーバーが、転送をより速く完了させることができるクライアントよりも良好な、宛先サーバーへの接続を有するかどうかを問い合わせる要求を送信してもよい。転送は、転送の対象であるファイルなどのデータを特定することができる。要求は様々な方法で発信することができる。例えば、指示クライアントにおけるユーザーは、シェルプログラム例えば、MICROSOFT商標WINDOWS商標Explorerを使用して、送信元サーバー上のファイルを見ることができる。ユーザーは、コピーおよび貼り付け操作を使用して、送信元サーバーの1つまたは複数のファイルを宛先サーバーにコピーするよう要求することができる。0032引き続きブロック220で、システムは、代理で転送が行われる転送要求に関連するセキュリティ資格情報を決定する。結局、送信元サーバーが転送を直接実行することになった場合、送信元サーバーはセキュリティ資格情報を使用して、指示クライアントの代わりに働く。送信元サーバーは、セキュリティ資格情報を指示クライアントに照会するか、転送要求の一部として資格情報を受信することができる。0033引き続きブロック230で、システムは1つまたは複数のネットワークに照会して、指示クライアント、送信元サーバー、および宛先サーバーの間の接続を特定する。システムは、送信元サーバーでDNSキャッシュ情報を検索するか、ルーターまたはネットワーク情報の他のソースに照会するか、ブロードキャストして他のネットワークデバイスを特定することによって照会することができる。また、送信元サーバーは、様々なネットワーク例えば、Wi-Fiネットワークおよび有線ネットワーク上の指示クライアントおよび宛先サーバーに直接ピングを打って、送信元サーバーがどのようにその他のコンピューティングデバイスと連絡を取るreachことができるかを決定することができる。0034引き続きブロック240で、システムは特定された接続を測定して、ネットワークパフォーマンスに基づいて接続をランク付けする。例えば、システムは、有線ネットワークがワイヤレスネットワークよりも高いスループットを有する、またはギガビットネットワークインターフェイスカードNICを有する2つのコンピューターが、有線ネットワークでは、一方が100メガビットNICを有する2つのコンピューターよりも高速であると決定することがある。システムは、ピングテストまたは帯域幅、遅延、および他のネットワークパラメータを測定する他の速度テストなどの、当技術分野でよく知られている様々な技法を使用して、接続を測定する。0035引き続きブロック250で、システムは、それぞれの接続の測定されたネットワークパフォーマンスに基づいて、転送を実行する接続を選択する。例えば、送信元サーバーが、宛先サーバーに対して、指示クライアントが有するよりも高いスループット接続を有するとシステムが決定した場合、システムは送信元サーバーを選択して、転送を直接実行する。場合によっては、クライアントがより良好な宛先サーバーへの接続を有することがあるか、送信元サーバーが宛先サーバーに対する接続を全く有さないことがあり、この場合、指示クライアントが従来の方法で、最初にデータをクライアントに転送してから宛先サーバーに転送することによって、転送を実行する。0036引き続きブロック260で、指示クライアントが転送を実行する場合の資格情報に類似した資格情報を使用して送信元サーバーから転送を行うことができるように、システムは決定されたセキュリティ資格情報を偽装する。資格情報を偽装することは一般的に単一のコンピューティングデバイスで実行されるが、ネットワーク全体で機能するように拡張することができる。ホームネットワークの場合、それぞれのコンピューティングデバイスはユーザーアカウントおよびパスワードの類似のセットを使用することができ、その結果として、あるコンピューティングデバイスは、どのユーザーアカウントを使用するかを知るだけで、別のコンピューティングデバイスを偽装することができる。他の場合では、システムはあるコンピューティングデバイスから別のコンピューティングデバイスに認証情報を転送して偽装を可能にすることができ、またはKerberosまたは他の認証サーバーを使用して、要求が指示クライアントから発信されたものであるという確認を提供することができる。0037引き続きブロック270で、システムは、最初に指示クライアントにデータを転送することなく、指示クライアントの代わりに送信元サーバーから宛先サーバーにデータを直接転送する。データを直接転送することは転送の速度を上げ、最初にクライアントにデータを転送するという冗長なステップを回避する。より重要なことに、転送は、2つのサーバー間の高速ネットワーク接続を介して転送を完了させることによって、遅い可能性があるクライアントのネットワーク接続を回避する。0038引き続きブロック280で、システムは転送の結果を指示クライアントに報告する。送信元サーバーはデータを宛先サーバーに転送し、したがって、転送の進行状況ならびに転送の最終結果についての情報を受信する。クライアントが、転送が成功裏に完了したことを確認するか、任意のエラーを指示クライアントが決定した方法で処理することができるように、送信元サーバーはこの情報を指示クライアントに提供する。ブロック280の後、これらのステップは終了する。0039図3は、一実施形態における、データ転送システムが接続ベンチマーキング情報を収集して、データを転送するための接続を選択する接続優先テーブルを作る処理を示す流れ図である。ブロック310で開始して、システムは、1つまたは複数のネットワークによって接続された1つまたは複数のコンピューティングデバイスを特定する。ネットワークは、イーサネット登録商標、Wi-Fi、または他のネットワーキング技術を介してコンピューターシステムを接続する、家または小規模オフィス内のネットワークを含み得る。また、デバイスは、3Gまたは他のセルラーデータ接続を介してホームネットワークにアクセスすることができる電話などの公共ネットワークによって接続され得る。システムは、要求をブロードキャストし、ネットワーク情報のソース例えば、ルーターまたはDNSサーバーに照会することなどによって、コンピューティングデバイスを特定することができる。0040引き続きブロック320で、システムは、特定されたコンピューティングデバイス間の接続の1つまたは複数の組合せを生成する。例えば、システムは、利用可能なコンピューティングデバイスのそれぞれの順列を決定し、選択されたネットワークを介して宛先コンピューティングデバイスにピングを打つことによって、接続を行うことができるかどうかを決定することができる。いくつかのデバイスを複数のネットワーク例えば、冗長NIC、有線およびWi-Fiなどによって接続することができ、それぞれのネットワークは接続の別個の組合せを表す。0041引き続きブロック330で、システムは最初に生成された組合せを選択する。その後の反復において、システムは次の組合せを選択する。例示を簡単にするために連続して示されているが、当業者であれば、システムは複数の接続の組合せを並行してテストして、ベンチマーキングプロセスの速度を上げることができることが理解されよう。引き続きブロック340で、システムは、選択された組合せによって特定された送信元コンピューティングデバイスおよびターゲットコンピューティングデバイスに基づいて接続を確立する。接続は、伝送制御プロトコルTCPまたはテストデータを転送して接続のパフォーマンスを測定するための他の接続を含み得る。0042引き続きブロック350で、システムは、1つまたは複数の測定データ転送を送信して選択された接続のネットワーク機能を評価することによって、接続テストを実行する。測定される機能は、帯域幅、遅延、バッファーサイズ、フィーチャー例えば、ヘッダー圧縮、選択的肯定応答などのサポートなどを含み得る。引き続きブロック360で、システムは、転送を開始するコンピューティングデバイスに関係なく、特定されたコンピューティングデバイスのうちの任意の2つの間で転送を実行するのに選択すべき接続を決定するためにアクセス可能な接続優先テーブルにベンチマーキング結果を保存する。引き続き決定ブロック370で、さらなる組合せがある場合、システムはブロック330にループして、次の組合せを選択する。0043引き続きブロック380で、システムは、保存された接続優先テーブルを並べ替えて、より高速なネットワーク機能を有する接続に優先権を与える。例えば、システムは、帯域幅または帯域幅に応じて決定されたスコアおよび他のネットワークパラメータ毎にテーブルを並べ替えることができる。それぞれのコンピューティングデバイスは、転送が行われるときに使用すべきネットワーク優先テーブルをキャッシュして、転送用に選択すべき最速の接続を決定することができる。ブロック380の後、これらのステップは終了する。0044図4は、一実施形態における、データ転送システムの例示的な運用環境を示すブロック図である。この図は、指示クライアント410、送信元サーバー420、および宛先サーバー430を含む。指示クライアント410におけるユーザーは、送信元サーバー420から宛先サーバー430へのファイルの転送を要求することを含む、様々なアクションを実行することができる。これは、家、小規模オフィス、またはデータセンターさえも含む様々なネットワーク設定における一般的な操作である。あいにく、指示クライアント410は、低速ネットワーク440を介して送信元サーバー420に接続されている。ネットワーク440は、ワイヤレス接続、インターネットを介した仮想プライベートネットワークVPN接続、またはいくつかの他のタイプの比較的低速な接続であってもよい。0045現在、ファイル転送通信は2つのパーティ間で行われ、クライアントは最初に送信元サーバー420から指示クライアント410にデータを転送してから、指示クライアント410から宛先サーバー430にデータを転送せざるを得ない。あいにく、指示クライアント410はやはり、低速ネットワーク450を介して宛先サーバー430に接続されているので、データ転送の全体的な速度は非常に遅く、転送を完了させるには長い時間がかかる。本明細書において記載されるデータ転送システムを使用すると、指示クライアント410は、送信元サーバー420に、送信元サーバー420と宛先サーバー430の間の高速ネットワーク460を使用してデータを宛先サーバー430に直接転送するよう命令することができる。これは転送の速度をかなり上げることになり、クライアントは、転送が完了すると同時に切断するか、他のことを行うことさえもできる可能性がある。0046いくつかの実施形態では、データ転送システムにより、指示クライアントは、クライアントからのさらなる干渉なしに、データ転送を開始し、データ転送を完了させることができる。クライアントはネットワークから切断し、他のタスクを実行する例えば、ラップトップがローカルホームWi-Fiネットワークに接続されていた家を離れる結果として、ラップトップを切断することができる。クライアントは、後で戻り、送信元サーバーからの転送の結果を要求するか、ファイルまたは他のデータが宛先サーバーに存在するかどうかを直接調べることができる。これにより、クライアントは、操作の完了を待つことに拘束されることなく、いくつかの操作を指示することができる。0047いくつかの実施形態では、データ転送システムにより、クライアントが転送にデータ圧縮を使用することを要求するか、送信元サーバーが転送にデータ圧縮を使用すると決定することができる。ネットワークを介して転送するためのより小さいサイズのデータを生成するためにうまく圧縮するデータ圧縮は、データが冗長情報を含む場合に、ファイル転送の速度を上げるのに有益であり得る。また、データ圧縮は、多くの小さいデータ項目のディレクトリまたは他のソースがネットワークを介して転送されている場合に有益である。通常、それぞれのファイルは個別に転送され、それぞれの転送をセットアップし、実行するためのオーバーヘッドを含む。データを圧縮することによって、システムは1回の操作で転送することができる1つのファイルまたはデータ項目を生成することができる。次いで、宛先サーバーは圧縮されたデータを圧縮解除して、転送を完了させる。また、ディレクトリ全体をZIPまたはTARファイルに圧縮することは、送信元でファイルを列挙し、宛先でファイルを再作成するための多くの同期ディレクトリ操作を回避する。0048いくつかの実施形態では、データ転送システムは、宛先サーバーから指示クライアントに要求を送信して、指示クライアントの資格情報を確認する。宛先サーバーは、送信元サーバーが指示クライアントの代わりに働くことを許可するのに十分なほど、送信元サーバーを信頼しないことがある。したがって、宛先サーバーは、転送のセットアップ段階の間、指示クライアントに接続して、指示クライアントが転送を承認したことを保証するか、指示クライアントからセキュリティ資格情報を直接取得することができる。大半のデータは直接、送信元サーバーと宛先サーバーの間を流れるが、この場合などの小さいデータクエリの多くの場合に、依然として指示クライアントと連絡を取って、パフォーマンスに及ぼす目に見えて分かる影響なしに、操作をセットアップすることができる。0049上記から、データ転送システムの特定の実施形態について本明細書において例示の目的で記載してきたこと、ただし、本発明の趣旨および範囲を逸脱することなく、様々な修正を行うことができることを理解されたい。したがって、本発明は添付の特許請求の範囲によって限定される場合を除き、限定されない。"