MQTT文件传输-2. 协议篇

这篇具有很好参考价值的文章主要介绍了MQTT文件传输-2. 协议篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概述

协议设计部分主要用来描述mqtt交互的数据包格式。

2. 协议内容

2.1 协议框架

复杂通信系统协议通常采用分层设计,方便不同业务做相对应的过滤和分发处理。
MQTT协议的应用设计包含主题和Payload,可以理解为连接到同一个MQTT Broker的设备同属于一套通信系统,主题和Payload是MQTT的第一分层逻辑。
业务上的分层逻辑可以在主题和Payload进一步设计。

2.2 主题

我们设置两类主题,主要用来明确数据包的目标接收方。
设备端接收主题(文中简称TopicToServer): /v1/[key]/device       
服务端接收主题(文中简称TopicToServer): /v1/[key]/server

【注】主题中[key]做设备的唯一id, 可以是mac地址,UUID等。

2.3 Payload协议设计

协议采用json格式。
2.3.1 基本格式
Payload: {"id":x,"type":"","UUID":"","parm":{}}

说明:
id: 由数据包主动发起方各自维护,应答数据包的id需要跟请求包一致。
type: 数据包类型区分的关键字。
parm: 参数详情根据type的不同而变化。
UUID: 设备唯一ID

2.3.2 文件信息传输
主题: TopicToServer
Payload: {"id":x,"type":"fileInfo","UUID":"","parm":{"fileName":"x","fileType":"x","contentFormat":"","packageNums":x}}

说明:
type: fileInfo 文件信息传输包。
parm:
fileName: 传输的文件名称
fileType: 传输文件类型
raw - 原始文件,没有压缩
zip - zip压缩包
rar - rar压缩包
tar - tar压缩包
tgz - tar.gz压缩包
tbz2- tar.bz2压缩包
contentFormat: 内容格式
ascii - ascii格式
hex - 十六禁止数据格式
packageNums:分包数量

2.3.3 文件信息传输应答
主题: TopicToDevice
Payload: {"id":x,"type":"fileInfoAck","UUID":"","parm":{"fileName":"文件名称","fileType":"raw","contentFormat":"","packageNums":x}}

说明:
type: fileInfoAck 文件信息输应答
parm: 参数详见fileInfo

2.3.4 文件内容传输
主题: TopicToServer
Payload: {"id":x,"type":"fileContent","UUID":"","parm":{"fileName":"文件名称","content":"","packageID":x}}

说明:
type: fileContent 文件内容传输包
parm:
fileName:文件名称
content: 传输的文件内容,以base64编码
packageID: 分包的包序号,范围从0到packageNums-1

2.3.5 文件内容传输应答
主题: TopicToServer
Payload: {"id":x,"type":"fileContentAck","UUID":"","parm":{"fileName":"文件名称","packageID":x}}

说明:
type: fileContentAck 文件内容传输应答
parm:
fileName:文件名称
packageID: 分包的包序号,范围从0到packageNums-1

2.3.6 文件传输完成
主题: TopicToServer
Payload: {"id":x,"type":"fileEnd","UUID":"","parm":{"fileName":"文件名称","fileType":"x","contentFormat":"","packageNums":x,"base64MD5":""}}

说明:
type: fileEnd 文件传输完成。
parm:
fileName: 传输的文件名称
fileType: 传输文件类型
raw - 原始文件,没有压缩
zip - zip压缩包
rar - rar压缩包
tar - tar压缩包
tgz - tar.gz压缩包
tbz2- tar.bz2压缩包
contentFormat: 内容格式
ascii - ascii格式
hex - 十六禁止数据格式
packageNums:分包数量
base64MD5: 传输文件内容MD5

2.3.7 文件传输完成应答
主题: TopicToDevice
Payload: {"id":x,"type":"fileEndAck","UUID":"","parm":{"fileName":"文件名称","base64MD5":""}}

