FTP、FTPS、SFTP 和 SCP 在传输速率方面有何不同,如何通过测试对它们进行比较?
答案1
如果您拥有快速的广域网,您会发现sftp
和的scp
速度大致相同,速度很慢。它们都存在底层 openssh 的性能问题。对于现代硬件,这不是由于加密开销,而是由于 openssh 实现存在问题 - 它实现了自己的内部窗口机制,在快速连接下会崩溃。
这些问题在长距离(更高延迟)连接上变得更加明显,但我即使在局域网上也遇到过速度缓慢的情况。
这些都有很好的记录,并且有补丁可以解决这个问题。修补连接的任一端都可以有所帮助;理想情况下,你应该修补两端。有关更多信息和补丁,请参阅高性能 SSH在匹兹堡超级计算机中心。
顺便说一句,一旦窗口问题得到解决,加密开销也可能成为一个问题。补丁也对此进行了修复。
同时,你会发现它ftp
非常不安全;它以纯文本形式发送密码。
ftps
我认为将 ftp 协议包装在 SSL 中。它可能比未修补的 SFTP/SCP 更快。
最后一点:根据我的经验,WinSCP 客户端(至少有时)非常慢。我不知道为什么,但根据他们的常见问题解答,我不是唯一遇到这个问题的人。因此,如果您从 Windows 进行 scp,并且它似乎很慢,请尝试使用其他客户端。即使使用未打补丁的 openssh 服务器,您也可以使用其他客户端做得更好。不幸的是,除了pscp
Putty 之外,我不确定哪些是好的客户端。
答案2
一般而言,所有协议的性能都差不多。您更有可能受到网络或磁盘速度的限制,而不是协议的限制。
旧版本的 OpenSSH (SFTP/SCP) 使用固定窗口大小,这会限制高延迟网络(例如跨大西洋)的速度。有一套补丁程序可以修复此问题,称为 HPN(高性能网络),它包含在大多数现代 OpenSSH 安装中。
如果您遇到千兆或更快的 LAN 链接和较慢的 CPU 等情况,那么 SFTP/SCP 可能会遇到瓶颈。您将能够分辨出来,因为 ssh/scp/sftp 进程将使用发送或接收主机上 100% 的 CPU。如果您使用的是较新版本的 OpenSSH (6.4+),您可以启用线程版本的 AES 密码,该密码将能够使用超过 1 个核心来处理加密,并且不太可能受到 CPU 而不是磁盘或网络带宽的限制。
如果您控制发送方和接收方,OpenSSH 6+ 还有一个可选的“NONECIPHER”模式。该模式使用常规加密/密钥等登录远程计算机,但随后切换到未加密的连接以进行实际文件复制。这将消除 CPU 开销。NONECIPHER 内置了安全措施,可防止您获取未加密的 shell。
最终,协议不应该成为速度的限制,尽管旧版本的 ssh 确实存在高延迟链接的问题。
答案3
根据加密开销,我认为普通 FTP 的性能可能比其他协议略好,但可能微不足道。我会首先使用提供所需安全性的协议,然后再考虑吞吐量。
话虽如此,您必须设置测试才能找到真实数字。以上所有内容仅代表我的观点。如果您在本地测试性能,请在您的网络上设置服务器。如果最终使用是通过互联网,请从外部主机进行测试。
答案4
一如既往,谷歌有答案,
FTP 与 SFTP 与 FTPS
这表明 FTP > FTPS > SFTP
在其他人的测试中,FTP 似乎也比 SCP 更快(http://www.lysesoft.com/support/forums/viewtopic.php?f=5&t=542)但我建议你亲自尝试一下。
因此,只需在网络上的任何随机框上设置 SCP 和 FTP,然后运行典型的文件传输,看看两者需要多长时间