简单文件传输协议---TFTP

 摘自:https://www.cnblogs.com/chusiyong/p/11389442.html

简介

  TFTP协议全称为简单文件传输协议,是以UDP为基础的应用层协议,主要用于不同设备之间的文件传输。具有协议简单,易于实现的特点,常用于嵌入式设备开发中。

传输模式

  数据的存储有不同的格式,磁盘中相同的一块数据,通过不同的存储协议解析,得到的内容是完全不同的,如:磁盘中的一个字节0x65,按照ASCII解析就是字母A,按照数据本身解析就是0x65这个数,两种解析的方式显示的内容完全不同。因此文件在传输的过程中也需要指明数据的表示方式,即传输模式。TFTP协议的传输模式如下所示:

模式名称 模式含义 说明
netascii 文本传输模式,按照一个字节8位解析 文本模式
octet 二进制模式,数据无需解析 二进制模式
mail 已过时,不使用 已过时

协议格式

TFTP共定义了五种类型的包格式,格式的区分由包数据前两个字节的Opcode字段区分,分别是:

  • 读文件请求包:Read request,简写为RRQ,对应Opcode字段值为1
  • 写文件请求包:Write requst,简写为WRQ,对应Opcode字段值为2
  • 文件数据包:Data,简写为DATA,对应Opcode字段值为3
  • 回应包:Acknowledgement,简写为ACK,对应Opcode字段值为4
  • 错误信息包:Error,简写为ERROR,对应Opcode字段值为5

读写文件请求包格式

2字节 字符串 1字节 字符串 1字节
Opcode Filename  0          Mode   0         

Opcode       操作码 1 / 2

Filename     文件名

Mode           传输模式

数据包格式

2字节 2字节 n字节
Opcode Block  data

Opcode        操作码 3

Block            包序号,从1开始,除了最后一包,每一包的长度都是512字节,最后一包的长度小于512字节

data              具体急需要传输的数据

ACK包格式

用于回复对端,确认数据的处理情况

2字节 2字节
Opcode Block

Opcode         操作码 4

Block             收到的包序号

错误包格式

2字节 2字节 字符串 1字节
Opcode ErrorCode ErrMsg  0

用于在失败的情况下回复对端

Opcode         操作码 5

ErrorCode     错误码,每一种错误码对应一种错误场景

ErrMsg         错误的描述信息

错误码

错误码    表示意思

   0         未定义Not defined, see error message (if any).
   1         文件找不到File not found.
   2         拒绝访问Access violation.
   3         磁盘满了或者超出了可分配空间Disk full or allocation exceeded.
   4         非法TFTP操作Illegal TFTP operation.
   5         传输ID未知Unknown transfer ID.
   6         文件不存在File already exists.
   7         没有该用户No such user.

TFTP协议的缺陷

  1. 传输效率低
  2. 对于超时机制没有明确说明
  3. 每包长度固定为512字节,不灵活

简介

  TFTP协议全称为简单文件传输协议,是以UDP为基础的应用层协议,主要用于不同设备之间的文件传输。具有协议简单,易于实现的特点,常用于嵌入式设备开发中。

传输模式

  数据的存储有不同的格式,磁盘中相同的一块数据,通过不同的存储协议解析,得到的内容是完全不同的,如:磁盘中的一个字节0x65,按照ASCII解析就是字母A,按照数据本身解析就是0x65这个数,两种解析的方式显示的内容完全不同。因此文件在传输的过程中也需要指明数据的表示方式,即传输模式。TFTP协议的传输模式如下所示:

模式名称 模式含义 说明
netascii 文本传输模式,按照一个字节8位解析 文本模式
octet 二进制模式,数据无需解析 二进制模式
mail 已过时,不使用 已过时

协议格式

TFTP共定义了五种类型的包格式,格式的区分由包数据前两个字节的Opcode字段区分,分别是:

  • 读文件请求包:Read request,简写为RRQ,对应Opcode字段值为1
  • 写文件请求包:Write requst,简写为WRQ,对应Opcode字段值为2
  • 文件数据包:Data,简写为DATA,对应Opcode字段值为3
  • 回应包:Acknowledgement,简写为ACK,对应Opcode字段值为4
  • 错误信息包:Error,简写为ERROR,对应Opcode字段值为5

读写文件请求包格式

2字节 字符串 1字节 字符串 1字节
Opcode Filename  0          Mode   0         

Opcode       操作码 1 / 2

Filename     文件名

Mode           传输模式

数据包格式

2字节 2字节 n字节
Opcode Block  data

Opcode        操作码 3

Block            包序号,从1开始,除了最后一包,每一包的长度都是512字节,最后一包的长度小于512字节

data              具体急需要传输的数据

ACK包格式

用于回复对端,确认数据的处理情况

2字节 2字节
Opcode Block

Opcode         操作码 4

Block             收到的包序号

错误包格式

2字节 2字节 字符串 1字节
Opcode ErrorCode ErrMsg  0

用于在失败的情况下回复对端

Opcode         操作码 5

ErrorCode     错误码,每一种错误码对应一种错误场景

ErrMsg         错误的描述信息

错误码

错误码    表示意思

   0         未定义Not defined, see error message (if any).
   1         文件找不到File not found.
   2         拒绝访问Access violation.
   3         磁盘满了或者超出了可分配空间Disk full or allocation exceeded.
   4         非法TFTP操作Illegal TFTP operation.
   5         传输ID未知Unknown transfer ID.
   6         文件不存在File already exists.
   7         没有该用户No such user.

TFTP协议的缺陷

  1. 传输效率低
  2. 对于超时机制没有明确说明
  3. 每包长度固定为512字节,不灵活

猜你喜欢

转载自www.cnblogs.com/LiuYanYGZ/p/12227477.html
今日推荐