专题9-移植tftp客户端

一.tftp作用:在嵌入式开发中进行数据传输
二.交互过程:
1.客户端发送请求包(请求报文)
2.根据选项参数,服务器决定是否发送应答确认包,进而客户端发送确认接收包,这步是可选的。
3.服务器发送数据包1,。服务器会将要传输的数据拆分成许多小块,每512字节一个块。(数据报文)
4.客户端回应数据包1(应答报文)
5.服务器如果没有收到数据包1回应包,就会重复发送数据包1直到超时.收到了就继续发送数据包2.
6.客户端回应数据包2.
7.以此类推,服务器发送数据包n,客户端回应数据包n。
8.。。。。。。。。。。。。。

三.报文格式:

1.tftp是属于UDP协议的,UDP又是属于IP协议的。IP又是属于以太网的。所以客户端必须知道目的端的mac地址,所以之前要发送一个ARP包。
2.根据操作码来区分不同的tftp报文。
3.操作码 = 1:表示客户端要从服务器下载数据,属于请求读。后面跟上要读些的文件名,再追加一个0.再后面是读取的模式,分为ASCiI码和普通的八位二进制数格式,末尾追加一个0.
4.操作码 = 2:表示请求从客户端上传数据到服务器。 后面格式和读取(下载)一样。
5.操作码 = 3:表示数据报文,后面紧跟块编号,末尾就是真正的数据内容
6.操作码 = 4:表示应答报文,后面以他应答的数据块编号结尾,
7.操作码 = 5:表示出错。后面紧跟差错码和差错信息。
四.修改网卡驱动
1.在arp.c增加网络处理函数。判断是什么类型的包。之前的代码默认是一个ARP包,但实际情况很复杂,所以要判断网卡接收到的是什么包。
2.在dm9000.c的中断处理里面对参数进行修改。包括buffer,以及调用通用处理函数,而不是简单地调用ARP应答解析函数。
五.IP协议格式

相应的数据结构为

六.UDP协议格式

数据结构

七。关于DM9000打开接收广播功能的datasheet部分


八.处理触发中断的网络包

九.对IP协议的包以及从属于IP协议的UDP协议的包进行处理

十.TFTP发送请求信号,准备读取服务器的数据

十一.客户端接收到来自服务器端的数据包的应答函数

十二.TFTP客户端处理函数

posted @ 2015-04-15 16:42  生活需要深度  阅读(661)  评论(0)    收藏  举报