Skip to content
On this page

tftp


标签:linux/network  

简介

Trivial File Transfer Protocol,简单文件传输协议,端口号为 69。特点:不能列出目录,无验证,无加密。适合私有网络进行小小型文件传输。

工具

包含客户端和服务器:

协议

🥑 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。

C 语言实现

客户端

Last updated: