博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tftp协议的实现
阅读量:4285 次
发布时间:2019-05-27

本文共 1080 字,大约阅读时间需要 3 分钟。

tftp是一个传输文件的简单协议,它是基于UDP协议实现的,端口号为69.服务器启动tftp后,客户端就可以通过tftp从服务器下载文件。在嵌入式开发中,可利用tftp协议下载Linux内核到开发板运行。

TFTP的工作都是由客户端发起一个读请求包RRQ或者写请求包WRQ开始的。两者过程如下(S表示Server,C表示Client):

1.WRQ工作流程
①S在端口为69的UDP上等待C发出写文件请求包;
②C通过UDP发送符合TFTP请求格式的WRQ包给S。从UDP包角度看,该UDP包的源端口由C随意选择,而目标端口则是S的69。
③S收到C的这个请求包后,需发送ACK给C。对于写请求包,S发送的ACK包确认号为0。
④C发送DATA数据给S,S接收数据并写文件;
⑤当C发送的DATA数据长度小于512字节时,S认为这次WRQ请求完成。

2.RRQ的工作流程

①S在端口为69的UDP上等待C发出读文件请求包;
②C通过UDP发送符合TFTP请求格式的RRQ包给S;
③S收到C的这个请求包后,将直接发送DATA包给C,这个DATA包中含S选择的TID作为UDP的源端口和C的TID作为UDP目标端口,起始包号为1;
④C接收来自S的DATA包并回复ACK。直到请求完成。
任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结束。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。


tftp报文格式为:

这里写图片描述

共有五种,分别为读请求包、写请求包、数据包、回应包、错误信息包。

实现协议之前,先对以前的网络协议代码进行完善。
①网卡收到数据包,对该数据包的类型进行判断识别
②根据数据包的类型进行相应处理
③完善ARP协议:若得到的数据包是ARP包,则判断是ARP请求包还是应答包,然后做出相应处理(这里需要设置DM9000的RX Control Register的ALL位,该位默认为0,表示不接收广播包)。

tftp协议的实现总流程为:

①开发板发送ARP请求包获得服务器MAC地址
②开发板发送tftp的读请求包请求从服务器下载文件
③服务器广播发送ARP请求包查询开发板的MAC地址
④开发板发送ARP应答包响应服务器
⑤服务器发送数据包给开发板
⑥开发板响应服务器,返回一个响应包
⑦重复进行⑤⑥,直至发送完毕。

你可能感兴趣的文章
ExtJS 4.2心得和总结:布局系统详解(Ext.layout.container)
查看>>
数据结构几种排序算法详解和总结(java版)
查看>>
ExtJS4.2 登陆表单(Login)简单示例
查看>>
Node.js快速入门
查看>>
Node.js进行Web开发(一)--Express,路由控制,模板引擎
查看>>
阿里巴巴集团2014秋季校园招聘笔试题
查看>>
2014校园招聘_百度2014校园招聘
查看>>
2014校园招聘_华为2014校园招聘
查看>>
2014校园招聘_腾讯2014校园招聘
查看>>
ExtJs4.2学习--Ext.tab.Panel 选项卡
查看>>
mybatis+spring+struts2框架整合
查看>>
你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
查看>>
数据挖掘开源软件:WEKA基础操作
查看>>
Python一些容易忽略的知识
查看>>
Ubuntu(-13.10)中安装JDK图文详解教程
查看>>
Hadoop2.2.0单节点安装和配置环境图文详解
查看>>
数据挖掘学习笔记--决策树C4.5
查看>>
数据挖掘学习笔记之人工神经网络(一)
查看>>
数据挖掘学习笔记之人工神经网络(二)
查看>>
人工神经网络关键核心知识点
查看>>