说明:
type: fileEndAck 文件传输完成应答。
parm:
fileName: 传输的文件名称
base64MD5: 传输文件内容MD5文章来源地址https://www.toymoban.com/news/detail-503959.html

2.4 上传和下载

文件传输包含上传和下载,以上协议完成了协议上传的正给流程。文件的下载步骤跟上传步骤一样,过程总只需互换请求和应答的主题即可满足文件下载功能。

到了这里,关于MQTT文件传输-2. 协议篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 游戏设计的主要部分

    游戏设计是创建有趣、挑战性和令人满足的游戏体验的过程。它涵盖了许多方面,从概念开发到实际实施,以及最终的游戏测试和优化。游戏设计师需要考虑玩家的情感、技能挑战、故事情节、游戏世界等多个要素,以确保游戏能够吸引玩家并保持他们的兴趣。 游戏设计可以

    2024年02月10日
    浏览(24)
  • 阿里云 MQTT协议 AT指令 ESP8266-01S 数据上下传输

    printf重定义资料来自江科大自动化协---stm32入门教程---串口发送+接收一节视频讲解 细节请看b站这个up主的视频阿里云+ESP8266+STM32远程点灯(流程讲解) 阿里云平台配置细节请看10分钟玩转阿里云物联网平台设备接入、管理、运维 这里只记录一下大概内容,方便日后调试。 1、

    2023年04月26日
    浏览(57)
  • 网络协议概述:物理层、连接层、网络层、传输层、应用层详解

    信号的传输总要符合一定的 协议(protocol) 。比如说长城上放狼烟,是因为人们已经预先设定好狼烟这个物理信号代表了“敌人入侵”这一抽象信号。这样一个“ 狼烟=敌人入侵 ”就是一个简单的协议。协议可以更复杂,比如摩尔斯码(Morse Code),使用短信号和长信号的组合,来

    2024年02月07日
    浏览(40)
  • STM32L+BC20+MQTT协议传输温湿度,GPS数据到阿里云物联网平台

    (阿里云)STM32L+BC20+MQTT协议传输温湿度,GPS数据到阿里云物联网 1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天

    2024年02月15日
    浏览(51)
  • (EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

    1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡,天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接入STM32L的 DIO、GND、

    2024年02月16日
    浏览(46)
  • (Onenet)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到Onenet物联网平台

    1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接入STM32L的 DIO、GND、CLK中 另

    2024年02月15日
    浏览(38)
  • (阿里云)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到阿里云物联网平台

    1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真器 用3条杜邦线接入STM32L的 DIO、GND、CLK中 另

    2024年02月16日
    浏览(50)
  • 网络协议——FTP(文件传输协议)与TFTP(简单文件传输协议)原理及搭建使用

    1. FTP基本概念           FTP采用典型的C/S架构(即服务器端与客户端模型),端口号为20/21,客户端与服务器端建立TCP连接之后即可实现文件的上传、下载。20端口用来传输数据流,21端口用来传输控制流。 2. FTP传输文件的模式 针对传输的文件类型不同,FTP可以采用不同的

    2024年04月26日
    浏览(46)
  • 什么文件传输协议才能保障跨国文件传输安全又稳定

    在当今的全球化时代,跨国文件传输是一种常见而又重要的需求,无论是个人还是企业,都需要通过网络来分享和交换各种类型和大小的文件。但是,跨国文件传输也面临着许多挑战和风险,如何选择一个合适的文件传输协议,就成为了一个关键的问题。本文将从以下几个方

    2024年02月12日
    浏览(44)
  • 文件传输协议的五种安全文件传输替代方案

    对安全文件传输协议的需求,过去,文件传输协议(FTP)是发送文件的常用协议。这是一个更简单的时期,安全性比今天要少得多。 但是随着黑客变得越来越复杂,他们发现FTP缺乏安全性。他们知道FTP可以通过有限的方式来确保访问文件的人的身份(具有单个身份验证因素)

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包