web-dev-qa-db-ja.com

2つのインターネット接続を組み合わせてダウンロードする

LAN上に2台のコンピューターがあります。 128Mbsの速度の最初のコンピューターとインターネット接続速度の2番目のコンピューターは256Mbsです。 250MBのファイルをダウンロードしてみました。最初のコンピューターが約48000秒の長さをダウンロードし、2番目のコンピューターが約24000秒かかると思われる場合。最初のコンピューターがファイルの一部をダウンロードし、2番目のコンピューターが他の部分をダウンロードする方法はありますか?

3
M R Jafari

このソリューションは、2台のコンピューターがLAN上でネットワーク化されていることを前提としています。

  1. 初心者の場合、いずれかのコンピューターで proxy を実行すると、どのHTTPプロキシでも実行できます。
  2. 取得 ネットトランスポートDownload ManagerをサポートするMultiple Proxies modeを取得し、他のコンピューターに同じものをインストールします。

    「マルチプロキシモード」を使用すると、すべての作業スレッドに異なるプロキシを割り当てて、IPごとに1つの接続のみなど、特定のサイト制限を破ることができます。

  3. したがって、Net Transportコンピューターにダウンロードするすべてのファイルについて、最初のコンピューターにプロキシを個別のダウンロードスレッドとして追加します。
  4. これで、ダウンロードは両方のコンピューターのインターネット接続からの帯域幅を同時に利用します。

編集済み:

スクリーンショットの右下のペインの「ログ」に表示されているように、eachダウンロードはconcurrently in multiple threads(ダウンロードサーバーとの個別の接続)で実行できます。このツールを使用すると、各スレッドがプロキシを使用するかどうかを指定できます。したがって、uは、プロキシコンピューターの帯域幅を使用するようにいくつかのスレッドを設定できます。

Net Transport

2
user1055604

2台のコンピューターがあり、それぞれが1つの共有接続ではなくインターネットへの独自の独立した接続(つまり2つのISP接続)を持っている場合、理論的には、中断されたダウンロードの再開をサポートするFTPサーバーのようなものを使用することにより、各コンピューターは同時に半分をダウンロードできます。ファイル。

ただし、これを実行するソフトウェアはわかりません(ただし、適切なオフセットフェッチを実行するためにwgetまたはcurlを作成できる可能性があります)

ボトルネックがftpサーバー(または同等のプロトコルサーバー)である場合、2つの接続があると役に立ちません。


更新:私が考えていたのは

コンピューター1

      dd if=/dev/zero bs=10000 count=5 > name-of-big.file
      wget -continue http://www.example.com/name-of-big.file

コンピューター2(同時に別のインターネット接続経由)

      wget http://www.example.com/name-of-big.file

コンピューター1でスキップされたチャンクのサイズに達したら、これを停止します。パイプを壊すddステートメントに出力をパイプすることで、wgetを停止できると思いましたが、これは機能しないことがわかりました。

      wget -O - $URL | dd bs=10000 count=5

Ddがパイプを壊すと、Wgetは停止しますが、結果のファイルは適切なサイズではありません。したがって、実行させ、手動で停止し、必要な部分を切り取ります(ddを使用するなど)

最後に、コンピューター1でファイルのゼロ以外の部分を切り刻んで(たとえば、ddを使用して)コンピューター2にコピーし、それらの部分をまとめることができます。


これは私には厄介なようです、私はむしろ分散HTTPクライアントを見つけたり書いたりしたいです:-)

2
RedGrittyBrick

あなたがやろうとしていることの用語は「結合接続」と呼ばれます。 Mushroom Networksなど、接続を自動的に負荷分散する複数のWANポートを備えたルーターを作成する会社がいくつかあります。より安価なオプションは、両方の接続を1台のマシンに接続して実行することです。ネットワーク用の独自のプロキシ/負荷分散ソフトウェア。

1
Peter Hanneman