概述
TFTP ( Trivial File Transfer Protocol)即简单文件传送协议,最初打算用于引导无盘系统。为了保持简单和短小,TFTP将使用UDP。TFTP的代码都能适合只读存储器。
协议
在开始工作时,TFTP的客户与服务器交换信息,客户发送一个读请求或写请求给服务器。在一个无盘系统进行系统引导的正常情况下,第一个请求是读请求(RRQ)。
下图展示了5种TFTP报文格式:

报文的头两个字节表示操作码。对于读请求和写请求(WRQ)。
文件名字段说明客户要读或写的位于服务器上的文件。这个文件字段以 0字节作为结束
模式字段是一个ASCII码串netascii或octet(可大小写任意组合),同样以0字节结束。netascii表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为CR/LF)作为行结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。octet则将数据看作8bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。
以读一个文件作为例子,TFTP客户需要发送一个读请求说明要读的文件名和文件模式 ( mode )。如果这个文件能被这个客户读取, TFTP服务器就返回一个块编号为 1的数据分组。TFTP客户又发送一个块编号为1的ACK。TFTP服务器随后发送块编号为 2的数据。TFTP客户发回块编号为2的ACK。重复这个过程直到这个文件传送完。除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有512字节的数据。当TFTP客户收到一个不足 512字节的数据分组,就知道它收到最后一个数据分组。
在写请求的情况下,TFTP客户发送WRQ指明文件名和模式。如果该文件能被 该客户写,TFTP服务器就返回块编号为0的ACK包。该客户就将文件的头 512字节以块编号为1发出。服务器则返回块编号为1的ACK。
这种类型的数据传输称为停止等待协议。它只用在一些简单的协议如TFTP中。
最后一种TFTP报文类型是差错报文,它的操作码为 5。它用于服务器不能处理读请求或写请求的情况。在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。差错编号字段给出一个数字的差错码,跟着是一个 ASCII表示的差错报文字段,可能包含额外的操作系统说明的信息。
安全性
在TFTP分组中并不提供用户名和口令。这是TFTP的一个特征。由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
TFTP的这一特性被许多解密高手用于获取Unix口令文件的复制,然后来猜测用户口令。为防止这种类型的访问,目前大多数TFTP服务器提供了一个选项来限制只能访问特定目录下的文件。这个目录中只包含无盘系统进行系统引导时所需的文件。
对其他的安全性,Unix系统下的TFTP服务器通常将它的用户ID和组ID设置为不会赋给任何真正用户的值。这只允许访问具有读或写属性的文件。