通过Internet传输文件有哪些优点(或限制)?
(我知道两种协议的安全形式.我希望通过个人经验在性能,可靠性,文件大小限制等方面进行比较.)
这是两者的性能比较.HTTP对小文件的请求 - 响应响应更快,但如果正确调整,FTP对于大文件可能更好.过去,FTP通常被认为更快.FTP需要一个控制通道,并且除了TCP状态之外还要维护状态,但HTTP不需要.在数据开始在FTP中传输之前有6个数据包传输,但在HTTP中只有4个.
我认为适当调整的TCP层对速度的影响要大于应用层协议之间的差异.Sun Blueprint 了解Tuning TCP有详细信息.
这是对每个协议的个别特征的另一个很好的比较.
我只是通过FTP和HTTP对文件传输进行基准测试:
超过两个非常好的服务器连接
使用相同的1GB .zip文件
在相同的网络条件下(一个接一个地测试)
结果:
使用FTP:6分钟
使用HTTP:4分钟
使用并发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™)
一个考虑因素是FTP可以使用非标准端口,这可以使防火墙变得困难(特别是如果您使用SSL).HTTP通常位于已知端口上,因此这很少成为问题.
如果您决定使用FTP,请务必阅读有关主动和被动FTP的信息.
在性能方面,在一天结束时,他们都是直接沿着TCP连接喷出文件,所以应该大致相同.