TFTP协议简要解析
1.TFTP基本概念
TFTP(Trivial File Transfer Protocol):是一个很小且易于实现的文件传送协议:
- TFTP使用客户服务器方式和使用UDP数据包,因此TFTP需要有自己的差错改正机制。
- TFTP只支持文件传输而不支持交互。
- TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户身份进行鉴别。
2.TFTP特点
- 每次传送的数据PDU中有512字节的数据,但最后一次可以不足512字节。
- 数据PDU也被称为文件块(block),每个块按序编号,从1开始。
- 支持ASCII码或者二进制传送。
- 可对文件进行读和写。
- 使用很简单的首部。
3.停止等待协议
- 发送完一个文件块就等待对方确认,确认时应指明所确认的块编号。
- 发完数据后在规定时间收不到确认数据就要重发数据PDU。
- 发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。
- 开始工作时,TFTP客户进程发送一个读请求PDU或者写请求PDU给TFTP服务器进程,其熟知端口号码69.
- TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信。
- 若文件长度恰好为512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只包含首部而无数据的数据PDU。
- 若晚间长度不是512字节的整数倍,则最后传送数据PDU的数据字段一定不满512字节,这恰好可作为文件结束的标志。
4.TFTP报文格式
TFTP共有5中报文格式,分别为读请求、写请求、数据、响应、错误:
- 读写请求
组成如下所示,读写操作根据操作码来区分。
模式:模式共用两种,
- netascii:表示数据是以成行的ascii码字符组成,以两个字节\r\n作为行结束符。
- octet:将数据看做8bit一组的字节流而不作任何解释。
- 数据
数据报文格式如下,此时在传输文件数据:
- 响应
在接收到数据后发送响应,格式如下:
- 错误
当数据传输发生错误后发送,格式如下:
错误码及对应含义如下:
5.工作流程
- 初始化连接阶段,客户发送RRQ或WRQ,服务器端口69.
- 余下的阶段,TFTP将传输标记TID传送给UDP作为源和目标端口。
6.抓包分析
抓包数据如下:
行1:客户端写请求
行2:服务器端响应,Block0
行3:客户端发送文件,Block1
行4:服务器端响应,Block1
行5:客户端发送文件,Block2
行6:服务器端响应,Block2
行7:客户端发送文件,不足512Byte,为末尾,Block3
行8:服务器端响应,Block3
行9:客户端读取不存在文件
行10:服务器端响应错误码,显示文件未找到