tcp/ip(十五)

下载
第15章TFTP:简单文件传送协议
15.1 引言
T F T P ( Trivial File Transfer Protocol)即简单文件传送协议,最初打算用于引导无盘系统
(通常是工作站或X终端)。和将在第2 7章介绍的使用T C P的文件传送协议( F T P)不同,为了
保持简单和短小, T F T P将使用U D P。T F T P的代码(和它所需要的U D P、I P和设备驱动程序)
都能适合只读存储器。
本章对T F T P只作一般介绍,因为在下一章引导程序协议( Bootstrap Protocol)中还会遇
到T F T P。在图5 - 1中,当从网络上引导s u n主机时,也曾遇到过T F T P,s u n主机通过R A R P获
得它的I P地址后,将发出一个T F T P请求。
RFC 1350 [Sollins 1992]是第2版T F T P的正式规范。第1 2章[Stevens 1990] 提供了实现
T F T P客户和服务器的全部源代码,并介绍了一些使用T F T P的编程技术。
15.2 协议
在开始工作时,T F T P的客户与服务器交换信息,客户发送一个读请求或写请求给服务器。
在一个无盘系统进行系统引导的正常情况下,第一个请求是读请求( R R Q)。图1 5 - 1显示了5
种T F T P报文格式(操作码为1和2的报文使用相同的格式)。
T F T P报文的头两个字节表示操作码。对于读请求和写请求( W R Q),文件名字段说明客
户要读或写的位于服务器上的文件。这个文件字段以0字节作为结束(见图1 5 - 1)。模式字段
是一个A S C I I码串n e t a s c i i或o c t e t(可大小写任意组合),同样以0字节结束。n e t a s c i i
表示数据是以成行的A S C I I码字符组成,以两个字节—回车字符后跟换行字符(称为C R / L F)
作为行结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转化。
o c t e t则将数据看作8 bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。以读一个文件作为例
子,T F T P客户需要发送一个读请求说明要读的文件名和文件模式( m o d e )。如果这个文件能被
这个客户读取, T F T P服务器就返回一个块编号为1的数据分组。T F T P客户又发送一个块编号
为1的A C K。T F T P服务器随后发送块编号为2的数据。T F T P客户发回块编号为2的A C K。重复
这个过程直到这个文件传送完。除了最后一个数据分组可含有不足5 1 2字节的数据,其他每个
数据分组均含有5 1 2字节的数据。当T F T P客户收到一个不足5 1 2字节的数据分组,就知道它收
到最后一个数据分组。
在写请求的情况下,TFTP 客户发送W R Q指明文件名和模式。如果该文件能被该客户写,
TFTP 服务器就返回块编号为0的A C K包。该客户就将文件的头5 1 2字节以块编号为1发出。服
务器则返回块编号为1的A C K。
这种类型的数据传输称为停止等待协议。它只用在一些简单的协议如T F T P中。在2 0 . 3节
中将看到T C P提供了不同形式的确认,能提供更高的系统吞吐量。T F T P的优点在于实现的简
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
单而不是高的系统吞吐量。
图15-1 5种TFTP报文格式
最后一种T F T P报文类型是差错报文,它的操作码为5。它用于服务器不能处理读请求或
写请求的情况。在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。差
错编号字段给出一个数字的差错码,跟着是一个A S C I I表示的差错报文字段,可能包含额外的
操作系统说明的信息。
既然T F T P使用不可靠的U D P,T F T P就必须处理分组丢失和分组重复。分组丢失可通过发
送方的超时与重传机制解决(注意存在一种称为“魔术新手综合症( s o r c e r e r’s apprentice
s y n d r o m e )”的潜在问题,如果双方都超时与重传,就可能出现这个问题。12.2 节[ S t e v e n s
1990] 介绍了这个问题是如何发生的)。和许多U D P应用程序一样, T F T P报文中没有检验和,
它假定任何数据差错都将被U D P的检验和检测到(参见11 . 3节)。
15.3 一个例子
让我们通过观察协议的工作情况来了解T F T P。在b s d i主机上运行TFTP 客户程序,并从
主机s v r 4读取一个文本文件:
最先引起我们注意的是在U n i x系统下接收的文件长度是9 1 4字节,而T F T P则传送了9 6 2个
字节。使用w c程序我们看到文件共有4 8行,因此4 8个U n i x的换行符被转化成4 8个C R / C F对,
160使用TCP/IP详解,卷1:协议
下载
IP数据报
IP首部UDP首部
2字节
文件名模式
N字节N字节
块编号
块编号
差错码差错信息
操作码
( 3 = d a t a)
操作码
( 4 = A C K)
操作码
( 5 = e r r o r)
20字节8字节
2字节
2字节
2字节
2字节
2字节2字节N字节
数据
0-512字节
操作码
(1=RRQ)
(2=WRQ)
UDP报文
TFTP数据报
启动TFTP客户进程
从服务器读取文件
结束
查看我们读取的文件大小
文件行数?
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
因为默认情况下T F T P使用n e t a s c i i模式传送。
图1 5 - 2显示了发生的分组交换过程。
图15-2 使用TFTP传输一个文件的分组交换过程
第1行显示了客户向服务器发送的读请求。由于目的U D P端口是T F T P熟知端口( 6 9),
t c p d u m p将解释T F T P分组,并显示R R Q和文件名。1 9字节的U D P数据包括2字节的操作码,
7字节的的文件名,1字节的0,8字节的n e t a s c i i模式以及另1字节的0结束。
下一个分组由服务器发回(第2行),共包含5 1 6字节:2字节的操作码, 2字节的数据块号
和5 1 2字节的数据。第3行是这个数据块的确认,它包括2字节的操作码和2字节的数据块号。
最后的数据分组(第4行)包含4 5 0字节的数据。这4 5 0字节的数据加上第2行的5 1 2字节的
数据就是向该客户传送的9 6 2字节的数据。注意t c p d u m p仅在第1行解释T F T P报文,而在2~5
行都不显示任何T F T P协议信息。这是因为服务器进程的端口在第1行和第2行发生了变化。
T F T P协议需要客户进程向服务器进程的U D P熟知端口(6 9)发送第一个分组(R R Q或W R Q)。
之后服务器进程便向服务器主机申请一个尚未使用的端口( 1 0 7 7,见图1 5 - 2),服务器进程使
用这个端口来进行请求客户进程与服务器进程间的其他数据交换。客户进程的端口号(在这
个例子中为11 0 6)没有变化。t c p d u m p无法知道主机s r v 4上的1 0 7 7端口是一个T F T P服务器进
程。
服务器进程端口变化的原因是服务器进程不能占用这个熟知端口来完成需一些时间的文
件传输(可能是几十秒甚至数分钟)。相反,在传输当前文件的过程中,这个熟知端口要留出
来供其他的T F T P客户进程发送它们的请求。
回顾图1 0 - 6,当R I P服务器向客户发送的数据超过5 1 2字节,两个U D P数据报都使用服务
器的熟知端口。在那个例子中,即使服务器进程必须写多个数据报以便将所有数据发回,服
务器进程也是先写一个,再写一个,它们都使用它的熟知端口。然而, T F T P协议与它不同,
因为客户与服务器间的连接需要持续一个较长的时间(可能是数秒或数分钟)。如果一个服务
器进程使用熟知端口来进行文件传输,那么在文件传输期间,它要么拒绝任何来自其他客户
的请求,要么一个服务器进程在同一端口( 6 9)同时对多个客户进程进行多个文件传输。最
简单的办法是让服务器进程在收到R R Q或W R Q后,改用新的端口。当然,客户进程在收到第
一个数据分组(图1 5 - 2的第2行)后必须探测到这个新的端口,并将之后的所有确认(第3行
和第5行)发送到那个新的端口。
在1 6 . 3节我们将看到当X终端在进行系统引导时将使用T F T P。
15.4 安全性
注意在T F T P分组(图1 5 - 1)中并不提供用户名和口令。这是T F T P的一个特征(即“安全
漏洞”)。由于T F T P是设计用于系统引导进程,它不可能提供用户名和口令。
T F T P的这一特性被许多解密高手用于获取U n i x口令文件的复制,然后来猜测用户口令。
第15章TFTP:简单文件传送协议使用161
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^
为防止这种类型的访问,目前大多数T F T P服务器提供了一个选项来限制只能访问特定目录下
的文件( U n i x系统中通常是/ t f t p b o o t)。这个目录中只包含无盘系统进行系统引导时所需
的文件。
对其他的安全性, U n i x系统下的T F T P服务器通常将它的用户I D和组I D设置为不会赋给任
何真正用户的值。这只允许访问具有读或写属性的文件。
15.5 小结
T F T P是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导。它只使用
几种报文格式,是一种停止等待协议。
为了允许多个客户端同时进行系统引导, T F T P服务器必须提供一定形式的并发。因为
U D P在一个客户与一个服务器之间并不提供唯一连接( T C P也一样),T F T P服务器通过为每
个客户提供一个新的U D P端口来提供并发。这允许不同的客户输入数据报,然后由服务器中
的U D P模块根据目的端口号进行区分,而不是由服务器本身来进行区分。
T F T P协议没有提供安全特性。大多数执行指望T F T P服务器的系统管理员来限制客户的访
问,只允许它们访问引导所必须的文件。
第2 7章介绍的文件传输协议( F T P)是设计用于一般目的的、高吞吐量的文件传输。
习题
15.1 阅读Host Requirements RFC,了解如果一个TFTP 服务器收到的请求的目的I P地址是一
个广播地址,它将做什么。
15.2 当T F T P块号由6 5 5 3 5跳回到0时,你认为会发生什么? RFC 1350提到了如何处理这一问
题吗?
15.3 T F T P发送方采用超时重发来处理分组丢失。当T F T P作为引导进程的一部分时,这种方
法对T F T P的使用有何影响?
15.4 使用T F T P时,影响传输文件所需时间的限制性因素是什么?
162使用TCP/IP详解,卷1:协议
下载
该书下载自-书部落-分享计算机经典巨著!--www.shubulo.com!仅供试看^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值