代码之家  ›  专栏  ›  技术社区  ›  Mystic

比较传输文件的HTTP和FTP

  •  108
  • Mystic  · 技术社区  · 15 年前

    在Internet上传输文件时,两者的优点(或局限性)是什么?

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

    5 回复  |  直到 8 年前
        1
  •  93
  •   murrekatt    9 年前

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

    我认为一个经过适当调整的TCP层对速度的影响要比应用层协议之间的差异大。太阳蓝图 Understanding Tuning TCP 有细节。

    这是另一个 good comparison 每个协议的个别特征。

        2
  •  28
  •   SuperBiasedMan Jayesh Kalkani    9 年前

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

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

    结果是:

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

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

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

    2) 根据网络情况,HTTP可以使用并行块下载,比FTP快6倍。

        3
  •  25
  •   Piskvor left the building Rohit Kumar    9 年前

    许多防火墙会丢弃不到端口80或443(http&http S)的出站连接;有些防火墙甚至会丢弃不到http的端口的连接。FTP可能允许也可能不允许,更不用说active/PASV模式了。

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

    通过代理使用HTTP要容易得多。

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

    OTOH,HTTP是无状态的,所以您必须进行身份验证,并建立一个“谁在什么时候做了什么”的跟踪。

    我注意到的速度上的唯一区别是传输大量小文件:带有流水线的HTTP速度更快(减少了往返,特别是在高延迟网络上)。

    请注意 HTTP/2 提供了更多的优化,而FTP协议已经有几十年没有更新了(甚至FTP的扩展也没有被用户接受)。所以,除非你是通过时间机器传输文件,否则HTTP似乎赢了。

    (切向:有些协议更适合文件传输,例如 rsync 或者BitTorrent,但它们没有那么多的思想共享,而HTTP无处不在)

        4
  •  12
  •   brian-brazil    15 年前

    一个需要考虑的问题是,FTP可以使用非标准端口,这会使防火墙难以通过(特别是在使用SSL的情况下)。HTTP通常位于已知端口上,因此这很少是问题。

    如果你决定使用FTP,一定要阅读 Active and Passive FTP .

    在性能方面,在一天结束时,它们都会直接通过TCP连接发送文件,所以应该差不多相同。

        5
  •  -4
  •   Unihedron    10 年前

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