18

ダウンロードのすべてのリクエストには、有効なログイン (http 以外) が必要であり、ダウンロードごとにトランザクション チケットを生成します。ダウンロード リンクの 1 つにアクセスしてトランザクションを「再生」しようとすると、HTTP コードを使用して転送され、新しいトランザクション チケットが取得されます。これは、大多数のユーザーにとって問題なく機能します。ただし、単純にトランザクション チケットを数回再生しようとするダウンロード アクセラレータを使用している小さなサブセットがあります。

そのため、ダウンロード アクセラレータをサポートする必要があるかどうか、またはサポートできるかどうかを判断するために、それらがどのように機能するかを理解しようとしています。

静的ファイルを配信する Web サーバーへの 2 番目、3 番目、または 4 番目の同時接続により、ダウンロード プロセスがどのように高速化されるのでしょうか?

アクセラレーター プログラムは何をしますか?

4

7 に答える 7

19

Download Accelerator のより包括的な概要については、wikipediaを参照してください。

加速は多面的です

初め

管理された/高速化されたダウンロードの実質的な利点は、問題のツールが転送された開始/停止オフセットを記憶し、「部分的」および「範囲」ヘッダーを使用してファイルのすべてではなく一部を要求することです。

これは、トランザクションの途中で何かが停止した場合 (つまり、TCP タイムアウト)、中断したところから再接続するだけで、最初からやり直す必要がないことを意味します。

したがって、断続的な接続がある場合、総転送時間は大幅に短縮されます。

2番

ダウンロードアクセラレータは、同じ開始-範囲-停止メカニズムを使用して、単一の転送を同じサイズのいくつかの小さなセグメントに分割し、それらを並行して実行することを好みます。これにより、低速ネットワークでの転送時間が大幅に改善されます。

帯域幅遅延積と呼ばれるこの厄介なものがあり、どちらかの端の TCP バッファのサイズが ping 時間と組み合わせて何らかの計算を行い、実際に経験された速度を取得します。多くのメガビット/秒のすべての中間接続があります。

ただし、この制限は「接続ごと」のように見えるため、1 つのサーバーへの複数の TCP 接続は、待ち時間の長い ping 時間のパフォーマンスへの影響を軽減するのに役立ちます。

したがって、近くに住んでいる人はセグメント化された転送を行う必要はあまりありませんが、遠く離れた場所に住んでいる人は、セグメント化に夢中になることで恩恵を受ける可能性が高くなります.

第三に

場合によっては、同じリソースを提供する複数のサーバーを見つけることができます。単一の DNS アドレスが複数の IP アドレスにラウンドロビンする場合や、サーバーが何らかのミラー ネットワークの一部である場合があります。また、ダウンロード マネージャー/アクセラレータはこれを検出し、セグメント化された転送技術を複数のサーバーに適用して、ダウンローダーがより多くの帯域幅をまとめて配信できるようにします。

サポート

最初の種類の加速をサポートすることは、サポートの「最小限」として私が個人的に提案するものです。主な理由は、ユーザーの生活を楽にし、ユーザーが同じコンテンツを繰り返し取得する必要がないため、提供する必要がある集約データ転送の量を減らすためです。

そして、これを容易にするために、転送した量を計算し、チケットが「終了」したように見えるまで (チケットを使用した最初の IP にトラフィックをバインドしている間)、または指定された「合理的な」時間が経過するまで、チケットを期限切れにしないことをお勧めします。ダウンロードはパスしました。つまり、新しいチケットの取得を要求する前に猶予期間を与えます。

2 番目と 3 番目をサポートするとボーナス ポイントが得られます。ユーザーは通常、少なくとも 2 番目は望んでいます。これは主に、国際的な顧客が ping 時間が長いという理由だけで 2 番目の顧客として扱われることを好まないためであり、客観的により多くを消費しないためです。重要なあらゆる意味での帯域幅。最悪の場合、総スループットがサービスの動作にとって望ましくないものになる可能性があります。

1 枚のチケットからの同時転送数を制限するだけで、2 番目の利点を許可せずに、最初の種類の利点を提供するのはかなり簡単です。

于 2008-09-18T15:43:51.407 に答える
1

多くのサーバーが接続間で帯域幅を制限または均等に分散するという考えだと思います。複数の接続を持つことで、そのシステムをだまし、帯域幅の「公平な」シェア以上のものを手に入れることになります。

