Answers:
这是两者的性能比较。HTTP对小文件的请求响应更具响应性,但如果调整得当,FTP对于大文件可能会更好。FTP过去通常被认为更快。FTP需要一个控制通道,并且除了TCP状态外还需要维护状态,而HTTP则不需要。在FTP中开始传输数据之前,有6个数据包传输,而在HTTP中只有4个数据包传输。
我认为,正确调整的TCP层比应用程序层协议之间的差异对速度的影响更大。《了解调整TCP的Sun蓝图》提供了详细信息。
这是每个协议各个特征的另一个很好的比较。
我刚刚对FTP和HTTP上的文件传输进行了基准测试:
结果:
fdm
):1分钟因此,基本上是在“现实生活”情况下:
1)下载一个大文件时,HTTP比FTP更快。
2)HTTP可以使用并行块下载,这取决于网络条件,使其比FTP快6倍。
许多防火墙会丢弃不在端口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™)