TFTP 代表普通文件传输协议。某些应用程序不需要 TCP 的全部功能,也无法承受其复杂性。TFTP 支持不需要客户端和服务器之间复杂交互的廉价结构。TFTP 将操作限制为简单的文件传输,并且不支持身份验证。
使用 TFTP 的好处是它使引导代码能够使用操作框架一旦开始执行时使用的类似底层 TCP/IP 协议。因此,设备有可能从另一个物理网络上的服务器进行引导。
TFTP 没有可靠的流传输服务。它运行在任何其他不可靠数据包传输系统的 UDP 之上,使用超时和重传来确保数据到达。发送方以固定大小的块传输文件,并在发送文本之前等待每个块的确认。
TFTP 的主要特点如下:
TFTP 基于客户端-服务器原理,TFTP 服务器使用众所周知的 UDP 端口号 69。
TFTP 是一种不安全的协议,不支持身份验证。
TFTP 包含空闲 - RQ(停止和等待)错误恢复机制。
每个 TFTP 数据单元都带有一个序列号。
每个数据单元被单独确认。接受确认后,发送下一个数据单元。
错误恢复是通过超时后的重传。TFTP 使用自适应超时和指数退避算法。
有四种类型的 TFTP 消息,如下所示 -
读取请求 - 客户端使用此命令从服务器获取文件的 0 副本
Read Request (1) | 文件名 | 0 | 模式 | 0 |
2 个八位字节变量 1 个八位字节变量 1 个八位字节
Write Request - 客户端使用此命令将文件写入服务器
读取请求 (1) | 文件名 | 0 | 模式 | 0 |
2 个八位字节变量 1 个八位字节变量 1 个八位字节
数据 - 此 TFTP 消息包含数据块。
数据 (3) | 序列号 | Data |
2 个八位字节 2 个八位字节,最多 512 个八位字节
确认- 客户端和服务器使用它来确认接收到的数据单元。
确认 (4) | 序列号 |
2 个八位字节 2 个八位字节
在该图中,前两个八位字节表示消息的类型。模式字段定义数据类型(ASCII 或二进制)。文件名和模式字段使用全零八位字节分隔。
类型 3 消息包含固定大小的 512 个八位字节的数据块。如果出现的数据消息的数据八位字节小于 512 八位字节,则会话将被删除。最后一个数据消息可以有一个少于 512 个八位字节的数据块(带有 EOF)。类型 4 消息用于确认。