于 2008-09-18T15:39:59.260 に答える
1

リトルの法則がすべてです。具体的には、Webサーバーへの各ストリームで一定量のTCP遅延が発生するため、大量のデータしか伝送されません。TCPウィンドウサイズの増加や選択的ACKの実装などのトリックは役立ちますが、実装が不十分であり、通常、解決するよりも多くの問題を引き起こします。

複数のストリームがあるということは、グローバルスループットが全体的に増加するため、各ストリームで見られる遅延の重要性が低くなることを意味します。

シングルスレッドを使用する場合でもダウンロードアクセラレータのもう1つの重要な利点は、ダウンロードツールに組み込まれているWebブラウザを使用するよりも一般的に優れていることです。たとえば、Webブラウザが停止することを決定した場合、ダウンロードツールは続行されます。また、ダウンロードツールは、組み込みのブラウザではサポートされていない一時停止/再開などの機能をサポートしている場合があります。

于 2008-09-18T15:40:17.670 に答える
1

My understanding is that one method download accelerators use is by opening many parallel TCP connections - each TCP connection can only go so fast, and is often limited on the server side.

TCP is implemented such that if a timeout occurs, the timeout period is increased. This is very effective at preventing network overloads, at the cost of speed on individual TCP connections.

Download accelerators can get around this by opening dozens of TCP connections and dropping the ones that slow to below a certain threshold, then opening new ones to replace the slow connections.

While effective for a single user, I believe it is bad etiquette in general.

You're seeing the download accelerator trying to re-authenticate using the same transaction ticket - I'd recommend ignoring these requests.

于 2008-09-18T16:26:12.193 に答える
0

差出人:http ://askville.amazon.com/download-accelerator-protocol-work-advantages-benefits-application-area-scope-plz-suggest-URLs/AnswerViewer.do?requestId = 9337813

引用:ダウンロードを加速する最も一般的な方法は、parllelダウンロードを開くことです。多くのサーバーは1つの接続の帯域幅を制限しているため、より多くの並列を開くとレートが高くなります。これは、ダウンロードを開始するオフセットを指定することで機能します。これは、HTTPとFTPで同様にサポートされています。

もちろん、この加速方法は非常に「非社会的」です。帯域幅の制限は、より多くのクライアントにサービスを提供できるように実装されているため、この手法を使用すると、ダウンロードできるピアの最大数が減少します。これが、多くのサーバーが並列接続(IPで認識)の数を制限している理由です。たとえば、多くのFTPサーバーがこれを行っているため、ファイルをダウンロードしてブラウザーを使用してブラウジングを続行しようとすると問題が発生します。技術的には、これらは2つの並列接続です。

ダウンロードレートを上げる別の手法は、ピアツーピアネットワークです。この場合、アップロード側の非同期DSLによって制限されるなど、さまざまなソースがダウンロードに使用されます。

于 2008-09-18T15:39:59.213 に答える
0

ほとんどのダウンロード「アクセラレータ」は、実際には何も高速化しません。彼らが得意としているのは、ネットワークトラフィックを混雑させ、サーバーを攻撃し、これまで見てきたようにカスタムスクリプトを壊すことです。基本的には、1つのリクエストを作成してファイルを最初から最後までダウンロードするのではなく、4つのリクエストを作成します。最初のリクエストは0〜25%、2番目のリクエストは25〜50%というように続きます。そしてそれはそれらすべてを同時に作ります。これが役立つ唯一の特定のケースは、ISPまたはファイアウォールが、個々のダウンロード速度が合計ダウンロード速度よりも遅くなるように何らかのトラフィックシェーピングを行う場合です。

個人的には、問題が発生した場合は、ダウンロードアクセラレータがサポートされていないことを通知し、ユーザーに通常どおりにダウンロードするか、単一のスレッドのみを使用してダウンロードしてもらいます。

于 2008-09-18T15:40:41.850 に答える
0

一般的にはそうではありません。

質問の内容に答えるために、サーバーは接続ごとにダウンロードの速度を制限していると想定しているため、複数のチャンクを同時にダウンロードすると、ユーザーは最後に使用可能な帯域幅を最大限に活用できます。

于 2008-09-18T15:41:58.820 に答える