TFTP协议(1)TFTP协议介绍(包括:TFTP的五种报文/报文字段扩展/TFTP的流量控制,差错控制/UDP sendto,recvfrom接口)
1. TFTP协议
1.1 TFTP 背景
1.2 TFTP协议介绍:
1.3 特点:
1.4 缺陷:
1.5 TFTP五种报文(操作码/功能及详解)
1.5.1 RRQ 读请求/WRQ 写请求
1.5.2 DATA 数据包
1.5.3 ACK 确认码
1.5.4 ERROR 错误
1.5.5 说明:TFTP报文没有差错检验和字段
1.6 TFTP数据包格式
1.6.1 TFTP数据包格式
1.6.2 rrq/wrq可以带带扩展选项
1.7 TFTP传输过程描述
1.7.1 TFTP传输过程说明:
1.7.3 tftp数据交互图
1.8 TFTP的流量控制
1.9 TFTP的差错控制
1.9.1 差错控制常用于这四种情况:
1.10 扩展:UDP的 sendto() 和 recvfrom() 接口
1.10.1 UDP介绍
1.10.2 UDP通信的过程图及说明
1.10.3 sendto
1.10.4 recvfrom
2. TFTP协议(2)TFTP源码实现
参考:
TFTP协议(2)TFTP源码实现
https://blog.csdn.net/lqy971966/article/details/121819432
FTP协议和TFTP协议的区别
https://blog.csdn.net/lqy971966/article/details/90934673
1. TFTP协议
1.1 TFTP 背景
TFTP(简单文件传输协议)
由于TFTP最初是设计用于系统引导进程,它不提供用户名和口令。
常用于无盘工作站或路由器从别的主机上获取引导配置文件,由于TFTP报文比较小,能够迅速复制这些文件。
1.2 TFTP协议介绍:
<1>TFTP客户机/服务器模式的文件传输协议
<2>TFTP适用于客户端和服务器之间不需要复杂交互的环境
<3>TFTP承载在UDP之上,端口号69
<4>TFTP仅提供简单的文件传输功能(上传、下载)
<5>TFTP协议传输由客户端发起的
1.3 特点:
1、简单
2、占用资源小,由于TFTP报文比较小,能够迅速复制这些文件
3、适合传递小文件
4、适合在局域网进行传递
5、端口号为69
6、基于UDP实现
7. TFTP是一种类似于停止等待协议
TFTP服务器只有收到客户端的确认报文ACK后才会向客户端接着发送新的数据。
8. 服务器向客户端发送数据的过程中,每次都是发送512B的数据,
如果客户进程收到某个DATA报文中数据部分的长度小于512B,说明这是收到的最后一个报文;
如果待发送的数据的总长度正好是512的整数倍,这就意味着最后一个数据报的长度正好为512B,
此时服务器进程会再次发送一个包含0字节数据的DATA报文
(显然,该报文的总长度为4B=2B操作码+2B块号+0B数据);
9. TFTP协议中,用于读文件的连接和用于写文件的连接的建立方式不同
1.4 缺陷:
TFTP分组中并不提供用户名和口令。这是TFTP的一个特性(即"安全漏洞")
1.5 TFTP五种报文(操作码/功能及详解)
TFTP五种报文分别是: RRQ,WRQ,DATA,ACK和ERROR。
操作码/功能及详解:
1 RRQ 读请求,即下载
模式字段包含:netascii 和 octet 两种
2 WRQ 写请求,即上传
3 DATA 数据包,即DATA
4 ACK 确认码,即ACK
5 ERROR 错误
1.5.1 RRQ 读请求/WRQ 写请求
模式字段中,包含两种字符串中的一种,"netascii"表示ASCII文件,"octet"表示二进制文件;
对于RRQ,客户向TFTP服务器发送读请求后,服务器返回一个块编号为1的DATA报文; 对于WRQ,客户向TFTP服务器发送写请求后,服务器返回的是块编号为1的ACK报文。 总之,不管是RRQ还是WRQ,接收DATA数据的一方(读者)发送ACK确认,而发送DATA数据(写者)的只负责发送数据。
1.5.2 DATA 数据包
由客户或服务器使用(由写者发送),用于传送数据块。
所有的块都用数字顺序编码,从1开始。
在所有的DATA报文中,这个块必须准确地等于512B(源码实现可修改),但最后一个块可以小于或等于512B。 当发送的DATA报文中数据部分的长度小于512B后,表示DATA报文发送完毕,所以小于数据部分512B的DATA数据报可以作为文件结束的标志。