![结合两个互联网连接进行下载](https://linux22.com/image/1313039/%E7%BB%93%E5%90%88%E4%B8%A4%E4%B8%AA%E4%BA%92%E8%81%94%E7%BD%91%E8%BF%9E%E6%8E%A5%E8%BF%9B%E8%A1%8C%E4%B8%8B%E8%BD%BD.png)
我在局域网上有两台计算机。第一台计算机的速度为 128Mbs,第二台计算机的互联网连接速度为 256Mbs。我尝试下载一个 250MB 的文件。如果第一台计算机下载大约需要 48 000 秒,而第二台计算机下载大约需要 24 000 秒。有没有办法让第一台计算机下载文件的一部分,而第二台计算机下载另一部分?
答案1
如果您有两台计算机,每台计算机都有自己独立的互联网连接(即两个 ISP 连接)而不是一个共享连接,那么理论上,通过使用支持恢复中断下载的 FTP 服务器之类的东西,每台计算机可以同时下载一半的文件。
但是我不知道有任何软件可以做到这一点(尽管也许可以使用 wget 或 curl 来执行适当的偏移量获取)
如果瓶颈是 ftp 服务器(或等效协议服务器),那么两个连接就无济于事了。
更新:我想到的是
计算机 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
此解决方案假设两台计算机在 LAN 上联网:
- 首先运行代理人在其中一台计算机上,任何 HTTP 代理都可以。
- 得到网络运输
Download Manager
支持Multiple Proxies mode
并在另一台计算机上安装相同的软件 。“多代理模式”允许您为每个工作线程分配不同的代理,以打破某些站点限制,例如每个 IP 只有一个连接。
- 因此,对于您在
Net Transport
计算机上下载的每个文件,请在第一台计算机上添加代理作为单独的下载线程。 - 下载现在将同时利用两台计算机的互联网连接的带宽。
編輯:
正如您在屏幕截图右下方的“日志”窗格中看到的,each
下载已完成concurrently in multiple threads
(与下载服务器分开连接)。此工具允许您指定每个线程是否使用代理。因此,您可以设置一些线程以使用代理计算机上的带宽。
答案3
您要执行的操作的术语称为“绑定连接”。有几家公司(例如 Mushroom Networks)创建了具有多个 WAN 端口的路由器,可自动对连接进行负载平衡。更便宜的选择是将两个连接插入一台机器,并在该机器上运行您自己的网络代理/负载平衡软件。