FTP初探

##简介 **FTP在TCP/IP中在TCP/UDP上一层,属于应用层,通常用来管理文件。正常的FTP交互需要建立两条链接,一条用来发送命令,一条用来传送数据。FTP服务器的默认命令端口是21端口,数据端口是20端口**

FTP工作流程

FTP的工作模式分为主动模式和被动模式,主动模式和被动模式的区别就是数据通道建立的方式不同。

1. 主动模式

客户端与服务器建立命令通道。通过命令通道发送命令给服务器。当为主动模式时,需要传送数据的时候,客户端需要通过命令通道将PORT命令发送给服务器端,PORT命令包含客户端即将用来做数据通道的端口和其它一些数据。服务器收到命令后通过命令通过回复PORT命令,再通过20端口来建立与该端口的连接通道。

2. 被动模式

被动模式的命令通道建立与主动模式都是一样的。数据通道的建立就不一样了。客户端通过发送PASV命令给服务器,服务器收到该指令后,随机打开一个端口并且告诉客户端该端口用来做数据通道。

FTPS

FTPS就是SSL over on ftp,有两种模式,显示SSL(explicit)和隐式SSL(implicit)

.显式ssl: 在与ftp服务器建立连接后,ftp客户端要以命令("AUTH SSL" 或者 "AUTH TLS")显式地告诉服务器端来初始化相应的安全连接。此时使用的是默认的ftp端口21。参考文档:RFC 2228
.隐式ssl:当ftp客户端连接到服务器端时,服务器端自动建立安全连接。此时,客户端默认以990端口来安全连接服务器端,而服务器端端口可设置。

备注

FTP响应码
110: 重新启动标记应答。
120: 在n分钟内准备好
125: 连接打开准备传送
150: 打开数据连接
200: 命令成功
202: 命令失败
211: 系统状态
212: 目录状态
213: 文件状态
214: 帮助信息
215: 名字系统类型
220: 新用户服务准备好了
221: 服务关闭控制连接,可以退出登录
225: 数据连接打开,无传输正在进行
226: 关闭数据连接,请求的文件操作成功
227: 进入被动模式
230: 用户登录
250: 请求的文件操作完成
257: 创建”PATHNAME”
331: 用户名正确,需要口令
332: 登录时需要帐户信息
350: 下一步命令
421: 不能提供服务,关闭控制连接
425: 不能打开数据连接
426: 关闭连接,中止传输
450: 请求的文件操作未执行
451: 中止请求的操作:有本地错误
452: 未执行请求的操作:系统存储空间不足
500: 格式错误,命令不可识别
501: 参数语法错误
502: 命令未实现
503: 命令顺序错误
504: 此参数下的命令功能未实现
530: 未登录
532: 存储文件需要帐户信息
550: 未执行请求的操作
551: 请求操作中止:页类型未知
552: 请求的文件操作中止,存储分配溢出
553: 未执行请求的操作:文件名不合法
FTP术语
150    文件状态良好,打开数据连接
200    命令成功
202    命令未实现
211    系统状态或系统帮助响应
212    目录状态
213    文件状态
214    帮助信息,信息仅对人类用户有用
215    名字系统类型
220    对新用户服务准备好
221    服务关闭控制连接,可以退出登录
225    数据连接打开,无传输正在进行
226    关闭数据连接,请求的文件操作成功
227    进入被动模式
230    用户登录
250    请求的文件操作完成
257    创建”PATHNAME”
331    用户名正确,需要口令
332    登录时需要帐户信息
350    请求的文件操作需要进一步命令
421    连接用户过多
425    不能打开数据连接
426    关闭连接,中止传输
450    请求的文件操作未执行
451    中止请求的操作:有本地错误
452    未执行请求的操作:系统存储空间不足
500    格式错误,命令不可识别
501    参数语法错误
502    命令未实现
503    命令顺序错误
504    此参数下的命令功能未实现
530    账号或密码错误
532    存储文件需要帐户信息
550    未执行请求的操作
551    请求操作中止:页类型未知
552    请求的文件操作中止,存储分配溢出
553    未执行请求的操作:文件名不合法

FTP交互命令
命令 描述
ABOR : 中断数据连接程序
ACCT : 系统特权帐号
ALLO : 为服务器上的文件存储器分配字节
APPE : 添加文件到服务器同名文件
CDUP : 改变服务器上的父目录
CWD : 改变服务器上的工作目录
DELE : 删除服务器上的指定文件
HELP : 返回指定命令信息
LIST : 如果是文件名列出文件信息,如果是目录则列出文件列表
MODE : 传输模式(S=流模式,B=块模式,C=压缩模式)
MKD : 在服务器上建立指定目录
NLST : 列出指定目录内容
NOOP : 无动作,除了来自服务器上的承认
PASS : 系统登录密码
PASV : 请求服务器等待数据连接
PORT : IP 地址和两字节的端口 ID
PWD : 显示当前工作目录
QUIT : 从 FTP 服务器上退出登录
REIN : 重新初始化登录状态连接
REST : 由特定偏移量重启文件传递
RETR : 从服务器上找回(复制)文件
RMD : 在服务器上删除指定目录
RNFR : 对旧路径重命名
RNTO : 对新路径重命名
SITE : 由服务器提供的站点特殊参数
SMNT : 挂载指定文件结构
STAT : 在当前程序或目录上返回信息
STOR : 储存(复制)文件到服务器上
STOU : 储存文件到服务器名称上
STRU : 数据结构(F=文件,R=记录,P=页面)
SYST : 返回服务器使用的操作系统
TYPE : 数据类型(A=ASCII,E=EBCDIC,I=binary)
USER : 系统登录的用户名

不怕世界大,就怕格局小
原文地址:https://www.cnblogs.com/wangjian1226/p/11936379.html