CH9120 TFTP使用详解
一、TFTP简介:
TFTP是基于UDP应用层的简单的文件传输协议,端口号为69,TFTP协议主要应用于网络引导、配置文件传输等场景。
二、报文介绍:
TFTP有四种数据包格式,分别是读/写请求包、文件数据包、回应包和错误信息包。

- 读/写请求包
操作码,它的值为1表示读操作,2表示写操作;文件名,它是一个以0结尾的字符串;模式,它也是一个以0结尾的字符串,常用的传输模式有"octet"(二进制传输)和"netascii"(ASCII码传输)。
- 文件数据包
操作码,它的值为3;数据块编号,它的值从1开始递增;数据块的内容,它的长度为512字节。
- 回应包
操作码,它的值为4;数据块编号,它的值与对方发送的文件数据包的数据块编号相同;
- 错误信息包
操作码,它的值为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使用详解的更多相关文章
- Linux中TFTP使用详解
FTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现. linux服务器端tftp-server的配置1.安装tftp服务器需要安装xinetd(守护tftp).tftp和 ...
- tftp命令详解
TFTP协议简介TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面: 一是linux服务器端的tftp-server支持,二是嵌入式目标 ...
- 8 TFTP代码详解 协议写在程序中
1.版本1:发送请求 # -*- coding:utf-8 -*- import struct from socket import * #0. 获取要下载的文件名字: downloadFileNam ...
- 转载]OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]
原文地址:OK6410之tftp下载内核,nfs挂载文件系统全过程详解[转]作者:千山我独行 由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩.以前一直都是 ...
- linux查看端口及端口详解
今天现场查看了TCP端口的占用情况,如下图 红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...
- TCP/IP详解 (转)
TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...
- net user命令集合详解
net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...
- TCP IP详解(转)
大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- 常见 jar包详解
常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...
随机推荐
- 一级缓存和二级缓存--mybatis|hibernate
一级缓存和二级缓存的区别: 主要的不同是它们的作用范围不同. 一级缓存是session级别的. 也就是只有在同一个session里缓存才起作用,当这个session关闭后这个缓存就不存在了. 而二级缓 ...
- python:公共操作
运算符 公共方法 range """ 1 2 3 4 5 6 7 8 9 """ # 不包含 end# 如果不写开始,默认从零开始# 如果不 ...
- .Net类型 值类型
预定义类型值类型 数据类型C#关键字(如 int.short 和 string) 从编译器映射到.NET数据类型.例如,在C#中声明一个int类型的数据时声明的实际是.Net System.Int32 ...
- Dart中操作符详细介绍和使用
dart中静态成员 1 使用satic关键字 来实现类级别的变量和函数 2 静态方法不能够访问非静态成员, 非静态方法可以访问静态成员 3 静态属性,不要通过this去访问 因为this指向的是这个实 ...
- 十. Redis 事务和 “锁机制”——> 并发秒杀处理的详细说明
十. Redis 事务和 "锁机制"--> 并发秒杀处理的详细说明 @ 目录 十. Redis 事务和 "锁机制"--> 并发秒杀处理的详细说明 1 ...
- Mac安装Kafka(依赖zookeeper)
版本 kafka_2.11-2.0.0 flume1.8.0 一.软件下载 http://kafka.apache.org/downloads.htmltar -zxf kafka_2.11-2.0. ...
- CSP 初赛要点复习
位运算 逻辑与.按位与之类的东西是不同的!"逻辑"的是判断两个数都不为 \(0\),"按位"的是判断两个数的每一个二进制位与的结果,是不同的.其他运算也类似. ...
- IPTools for .NET:快速查询全球IP信息
IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家.省份.城市)以及经纬度等数据. 1. IPTools.China IPTools ...
- copilot插件使用介绍
Copilot插件是一个由GitHub开发的人工智能代码助手,可以为开发人员提供代码自动补全和建议功能.Copilot使用了机器学习技术,通过分析大量的开源代码来自动生成代码片段和建议. 使用Copi ...
- docker - [09] 镜像详解
题记部分 一.镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,还包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 如果得到 ...