FTPS的控制平面和数据平面和传输ftp有啥区别?
直接回答:控制平面完全一样(都是TCP 21),但数据平面有巨大区别(加密 vs 明文)。
为了让你彻底搞清楚,我把FTP和FTPS的“控制平面”和“数据平面”拆开对比,你会发现FTPS其实就是“在FTP外面套了一层保险箱”。
1. 控制平面(Control Plane):端口 TCP 21
普通FTP:客户端连接服务器的 TCP 21 端口,建立控制连接。这条连接用来发送命令(如 USER、PASS、LIST、RETR),所有命令都是明文传输,抓包直接能看到你的密码和操作。
FTPS:客户端同样连接服务器的 TCP 21 端口,建立控制连接。区别在于:连接建立后,客户端和服务器会先进行 SSL/TLS握手(类似于HTTPS访问网站)。握手成功后,控制连接上的所有命令都被加密。抓包看到的是一堆乱码,看不到用户名和密码。
结论:控制平面端口相同(21),但FTPS多了“加密层”,命令不再裸奔。
2. 数据平面(Data Plane):端口变化,加密方式有历史演进
这是FTP/FTPS最复杂的地方,也是区分两种工作模式的关键。
普通FTP(明文)
主动模式(PORT):服务器从 TCP 20 端口主动连接客户端的随机端口。
被动模式(PASV):服务器开放一个随机高位端口(如 50000-60000),客户端主动连接这个端口。
传输过程:所有文件数据(文件内容、LIST 目录列表)明文传输,毫无保护。
FTPS(加密)—— 分两种子模式
FTPS因为历史原因,对数据平面的加密有两种截然不同的实现方式:
FTPS模式 数据平面加密方式 数据端口 兼容性
显式FTPS(Explicit,推荐) 客户端通过 命令(AUTH TLS)主动要求加密。控制连接加密后,数据连接自动继承加密。 被动模式下仍使用随机高位端口,但传输的数据是密文。 最好,防火墙能识别(仍可扫描21端口)。
隐式FTPS(Implicit,过时) 强制加密,没有协商过程。客户端必须一连接就进行SSL握手,否则拒绝服务。 固定使用 TCP 990 作为控制端口,数据端口另算(且必须加密)。 差,IETF已废弃此模式,不推荐使用。
关键点:无论哪种FTPS,数据端口依然是动态的(如PASV模式下的随机端口),但传输的数据经过了SSL/TLS加密,不再是明文。
3. 核心差异对比表
维度 普通FTP FTPS(显式) 差异原因
控制端口 TCP 21 TCP 21(先明文,后加密) 相同,但FTPS会先协商加密
控制数据 明文(用户名/密码可见) 密文(SSL加密) 安全性本质区别
数据端口 20(主动)或随机端口(被动) 20或随机端口(同FTP) 端口机制相同
数据内容 明文(文件内容可见) 密文(SSL加密) 文件传输也加密
防火墙/NAT 需开放端口范围 需额外开放端口范围(同FTP) 数据端口动态问题依然存在
4. 为什么FTPS比FTP麻烦?—— 数据平面的“双重加密”困境
FTPS虽然加密了数据,但它继承了FTP最蛋疼的特性:数据端口动态变化。
防火墙需要动态追踪数据连接(需要安装 nf_conntrack_ftp 内核模块)。
如果防火墙只放行了TCP 21,被动模式下的随机端口(如 50000-60000)必须手动开放,否则数据传输会失败。
相比之下,SFTP(基于SSH)只用TCP 22一个端口,不需要额外开放随机端口,所以SFTP比FTPS更受运维青睐。
5. 实战验证:如何判断连接是否加密?
你可以用 Wireshark 抓包验证:
普通FTP:在数据包中直接能看到 USER username、PASS password 等明文字符串。
FTPS:在TCP 21上看到的是 Client Hello、Server Hello 等SSL握手协议,后续内容全是乱码(密文)。
总结一句话
控制平面(TCP 21):FTPS和FTP用同一个端口,但FTPS在握手后加密了所有命令。
数据平面(动态端口):两者使用相同的端口分配机制(主动/被动模式),但FTPS加密了所有传输的文件数据。
如果你追求运维简便,直接选SFTP(TCP 22单端口,内置加密)。如果必须用FTP协议,务必选择显式FTPS(Explicit)并配置防火墙放行PASV端口范围,避免隐式FTPS的坑。
浙公网安备 33010602011771号