在Internet上传输文件时,两者的优势(或限制)是什么?
(我知道这两种协议的安全形式。我想通过个人经验来了解在性能、可靠性、文件大小限制等方面的比较。)
发布于 2009-04-04 14:54:38
下面是这两个performance comparison中的一个。HTTP对小文件的请求-响应响应更快,但如果调整得当,FTP可能更适合大文件。FTP过去通常被认为更快。FTP要求除了TCP状态之外还需要一个控制通道和状态,但HTTP不需要。在FTP中,在数据开始传输之前有6次数据包传输,而在HTTP中只有4次。
我认为,与应用层协议之间的差异相比,适当调优的TCP层对速度的影响更大。Sun Blueprint Understanding Tuning TCP提供了详细信息。
下面是每个协议各自特征的另一个good comparison。
发布于 2009-04-04 15:10:24
许多防火墙丢弃不是到端口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无处不在的™)
发布于 2009-04-04 15:00:10
要注意的一点是,FTP可能会使用非标准端口,这会使穿越防火墙变得困难(特别是在使用SSL的情况下)。HTTP通常位于已知端口上,因此这很少出现问题。
如果您决定使用FTP,请务必阅读有关Active and Passive FTP的内容。
在性能方面,在一天结束的时候,它们都是直接从TCP连接上喷出文件,所以应该是差不多的。
https://stackoverflow.com/questions/717200
复制相似问题