1. TFTP 协议介绍
TFTP(Trivial File Transfer Protocol, 简单文件传输协议)
是 TCP/IP 协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议
特点:
简单
占用资源小
适合传递小文件
适合在局域网进行传递
端口号为 69
基于 UDP 实现
2. TFTP 下载过程
TFTP 服务器默认监听 69 号端口
当客户端发送下载请求 (即读请求) 时, 需要向服务器的 69 端口发送
服务器若批准此请求, 则使用一个新的临时的 端口进行数据传输
当服务器找到需要现在的文件后, 会立刻打开文件, 把文件中的数据通过 TFTP 协议发送给客户端
如果文件的总大小较大(比如 3M), 那么服务器分多次发送, 每次会从文件中读取 512 个字节的数据发送过来
因为发送的次数有可能会很多, 所以为了让客户端对接收到的数据进行排序, 所以在服务器发送那 512 个字节数据的时候, 会多发 2 个字节的数据, 用来存放序号, 并且放在 512 个字节数据的前面, 序号是从 1 开始的
因为需要从服务器上下载文件时, 文件可能不存在, 那么此时服务器就会发送一个错误的信息过来, 为了区分服务发送的是文件内容还是错误的提示信息, 所以又用了 2 个字节 来表示这个数据包的功能(称为操作码), 并且在序号的前面
注: 1. 数据包格式是字符串形式
2. 需要表明大小端
3. 其中定义数据包时的内存大小需要用 struct 模块格式化
来源: http://www.bubuko.com/infodetail-2521866.html