比FTP更快的文件传输方法

8

FTP是一种纯TCP连接协议,因此在考虑TCP文件传输选项时,我认为它是“尽可能快”的。

然而,还有一些其他不运行在TCP上的产品 - 例如商业产品BI.DAN-GUNfaspFileCatalyst。后者指出了纯TCP的问题,可以在维基百科上阅读更多信息,例如从网络拥塞开始。

还有哪些替代方案?特别是开源的?另外,人们可能认为这应该是某种RFC - 一种特定于大型文件传输的标准协议,可能在UDP上运行。有人知道这样的协议或倡议吗?(Google的SPDY很有趣,但并没有直接解决快速大文件传输的问题)

4个回答

9
为什么你认为使用TCP会使传输变慢?TCP通常能够利用所有可用的带宽。相比之下,使用UDP不太可能更快。实际上,如果你尝试使用可靠的基于UDP的文件传输,你很可能最终实现的是一个劣质的TCP替代品——因为你必须自己实现可靠性。
FTP存在问题的地方在于它为每个传输的文件执行多个同步请求-响应命令,并为每个文件打开一个新的数据连接。当传输许多较小的文件时,这会导致非常低效的传输,因为大部分时间都花费在等待请求/响应和建立数据连接上,而不是实际传输数据。
解决此问题的简单方法是将文件/文件夹打包成存档文件。当然,你可以只是制作存档文件,使用FTP或类似工具发送它,并在另一端解压缩它,但制作和解压缩所需的时间可能无法接受。你可以通过在线打包和解压缩来避免这种延迟。我不知道有任何集成此类在线打包/解压缩功能的软件。不过,你可以在管道中简单地使用nc和tar程序(Linux上,Windows上使用Cygwin)。

接收器上的第一次运行:

nc -l -p 7000 | tar x -C <destination_folder>

这将使接收器等待在端口号7000上的连接。然后在发送方运行:
cd /some/folder
tar c ./* | nc -q0 <ip_address_of_receiver>:7000

这将使发送方连接接收方,开始传输。发送方将创建tar档案,并将其发送到接收方,同时接收方将进行解压缩。如果需要,您可以通过让接收方连接到发送方来颠倒发送方和接收方的角色。
这种在线tar方法没有FTP的两个性能问题;它不执行任何请求-响应命令,并且仅使用单个TCP连接。
但是,请注意,这并不安全;在我们的发送方之前,任何人都可以连接到接收方,并向他发送自己的tar档案。如果这是一个问题,可以使用VPN,结合适当的防火墙规则。

编辑:你提到TCP性能问题中的数据包丢失,这是一个重要问题,如果FileCatalyst页面所说的是真的。确实,TCP在高数据包丢失链路上可能表现不佳。这是因为TCP通常会对数据包丢失做出激烈反应,因为它认为丢包是由于拥塞引起的;请参见Additive_increase/multiplicative_decrease。我不知道是否有任何免费/开源的文件传输程序会尝试使用自定义协议来克服这个问题。但是,您可以尝试不同的TCP拥塞避免算法。特别是,请尝试Vegas,它不使用数据包丢失作为减少传输速率的信号。


1
你有看我包含的链接吗?如果你要传输一个500GB的文件,FTP的控制连接是微不足道的,你最终得到的是原始的TCP性能。这并不一定针对尽可能快速地传输大文件进行调整 - 特别是在任何数据包丢失的情况下。我包含的链接中的产品自己实现了可靠性,显然。 - stolsvik
@stolsvik,您没有提到高丢失链接,据我所知在互联网上并不常见。我已经添加了相关内容。 - Ambroz Bizjak
1
实际上,TCP协议并不是为大量单向传输而设计的。当然,它可以被修改以实现这一点,但TCP需要以一种导致短暂停顿的方式返回数据包,因此在选择缓冲区大小和窗口大小时需要进行平衡。此外,实现可能并不总是按照各种可选设置的真正意图执行。 - user334911

7
有许多开源项目试图通过UDP解决文件传输问题。请查看UFTP、Tsunami或UDT,每个项目处于不同的开发阶段。 取决于您正在使用的带宽、延迟和丢包率,每个项目将产生不同的结果。有一篇博客文章试图比较这三个项目,链接在这里http://www.filecatalyst.com/open-source-fast-file-transfers

这是一个较旧的答案,各种开源文件传输加速项目的比较链接已经更改,以下是新链接:https://www2.filecatalyst.com/l/14012/2014-10-21/3qx4lm/14012/107394/FileCatalyst_Open_source_file_transfer.pdf - John Tkaczewski

2

虽然不是开源的,但Aspera的传输速度值得一试,并且不受数据包丢失或网络延迟的影响。它还使用了一个名为fasp的专有协议。您可以在此处查看图表


1
其他非开源的软件包括Signiant和Smartjog。它们通常与Aspera在娱乐(电影制作)行业竞争。 - satoc

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接