FTP连接过程分析
建立TCP连接
客户呼叫服务器21端口,客户端自已选一个端口如:3963
三次握手建立TCP连接
服务器发回FTP欢迎信息
220 Welcome to HUST SOUTH 1 Bulding Kaka FTP service.
客户端登录
端口:3963--21 客户--服务器
首先客户端发送用户名,
55 53-45 52 20 31 0D 0A
USER 1
USER是FTP命令,1为用户名,命令和用户名之间用0x20(空格)隔开,用户名最后以0x0d,0x0a(回车,换行)结尾。
FTP服务器回复
331 Please specify the password.//关键是331 提示信息可不一样。
客户端发送密码
PASS 1
服务器效验用户名和密码
1、用户名和密码正确服务器回复
230 Login successful. Have fun...
2、用户名或密码错误回复
530 Login incorrect.
服务器设置
确认服务器上运行的操作系统
端口:3963--21 客户--服务器
客户端发送
53 59-53 54 0D 0A
SYST //最后以0x0d,0x0a(回车,换行)结尾
服务器回复
215 UNIX Type: L8
设置传输模式
客户端发送
54 59-50 45 20 41 0D 0A
TYPE A
服务器回复信息:
200 Type set to ASCII
数据传输
客户发送FTP命令
50 41-53 56 0D 0A
PASV
服务器发回FTP信息:
227 Entering Passive Mode (211,69,207,115,5,203).
服务器这里会被动打开一个端口 5*256+203=1483这个端口来做为数据传输。
客户端接下来就打开一个端口(例如:3964),客户端3964---服务器1483端口,这个连接用来以后传输数据文件或目录。
客户发送FTP命令 客户端3963---服务器21端口
LIST -al //显示目录
服务器回复
150 Here comes the directory listing.
服务器回复 客户端3964---服务器1483端口
目录数据,基于TCP流,UNIX目录可直接显示
退出
客户发送FTP命令
QUIT
服务器发回FTP信息:
221 Goodbye.
FTP 返回说明
110 重新启动标记应答。在这种情况下文本是确定的,它必须是:MARK yyyy=mmmm,其中yyyy是用户进程数据流标记,mmmm是服务器标记。
120 服务在nnn分钟内准备好
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 未执行请求的操作:文件名不合法
命令和服务器响应序列
建立连接
120, 220, 220, 421
登录
USER
230, 530, 500, 501, 421, 331, 332
PASS
230,202,530,500, 501, 503, 421,332
ACCT
230,202,530,500, 501, 503, 421
CWD
250,500, 501, 502, 421, 530, 550
CDUP
200,500, 501, 502, 421, 530, 550
SMNT
202, 250, 500, 501, 502, 421, 530, 550
退出登录
REIN
120, 220, 220, 421, 500, 502
QUIT
221, 500
传输参数
PORT
200, 500, 501, 421, 530
PASV
227, 500, 501, 502, 421, 530
MODE
200, 500, 501, 504, 421, 530
TYPE
200, 500, 501, 504, 421, 530
STRU
200, 500, 501, 504, 421, 530
文件操作命令
ALLO
200, 202, 500, 501, 504, 421, 530
REST
500, 501, 502, 421, 530, 350
STOR
125, 150, (110)
226, 250, 425, 426, 451, 551, 552, 532, 450, 452, 553, 500, 501, 421, 530
STOU
125, 150 (110)
226, 250, 425, 426, 451, 551, 552, 532, 450, 452, 553, 500, 501, 421, 530
RETR
125, 150
(110)
226, 250, 425, 426, 451, 450, 550, 500, 501, 421, 530
LIST
125, 150, 226, 250, 425, 426, 451, 450, 500, 501, 502, 421, 530
NLST
125, 150, 226, 250, 425, 426, 451, 450, 500, 501, 502, 421, 530
APPE
125, 150,
(110)
226, 250, 425, 426, 451, 551, 552,532, 450, 550, 452, 553, 500, 501, 502, 421, 530
RNFR
450, 550, 500, 501, 502, 421, 530, 350
RNTO
250, 532, 553, 500, 501, 502, 503, 421, 530
DELE
250,450, 550,500, 501, 502, 421, 530
RMD
250, 500, 501, 502, 421, 530, 550
MKD
257, 500, 501, 502, 421, 530, 550
PWD
257, 500, 501, 502, 421, 550
ABOR
225, 226, 500, 501, 502, 421
获得信息命令
SYST
215, 500, 501, 502, 421
STAT
211, 212, 213, 450, 500, 501, 502, 421, 530
HELP
211, 214, 500, 501, 502, 421
其它命令
SITE
200, 202, 500, 501, 530
NOOP
200, 500 421