本文将从概念、操作实例以及协议分析等几个步骤来粗略理解TFTP协议。
通过本文,你可以了解到
 
◆什么是TFTP协议
◆TFTP作用及一般性用途
◆如何搭建TFTP并通过实例演示其工作过程
◆从协议角度分析TFTP传输过程
 
一、何为TFTP协议
     TFTP协议,即为Trivial File Transfer Protocol,简单文件传输协议,它是TCP/IP协议簇中被用来在服务器和客户机之间传输简单文件的协议,从名称上来看似乎和我们常见的FTP协议很类似,其实两者都是用来传输文件,但不同的是,TFTP较FTP在传输文件体积方面要小得多,比较适合在需要传送的小体积文件。比如在对CISCO设备进行IOS升级或备份时,就是通过此协议连接到CISCO的TFTP服务器进行相关操作。除此之外,TFTP操作也非常简单,功能也很有限,不能像FTP一样实现例如身份验证、文件目录查询等诸多功能。
 
二、搭建并测试TFTP
1、获取TFTP.EXE
     这里通过一个实例来向大家演示如何在windows中搭建并使用TFTP服务器。
首先,我们需要获取tftp.exe(请见附件1)。有两个办法可以获得这个程序:
1>   大家可以在windows XP 系统光盘中的i386文件夹中,利用expand命令从tftp.ex_中提取tftp.exe程序。
2>   其实这个程序已经被内置在系统中,大家可以在C:\WINDOWS\system32中找到它。
2、搭建TFTP服务器
     安装TFTP服务器?听上去似乎好困难,其实很简单,这里所谓的搭建TFTP服务器其实就是将TFTP.exe作为一个服务安装在系统中,使之成为系统内置的一个服务,这样为日后提供稳定的TFTP传输打好基础。
      如何将一个程序变成Windows的服务呢?其实可以很多编程语言内置有特定的方法可以实现,但很显然,这样的办法不具备普遍性,这里我想大家推荐一个小工具,它内置于windows2000的Resource Kits,名为Srvinstw,是一个图形化的工具(请见附件2),操作也很简单。
我们就采用最通用的办法来安装TFTP服务。
具体安装过程:
找到Srvinstw
图文简述TFTP简单文件传输协议实现过程
运行Srvinstw,在这里我们可以安装一个服务,或者是卸载系统中已存的服务,只要点选【卸载服务】即可。
图文简述TFTP简单文件传输协议实现过程
选择【安装服务】,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
如果是想把服务安装在远程一台主机上,只需选择【远程主机】并输入主机名即可。这里我们选择【本地主机】,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
在【服务名称】中输入想在服务列表中显示的名称,我这里输入的是TFTP,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
这里点击【浏览】找到tftp.exe程序,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
默认选择【系统自带服务】,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
默认使用【系统帐户】登陆此服务即可,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
这里设置服务启动类型,我们选择【自动】,然后点击【下一步】
图文简述TFTP简单文件传输协议实现过程
确认所安装的服务,点击【完成】即可。
图文简述TFTP简单文件传输协议实现过程
OK,到此位置,已经将TFTP程序安装至windows的系统服务中。
我们打开services.msc查看一下
图文简述TFTP简单文件传输协议实现过程
尽管服务已经安装完毕,但默认是停止状态,需要手工启动此服务。
至此,TFTP服务器已搭建完毕,
3、测试TFTP服务器     
       测试TFTP服务器时需要用到TFTP命令,且该程序已经内置在XP系统中,所以我们可以直接通过命令行窗口运行TFTP命令。
图文简述TFTP简单文件传输协议实现过程
大家可以看到,TFTP的命令参数很少,也很简单,一般命令格式如下
TFTP [-i] host [GET | PUT] source [destination]
参数详解
-i  :表示使用二进制进行文件传输
host :指定TFTP服务器的主机名或IP地址
GET | PUT :即为下载或上传文件
最后两个参数自然是指定源文件和目标文件
      测试环境很简单,安装TFTP的服务器IP为192.168.1.100,在本地的C盘上有一个1.txt的文件,现在我们要将这个文件利用TFTP命令上传到192.168.1.100上去。在本地运行命令:
tftp -i 192.168.1.100 put c:\1.txt
如下图:
图文简述TFTP简单文件传输协议实现过程
可能有的朋友会产生一个疑问,这条命令里并未指定目的地,那这个文件会传到哪里呢,其实这里并不需要我们指定目的地,因为在命令结束后,TFTP服务器会自动在系统根目录,也就是C盘下建立一个tftpdroot的文件夹,上传的文件会自动保存在这个文件夹里。如下图:
图文简述TFTP简单文件传输协议实现过程
当我们想从TFTP服务器上下载文件时,只需要把文件放到这个目录下,并用GET命令下载即可,命令如下:
tftp -i 192.168.1.100 get down.txt e:\down.txt
如下图:
图文简述TFTP简单文件传输协议实现过程
同样,这条命令也没有指定具体的源路径,只是指定了一个文件。
 
三、协议角度分析TFTP传输
    从上面2个实例已经看出TFTP协议传输过程非常简单且,在传输小体积文件时候效率很高,下面我想从协议角度来分析TFTP上传的过程。
基本环境介绍:
客户机:192.168.1.50
TFTP服务器:192.168.1.100
上传文件:AAAA.TXT
协议分析工具:Wireshark 1.1.1
首先,运行此命令,如下图
图文简述TFTP简单文件传输协议实现过程
从上图可以看到文件顺利传输,此时WIreshark已经抓到相应数据包,如下图:
图文简述TFTP简单文件传输协议实现过程
下面是协议分析过程
第一个数据包:
图文简述TFTP简单文件传输协议实现过程
第二个数据包:
图文简述TFTP简单文件传输协议实现过程
第三个数据包:
图文简述TFTP简单文件传输协议实现过程
第四个数据包:
图文简述TFTP简单文件传输协议实现过程
 
通过分析这4个数据包,算是对TFTP上传过程的一个简短的描述。
我们可以看到,TFTP通过69号端口进行初始化连接,并依赖UDP协议进行数据传输,可见TFTP是一种无连接的协议类型。其实还有其他很多操作细节没有说到,包括TFTP的5种Opcode等等,如果想了解有关TFTP协议的更多细节,请参考编号为1350的RFC文档。