分享

简述TFTP简单文件传输协议实现过程

 开花结果 2010-11-01

通过本文,你可以了解到

◆什么是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:WINDOWSsystem32中找到它。

  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文档。

  本文可能某些细节描述的不尽详细,若有错误之处,不吝指教。

  谢谢。

  更正:

  再次查看相关资料得知:TFTPD.EXE为服务端程序,而TFTP.EXE为客户端程序。

  本文是基于tftp测试的。

  出处:http://jeffyyko.blog.51cto.com/28563/154856

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多