TFTP协议(1)TFTP协议介绍(包括:TFTP的五种报文/报文字段扩展/TFTP的流量控制,差错控制/UDP sendto,recvfrom接口)

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数据报可以作为文件结束的标志。