4. FILE TRANSFER (文件传输)
本节讨论两种文件传输协议: 文件传输协议 (FTP) 和简单文件传输协议 (TFTP)。
4.1 文件传输协议 -- FTP (FILE TRANSFER PROTOCOL -- FTP)
4.1.1 引言 (Introduction)
文件传输协议 (FTP) 是用于主机之间文件传输的协议。FTP使用两个并行的TCP连接: 一个用于命令和回复的控制连接,以及一个用于文件传输的数据连接。
每个支持文件传输的互联网主机都必须 (MUST) 实现FTP。但是,不需要通用文件传输服务的主机可以 (MAY) 实现FTP客户端功能。
4.1.2 协议详解 (Protocol Walk-Through)
控制连接 (Control Connection)
FTP控制连接是用于从客户端 (USER-PI) 向服务器 (SERVER-PI) 发送FTP命令并将服务器的回复返回给客户端的Telnet连接。
FTP命令包括:
- USER: 用户名
- PASS: 密码
- ACCT: 账户
- CWD: 更改工作目录
- CDUP: 更改到父目录
- SMNT: 结构挂载
- QUIT: 注销
- RETR: 检索文件
- STOR: 存储文件
- STOU: 存储唯一文件
- APPE: 追加
- ALLO: 分配
- 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)
| 功能 | 章节 | 必须 | 应该 | 可以 | 不得 |
|---|---|---|---|---|---|
| 实现FTP | 4.1.1 | x | |||
| 支持TYPE A N | 4.1.3.2 | x | |||
| 支持TYPE I | 4.1.3.2 | x | |||
| 实现PORT | 4.1.3.4 | x | |||
| 实现PASV | 4.1.3.3 | x | |||
| 为RETR实现REST | 4.1.3.1 | x |
4.2 简单文件传输协议 -- TFTP (TRIVIAL FILE TRANSFER PROTOCOL -- TFTP)
4.2.1 引言 (Introduction)
简单文件传输协议 (TFTP) 是建立在UDP之上的简单文件传输协议。TFTP是为不需要FTP复杂性的应用程序设计的。
通用互联网主机应该 (SHOULD) 实现TFTP客户端功能。通用互联网主机可以 (MAY) 实现TFTP服务器功能。
4.2.2 协议详解 (Protocol Walk-Through)
TFTP使用五种类型的数据包:
- 读取请求 (RRQ): 请求读取文件
- 写入请求 (WRQ): 请求写入文件
- 数据 (DATA): 文件数据包
- 确认 (ACK): 确认接收数据
- 错误 (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)
| 功能 | 章节 | 必须 | 应该 | 可以 | 不得 |
|---|---|---|---|---|---|
| 实现TFTP客户端 | 4.2.1 | x | |||
| 实现TFTP服务器 | 4.2.1 | x | |||
| 使用自适应超时 | 4.2.3.1 | x | |||
| 支持TFTP选项 | 4.2.3.2 | x |