一、TFTP简介:

TFTP是基于UDP应用层的简单的文件传输协议,端口号为69,TFTP协议主要应用于网络引导、配置文件传输等场景。

二、报文介绍:

TFTP有四种数据包格式,分别是读/写请求包、文件数据包、回应包和错误信息包。

  1. 读/写请求包

操作码,它的值为1表示读操作,2表示写操作;文件名,它是一个以0结尾的字符串;模式,它也是一个以0结尾的字符串,常用的传输模式有"octet"(二进制传输)和"netascii"(ASCII码传输)。

  1. 文件数据包

操作码,它的值为3;数据块编号,它的值从1开始递增;数据块的内容,它的长度为512字节。

  1. 回应包

操作码,它的值为4;数据块编号,它的值与对方发送的文件数据包的数据块编号相同;

  1. 错误信息包

操作码,它的值为5;差错码,它的取值范围为0~7,具体含义如下:

- 0:未定义的错误

- 1:文件不存在

- 2:访问被拒绝

- 3:磁盘已满

- 4:操作超时

- 5:文件传输中断

- 6:未知传输ID

- 7:文件已存在

差错信息表示错误信息的内容,它是一个以0结尾的字符串。

三、CH9120做TFTP客户端访问服务器

将CH9120配置为UDPSERVER模式注意不能设为CLIENT(CLIENT会导致在数据传输阶段收不到服务器的数据报文),端口为69。

获取服务器文件需要通过串口发送命令如下:

00 01 //读操作码

74 65 73 74 2e 63 //test.c

00 //

6e 65 74 61 73 63 69 69 // netascii

00//

TFTP服务器收到该命令后会采用一个随机端口给CH9120发文件数据包

00 03 //数据操作码

00 01 //数据块编号

71 71 71 71 71 71 71 71 71 //数据

71 71 71 71 71 71 71 71 71 //数据

71 73 73 73 73 73 0d 00 0d //数据

0a 64 66 72 74 64 64 64 64 //数据

64 64 64 64 64 64 64 64 64 //数据

64 64 //数据

CH9120收到数据后回复回应包

00 04//回应包

00 01//数据块编号

上传服务器文件需要通过串口发送命令如下:

00 02 //写请求包

74 65 73 74 2e 63 //test.c

00 //

6e 65 74 61 73 63 69 69 // netascii

00//

注意:下次读写报文前需要复位一次CH9120

CH9120 TFTP使用详解的更多相关文章

  1. Linux中TFTP使用详解

    FTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现. linux服务器端tftp-server的配置1.安装tftp服务器需要安装xinetd(守护tftp).tftp和 ...

  2. tftp命令详解

    TFTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面: 一是linux服务器端的tftp-server支持,二是嵌入式目标 ...

  3. 8 TFTP代码详解 协议写在程序中

    1.版本1:发送请求 # -*- coding:utf-8 -*- import struct from socket import * #0. 获取要下载的文件名字: downloadFileNam ...

  4. 转载]OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]

    原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...

  5. linux查看端口及端口详解

    今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...

  6. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  7. net user命令集合详解

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...

  8. TCP IP详解(转)

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...

  9. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  10. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

随机推荐

  1. 一级缓存和二级缓存--mybatis|hibernate

    一级缓存和二级缓存的区别: 主要的不同是它们的作用范围不同. 一级缓存是session级别的. 也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了. 而二级缓 ...

  2. python:公共操作

    运算符 公共方法 range """ 1 2 3 4 5 6 7 8 9 """ # 不包含 end# 如果不写开始,默认从零开始# 如果不 ...

  3. .Net类型 值类型

    预定义类型值类型 数据类型C#关键字(如 int.short 和 string) 从编译器映射到.NET数据类型.例如,在C#中声明一个int类型的数据时声明的实际是.Net System.Int32 ...

  4. Dart中操作符详细介绍和使用

    dart中静态成员 1 使用satic关键字 来实现类级别的变量和函数 2 静态方法不能够访问非静态成员, 非静态方法可以访问静态成员 3 静态属性,不要通过this去访问 因为this指向的是这个实 ...

  5. 十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明

    十. Redis 事务和 "锁机制"--> 并发秒杀处理的详细说明 @ 目录 十. Redis 事务和 "锁机制"--> 并发秒杀处理的详细说明 1 ...

  6. Mac安装Kafka(依赖zookeeper)

    版本 kafka_2.11-2.0.0 flume1.8.0 一.软件下载 http://kafka.apache.org/downloads.htmltar -zxf kafka_2.11-2.0. ...

  7. CSP 初赛要点复习

    位运算 逻辑与.按位与之类的东西是不同的!"逻辑"的是判断两个数都不为 \(0\),"按位"的是判断两个数的每一个二进制位与的结果,是不同的.其他运算也类似. ...

  8. IPTools for .NET:快速查询全球IP信息

    IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家.省份.城市)以及经纬度等数据. 1. IPTools.China IPTools ...

  9. copilot插件使用介绍

    Copilot插件是一个由GitHub开发的人工智能代码助手,可以为开发人员提供代码自动补全和建议功能.Copilot使用了机器学习技术,通过分析大量的开源代码来自动生成代码片段和建议. 使用Copi ...

  10. docker - [09] 镜像详解

    题记部分 一.镜像是什么   镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,还包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 如果得到 ...