学而实习之 不亦乐乎

FTP 文件传输协议

2023-10-02 07:53:03

一、FTP协议

文件传输协议(FTP:File Transfer Protocol)使得主机间可以共享文件。 FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。控制连接使用类似 TELNET 协议在主机间交换命令和消息。

FTP 的主要功能如下:

  1. 提供文件的共享(计算机程序 / 数据)
  2. 支持间接使用远程计算机
  3. 使用户不因各类主机文件存储器系统的差异而受影响
  4. 可靠且有效的传输数据。 

FTP ,尽管可以直接被终端用户使用,但其应用主要还是通过程序实现。FTP 控制帧即指 TELNET 交换信息,包含 TELNET 命令和选项。然而,大多数 FTP 控制帧是简单的 ASCII 文本,可以分为 FTP 命令或 FTP 消息。 FTP 消息是对 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 无效命令参数
  • 530 未登录网络
  • 532 存储文件需要帐号
  • 550 文件不可用
  • 551 不知道的页类型
  • 552 超过存储分配
  • 553 文件名不允许