为什么 Dropbox 比 FTP 速度更快?

为什么 Dropbox 比 FTP 速度更快?

我想知道为什么从技术上来说Dropbox比FTP快很多?它用了什么技术?

我不是在谈论不同的文件,而是在谈论在两种情况下传输新文件,Dropbox 要快得多。

我是说真的,速度非常快,对于我上传的文件来说,可能比 FTP 快 10 倍。稍后我会再次尝试更大的文件。

答案1

造成这种情况的原因有很多。FTP
协议远的从高效。

  1. FTP 传输至少需要两个连接(一个用于控制,一个用于数据),而 DropBox 可能只使用一个 HTTP 连接。此外,FTP 会话的数据连接可能从服务器打开到您的客户端,如果您进行了 NAT,则可能会失败,因此您的 FTP 客户端可能会尝试通过这种方式进行连接,如果失败,则尝试相反的方式。

  2. FTP 连接上有很多来回操作。要发送文件,客户端需要发送至少两个命令(一个用于打开数据连接,一个用于开始发送),并且每次都需要等待服务器响应,这会增加额外的延迟。除了每个文件的这两次往返之外,初始连接还需要多次命令响应往返 - 一次用于发送用户名,一次用于发送密码,至少一次用于设置传输参数(以确保服务器期望的是二进制数据,而不是 ASCII 数据)。客户端还可以发出几个额外的命令来从服务器获取有关自身的信息。Dropbox 可能只使用一个 HTTP 请求,最多两个(一个用于身份验证,一个用于发送数据)。

  3. 除此之外,根据您用于 FTP 传输的客户端(如果您未指定,最好编辑您的问题以包含该信息),它可能会在每次发送操作后断开连接并在下次重新连接。 DropBox 不太可能为了长轮询而保持连接打开一段时间,以便尽快对该客户端应下载的新数据做出反应,因此虽然它需要建立新的 HTTP 连接来发送文件,但不需要重新进行身份验证。

  4. DropBox 客户端在发送数据之前压缩数据(以提高速度并节省带宽),而 FTP 客户端则不会这样做,这种情况并非不可能。因此,即使对于较大的文件(除非它们是预压缩或加密的),DropBox 及其类似的实用程序也可能比基本的 FTP 传输快一些。

对于大文件,上述前三点与实际传输数据所花费的时间相比微不足道,但第四点可能仍然非常重要。对于小文件,FTP 协议增加的所有额外设置时间可能比实际发送数据所花费的时间长几倍。

答案2

正如其他人提到的,Dropbox 可以跳过未更改的文件部分。 但是也,如果服务器端已有副本,Dropbox 将跳过上传文件(您或其他任何人已上传的文件)。

因此,如果您尝试上传的文件与 Dropbox 已有的文件相同,则上传将被跳过(其他链接的机器可以开始从 Dropbox 服务器下载该文件)。如果您上传的文件与另一个已上传的文件几乎相同(不清楚已上传的文件是否必须是“您的”或可能来自任何用户),那么它只会发送文件的足够部分,以便在与已上传的文件组合时在服务器上重新创建它。

FTP 无法完成上述任何一项任务(它是一种简单的协议,用于发送和接收数据流,而无需参考远程端可用的任何其他数据)。同步齐奏可以“跳过对方已经拥有的块”,但通常仅限于比较同步层次结构中相同路径的文件内的块。Dropbox 似乎将这个想法扩展到文件集合(因此,如果您“上传”两个几乎相同的文件,大概它可以安排只发送一个文件加上足够的“差异”来重新创建另一个文件)。

答案3

我猜你的意思是文件传输速度更快。当你将文件保存到 Dropbox 文件夹中时,Dropbox 只会发送三角洲(或差异)数据到远程存储服务器。FTP(最有可能)逐字节发送文件(而不是只发送更改),这可能需要更长的时间通过网络传输。同样,在同步时远程服务器,本地客户端将只下载更改的内容。

LAN 同步功能还可以加快同步速度并减少所需的网络流量。

答案4

当您发送大量文件时,Dropbox 可能会更快。当我们谈论速度时,FTP 是您可以获得的最快速度,但对于每个文件,服务器和客户端计算机之间需要太多“对话”,因此 ftp 似乎更慢。如果您要上传包含数千个文件的开源应用程序,则压缩所有文件、通过 FTP 上传并在服务器上解压会更方便。

相关内容