简介
- TFTP,Trivial File Transfer Protocol,简单文本传输协议,应用层协议
- 是TCP/IP协议族中用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务
- 默认端口号为69,使用UDP数据报,基于UDP协议实现
过程
- 一个读取或写入文件的请求,这个请求也是连接请求
- 若服务器批准此请求,则打开连接
- 数据默认长度为512字节,每个数据包仅包含一个数据块,只有收到应答数据包后才会发送下一个数据包
- 若一个数据包的大小小于512字节,则表示传输结束
- 若数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包
- 通信的双方都是数据的发出者与接受者,一方传输数据接收应答,另一方发出应答接收数据
- 大部分的错误会导致连接中断,错误由一个错误的数据包引起,这个包不会被确认,也不会被重新传输,因此另一方无法接收到,若错误包丢失,则使用超时机制
- 错误主要由三种情况引起
- 不能满足请求
- 收到的数据包内容错误,而这种错误不能由延时或重发解释
- 对需要资源的访问丢失(如硬盘满)
- TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机
TFTP包
基本构成
- 本地媒介头|IP头|数据报头|TFTP头|实际数据
- TFTP在IP头中不指定任何数据,它使用UDP中的源和目标端口以及包长度域
- 由TFTP使用的包标记(TID)在这里被用作端口,因此TID必须介于0到65535
-
数据包格式
读写请求数据包

常用选项
只能是客户机发送读写请求,读写请求数据包中可能包含很多个选项,但一个选项只能出现一次
- 若服务器支持读写请求中的选项,服务器会使用选项应答(OACK)响应
- OACK中包含服务器能够支持的选项,但绝对不可以包含客户端没有使用的选项
- 若某些选项服务器不支持,则会忽略,也可能在OACK中将这些选项值替换为自己支持的或发送一个错误包,错误码为8,以终止数据传输
- 客户端应答OACK可能有两种方式
- 读请求,以ACK(数据块号设置为0)应答
- 写请求,以第一个数据块进行应答
- 若客户端拒绝OACK,则应该发送ERROR数据包,错误码为8
