跳到主要内容

4. 文件传输 (FILE TRANSFER)

本节讨论两种文件传输协议: 文件传输协议 (FTP) 和简单文件传输协议 (TFTP)。

4.1 文件传输协议 -- FTP (FILE TRANSFER PROTOCOL)

4.1.1 简介 (Introduction)

文件传输协议 (File Transfer Protocol, FTP) 是主机之间文件传输的协议。FTP 使用两个并行的 TCP 连接: 一个用于命令和回复的控制连接, 以及一个用于文件传输的数据连接。

每台支持文件传输的互联网主机必须 (MUST) 实现 FTP。但是, 不需要通用文件传输服务的主机可以 (MAY) 实现 FTP 客户端功能。

4.1.2 协议逐步分析 (Protocol Walk-Through)

控制连接 (Control Connection)

FTP 控制连接是一个 Telnet 连接, 用于从客户端 (USER-PI) 向服务器 (SERVER-PI) 发送 FTP 命令, 并将服务器的回复返回给客户端。

FTP 命令包括:

  • USER: 用户名
  • PASS: 密码
  • ACCT: 账户
  • CWD: 更改工作目录
  • CDUP: 更改到父目录
  • QUIT: 注销
  • RETR: 检索文件
  • STOR: 存储文件
  • STOU: 存储唯一文件
  • APPE: 追加
  • REST: 重启
  • RNFR: 重命名来源
  • RNTO: 重命名目标
  • ABOR: 中止
  • DELE: 删除
  • RMD: 删除目录
  • MKD: 创建目录
  • PWD: 打印工作目录
  • LIST: 列出文件
  • NLST: 名称列表
  • SITE: 站点参数
  • SYST: 系统
  • STAT: 状态
  • HELP: 帮助
  • NOOP: 无操作

数据连接 (Data Connection)

FTP 数据连接用于文件传输和目录列表。FTP 支持主动 (PORT) 和被动 (PASV) 两种模式来建立数据连接。

4.1.3 具体问题 (Specific Issues)

4.1.3.1 FTP 重启机制 (FTP Restart Mechanism)

FTP REST 命令允许在指定检查点重新启动文件传输。FTP 服务器应该 (SHOULD) 为 RETR 实现 REST 命令。

4.1.3.2 FTP TYPE 命令 (FTP TYPE Command)

TYPE 命令指定表示类型 (ASCII、EBCDIC、Image/Binary、Local)。FTP 实现必须 (MUST) 至少支持以下 TYPE 命令:

  • ASCII 非打印 (TYPE A N)
  • Image (TYPE I)

4.1.3.3 FTP PASV 命令 (FTP PASV Command)

PASV 命令请求服务器在数据端口上监听并等待连接。FTP 服务器应该 (SHOULD) 实现 PASV。

4.1.3.4 FTP PORT 命令 (FTP PORT Command)

PORT 命令指定服务器应连接的数据端口。FTP 服务器必须 (MUST) 实现 PORT。

4.1.4 FTP 要求摘要 (FTP Requirements Summary)

功能章节MUSTSHOULDMAY
实现 FTP4.1.1x
支持 TYPE A N4.1.3.2x
支持 TYPE I4.1.3.2x
实现 PORT4.1.3.4x
实现 PASV4.1.3.3x
为 RETR 实现 REST4.1.3.1x

4.2 简单文件传输协议 -- TFTP (TRIVIAL FILE TRANSFER PROTOCOL)

4.2.1 简介 (Introduction)

简单文件传输协议 (Trivial File Transfer Protocol, TFTP) 是一种基于 UDP 的简单文件传输协议。TFTP 专为不需要 FTP 复杂性的应用程序而设计。

通用互联网主机应该 (SHOULD) 实现 TFTP 客户端功能。通用互联网主机可以 (MAY) 实现 TFTP 服务器功能。

4.2.2 协议逐步分析 (Protocol Walk-Through)

TFTP 使用五种类型的数据包:

  1. 读请求 (RRQ): 请求读取文件
  2. 写请求 (WRQ): 请求写入文件
  3. 数据 (DATA): 文件数据包
  4. 确认 (ACK): 确认收到数据
  5. 错误 (ERROR): 错误条件

4.2.3 具体问题 (Specific Issues)

4.2.3.1 TFTP 超时 (TFTP Timeout)

TFTP 使用带有超时和重传的简单停止等待协议。TFTP 实现必须 (MUST) 使用自适应超时。

4.2.3.2 TFTP 选项 (TFTP Options)

TFTP 支持可选扩展, 包括块大小协商和超时协商。这些选项可以 (MAY) 实现。

4.2.4 TFTP 要求摘要 (TFTP Requirements Summary)

功能章节MUSTSHOULDMAY
实现 TFTP 客户端4.2.1x
实现 TFTP 服务器4.2.1x
使用自适应超时4.2.3.1x
支持 TFTP 选项4.2.3.2x