Trivial File Transfer Protocol (TFTP), 汉译简单文件传输协议或小型文件传输协议,是一种简化的FTP,于1980年定义。
TFTP非常简单,通过少量存储器就能轻松实现——这在当时是很重要的考虑因素。所以TFTP被用于引导计算机,例如没有大容量存储器的路由器。现在它仍然被用于在一个网络上主机之间传输小文件,例如从一台网络主机或服务器引导一个远程X Window System终端或其他的薄型客户端(thin client)。
TFTP部分基于更早期的EFTP协议,EFTP是通用分组协议(PUP Protocol)中的一部分。在TCP/IP协议组早期的工作中,TFTP往往是在一个新的主机类型上首先完成的协议——因为其非常的简单。
最早的TFTP版本是在RFC 1350之前,显示出相当糟糕的协议缺陷,发现的时候被称为“魔术新手综合症”
(Sorcerer's Apprentice Syndrome)。
技术信息
TFTP的一些详细资料:
使用UDP(端口69)作为其传输协议(不像FTP使用TCP端口21)。
不能列出索引内容。
无验证或加密机制。
被用于从远程服务器读取或写入文件。
支持三种不同的传输模式:"netascii","octet"和"mail",前两种符合FTP协议中的"ASCII"和"image(binary)"模式;第三种从来很少使用,目前已经废弃。
因为TFTP利用了UDP,就必须提供自己的传输和会话支持。每个通过TFTP传输的文件构成了一个独立的交换。此传输表现为步锁,任何时间网络上仅仅传递一个包(一个数据块或一个首部确认)。由于缺少窗口切换技术,TFTP在有很多潜在连接的情况下仅提供较低的吞吐量。
由于TFTP缺少安全性,在开放式因特网上传输非常危险,所以普遍仅仅用于私人本地网络。
选项协商后来加到协议中(RFC 2347),已经被协定的选项能对协议的操作进行轻微的更改(特别是更大分块尺寸的使用使得吞吐量略有提高),但协议大体上还是保持不变的。
TFTP会话的详细资料
初始化主机A送一个读请求(RRQ)或写请求(WRQ)包给主机B,包含了文件名和传输模式。
B向A发一个ACK包应答,同时也通知了A其余送往B包应该发送的端口号。
源主机向目的主机送编过号的数据包,除了最后一个都应该包含一个全尺寸的数据块。目的主机用编号的ACK包应答所有的数据包。
最终的数据包必须包含少于最大尺寸的数据块以表明这是最后一个包。如果被传输文件正好是尺寸块的整数倍,源主机最后送的数据包就是0字节的。
来源: 维基百科
http://zh.wikipedia.org/wiki/%E5%B0%8F%E5%9E%8B%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE