TCP/IP-15-TFTP

 第15章TFTP:简单文件传送协议
http://tools.ietf.org/html/rfc1350
15.1 引言
TFTP ( Trivial File Transfer Protocol)即简单文件传送协议,
最初打算用于引导无盘系统(通常是工作站或X终端)。
为了保持简单和短小, TFTP将使用UDP。
TFTP的代码(和它所需要的UDP、I P和设备驱动程序)都能适合只读存储器。
当从网络上引导s u n主机时,也曾遇到过TFTP,
s u n主机通过R A R P获得它的I P地址后,将发出一个TFTP请求。
提供了实现TFTP客户和服务器的全部源代码,并介绍了一些使用TFTP的编程技术。

15.2 协议
在开始工作时,TFTP的客户与服务器交换信息,客户发送一个读请求或写请求给服务器。
在一个无盘系统进行系统引导的正常情况下,第一个请求是读请求( R R Q)。
TFTP报文的头两个字节表示操作码。
对于读请求和写请求( W R Q),文件名字段说明客户要读或写的位于服务器上的文件。
这个文件字段以0字节作为结束(见图1 5 - 1)。
模式字段是一个ASCII码串n e t ASCII或o c t e t(可大小写任意组合),同样以0字节结束。
表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为C R / L F)作为行结束符。
这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。
o c t e t则将数据看作8 bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。
以读一个文件作为例子,TFTP客户需要发送一个读请求说明要读的文件名和文件模式( m o d e )。
如果这个文件能被这个客户读取, TFTP服务器就返回一个块编号为1的数据分组。
TFTP客户又发送一个块编号为1的ACK。TFTP服务器随后发送块编号为2的数据。
TFTP客户发回块编号为2的ACK。重复这个过程直到这个文件传送完。
除了最后一个数据分组可含有不足5 1 2字节的数据,其他每个数据分组均含有5 1 2字节的数据。
当TFTP客户收到一个不足5 1 2字节的数据分组,就知道它收到最后一个数据分组。
在写请求的情况下,TFTP 客户发送W R Q指明文件名和模式。
如果该文件能被该客户写,TFTP 服务器就返回块编号为0的ACK包。
该客户就将文件的头5 1 2字节以块编号为1发出。服务器则返回块编号为1的ACK。
这种类型的数据传输称为停止等待协议。它只用在一些简单的协议如TFTP中。
TFTP的优点在于实现的简单而不是高的系统吞吐量。
最后一种TFTP报文类型是差错报文,它的操作码为5。
它用于服务器不能处理读请求或写请求的情况。
在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。
差错编号字段给出一个数字的差错码,跟着是一个ASCII表示的差错报文字段,
可能包含额外的操作系统说明的信息。
既然TFTP使用不可靠的UDP,TFTP就必须处理分组丢失和分组重复。
分组丢失可通过发送方的超时与重传机制解决的潜在问题,如果双方都超时与重传,就可能出现这个问题。
和许多UDP应用程序一样, TFTP报文中没有检验和,它假定任何数据差错都将被UDP的检验和检测到

15.4 安全性
注意在TFTP分组中并不提供用户名和口令。
这是TFTP的一个特征(即“安全漏洞”)。
由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
TFTP的这一特性被许多解密高手用于获取U n i x口令文件的复制,然后来猜测用户口令。
目前大多数TFTP服务器提供了一个选项来限制只能访问特定目录下的文件( U n i x系统中通常是/ TFTP b o o t)。
这个目录中只包含无盘系统进行系统引导时所需的文件。
对其他的安全性, U n i x系统下的TFTP服务器通常将它的用户I D和组I D设置为不会赋给任何真正用户的值。
这只允许访问具有读或写属性的文件。

15.5 小结
TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导。
它只使用几种报文格式,是一种停止等待协议。
为了允许多个客户端同时进行系统引导, TFTP服务器必须提供一定形式的并发。
因为UDP在一个客户与一个服务器之间并不提供唯一连接( TCP也一样),TFTP服务器通过为每
个客户提供一个新的UDP端口来提供并发。这允许不同的客户输入数据报,
然后由服务器中的UDP模块根据目的端口号进行区分,而不是由服务器本身来进行区分TFTP协议没有提供安全特性。
大多数执行指望TFTP服务器的系统管理员来限制客户的访问,只允许它们访问引导所必须的文件。
第2 7章介绍的文件传输协议( F T P)是设计用于一般目的的、高吞吐量的文件传输。

习题
15.1 阅读Host Requirements RFC,了解如果一个TFTP 服务器收到的请求的目的I P地址是一个广播地址,它将做什么。
15.2 当TFTP块号由6 5 5 3 5跳回到0时,你认为会发生什么? RFC 1350提到了如何处理这一问题吗?
15.3 TFTP发送方采用超时重发来处理分组丢失。
当TFTP作为引导进程的一部分时,这种方法对TFTP的使用有何影响?
15.4 使用TFTP时,影响传输文件所需时间的限制性因素是什么?

你可能感兴趣的:(编程,工作,解密,服务器,存储,终端)