FTP、FTPS 与 SFTP 是什么?

FTP

FTP 也就是文件传输协议(英文全称 File Transfer Protocol),属于应用层协议,专门用于在网络环境中实现客户端与服务器之间的文件交换。一套完整的 FTP 体系由 FTP 服务端和 FTP 客户端共同构成,用户既能把本地文件经由 FTP 协议推送到远程服务器,也能把服务器上的文件拉取到本地。它算得上是目前仍在使用的最早期的文件传输协议之一,是一种相当高效的文件搬运手段。

FTP 的运作机制

FTP 通信需要服务端和客户端双方在网络中建立联络。连接建立后会产生两条独立的通信链路:一条叫做命令链路,负责发送和接收操作指令;另一条叫做数据链路,专门用于双方之间的数据交换。

利用 FTP 传送文件时,用户必须向 FTP 服务端提交身份凭证才能获得传输权限。当然部分公开的 FTP 服务端或许无需凭证就能访问其中的资源,但无法确保数据在传输过程中的安全。任何未经过加密的公共网络上发送数据都极其危险,因此为了保障传输过程中的数据安全,从 FTP 演变出了下面两种协议:FTPS 和 SFTP。

FTPS

接着查了一下资料,发现 FTPS 分为 FTPS 隐式 SSL 和 FTPS 显式 SSL 两种运作方式,二者均采用 SSL 进行加密处理。那它们之间有何不同呢?

FTPS 隐式 SSL: 这种方式一般在端口 990 上运作。在此模式下,所有数据交换都必须先在客户端与服务端之间搭建 SSL 会话,而且服务端会拒绝一切不采用 SSL 的连接请求。

FTPS 显式 SSL: 显式 SSL 模式下,服务端可以同时兼容 FTP 和 FTPS 会话。会话开启前,客户端需先与 FTP 服务端建立一条未加密的连接,并在提交用户凭证之前发送 AUTH TLS 或 AUTH SSL 指令,请求服务端把命令链路切换为 SSL 加密链路。加密链路搭建成功后再把用户凭证发给 FTP 服务端,这样就能确保整个会话期间的所有指令都经由 SSL 链路自动加密。

给大家做个简洁的归纳。启用隐式模式时,FTP 的默认端口会变更为 TCP/990,服务端自动建立加密连接,同时要求客户端也必须支持加密连接方式,也就是通过 SSL 来完成连接。启用显式模式时,连接方式和默认端口与普通 FTP 保持一致,但需要通过 AUTH SSL/TLS 类指令激活加密连接后才能正常传送数据。

SFTP

最后再来了解一下 SFTP。SFTP 是 Secure File Transfer Protocol 的缩写,中文名为安全文件传送协议。

如果说 FTPS 是在 FTP 协议基础上叠加了一层 SSL 加密,那么 SFTP 则是完全基于 SSH(安全外壳)网络协议的产物,与前面提到的 FTP 有本质区别。SFTP 不采用独立的命令链路和数据链路,而是把数据和指令全部通过单一连接,以特殊格式的数据包方式进行传送。

SFTP 提供了两种身份验证方式:

第一种与 FTP 类似,连接时仅需验证用户 ID 和密码即可。但与 FTP 不同的是,这些凭证是经过加密传输的,这也是 SFTP 最核心的安全优势。

第二种是除了密码之外,还能借助 SSH 密钥来完成验证并通过 SFTP 协议建立连接。

弄清楚这几种协议之后,使用 FTP 客户端工具时就更加得心应手了,可以依据实际需要切换协议和加密方式,不必再为看不懂某项设置而发愁。

不过,新的困惑又冒了出来——传输设置里还有主动和被动两种模式,这又代表什么呢?于是又打开了搜索引擎……

FTP 软件的主动模式与被动模式有何不同

主动模式

通常 FTP 的默认工作方式就是主动模式,也叫 port 模式。

它通过两个步骤来完成工作:

第一步,客户端上的随机端口与服务端的 FTP 端口 21 建立命令链路,客户端发送 PORT 指令,指定服务端连接到客户端的某个端口,并据此建立数据链路。

第二步,服务端从端口 20 连接到客户端为数据链路指定的那个端口。连接建立后,就可以通过这些端口完成文件传送。

被动模式

