Skip to main content

2. Overview of the Protocol (协议概述)

任何传输都以读取或写入文件的请求开始,这也用于请求连接.如果服务器批准请求,则连接打开,文件以512字节的固定长度块发送.每个数据包包含一个数据块,并且必须在发送下一个数据包之前由确认包进行确认.小于512字节的数据包表示传输终止.如果数据包在网络中丢失,预期的接收方将超时,并可能重传其最后一个数据包 (可能是数据或确认),从而导致丢失数据包的发送方重传该丢失的数据包.发送方必须只保留一个数据包用于重传,因为锁步确认 (lock step acknowledgment) 保证所有较旧的数据包都已被接收.请注意,传输中涉及的两台机器都被视为发送方和接收方.一个发送数据并接收确认,另一个发送确认并接收数据.

大多数错误会导致连接终止.错误通过发送错误包来发出信号.该数据包不被确认,也不被重传 (即,TFTP服务器或用户可能在发送错误消息后终止),因此连接的另一端可能无法收到它.因此,当错误包丢失时,使用超时来检测此类终止.错误由三种类型的事件引起: 无法满足请求 (例如,文件未找到,访问违规或无此类用户),接收到无法由网络中的延迟或重复解释的数据包 (例如,格式不正确的数据包),以及失去对必要资源的访问 (例如,磁盘已满或在传输过程中访问被拒绝).

TFTP仅识别一种不会导致终止的错误条件,即接收到的数据包的源端口不正确.在这种情况下,会向发起主机发送错误包.

该协议非常严格,以简化实现.例如,固定长度的块使分配变得简单,锁步确认提供流量控制并消除了重新排序传入数据包的需要.