【1.8.1.3】FTP内部命令大汇总与应答码

在上述的 FTP 工作流程中,客户端成功连接 FTP 服务器以后,进行身了份验证、执行 FTP 命令等操作。这些操作都是客户端向 FTP 服务器发出的请求,而这些请求实际上是在发送 FTP 命令。

对于每一个请求,服务器都会返回对应的应答码。例如,客户端输入用户名,实际上就是在发送 FTP 子命令。该子命令为 USER,表示服务器上的用户名。

FTP 命令及应答码信息如下:

Name (192.168.59.135:root): sm                        #FTP命令, 这里为用户名sm
331 User name ok, need password                       #FTP应答码, 这里为331

上述操作,通过抓包可以查看到对应的 FTP 命令和应答码,如图所示。

上图中第 8 个数据包为客户端向 FTP 服务器发送的 FTP 命令,命令为 USER,其中 sm 表示客户端输入的用户名。第 9 个数据包为 FTP 服务器对该请求返回的应答,应答码为 331。

一、FTP 内部命令及作用如表所示。

客户端与 FTP 服务器之间进行文件传输时,可以执行多种操作。常见的 FTP 命令如表所示。

FTP 内部命令

命令 作用
! [command [args]] 在本地机中执行交互 shell,exit 回到 FTP 环境,例如:! LS*. zip
$ macro-name [names] 运行宏,macro_name 为宏的名称
account [password] 提供登录远程系统成功后,访问系统资源所需的补充口令
append local-file [remote-file] 将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名
ascii 将文件传送类型设置为 ASCII
bell 每个命令执行完毕后计算机响铃一次
binary 使用二进制文件传输方式
bye 结束与远程计算机的 FTP 会话,并退出 FTP
case 在使用 mget 时,将远程主文件名中的大写字母转换为小写字母
cd remote-directory 进入远程主机指定目录
cdup 更改的远程计算机上的目录,跳到上一层目录
chmod mode file-name 将远程主机文件 file-name 的存取方式设置为 mode
close 中断与远程服务器的 FTP 会话
cr 使用 ASCII 方式传输文件时,将回车换行符转换为回行符
delete remote-file 删除远程主机文件
debug [debug-value] 设置调试方式,显示发送至远程主机的每条命令,如 dep up 3。若设置为 0,表示取消 debug
dir [remote-directory] [local-file] 显示远程主机命令,并将结果存入本地文件 local-file
disconnect A synonym for close 中断与远程服务器的 FTP 会话
form format 将文件传输方式设置为 format,默认为 file 方式
get remote-file [local-file] 将远程主机的文件 remote-file 传至本地硬盘的 local-file(下载文件)
glob 设置 mdelete、mget、mput 的文件名扩展,默认情况下不显示扩展文件名,同命令行的 -g 参数
hash [increment] 每传输 1024 字节,显示一个 hash 符号(#)
help [command] 显示 FTP 内部命令 command 的帮助信息
idle [seconds] 将远程服务器的休眠计时器单位设为秒
image 设置二进制传输方式
lcd [directory] 将本地工作目录切换至 directory
ls [remote-directory] [local-file] 显示远程目录 remote-dir,并存入本地文件 local-file
macdef macro-name 定义一个宏,遇到 macdef 下的空行时,宏定义结束
mdelete [remote-files] 删除远程主机文件
mdir remote-files local-file 与 dlr 类似,但可指定多个远程文件
mget remote-files 传输多个远程文件
mkdir directory-name 在远程主机中创建目录
mode [mode-name] 将文件传输方式设置为 modename,默认为 stream 方式
modtime file-name 显示远程主机文件的最后修改时间
mput local-files 将多个文件传输至远程主机
newer file-name[local-file] 如果远程主机中 file-name 的修改时间比本地硬盘同名文件的时间更近,则重新传输该文件
nlist [remote-directory] [local-file] 显示远程主机目录的文件清单,并存入本地硬盘的 local-file
nmap [inpattern outpattern] 设置文件映射机制,使得文件传输时,文件中的某些字符相互转换
ntrans [inchars [outchars]] 设置文件名字符的翻译机制,如 ntrans 1R,则文件名 LLL 将变为 RRR
open host[port] 建立指定 FTP 服务器连接,可指定连接端口
prompt 设置多个文件传输时的交互提示
put local-file[remote-file] 将本地文件 local-file 传送至远程主机(上传文件)
pwd 显示远程主机的当前工作目录
quit 退出 FTP 会话
rename [from] [to] 更改远程主机文件名
rmdir directory-name 删除远程主机目录
status 显示当前 FTP 状态
system 显示远程主机的操作系统类型
type [type-name] 设置文件传输类型为 type-name,默认为 ASCII。例如:type binary。设置使用二进制传输方式
user user-name [password] [account] 向远程主机标明自己的身份,需要口令时,必须输入口令
verbose 切换详细模式,在该模式下,显示所有来自 FTP 服务器的消息
? [command] 显示帮助信息

二、而常见的 FTP 应答如表所示。

应答码 说明
110 新文件指示器上的重启标记
120 服务器准备就绪的时间(分钟数)
125 打开数据连接,开始传输
150 打开数据连接
200 就绪命令(命令成功)
202 命令没有执行
211 系统状态回复
212 目录状态回复
213 文件状态回复
214 帮助信息回复
215 系统类型回复
220 服务就绪
221 退出 FTP
225 打开数据连接
226 结束数据连接(下载完成、目录列表完成等)
227 进入被动模式(IP 地址、ID 端口)
230 成功登录 FTP 服务
250 完成目录切换
257 路径名建立
331 要求密码
332 要求账号
350 文件行为暂停
421 服务关闭
425 无法打开数据连接
426 结束连接
450 文件不可用
451 遇到本地错误
452 磁盘空间不足
500 无效命令
501 错误参数
502 命令没有执行
503 错误指令序列
504 无效命令参数
530 登录 FTP 服务失败
532 存储文件需要账号
550 文件不存在
551 不知道的页类型
552 超过存储分配
553 文件名不允许

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn