比较HTTP和FTP传输文件

通过互联网传输文件有什么优势(或局限性)?

(我知道两种协议的安全forms,我希望通过个人经验来比较性能,可靠性,文件大小限制等)

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

我认为一个适当调整的TCP层对速度的影响要比应用层协议之间的差异更大。 了解调整TCP的Sun Blueprint详细信息。

下面再详细比较每个协议的个性特征。

许多防火墙丢弃不在端口80或443(http和https)的出站连接。 有些甚至连接到那些不是HTTP(S)的端口。 FTP可能被允许也可能不被允许,而不是说主动/ PASV模式。

此外,HTTP / 1.1允许更好的部分请求(“仅从字节123456发送到文件末尾”),条件请求和caching(“只有在内容改变/如果上次修改date改变时才发送”)和内容压缩(gzip的)。

通过代理使用HTTP更容易。

从我的轶事证据来看,HTTP比较容易通过丢失/缓慢/片断的连接进行工作。 例如,在(重新)启动传输之前不需要(重新)build立login会话。

OTOH,HTTP是无状态的,所以你必须做authentication,并build立一个“谁做什么”的踪迹。

我注意到速度的唯一区别是传输大量的小文件:HTTP与stream水线更快(减less往返,特别是高延迟networking)。

请注意, HTTP / 2提供了更多的优化,而FTP协议几十年来一直没有任何更新(甚至FTP的扩展对用户的吸引力也微乎其微)。 所以,除非你通过时间机器传输文件,HTTP似乎已经赢了。

(切线:有些协议更适合于文件传输,比如rsync或BitTorrent,但那些协议没有那么多,而HTTP是Everywhere™)

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

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

就性能而言,在一天结束时,它们都是直接向TCP连接发送文件,所以应该大致相同。

我只是通过FTP和HTTP对文件传输进行基准testing:

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

结果:

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

所以,基本上在“现实生活”的情况下:

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

2)HTTP可以使用并行块下载,这使得它比FTP快6倍,具体取决于networking条件。

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