首页
最新活动
服务器租用
香港服务器租用
台湾服务器租用
美国服务器租用
日本服务器租用
新加坡服务器租用
高防服务器
香港高防服务器
台湾高防服务器
美国高防服务器
裸金属
香港裸金属服务器
台湾裸金属服务器
美国裸金属服务器
日本裸金属服务器
新加坡裸金属服务器
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
CDN
CDN节点
CDN带宽
CDN防御
CDN定制
行业新闻
官方公告
香港服务器资讯
帮助文档
wp博客
zb博客
服务器资讯
联系我们
关于我们
机房介绍
机房托管
登入
注册
帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
联系客服
服务器资讯
/
香港服务器租用
/
香港VPS租用
/
香港云服务器
/
美国服务器租用
/
台湾服务器租用
/
日本服务器租用
/
官方公告
/
帮助文档
MQTT 协议简介
发布时间:2024-03-06 16:38:10 分类:帮助文档
MQTT 协议简介 文章目录 一、MQTT协议简介1.1 MQTT协议特点1.2 发布和订阅1.3 QoS 服务质量 二、MQTT 数据包结构2.1 MQTT固定头 ( FixedHeader )2.2 MQTT可变头 ( Variable header )2.3 消息体 ( Payload ) 三、环境搭建3.1 MQTT服务器搭建3.2 MQTT Client3.3 主题通配符 一、MQTT协议简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。 MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。 作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 1.1 MQTT协议特点 MQTT是一个基于客户端-服务器的消息发布/订阅的传输协议。 MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。 其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。 MQTT协议当前版本为,2014年发布的MQTT v3.1.1。除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如:ZigBee。 MQTT 与 HTTP 一样,MQTT 运行在传输控制协议/互联网协议 (TCP/IP) 堆栈之上。 1.2 发布和订阅 MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。 这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT server(或称为 MQTT Broker)分发的。 MQTT 服务器是发布-订阅架构的核心。 它可以非常简单地在Raspberry Pi或NAS等单板计算机上实现,当然也可以在大型机或 Internet 服务器上实现。 服务器分发消息,因此必须是发布者,但绝不是订阅者!客户端可以发布消息(发送方)、订阅消息(接收方)或两者兼而有之。客户端(也称为节点)是一种智能设备,如微控制器或具有 TCP/IP 堆栈和实现 MQTT 协议的软件的计算机。消息在允许过滤的主题下发布。主题是分层划分的 UTF-8 字符串。不同的主题级别用斜杠/作为分隔符号。 我们来看看下面的设置。 这是一个简单的MQTT的应用场景,具体如下图所示; 光伏发电站(photovoltalk power)是发布者(Publisher)。主题(Topic)的主级别是"PV",分为"sunshine"和"data"两个子级别;"PV/sunshine"主题是一个布尔值(true/false,也可以是 1/0),充电站订阅它用来判断是否应该装载电动汽车(仅在阳光普照时 😃)。充电站(EV charging station)是订阅者,订阅"PV/sunshine"主题,从MQTT服务器获取信息。“PV/data” 主题用来传输工厂产生的瞬时功率,并且该主题可以被计算机或平板电脑订阅,以生成一天内传输功率的图表。 1.3 QoS 服务质量 服务质量(Quality of Service levels)是 MQTT 的一个重要特性。当我们使用 TCP/IP 时,连接已经在一定程度上受到保护。但是在无线网络中,中断和干扰很频繁,MQTT 在这里帮助避免信息丢失及其服务质量水平。这些级别在发布时使用。如果客户端发布到 MQTT 服务器,则客户端将是发送者,MQTT 服务器将是接收者。当MQTT服务器向客户端发布消息时,服务器是发送者,客户端是接收者。 QoS 0 这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1 QoS 1 QoS 1 承诺消息将至少传送一次给订阅者。 QoS 2 使用 QoS 2,我们保证消息仅传送到目的地一次。为此,带有唯一消息 ID 的消息会存储两次,首先来自发送者,然后是接收者。QoS 级别 2 在网络中具有最高的开销,因为在发送方和接收方之间需要两个流。 二、MQTT 数据包结构 固定头(Fixed header),存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识;可变头(Variable header),存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容;消息体(Payload),存在于部分MQTT数据包中,表示客户端收到的具体内容; 整体MQTT的消息格式如下图所示; 2.1 MQTT固定头 ( FixedHeader ) 固定头存在于所有MQTT数据包中,其结构如下: 下面简单分析一下固定头的消息格式; MQTT消息类型 / message type 位置: byte 1, bits 7-4。 4位的无符号值,类型如下: 名称值流方向描述Reserved0不可用保留位CONNECT1客户端到服务器客户端请求连接到服务器CONNACK2服务器到客户端连接确认PUBLISH3双向发布消息PUBACK4双向发布确认PUBREC5双向发布收到(保证第1部分到达)PUBREL6双向发布释放(保证第2部分到达)PUBCOMP7双向发布完成(保证第3部分到达)SUBSCRIBE8客户端到服务器客户端请求订阅SUBACK9服务器到客户端订阅确认UNSUBSCRIBE10客户端到服务器请求取消订阅UNSUBACK11服务器到客户端取消订阅确认PINGREQ12客户端到服务器PING请求PINGRESP13服务器到客户端PING应答DISCONNECT14客户端到服务器中断连接Reserved15不可用保留位 标识位 / DUP 位置: byte 1, bits 3-0。 在不使用标识位的消息类型中,标识位被作为保留位。如果收到无效的标志时,接收端必须关闭网络连接。 DUP:发布消息的副本。用来在保证消息的可靠传输,如果设置为 1,则在下面的变长中增加MessageId,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。QoS发布消息的服务质量(前面已经做过介绍),即:保证消息传递的次数 00:最多一次,即:<=1 01:至少一次,即:>=1 10:一次,即:=1 11:预留RETAIN:发布保留标识,表示服务器要保留这次推送的信息,如果有新的订阅者出现,就把这消息推送给它,如果设有那么推送至当前订阅者后释放。 剩余长度(Remaining Length) 位置: byte 1。 固定头的第二字节用来保存变长头部和消息体的总大小的,但不是直接保存的。这一字节是可以扩展,其保存机制,前7位用于保存长度,后一部用做标识。当最后一位为 1时,表示长度不足,需要使用二个字节继续保存。例如:计算出后面的大小为0 2.2 MQTT可变头 ( Variable header ) MQTT数据包中包含一个可变头,它驻位于固定的头和负载之间。可变头的内容因数据包类型而不同,较常的应用是做为包的标识: Bit7 — 0byte 1包标签符(MSBbyte 2…包标签符(LSB) 很多类型数据包中都包括一个2字节的数据包标识字段,这些类型的包有: PUBLISH (QoS > 0)、PUBACK、PUBREC、PUBREL、PUBCOMP、 SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK 2.3 消息体 ( Payload ) Payload消息体是MQTT数据包的第三部分,CONNECT、SUBSCRIBE、SUBACK、UNSUBSCRIBE四种类型的消息 有消息体: CONNECT,消息体内容主要是:客户端的ClientID、订阅的Topic、Message以及用户名和密码SUBSCRIBE,消息体内容是一系列的要订阅的主题以及QoS。SUBACK,消息体内容是服务器对于SUBSCRIBE所申请的主题及QoS进行确认和回复。UNSUBSCRIBE,消息体内容是要订阅的主题。 三、环境搭建 介绍完基础理论部分,下面在Windows平台上搭建一个简单的MQTT应用,进行简单的应用,整体架构如下图所示; 3.1 MQTT服务器搭建 目前MQTT代理的主流平台有下面几个: Mosquitto:https://mosquitto.org/VerneMQ:https://vernemq.com/EMQX:https://www.emqx.com/zh 本文将使用 Mosquitoo 进行测试,进入到安装页面,下载自己电脑的系统所适配的程序; 安装成功之后,进入到安装路径下,找到mosquitto.exe; 按住Shift,右键鼠标点击空白处,然后打开Powershell,正常打开一个终端软件即可; 输入./mosquitto.exe -h 可以查看相应的帮助; 输入./mosquitto.exe -p 10086,就开启了MQTT服务,监听的地址是127.0.0.1,端口是10086; 具体如下图所示; 3.2 MQTT Client 服务器搭建好了,下面就是开启客户端,进行发布和订阅,这样就可以传输相应的消息。 这里我使用的是自己编译了一个QT mqtt client 程序,是基于Qt的官方库进行编译的,下面打开这个软件,并设置好相应参数: 地址:127.0.0.1 端口:10086 然后订阅主题,就可以互相发送数据了。 3.3 主题通配符 + 匹配一个单词 # 匹配多个单词 例: testtopic/+/iot testtopic/600ly/iot testtopic/zkgn/iot testtopic/test/# testtopic/test/qq testtopic/test/device/863488059819451 结合前面的图片来看,整体的架构如下所示;
上一篇
重庆联想服务器租用多少钱
下一篇
公司网站租用服务器多少钱
相关文章
怎么看日本服务器地址大全
服务器作为主机性能怎么样
深度学习服务器选择:Google Colab or AutoDL?
服务器防火墙怎么添加端口
成品网站怎么新建网页
单调栈-算法题
安卓手机苏康码怎么切换
【软路由】J4125安装PVE7.3+iKuai+OpenWrt+NAS+Win10+Debian+CentOS
幻兽帕鲁服务器设置定时重启-再也不用担心服务器死机
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价
7*24H在线售后
高可用资源,安全稳定
1v1专属客服对接
无忧退款试用保障
德讯电讯股份有限公司
电话:00886-982-263-666
台湾总部:台北市中山区建国北路一段29号3楼
香港分公司:九龙弥敦道625号雅兰商业二期906室
服务器租用
香港服务器
日本服务器
台湾服务器
美国服务器
高防服务器购买
香港高防服务器出租
台湾高防服务器租赁
美国高防服务器DDos
云服务器
香港云服务器
台湾云服务器
美国云服务器
日本云服务器
行业新闻
香港服务器租用
服务器资讯
香港云服务器
台湾服务器租用
zblog博客
香港VPS
关于我们
机房介绍
联系我们
Copyright © 1997-2024 www.hkstack.com All rights reserved.