伏魔战记3.9j翅膀:TFTP协议详解

来源:百度文库 编辑:中财网 时间:2024/05/02 00:42:21
来源: ChinaUnix博客  日期:2009.05.04 12:34 (共有条评论)我要评论
1. 目的
TFTP是一个传输文件的简单协议,通常使用UDP协议而实现,但tftp并没有要求实现的具体协议,在特殊需求的场合可以同tcp实现。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。
2. 概况
任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结构。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这是都是为了实现起来比较方便而进行的。通过下边的图片来了解tftp协议的通信流程:

TFTP协议概述
1.简单文件传送协议(Trivial File Trhansfer Protocol)
2.最初用于引导无盘系统,被设计用来传输小文件
3.基于UDP协议实现,但也可以由其他协议实现
4.不具备FTP的许多功能
5.只能从服务器获取或写入文件,不能列出目录
6.不进行认证
数据传输模式
1.netascii:文本模式
2.octet:二进制模式
3.mail:已经不再支持
协议结构
基本 TFTP 协议头结构:
16 bits
String
16 bits
String
16 bits
Opcode
Filename
0
Mode
0
Opcode:操作代码或命令。以下为 TFTP 命令:
Opcode
Command
Description
1
Read Request
Request to read a file
2
Write Request
Request to write to a file
3
File Data
Transfer of file data
4
Data Acknowledge
Acknowledgement of file data
5
Error
Error indication
Filename:传送的字段名称。
Mode:数据模式。协议传输的文件数据格式。可以是 NetASCII,也可以是标准 ASCII,八位二进制数据或邮件标准 ASCII。
我们通过图片来详细看看tftp报文的格式:

在看看tftp的简单超时处理机制:

好了,tftp的内容就这些了,下边是一个完整的tftp通信的报文: