什么是 FTP(文件传输协议)?

更新于 2026-01-27

FTP(文件传输协议):定义与详解

FTP(File Transfer Protocol,文件传输协议)是一种标准的网络协议,用于在基于 TCP 的网络(例如互联网)上将文件从一台主机传输到另一台主机。

FTP 通过建立两个连接来实现通信双方计算机之间的数据交换。其中一个连接专门用于传输命令和响应,另一个通道则负责实际的数据传输。在一次 FTP 传输过程中,通信中的计算机、服务器或代理服务器会使用四种命令,分别是:“发送”(send)、“获取”(get)、“更改目录”(change directory)和“传输”(transfer)。

在文件传输过程中,FTP 支持三种不同的传输模式:块模式(block)、流模式(stream)和压缩模式(compressed)。

  • 流模式允许 FTP 将信息作为连续的数据流进行处理,数据之间没有任何边界;
  • 块模式将数据划分为若干个独立的块;
  • 压缩模式则使用一种名为 Lempel-Ziv 的算法对数据进行压缩后再传输。

FTP 有什么用途?

现代企业和个人之所以需要 FTP,主要原因在于它能够高效地传输大体积文件。如果只是发送一个较小的文件(例如 Word 文档),大多数传输方式都能胜任;但若要一次性发送数百 GB 的数据,FTP 依然可以保证平稳、可靠的传输。

这种批量传输大量数据的能力反过来提升了工作效率。FTP 允许用户同时发送多个文件——只需选中多个文件并一次性发起传输即可。如果没有 FTP 服务,用户可能不得不逐个发送文件,浪费本可用于其他任务的时间。

举个例子:如果你需要将总部的一大批重要文档传送到卫星办公室,但五分钟后就要参加一个重要会议,你可以使用 FTP 一次性发起全部文件的传输。即使整个过程耗时 15 分钟,FTP 也能在后台自动完成,让你安心参加会议。


FTP 有哪些类型?

虽然 FTP 可用于完成多种任务,但主要可分为以下三类:

普通 FTP(FTP Plain)

普通 FTP 是指未加密的标准 FTP 协议。默认使用 21 端口,并且大多数网页浏览器都支持该协议。

FTPS(FTP Secure)

FTPS 指的是“安全 FTP”或“基于安全套接层(SSL)的 FTP”。这种 FTP 服务器使用 SSL 加密技术,与传统 FTP 的主要区别在于其安全性。FTPS 是最早出现的加密型 FTP 协议。

FTPES(Explicit FTP over TLS/SSL)

FTPES 中的 “E” 代表 “显式”(explicit),全称为“基于显式传输层安全(TLS)/SSL 的文件传输协议”。这种 FTP 类型初始连接方式与普通 FTP 相同(使用 21 端口),但随后通过特定命令将连接升级为 TLS/SSL 加密传输。由于其与防火墙的兼容性较好,有些人更倾向于使用 FTPES 而非 FTPS。


如何使用 FTP?

使用 FTP 最常见的三种方式包括:

  • 通过网页浏览器:无需安装任何专用软件或客户端,即可从提供 FTP 服务的服务器下载文件。
  • 图形用户界面(GUI)FTP 客户端:这类第三方应用程序允许用户连接 FTP 服务器并传输文件。
  • 命令行 FTP:主流操作系统均内置了命令行 FTP 客户端功能。

什么是 FTP 端口?

FTP 端口是一种通信端点,用于在计算机与服务器之间传输数据。操作系统的网络通信依赖于有限数量的端口,而这些端口是软件通过网络建立连接所必需的。FTP 端口使得客户端与服务器能够快速交换文件。


FTP 与 SFTP 的区别

FTP 代表“文件传输协议”(File Transfer Protocol),而 SFTP 则代表“安全外壳文件传输协议”(SSH File Transfer Protocol)。SFTP 通过 SSH(Secure Shell)对文件传输进行加密,并提供对远程服务器 shell 账户的完全访问权限。所谓 shell 账户,是指位于远程服务器上的命令行账户。

