1 协议介绍:
TFTP (Trivial File Transfer Protocol, 简单文件传输协议也称小型文件传输协议)
是一种于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),已经被协定的选项能对协议的操作进行轻微的更改(特别是更大分块尺寸的使用使得吞吐量略有提高),但协议大体上还是保持不变的。
2 传输模式
数据的存储有不同的格式,磁盘中相同的一块数据,通过不同的存储协议解析,得到的内容是完全不同的,如:磁盘中的一个字节0x65,按照ASCII解析就是字母A,按照数据本身解析就是0x65这个数,两种解析的方式显示的内容完全不同。因此文件在传输的过程中也需要指明数据的表示方式,即传输模式。TFTP协议的传输模式如下所示:
模式名称 | 模式含义 | 说明 |
netascii | 文本传输模式,按照一个字节8位解析 | 文本模式 |
octet | 二进制模式,数据无需解析 | 二进制模式 |
已过时,不使用 | 已过时 |
3 协议格式
TFTP基于UDP协议实现,而UDP使用IP。因此一个TFTP包中会有如图1所示的以下几段:本地媒介头