TCP-IP详解卷1-15:TFTP(Trivial File Transfer Protocol):简单文件传送协议
一:介绍
TFTP是一个传输文件的简单协议,它基于UDP协议而实现。
此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。
二:流程
1: 任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。
如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。
2: 每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。
如果一个数据包的大小小于512字节,则表示传输结构。
如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。
3: 通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。
4: 大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。
错误主要是由下面三种情况引起的:
A: 不能满足请求,
B: 收到的数据包内容错误,而这种错误不能由延时或重发解释,
C: 对需要资源的访问丢失(如硬盘满)。
三:协议,五种类型
1: 读请求格式:IP首部(20B)+UDP首部(8B)+操作码(1: 2B)+文件名(NB)+0(1B)+模式(NB)+0(B)
2: 写请求格式:IP首部(20B)+UDP首部(8B)+操作码(2: 2B)+文件名(NB)+0(1B)+模式(NB)+0(B)
3: 数据: IP首部(20B)+UDP首部(8B)+操作码(3DATA: 2B)+块编号(2B)+数据(0-512B)
4: 应答: IP首部(20B)+UDP首部(8B)+操作码(4ACK: 2B)+块编号(2B)
5: 差错报文: IP首部(20B)+UDP首部(8B)+操作码(5ERROR: 2B)+差错信息(NB)+0(1B)
A: 对于1,2。文件字段以0作伪结束。
模式字段是一个ASCII码串netascii或octet(可大小写任意组合),同样以0字节结束。
netascii表示数据是以成行的ASCII码字符组成,以两个字节—回车字符后跟换行字符(称为CR/LF)作为行结束符。
octet则将数据看作8 bit一组的字节流而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用
B: 读流程
TFTP客户需要发送一个读请求说明要读的文件名和文件模式(mode )。
如果这个文件能被这个客户读取, TFTP服务器就返回一个块编号为1的数据分组。
TFTP客户又发送一个块编号为1的ACK。
TFTP服务器随后发送块编号为2的数据。
TFTP客户发回块编号为2的ACK。
重复这个过程直到这个文件传送完。
除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有5 1 2字节的数据。
当TFT P客户收到一个不足512字节的数据分组,就知道它收到最后一个数据分组。
C: 写流程
写请求的情况下,TFTP客户发送WRQ指明文件名和模式。
如果该文件能被该客户写,TFTP 服务器就返回块编号为0的ACK包。
该客户就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK。
D: 最后一种TFTP报文类型是差错报文,它的操作码为5。
它用于服务器不能处理读请求或写请求的情况。
在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。
四: 安全性(存在“安全漏洞”)
1: 由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
2: 因为TFTP没有安全控制机制,因此安全问题应该多加考虑。通常TFTP允许下载数据而不允许上传数据。
TCP-IP详解卷1-15:TFTP(Trivial File Transfer Protocol):简单文件传送协议
最新推荐文章于 2023-01-06 23:04:08 发布