FTP 与 SFTP 的主要区别在于:

  • FTP 不提供安全通道进行文件传输;
  • FTP 使用 两个通道(命令通道和数据通道)传输数据,而 SFTP 仅使用 单个加密通道
  • 两者使用的默认入站端口也不同:FTP 默认使用 21 端口,而 SFTP 使用 22 端口

此外,数据传输方式也有显著差异:SFTP 采用隧道传输(tunneling)方式,安全性更高;而 FTP 采用直接传输,缺乏加密保护。


FTP 与 HTTP 的区别

尽管超文本传输协议(HTTP)与 FTP 同属应用层协议,均可用于系统间文件传输,但二者存在关键差异:

  • HTTP 是无状态协议(stateless),意味着它不会保存某次会话的数据以供下次使用,因此可同时支持多个会话;
  • FTP 则是有状态协议(stateful),会记录客户端的相关信息并在后续请求中加以利用,这限制了其同时支持的会话数量。

无论网络带宽如何,HTTP 在数据传输效率方面通常更具优势。

另一个重要区别是身份验证机制:

  • FTP 要求客户端认证后才能传输信息;
  • HTTP 不需要客户端认证

此外,HTTP 使用广为人知的通用端口,防火墙对其支持良好;而 FTP 在某些情况下可能更难被防火墙正确处理。


FTP 与 MFT 的区别

在某些方面,托管文件传输(Managed File Transfer, MFT)是相较于 FTP 的“新秀”。尽管 FTP 在许多场景下依然有效,但它并非为应对当今复杂的网络安全威胁而设计。事实上,美国联邦调查局(FBI)甚至曾发布官方警告,指出即使是使用 SSL 或 SSH 加密的 FTP 也存在潜在风险。

顾名思义,MFT 不仅提供文件传输功能,还集成了管理、合规性和安全特性。这些功能不仅使数据传输更安全,还能满足监管机构对敏感数据(如患者医疗记录)传输安全性的严格要求。相比之下,普通 FTP 容易遭受窃听攻击(eavesdropping attack)或银行木马(banker Trojan)等威胁——后者专门针对金融机构。

虽然理论上可以手动为 FTP 添加所需的安全与管理功能,但 MFT 能大幅节省时间和精力。例如,假设有两人正在使用 Mist 浏览器配置以太坊上的去中心化应用(dapps),黑客可能在通信到达 FTP 端口前就将其截获,并将窃取的信息出售给竞争对手。后者可据此抢先开发并发布类似 dapp,从而获得战略优势。


如何更改 FTP 端口号?

应用程序服务器通常分配有默认端口号,但若需更改,可通过以下两种方式实现:

  1. 进入 FTP 应用程序的设置页面,直接修改端口号;
  2. 在 FTP 服务器地址中指定端口号:在地址末尾添加冒号(:)和新的端口号(若地址中包含“/”,则端口号应加在“/”之前)。
    示例:ftp://mydomain.com:####/(其中每个 # 代表一个数字)。

FTP 的安全挑战

FTP 在设计之初并未考虑提供安全的数据传输通道,因此不支持加密。如果黑客成功拦截 FTP 传输,他们无需破解任何加密即可直接查看或篡改数据内容。即便使用 FTP 云存储服务,一旦服务提供商的系统被攻破,数据仍可能被截获并滥用。

因此,通过 FTP 传输的数据很容易成为欺骗攻击(spoofing)、嗅探攻击(sniffing)、暴力破解(brute force)等攻击的“慢速目标”。黑客只需进行简单的端口扫描,即可探测 FTP 传输并尝试利用其漏洞。

FTP 的主要安全漏洞之一是使用明文密码(clear-text passwords)——即密码未经任何加密处理。例如,“Jerry1992” 在传输过程中就以原始形式“Jerry1992”呈现。而在更安全的协议中,密码会通过算法进行混淆,例如变成“dj18387saksng8937d9d8d7s6a8d89”之类的形式。FTP 缺乏此类保护机制,使得密码更容易被恶意攻击者获取。