【网络编程】 【miniFTPD】TFTP简介、通信过程

01-TFTP概述

TFTP:简单文件传送协议,一般用于局域网传输文件。
最初用于引导无盘系统,被设计用来传输小文件

特点:
基于UDP协议实现
不进行用户有效性认证

数据传输模式:
octet 二进制模式(一般选择这个)
netascii : 文本模式
mail: 已经不再支持

02-TFTP通信过程

《1》下载请求的过程(无选项)

【网络编程】 【miniFTPD】TFTP简介、通信过程
(1)服务器的22端口只是检测是否有服务器请求连接,然后创建套接字用临时端口给客户端发送数据包。每个数据吧不大于512(512字节不包括协议)
(2)客户端每收一次数据包给服务器回复一个ACK,若服务器未收到ACK 则认为客户端未收到,重新发送。
【在我们的miniftpd中可以设置几秒未回复进行重新发送,以及最大重发次数】
(3)最后一次一定要小于512字节,若恰巧最后是512字节,那么它还会再发送一次0字节的数据包

TFTP通信过程总结(无选项)
1、服务器在21号端口等待客户端的请求。
2、服务器若批准准此请求,则使用临时端口与客户端进行通信。
3、每二个数据包的编号都有变化(从1开始)
4、每个数据包都要得到ACK的确认,如果出现超时,则需要重新发送
5、数据的长度以512Byte传输
6、小于512Byte的数据意味着结束。

《2》下载请求的过程(有选项)

【网络编程】 【miniFTPD】TFTP简介、通信过程
比无选项就多个红色圈的部分,具体协议分析会有解释

03 TFTP 协议分析

【网络编程】 【miniFTPD】TFTP简介、通信过程

04 TFTP 下载请求(无选项)编程:

流程:
创建套接字;
1>打开或创建一个文件(a.txt);
2>发送一个下载请求:组包: int len=sprintf(buf,"%c%c",00,01,“a.txt”…) [大小端]
3>循环接收
while(1){
recvfrom();
if()//判断是什么什么包;
}