在传输方式选项中,也可以手动切换为被动传输模式。在该模式下,用户端进行文件传输时,会先通过随机端口 A 连接到服务端的端口 21,并发出 PASV 指令建立命令链路,通知服务端此次采用被动方式连接。随后服务端会开启一个随机端口用于数据传送,而客户端则通过与发出指令的端口不同的随机端口 B 建立数据链路,从而实现文件传输。

被动模式与主动模式的核心差异在于谁来发起数据连接。主动模式下,客户端在命令链路建立完成后,由服务端主动发起与客户端的数据连接。而被动模式下,命令链路建立之后,改由客户端主动发起与服务端的数据连接。

正因为这个差异,两者各有优劣。比如主动模式更便于管理 FTP 服务端,因为只需开放 21 端口的入站和 20 端口的出站即可。但由于服务端连接的是客户端的随机端口,客户端可能会触发防火墙规则,甚至直接被防火墙阻断。反过来,被动模式则更有利于管理客户端一侧。

没想到一个看上去很简单的文件存储工具竟然有这么多分类和差别,不同模式、不同方式都能匹配不同的使用场景。看来以后使用工具时多少了解一些背后的原理,确实能让操作更加顺畅、更加省心。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2986.html

Like (1)
Previous 2026年6月22日
Next 2026年6月23日

相关推荐

  • 什么是LLM?企业导入LLM的常见应用场景

    自2022年ChatGPT的惊艳问世,到如今国内文心一言、豆包、deekseek、千问等国内AI工具激烈竞争,生成式人工智能已彻底改变了我们的生活与工作方式。但你是否好奇,这些强大…

    2026年4月1日
    0
  • 站点为什么要安装SSL证书?

    大数据时代互联网发展迅速,给我们的生活带来便利的同时,也伴随着很多网络钓鱼、信息泄露、网络诈骗等事件的频繁发生,互联网就像一张巨型的蜘蛛网,汇聚和扩散各种各样的信息,而网站在当中就…

    2026年4月25日
    0
  • IPv4与IPv6:互联网网络层协议的演进与迁移路径

    众所周知,Internet是当前全球规模最大、影响力最广的计算机网络,其网络层作为核心支撑部分,主要涵盖了网际协议(IP)、路由协议以及互联网控制报文协议(ICMP)等关键内容。 …

    2026年4月23日
    0
  • PHP网站出现500错误如何解决?

    HTTP ERROR 500 代表服务器内部发生错误,也就是代码出现了报错,但默认情况下,PHP 并不会展示具体的错误详情,本文将分析 PHP 出现 500 错误的常见原因及应对方…

    2026年7月11日
    0
  • 云主机备份策略指南:从基础规则到落地实操

    在企业数字化业务全面上云的今天,云主机早已成为承载核心业务数据、系统服务的核心载体。但不少运维团队都曾遇到过数据丢失的突发状况:误删核心业务文件、勒索病毒加密全量数据、硬件故障导致…

    2026年9月8日
    0
  • 80端口和443端口有什么区别?

    一台服务器能提供的服务有很多,比如HTTP、FTP、Telnet等服务。为什么可以同时提供那么多服务呢?有一个很重要的原因是采用不同的端口分别提供不同的服务,比如:TCP/IP协议…

    2026年6月26日
    0
  • 如何在云服务器上设置 OpenClaw

    在云服务器上搭建 OpenClaw(小龙虾),步骤很简单,只需准备好云服务器(VPS)环境,克隆 OpenClaw 官方仓库,运行 Docker 设置脚本,配置好 AI 提供者的凭…

    2026年4月21日
    0
  • WordPress报413请求实体过大错误

    413 请求实体过大错误,是一种 HTTP 响应,意思是你发送的内容比服务器能接受的要大。HTTP 400 系列错误一般是客户端的问题,但 413 错误更多是因为上传的内容本身合法…

    2026年3月28日
    0
  • 深入掌握Nginx服务器

    本文介绍nginx服务器及其主要特性,首先给出了包管理器安装及编译安装两种方式,然后重点对 nginx 配置文件中的指令及参数进行详细说明,在了解 nginx 的工作方式后,从 n…

    2026年5月8日
    0
  • 不同网站 SSL 证书有什么区别?一文看懂

    SSL 证书是安装在 Web 服务器上用于安全加密数据的文件,它促进了服务器与用户浏览器之间数据的安全通信。 SSL 证书对于支付页面和登录表单至关重要,为数百万网站提供了增强的安…

    2026年3月25日
    0