比较HTTP和FTP以传输文件


125

通过Internet传输文件时,一个相对于另一个有什么优点(或限制)?

(我知道这两种协议都是安全的形式。我想通过个人经验来比较性能,可靠性,文件大小限制等。)

Answers:


99

这是两者的性能比较。HTTP对小文件的请求响应更具响应性,但如果调整得当,FTP对于大文件可能会更好。FTP过去通常被认为更快。FTP需要一个控制通道,并且除了TCP状态外还需要维护状态,而HTTP则不需要。在FTP中开始传输数据之前,有6个数据包传输,而在HTTP中只有4个数据包传输。

我认为,正确调整的TCP层比应用程序层协议之间的差异对速度的影响更大。《了解调整TCP的Sun蓝图》提供了详细信息。

这是每个协议各个特征的另一个很好的比较


22
+1好答案。我认为FTP的时代已经过去和过去了,它不再具有任何意义。这也是一个绝对的来实现。
skaffman's

7
“小”或“大”文件意味着什么大小?
Urbycoz 2012年

性能比较链接指向从执行P-HTTP,T / TCP,和S-TCB预期收益的分析。没有在哪里提到FTP。此外,正确调整的链接也断开了。
三叉戟

@Trisped您是否阅读了性能比较链接?有12个关于FTP的参考,第一节说“ HTTP协议最初是为了减少FTP的低效率而开发的……”,然后继续进行说明。我还更新了“ Understanding Tuning TCP”链接……看起来Oracle放弃了所有旧的Sun Blueprints白皮书。
John Ellinwood

2
1996年8月16日 ...真的吗?即使在您的2009年答案中,您也不能指望这可以代表当前的状况。-1
user541686 '18

29

我刚刚对FTP和HTTP上的文件传输进行了基准测试:

  • 通过两个非常好的服务器连接
  • 使用相同的1GB .zip文件
  • 在相同的网络条件下(一个接一个地测试)

结果:

  • 使用FTP:6分钟
  • 使用HTTP:4分钟
  • 使用并发的http下载软件(fdm):1分钟

因此,基本上是在“现实生活”情况下:

1)下载一个大文件时,HTTP比FTP更快。

2)HTTP可以使用并行块下载,这取决于网络条件,使其比FTP快6倍。


18
这似乎很有趣。
spenibus

5
他提供的数字(来自研究的事实)比到目前为止的其他答案要少。
user1133275

时间是否可以重现,至少近似?
masterxilo

几天前,我尝试使用http下载90MB文件,但2MB的网络故障。但是使用ftp(相同的服务器,相同的文件,通过移动热点的相同网络),下载成功。我不知道为什么
Rahmat Ihsan

1
由于开销较低,因此ftp对于单个文件更快。如果您的测试得到不同的答案,请尝试其他客户端(或者不太可能使用其他服务器)。http的下载速度不能超过最大比特率,并且用于尝试超过该最大比特率的任何并行选项都将引入协议开销。VS. 可以通过FTP以线速连续传输多文件,而没有协议开销。FTP的并行选项使用多个TCP连接,这些连接通常会超过单点连接(例如SMB3.1 vSMB2.1、3.x可以使用多连接)。
阿斯塔拉

27

许多防火墙会丢弃不在端口80或443(http&https)上的出站连接。有些甚至断开与非HTTP(S)端口的连接。FTP可能允许也可能不允许,更不用说主动/ PASV模式了。

此外,HTTP / 1.1允许更好的部分请求(“仅从字节123456发送到文件末尾”),条件请求和缓存(“仅在内容更改/上次修改日期更改时发送”)和内容压缩(gzip)。

通过代理使用HTTP更加容易。

从我的轶事证据来看,HTTP可以更轻松地处理掉落/缓慢/不稳定的连接。例如,在(重新)启动传输之前不需要(重新)建立登录会话。

OTOH,HTTP是无状态的,因此您必须进行身份验证并自己构建“谁在什么时候做了什么”的踪迹。

我注意到的唯一速度差异是传输许多小文件:具有流水线的HTTP速度更快(减少了往返时间,尤其是在高延迟网络上很明显)。

请注意,HTTP / 2提供了更多的优化,而FTP协议几十年来未见任何更新(甚至FTP的扩展也被用户所接受)。因此,除非您通过时间机器传输文件,否则HTTP似乎已经成功。

(可能是:有一些协议更适合文件传输,例如rsync或BitTorrent,但是这些协议没有太多的共同点,而HTTP是Everywhere™)


13

一个考虑因素是FTP可以使用非标准端口,这会使通过防火墙变得困难(尤其是在使用SSL的情况下)。HTTP通常在已知端口上,因此这很少出现问题。

如果您决定使用FTP,请确保您已阅读主动和被动FTP

在性能方面,归根结底,他们俩都直接通过TCP连接发送文件,因此应该差不多。


-5

两者都使用TCP作为传输协议,但是HTTP使用持久连接,这使TCP的性能更好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.