+ All Categories
Home > Documents > 物联网基础之MQTT CoAP简介

物联网基础之MQTT CoAP简介

Date post: 12-Apr-2022
Category:
Upload: others
View: 18 times
Download: 0 times
Share this document with a friend
25
1 H3C Restricted 内部公开 www.h3c.com 1 物联网基础之MQTT、CoAP简介
Transcript
Page 1: 物联网基础之MQTT CoAP简介

1H3C Restricted 内部公开 www.h3c.com 1

物联网基础之MQTT、CoAP简介

Page 2: 物联网基础之MQTT CoAP简介

2H3C Restricted 内部公开 www.h3c.com 2

目录

CoAP

01

02

03

常用消息传输协议

MQTT

Page 3: 物联网基础之MQTT CoAP简介

3H3C Restricted 内部公开 www.h3c.com 3

消息传递

1.同步消息传递2.异步消息传递

• TCP\UDP

• HTTP

• Java消息传递服务(Java Messaging Service (JMS))• 高级消息队列协议(Advanced Message Queueing Protocol (AMQP))• 消息队列遥测传输(Message Queueing Telemetry Transport (MQTT))• 受限制的应用协议(Constrained Application Protocol( CoAP) )

Page 4: 物联网基础之MQTT CoAP简介

4H3C Restricted 内部公开 www.h3c.com 4

CoAP

01

02

03

常用消息传输协议

MQTT

Page 5: 物联网基础之MQTT CoAP简介

5H3C Restricted 内部公开 www.h3c.com 5

MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM主导开发的一个即时通讯协议,其发展历史大致如下:• 1999年,IBM和Arcom共同发明了MQTT协议。• 2004年,MQTT.org开放了论坛,供大家广泛参与。• 2011年,IBM建立了Eclipse开源项目Paho,并贡献了代码。Eclipse

Paho是MQTT的Java实现版本。• 2013年,OASIS MQTT技术规范委员会成立• 2014年,MQTT正式成为推荐的物联网传输协议标准。

Page 6: 物联网基础之MQTT CoAP简介

6H3C Restricted 内部公开 www.h3c.com 6

MQTT特性

