命令围绕三个动作
FTP 命令分三组:认证(USER 与 PASS)、导航(PWD、CWD、LIST)、传输(RETR 与 STOR)。每条命令都会得到三位数字应答码,第一位数字表达类别(2 成功、3 需要更多信息、4 暂时失败、5 永久失败)。与控制命令分开的另一条数据连接负责真正搬运数据,这是 FTP 与其它文件协议最大的区别。
基本信息
| 控制端口 | TCP 21(FTPS 显式模式同为 21,隐式模式 990) |
|---|---|
| 数据连接 | 每次传输临时建立,模式由 PORT、PASV 或 EPSV 决定 |
| 应答码 | 三位数字,首位表示类别,1xx 表示还需要后续应答 |
| 传输类型 | TYPE I 二进制、TYPE A 文本(会做换行转换) |
常用命令
| 命令 | 类别 | 说明 |
|---|---|---|
| USER 与 PASS | 认证 | 用户名与口令 |
| PWD 与 CWD 与 CDUP | 导航 | 当前目录、切换目录、回上级 |
| LIST 与 NLST | 导航 | 目录详情与仅文件名列表 |
| TYPE | 传输 | I 为二进制、A 为文本 |
| RETR 与 STOR | 传输 | 下载与上传 |
| STOU 与 APPE | 传输 | 唯一命名上传与追加写入 |
| REST | 传输 | 断点续传起点偏移 |
| ABOR | 传输 | 中断当前传输 |
| DELE 与 RNFR 与 RNTO | 文件 | 删除与改名,改名需两步 |
| MKD 与 RMD | 目录 | 建目录与删目录 |
| SIZE 与 MDTM | 查询 | 取文件大小与修改时间 |
| FEAT 与 OPTS | 能力 | 查询扩展与设置选项 |
| QUIT | 结束 | 退出登录 |
二进制模式下传
二进制模式下传
TYPE I
200 Switching to Binary mode.
PASV
227 Entering Passive Mode (203,0,113,9,195,80)
RETR backup.tar.gz
150 Opening BINARY mode data connection for backup.tar.gz
226 Transfer complete. # 226 表示数据连接正常结束
# 若出现 425 通常是数据连接没能建立,先查被动端口是否放行典型使用场景
- 批量下载日志后做离线分析,用 NLST 先取文件名清单
- 断点续传大文件:REST 指定偏移后再 RETR
- 上传后核对 SIZE 与本地字节数,快速确认是否被文本模式改写
- 用 FEAT 判断服务端是否支持 SIZE、MDTM、UTF8 等扩展
文本模式(TYPE A)会做换行转换:传压缩包、图片、可执行文件一律用 TYPE I,否则文件字节数改变、校验失败。
FTPS 与 SFTP 是两回事:FTPS 是 FTP 加 TLS,仍保留双连接结构;SFTP 是 SSH 之上的子系统,只有一条连接。防火墙复杂的环境优先选 SFTP。