mqtt--协议.ppt
- 文档编号:30781098
- 上传时间:2023-09-06
- 格式:PPT
- 页数:36
- 大小:1.49MB
mqtt--协议.ppt
《mqtt--协议.ppt》由会员分享,可在线阅读,更多相关《mqtt--协议.ppt(36页珍藏版)》请在冰豆网上搜索。
MQTT协议,梯影-技术部:
李栋,(MessageQueuingTelemetryTransport,消息队列遥测传输协议),大纲,1、什么是mqtt协议,7、主题,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包结构,6、发布/订阅模式,2、物联网协议有哪些,8、服务质量,9、遗嘱消息,10、MQTT代理,什么是MQTT协议,MQTT是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。
作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。
MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。
在很多情况下,包括受限的环境中,如:
机器与机器(M2M)通信和物联网(IoT)。
其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
2014年发布的MQTTv3.1.1是当前MQTT协议的最新版本。
除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备。
大纲,2、物联网协议有哪些,7、主题,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包结构,6、发布/订阅模式,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,四大协议的基本介绍,大纲,3、mqtt特性,7、主题,2、物联网协议有哪些,4、MQTT协议原理,5、MQTT协议数据包结构,6、发布/订阅模式,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
(1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
这一点很类似于XMPP,但是MQTT的信息冗余远小于XMPP,,因为XMPP使用XML格式文本来传递数据。
(2)对负载内容屏蔽的消息传输。
(3)使用TCP/IP提供网络连接。
主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。
这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。
MQTT特性:
(4)有三种消息发布服务质量:
“至多一次”,消息发布完全依赖底层TCP/IP网络。
会发生消息丢失或重复。
这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。
在一些要求比较严格的计费系统中,可以使用此级别。
在计费系统中,消息重复或丢失会导致不正确的结果。
这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
MQTT特性:
(5)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
这就是为什么在介绍里说它非常适合“在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。
(6)使用LastWill和Testament特性通知有关各方客户端异常中断的机制。
LastWill:
即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。
Testament:
遗嘱机制,功能类似于LastWill。
大纲,4、MQTT协议原理,7、主题,2、物联网协议有哪些,3、mqtt特性,5、MQTT协议数据包结构,6、发布/订阅模式,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,MQTT协议原理,MQTT协议原理-协议实现方式,实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:
发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。
其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:
主题(Topic)和负载(payload)两部分:
(1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
(2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
MQTT协议原理-网络传输与应用消息,MQTT会构建底层网络传输:
它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。
当应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连。
MQTT协议原理-客户端,一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。
客户端可以:
(1)发布其他客户端可能会订阅的信息;
(2)订阅其它客户端发布的消息;(3)退订或删除应用程序的消息;(4)断开与服务器连接。
MQTT协议原理-服务器,MQTT服务器以称为“消息代理”(Broker),可以是一个应用程序或一台设备。
它是位于消息发布者和订阅者之间,它可以:
(1)接受来自客户的网络连接;
(2)接受客户发布的应用信息;(3)处理来自客户端的订阅和退订请求;(4)向订阅的客户转发应用程序消息。
MQTT协议原理-订阅、主题、会话,MQTT协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。
这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。
通常来说,资源指服务器上的文件或输出。
主要方法有:
(1)Connect。
等待与服务器建立连接。
(2)Disconnect。
等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话。
(3)Subscribe。
等待完成订阅。
(4)UnSubscribe。
等待服务器取消客户端的一个或多个topics订阅。
(5)Publish。
MQTT客户端发送消息请求,发送完成后返回应用程序线程。
大纲,5、MQTT协议数据包,7、主题,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,6、发布/订阅模式,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,MQTT协议数据包结构,在MQTT协议中,一个MQTT数据包由:
固定头(Fixedheader)、可变头(Variableheader)、消息体(payload)三部分构成。
MQTT数据包结构如下:
固定头(Fixedheader),第一个字节:
包括消息类型和标识(DUP,QoSlevel,RETAIN)字段第二个字节:
(至少一个字节)包括剩余的信息字段所有的数据排序规则是顺序值越大越优先。
1个16bit的字母出现在最重要的字节,后面是最不重要的字节。
可变报头Variableheader,报文标识符,消息体,MQTT控制报文在报文的最后部分包含一个有效载荷。
对于PUBLISH来说有效载荷就是应用消息。
以下是支持有效负载的协议。
大纲,6、发布/订阅模式,7、主题,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,发布与订阅模式,打个比方,你打电话给朋友,一直要等到朋友接电话了才能够开始交流,是一个典型的同步请求/回答的场景;而给一个好友邮件列表发电子邮件就不一样,你发好电子邮件该干嘛干嘛,好友们到有空了去查看邮件就是了,是一个典型的异步发布/订阅的场景。
熟悉编程的同学一定非常熟悉这种设计模式了,因为它带来了这些好处:
发布者与订阅者不用了解彼此,只要认识同一个消息代理即可。
发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。
发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。
大纲,7、主题,6、发布/订阅模式,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包,1、什么是mqtt协议,8、服务质量,9、遗嘱消息,10、MQTT代理,主题与订阅机制,MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。
主题并不需要创建,直接使用就是了。
主题还可以通过通配符进行过滤。
其中,层级数量没有限制不能包含任何的下文中提到的特殊符号(/、+、#),必须至少包含一个字符/A”和“A”是不同的。
“A”和“A/”是不同的层级分隔符/只能匹配本级不能匹配上级。
例如,“sport/+”不匹配“sport多层通配符#单层通配符+一个Subsribe请求可订阅多个Topic(节省带宽,多订阅尽量用一次请求)。
大纲,8、服务质量,7、主题,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包,1、什么是mqtt协议,6、发布/订阅模式,9、遗嘱消息,10、MQTT代理,QoS0,级别0:
尽力而为。
消息发送者会想尽办法发送消息,但是遇到意外并不会重试。
QoS1,级别1:
至少一次。
消息接收者如果没有知会或者知会本身丢失,消息发送者会再次发送以保证消息接收者至少会收到一次,当然可能造成重复消息。
QoS2,级别2:
恰好一次。
保证这种语义肯待会减少并发或者增加延时,不过丢失或者重复消息是不可接受的时候,级别2是最合适的。
大纲,9、遗嘱消息,7、主题,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包,1、什么是mqtt协议,6、发布/订阅模式,8、服务质量,10、MQTT代理,遗嘱消息,MQTT本身就是为信号不稳定的网络设计的,所以难免一些客户端会无故的和Broker断开连接。
当客户端连接到Broker时,可以指定LWT,Broker会定期检测客户端是否有异常。
当客户端异常掉线时,Broker就往连接时指定的topic里推送当时指定的LWT消息。
当客户端断开连接时,发送给相关的订阅者的遗嘱消息。
以下情况下会发送WillMessage:
服务端发生了I/O错误或者网络失败;客户端在定义的心跳时期失联;客户端在发送下线包之前关闭网络连接;服务端在收到下线包之前关闭网络连接。
使用场景,在客户端A进行连接时候,遗嘱消息设定为”offline“,客户端B订阅这个遗嘱主题。
当A异常断开时,客户端B会收到这个”offline“的遗嘱消息,从而知道客户端A离线了。
高级使用场景,这里介绍一下如何将Retained消息与Will消息结合起来进行使用。
客户端A遗嘱消息设定为”offline“,该遗嘱主题与一个普通发送状态的主题设定成同一个A/status;当客户端A连接时,向主题A/status发送“online”的Retained消息,其它客户端订阅主题A/status的时候,获取Retained消息为“online”;当客户端A异常断开时,系统自动向主题A/status发送”offline“的消息,其它订阅了此主题的客户端会马上收到”offline“消息;如果遗嘱消息被设定了Retained的话,这时有新的订阅A/status主题的客户端上线的时候,获取到的消息为“offline”。
大纲,10、MQTT代理,7、主题,2、物联网协议有哪些,3、mqtt特性,4、MQTT协议原理,5、MQTT协议数据包,1、什么是mqtt协议,6、发布/订阅模式,9、遗嘱消息,8、服务质量,10、mqtt服务代理,谢谢聆听!
Q&A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mqtt 协议