(1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。(2)对负载内容屏蔽的消息传输。(3)使用TCP/IP提供网络连接。(4)有三种消息发布服务质量(Quality of Service,QoS)(5)小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。(6)使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

Page 7: 物联网基础之MQTT CoAP简介

7H3C Restricted 内部公开 www.h3c.com 7

MQTT

发布者 代理 订阅者发布消息

订阅消息

推送消息

• 发布者(Publish)• 订阅者(Subscribe)• 代理(Broker)(服务器)

Page 8: 物联网基础之MQTT CoAP简介

8H3C Restricted 内部公开 www.h3c.com 8

MQTT

MQTT传输的消息分为:主题(Topic)和负载(payload)(1)Topic,可以理解为消息的类型,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。主题并不需要创建,直接使用;主题还可以通过通配符进行过滤。其中,+可以过滤一个层级,而#只能出现在主题最后表示过滤任意级别的层级。订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);(2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

例:building-b/floor-5:代表B楼5层的设备。+/floor-5:代表任何一个楼的5层的设备。building-b/#:代表B楼所有的设备。注:MQTT允许使用通配符订阅主题,但是并不允许使用通配符广播。

Page 9: 物联网基础之MQTT CoAP简介

9H3C Restricted 内部公开 www.h3c.com 9

MQTT-消息类型

MQTT拥有14种不同的消息类型CONNECT:客户端连接到MQTT代理CONNACK:连接确认PUBLISH:新发布消息PUBACK:新发布消息确认,是QoS 1给PUBLISH消息的回复PUBREC:QoS 2消息流的第一部分,表示消息发布已记录PUBREL:QoS 2消息流的第二部分,表示消息发布已释放PUBCOMP:QoS 2消息流的第三部分,表示消息发布完成SUBSCRIBE:客户端订阅某个主题SUBACK:对于SUBSCRIBE消息的确认UNSUBSCRIBE:客户端终止订阅的消息UNSUBACK:对于UNSUBSCRIBE消息的确认PINGREQ:心跳PINGRESP:确认心跳DISCONNECT:客户端终止连接前优雅地通知MQTT代理

Page 10: 物联网基础之MQTT CoAP简介

10H3C Restricted 内部公开 www.h3c.com 10

MQTT-QoS

QoS Level 0:至多一次QoS Level 1:至少一次,有可能重复QoS Level 2:只有一次,确保消息只到达一次

Page 11: 物联网基础之MQTT CoAP简介

11H3C Restricted 内部公开 www.h3c.com 11

MQTT

Page 12: 物联网基础之MQTT CoAP简介

12H3C Restricted 内部公开 www.h3c.com 12

MQTT-安全

MQTT提供了多个层次的安全特性:

网络层:有条件可以通过拉专线或者使用VPN来连接设备与MQTT代理,以提高网络传输的安全性。传输层:传输层使用TLS加密是确保安全的一个好手段,可以防止中间人攻击(Man-In-The-Middle Attack)。客户端证书不但可以作为设备的身份凭证,还可以用来验证设备。应用层:MQTT还提供客户标识(Client Identifier)以及用户名密码,在应用层验证设备。

Page 13: 物联网基础之MQTT CoAP简介

13H3C Restricted 内部公开 www.h3c.com 13

MQTT-软件实现

代理:

Mosquitto —— 这是最早在生产环境中可用的消息代理之一,以 C 语言编写,提供多种配置与高性能。Mosca —— 以 Node.js 编写,可嵌入 Node 应用或以独立可执行文件的形

式运行。由于配置简单并具有可扩展性,它也是我们最喜欢的消息代理,具有高性能的优点。RSMB —— IBM 对 MQTT 协议的实现,也是最不常用的选项之一,不过它是一个用C语言编写的成熟系统。HiveMQ —— HiveMQ 是一种相对较新的消息代理,面向企业环境,在博客上有很多关于 MQTT 不错的信息。

客户端:

Eclipse-Paho ——包含以C、Java、Python、Javascript等语言编写的可用客户端

Page 14: 物联网基础之MQTT CoAP简介

14H3C Restricted 内部公开 www.h3c.com 14

CoAP

01

02

03

常用消息传输协议

MQTT

Page 15: 物联网基础之MQTT CoAP简介

15H3C Restricted 内部公开 www.h3c.com 15

CoAP协议背景

CoAP(Constrained Application Protocol,受限制的应用协议)物联网应用中, 设备与设备之间互相联通,它们需要互相进行网络通信。但由于通常物联网设备都是资源限制型的,有限的CPU能力,有限RAM,

有限的flash,有限的网络带宽, 针对此类特殊场景, CoAP协议借鉴了HTTP协议机制并简化了协议包格式。简洁地实现了物联网设备之间通信。

Page 16: 物联网基础之MQTT CoAP简介

16H3C Restricted 内部公开 www.h3c.com 16

CoAP协议特点

• 消息模型,以消息为数据通信载体,通过交换网络消息来实现设备间数据通信

• 对云端设备资源操作都是通过请求与响应机制来完成,类似HTTP,REST式交互,设备端可通过4个请求方法(GET, PUT, POST, DELETE)对服务器端资源进行操作

• 协议包轻量级,最小长度仅为4B

• 支持可靠传输,数据重传,块传输,确保数据可靠到达• 支持IP多播, 即可以同时向多个设备发送请求• 非长连接通信,适用于低功耗物联网场景• 支持DTLS保证传输层安全

Page 17: 物联网基础之MQTT CoAP简介

17H3C Restricted 内部公开 www.h3c.com 17

CoAP消息类型

CoAP采用与HTTP协议相同的请求响应工作模式,CoAP协议共有4种不同的消息类型:

CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK ——应答消息,接受到CON消息的响应。RST ——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。

Page 18: 物联网基础之MQTT CoAP简介

18H3C Restricted 内部公开 www.h3c.com 18

CoAP消息结构

Version:类似于IPv4和IPv6,仅仅是一个版本号。Message Type:CON,NON,ACK,RST。Message ID:每个CoAP消息都有一个ID,在一次会话中ID总是保持不变。但在这个会话之后该ID会被回收利用。Token:标记是ID的另一种表现。Options:CoAP选项类似于HTTP请求头,它包括CoAP消息本身,例如CoAP

端口号,CoAP主机和CoAP查询字符串等。负载Payload:真正有用的被交互的数据。

Page 19: 物联网基础之MQTT CoAP简介

19H3C Restricted 内部公开 www.h3c.com 19

CoAP观察模式

• CoAP提供观察模式,来减化客户端从服务器侧获取信息的流程,类似MQTT 订阅模式

Page 20: 物联网基础之MQTT CoAP简介

20H3C Restricted 内部公开 www.h3c.com 20

CoAP块传输

CoAP为传输较大的数据提供了分块传输的的方式,服务器客户端均可支持,可利用与版本下载等场景,通过block1/block2 option字段实现

Page 21: 物联网基础之MQTT CoAP简介

21H3C Restricted 内部公开 www.h3c.com 21

CoAP URI

• RESTFul协议由于其简单性和适用性,在WEB应用中越来越受欢迎• CoAP支持REST式交互,一个CoAP资源可以被一个URI所描述

例:一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683/sensors/temperature。注:CoAP的默认UDP端口号为5683。

Page 22: 物联网基础之MQTT CoAP简介

22H3C Restricted 内部公开 www.h3c.com 22

CoAP开源实现

libcoap(C语言实现) https://libcoap.net/

Californium(java语言实现) http://www.eclipse.org/californium/

Page 23: 物联网基础之MQTT CoAP简介

23H3C Restricted 内部公开 www.h3c.com 23

学习完本课程,您应该能够:

了解几种常见的物联网应用协议

Page 24: 物联网基础之MQTT CoAP简介

24H3C Restricted 内部公开 www.h3c.com 24

课程总结

介绍两种常见的物联网应用协议,包括MQTT、CoAP

Page 25: 物联网基础之MQTT CoAP简介

25H3C Restricted 内部公开 www.h3c.com 25

THANK YOUwww.h3c.com

官方微信 官方微博


Recommended