FTP命令 命令 | 描述 | 我和我的班集体 ABOR | 中断数据连接程序 | ACCT <account> | 系统特权帐号 | ALLO <bytes> | | APPE <filename> | 添加文件到服务器同名文件 | CDUP <dir path> | 改变服务器上的父目录 | CWD <dir path> | 改变服务器上的工作目录 | DELE <filename> | 删除服务器上的指定文件 | HELP <command> | 返回指定命令信息 | 胡佩莲 LIST <name> | 如果是文件名列出文件信息,如果是目录则列出文件列表 | MODE <mode> | 传输模式(S=流模式,B=块模式,C=压缩模式) | MKD <directory> | 在服务器上建立指定目录 | NLST <directory> | 列出指定目录内容 | NOOP | 无动作,除了来自服务器上的承认 | PASS <password> | 系统登录密码 | PASV | 请求服务器等待数据连接 | PORT <address> | IP 地址和两字节的端口 ID | PWD | 显示当前工作目录 | QUIT | 从 FTP 服务器上退出登录 | REIN | 重新初始化登录状态连接 | REST <offset> | 由特定偏移量重启文件传递 | RETR <filename> | 从服务器上回(复制)文件 | RMD <directory> | 在服务器上删除指定目录 | RNFR <old path> | 对旧路径重命名 | RNTO <new path> | 对新路径重命名 | SITE <params> | 由服务器提供的站点特殊参数 | SMNT <pathname> | 挂载指定文件结构 | STAT <directory> | 在当前程序或目录上返回信息 | STOR <filename> | 储存(复制)文件到服务器上 | STOU <filename> | 储存文件到服务器名称上 | STRU <type> | 数据结构(F=文件,R=记录,P=页面) | SYST | 返回服务器使用的操作系统 | TYPE <data type> | 数据类型(A=ASCII,E=EBCDIC,I=binary) | USER <username>> | 系统登录的用户名 | | |
FTP响应码 响应代码 | 解释说明 | 110 | 李佳霏 新文件指示器上的重启标记 | 120 | 服务器准备就绪的时间(分钟数) | 125 | 打开数据连接,开始传输 | 150 | 打开连接 | 200 | 成功 | 202 | 命令没有执行 | 211 | 系统状态回复 | 212 | 目录状态回复 | 213 | 文件状态回复 | 214 | 帮助信息回复 | 215 | 系统类型回复 | 220 | 服务就绪 | 221 | 退出网络 | 225 | 打开数据连接 | 226 | 结束数据连接 | 227 | 进入被动模式(IP 地址、ID 端口) | 230 | 登录因特网 | 250 | 文件行为完成 | 257 | 路径名建立 | 331 | 要求密码 | 332 | 要求帐号 | 350 | 文件行为暂停 | 421 | 服务关闭 | 425 | 无法打开数据连接 | 426 | 结束连接 | 450 | 文件不可用 | 451 | 遇到本地错误 | 452 | 磁盘空间不足 | 夜笑话 500 | 无效命令 | 501 | 错误参数 | 502 | 命令没有执行 | 503 | 错误指令序列 | 504惠威t200a | 无效命令参数 | 530 | 未登录网络 | 532 | 存储文件需要帐号 | 550 | 文件不可用 | 551 | 不知道的页类型 | 552 | 超过存储分配 | 553 | 文件名不允许 | | |
|
|
FTP 概述
文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。
在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据。本文主要基于 LINUX 平台,对 FTP 客户端的实现原理进行详尽的解释并阐述如何使用 C 语言编写一个简单的 FTP 客户端。
FTP 协议
相比其他协议,如 HTTP 协议,FTP 协议要复杂一些。与一般的 C/S 应用不同点在于一般的C/S 应用程序一般只会建立一个 Socket 连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。
国际经济合作
FTP 使用 2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21 (命令端口)和 20 (数据端口)。控制 Socket 用来传送命令,数据 Socket 是用于传送数据。每一个 FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。
命令端口
一般来说,客户端有一个 Socket 用来连接 FTP 服务器的相关端口,它负责 FTP 命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成。
数据端口
对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个 Socket来完成。
如果使用被动模式,通常服务器端会返回一个端口号。客户端需要用另开一个 Socket 来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。
如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。