Appearance
简介
Trivial File Transfer Protocol,简单文件传输协议,端口号为 69。特点:不能列出目录,无验证,无加密。适合私有网络进行小小型文件传输。
工具
包含客户端和服务器:
- Windows:TFTPd32/TFTPD64
- Linux:netkit-tftp
协议
🥑 tftp 有三种传输模式“netascii, octet, mail",现在常的是"octet",这里用"octet"模式说明。
数据包
tftp 基于 UDP 传输,它的数据包总共有如下几种:

可以发现一般情况下”数据包“类型的包的大小是最大的。
操作码
不同的数据包由对应的操作码开头:1,读(下载);2,写(上传);3,数据块;4,应答;5,错误。注意,操作码虽然只有 5 种,但是采用了 2 个字节来存储,对应 C 语言的 unsigned int 类型数据。并且需要使用网络字节序(大端存储)。
下载流程

当客户端发送下载请求数据包,服务器新建端口发送数据包1,当客户端保存数据包1后,发送 ACK1 给服务器,如此循环,直到客户端返回最后一个数据包对应的 ACKN,服务器得知客户端下载完成。
上传流程
客户端发起上传请求数据包,服务器会发送 ACK1 给客户端,客户端将数据包1发送给服务器,服务器保存后发送 ACKN 给客户端,如此循环,当客户端发送的数据包小于 512 的时候,服务器可知文件上传完成,停止发送 ACK。