简单文件传输协议

文件传输协议的简易版,该协议不提供认证功能

简单文件传输协议也称小型文件传输协议Trivial File Transfer Protocol, TFTP),是一种于1981年在RFC 783中定义的简化的文件传输协议(FTP)。

小型文件传输协议非常简单,透过少量存储器就能轻松实现——这在当时是很重要的考虑因素。所以TFTP被用于引导计算机,例如没有大容量存储器的路由器。现在它仍然被用于在一个网络上主机之间传输小文件,例如从一台网络主机或服务器引导一个远程X Window System终端或其他的瘦客户端

小型文件传输协议部分基于更早期的文件传输协议,文件传输协议是通用分组协议(PUP Protocol)中的一部分。在TCP/IP协议组早期的工作中,TFTP往往是在一个新的主机类型上首先完成的协议——因为其非常的简单。

最早的小型文件传输协议版本是在RFC 1350之前,显示出相当糟糕的协议缺陷,发现的时候被称为魔术新手症候群

技术信息

小型文件传输协议的一些详细资料:

  • 使用UDP(端口69)作为其传输协议(不像FTP使用TCP端口21)。
  • 不能列出目录内容。
  • 无验证或加密机制。
  • 被用于在远程服务器上读取或写入文件。
  • 支持三种不同的传输模式:"netascii","octet"和"mail",前两种符合FTP协议中的"ASCII"和"image(binary)"模式;第三种从来很少使用,目前已经废弃。

因为小型文件传输协议使用UDP协议,就必须自己支持传输和会话的控制。每个通过TFTP传输的文件构成了一个独立的交换。此传输表现为步锁,任何时间网络上仅仅传递一个包(一个数据块或一个首部确认)。由于缺少窗口切换技术,TFTP在有很多潜在连接的情况下仅提供较低的吞吐量。

由于小型文件传输协议缺少安全性,在开放式因特网上传输非常危险,所以普遍仅仅用于私人本地网络。目前TFTP常用于PXE无盘启动,网络设备的设置等。

选项协商后来加到协议中(RFC 2347),已经被协定的选项能对协议的操作进行轻微的更改(特别是更大分块尺寸的使用使得吞吐量略有提高),但协议大体上还是保持不变的。

小型文件传输协议会话的详细资料

  • 初始化主机A送一个读请求(RRQ)或写请求(WRQ)包给主机B,包含了文件名和传输模式。
  • B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号。
  • 源主机向目的主机送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包。
  • 最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是0字节的。