FTP协议采用两个TCP连接来完成文件的传输,两个连接分别称为控制连接和数据连接。控制连接主要负责协议命令和服务器响应码的传输。服务器通常在21端口守候,当客户端利用套接字连接到21端口的时候,控制连接便成功建立。数据连接只负责数据的传输:从客户端向服务器传送文件,从服务器端向客户端传送文件,从服务器端向客户端发送文件目录列表。
传输过程中需要确定传输数据的文件类型:
l ASCII码类型(默认),用于传送文本文件
l EBCDIC类型,要求通信双方都是EBCDIC系统
l 图像类型,用于传送二进制文件
l 本地类型,不同字节大小的主机上传输二进制文件,每个字节的大小由发送发决定
3种不同的文件结构:
l 文件式结构(默认),文件中没有内部结构,文件被看成是二进制流
l 记录结构,一系列记录组成,只用于文本文件
l 页结构,文件由不同的索引页组成,接收方可以随机存储各页。
3种传输方式:
l 流方式(默认)
l 块模式
l 压缩模式
FTP命令:总是在命令的最后加上一个回车换行符,“/r/n”
l ABOR:放弃先前的传输命令,并终止当前数据连接上的数据传输。
l ACCT account:指定用户的账号信息,在PASS命令成功之后发送。
l ALLO NumberBytes[MaxSize]:发送文件前在服务器分配x个字节。
l APPE FileName:让服务器准备接受一个文件并指示它把这些数据附加到指定的文件名,如果指定的文件尚未存在,则创建它。
l CDUP:把当前目录改为远程文件系统的根目录。
l CWD:把当前目录改成远程文件系统的指定路径
l DELE FileName:删除服务器站点上的路径名中指定的文件
l LIST [PathName]:让服务器给客户发送一份列表
l MKD Path:创建一个指定的目录
l STRU Mode:指定传输模式
l NLST PathName:让服务器给客户发送一份目录列表
l NOOP:不进行任何操作
l PASS Password:向远程系统发送用户的密码,在USER命令后使用
l PASV:告诉服务器在一个非标准端口上收听数据连接
l PORT h1,h2,h3,h4,p1,p2:为数据连接指定一个IP地址和本地端口。h1,h2,h3,h4是IP地址,从高到低,p1,p2是16位端口号,从高到低。
l PWD:在应答中返回当前工作目录。
l QUIT:终止控制连接
l REIN:终止一个用户
l REST Maker:文件传输数据点,将从这个点开始继续传输文件
l RETR FileName:让服务器给客户传送指定的文件副本
l RMD Path:删除一个指定的目录
l RNFR FIleName:文件重命名
l RNTO FIleName:文件重命名,指定要重命名的新文件
l SITE String:说明服务器使用SITE提供了某些额外服务
l SMNT Path:运行用户装载另一个文件系统的数据结构而无需改变登陆等
l STAR [PathName]:使一个状态响应以一个应答的形式通过控制连接发送出去
l STOR FileName:让服务器接收一个文件,即上传一个文件
l STOU:让服务器准备接收一个文件,并指示服务器把这个文件用唯一的名称保存到当地目录中。
l STRU StructureType:指定传达数据的结构类型
l SYST:用于查明服务器上操作系统的类型
l TYPE DataTypeCode:确定数据的传输方式
l USER UserName:指定登陆的用户名
响应代码 | 解释说明 | 响应代码 | 解释说明 |
110 | 新文件指示器上的重启标记 | 332 | 要求帐号 |
120 | 服务器准备就绪的时间(分钟数) | 350 | 文件行为暂停 |
125 | 打开数据连接,开始传输 | 421 | 服务关闭 |
150 | 打开连接 | 425 | 无法打开数据连接 |
200 | 成功 | 426 | 结束连接 |
202 | 命令没有执行 | 450 | 文件不可用 |
211 | 系统状态回复 | 451 | 遇到本地错误 |
212 | 目录状态回复 | 452 | 磁盘空间不足 |
213 | 文件状态回复 | 500 | 无效命令 |
214 | 帮助信息回复 | 501 | 错误参数 |
215 | 系统类型回复 | 502 | 命令没有执行 |
220 | 服务就绪 | 503 | 错误指令序列 |
221 | 退出网络 | 504 | 无效命令参数 |
225 | 打开数据连接 | 530 | 未登录网络 |
226 | 结束数据连接 | 532 | 存储文件需要帐号 |
227 | 进入被动模式(IP 地址、ID 端口) | 550 | 文件不可用 |
230 | 登录因特网 | 551 | 不知道的页类型 |
250 | 文件行为完成 | 552 | 超过存储分配 |
257 | 路径名建立 | 553 | 文件名不允许 |
331 | 要求密码 |
|
|