惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
Webroot Blog
Webroot Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
TaoSecurity Blog
TaoSecurity Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News | PayPal Newsroom
S
Security Affairs
T
Tor Project blog
P
Proofpoint News Feed
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Security @ Cisco Blogs
H
Heimdal Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Help Net Security
Help Net Security
U
Unit 42
云风的 BLOG
云风的 BLOG
The Hacker News
The Hacker News
Cisco Talos Blog
Cisco Talos Blog
量子位
F
Full Disclosure
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
有赞技术团队
有赞技术团队
T
Troy Hunt's Blog
P
Privacy & Cybersecurity Law Blog
Forbes - Security
Forbes - Security
人人都是产品经理
人人都是产品经理
L
Lohrmann on Cybersecurity
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
腾讯CDC
AI
AI
Last Week in AI
Last Week in AI
Latest news
Latest news
Google Online Security Blog
Google Online Security Blog
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
Martin Fowler
Martin Fowler
Blog — PlanetScale
Blog — PlanetScale
V2EX - 技术
V2EX - 技术
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - ricks

解决VS Code安装golang相关插件失败问题 努力就会成功(转自左耳朵耗子) 最全科普!你一定要了解的NB-IoT LTE - NAS 驻网流程概括 PLMN概念和应用设置 3GPP R14中的6大NB-IoT增强技术 与程序员相关的CPU缓存知识 别让自己“墙”了自己(转自耗子叔) NB-IoT的介绍最终版 !看明白了吗?(转自 top-iot) C语言函数sscanf()的用法 GPRS骨干网逻辑结构 GSM与GPRS的区别 SA vs NSA 打造高效的工作环境 – SHELL 篇 linux下怎么清理缓存 清理系统缓存 iptables禁止某个mac地址上网 使用iptables基于MAC地址进行访控 iptables的MAC地址过滤
IoT协议LwM2M MQTT与CoAP
ricks · 2020-02-28 · via 博客园 - ricks

一、MQTT

1、概述:

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。

2、主要特征:

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

对负载内容屏蔽的消息传输;

使用TCP/IP 提供网络连接;

有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

3、网络资源

官方网站

http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html

中文翻译

https://www.gitbook.com/book/mcxiaoke/mqtt-cn

代理软件

Mosquitto —— 这是最早在生产环境中可用的消息代理之一,以 C 语言编写,提供轻量级多种配置与高性能。

Mosca —— 以 Node.js 编写,可嵌入 Node 应用或以独立可执行文件的形式运行。由于配置简单并具有可扩展性,它也是我们最喜欢的消息代理,具有高性能的优点。

RSMB —— IBM 对 MQTT 协议的实现,也是最不常用的选项之一,不过它是一个用C语言编写的成熟系统。

HiveMQ —— HiveMQ 是一种相对较新的消息代理,面向企业环境,在博客上有很多关于 MQTT 不错的信息。

二、CoAP

由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。 IETF的CoRE工作组提出了一种基于REST架构的CoAP协议。CoAP是6LowPAN协议栈中的应用层协议。

1、网络资源

官网:https://en.wikipedia.org/wiki/Constrained_Application_Protocol

三、Lightweight M2M

OMA是一家国际组织,最初定义了一套 OMA-DM的协议,用来远程管理移动终端设备,比如手机开户,版本升级,等等。OMA-DM有着非常广泛的应用,很多运营生比如Verizon Wireless, Sprint都有自己的OMA-DM服务并要求手机/模块入网的时候通过自定义的OMA-DM入网测试。因为物联网的兴起, OMA在传统的OMA-DM协议基础之上,提出了LWM2M协议。2013年底,OMA发布了LWM2M规范。

OMA Lightweight M2M 主要动机是定义一组轻量级的协议适用于各种物联网设备,因为M2M设备通常是资源非常有限的嵌入式终端,无UI, 计算能力和网络通信能力都有限。同时也因为物联网终端的巨大数量,节约网络资源变得很重要。

LWM2M 定义了三个逻辑实体:

LWM2M Server 服务器

LWM2M client 客户端 负责执行服务器 的命令和上报执行结果

LWM2M 引导服务器 Bootstrap server 负责 配置LWM2M客户端.

在这三个逻辑实体之间有4个逻辑接口:

Device Discovery and Registration

这个接口让客户端注册到服务器并通知服务器客户端所支持的能力(简单说就是支持哪些资源Resource和对象Object

Bootstrap

Bootstrap server通过这个接口来配置Clinet – 比如说LWM2M server的URL地址

Device Management and Service Enablement

这个就是最主要的业务接口了。 LWM2M Server 发送指令给 Client 并受到回应.

Information Reporting

这个接口是 LWM2M Client 来上报其资源信息的,比如传感器温度。上报方式可以是事件触发,也可以是周期性的。

Lightweight M2M 协议栈

LWM2M Objects: 每个对象对应客户端的某个特定功能实体. LWM2M 规范定义了一下标准Objects,比如

urn:oma:lwm2m:oma:2; (LWM2M Server Object)

urn:oma:lwm2m:oma:3; (LWM2M Access Control Object)

每个object下可以有很多resource. 比如Firmware object可以有Firmware版本号,size等resource.

Vendor可以自己定义object

LWM2M Protocol: 定义了一些逻辑操作,比如Read, Write, Execute, Create or Delete.

CoAP: 是IETF 定义的Constrained Application Protocol 用来做LWM2M的传输层,下层可以是 UDP 或SMS .UDP 是必须支持的,SMS是可选的。CoAP有自己的消息头,重传机制等。

DTLS: 是用来保证客户端和服务器间的安全性的.

四、MQTT与CoAP比较

MQTT和CoAP都是非常有用的物联网协议,但两者有根本区别,两个协议各有特点,选择哪个才是正确的取决于你的应用程序。

1、MQTT是多个客户端通过一个中央代理传递消息的多对多协议。它通过让客户端发布消息、代理决定消息路由和复制来解耦生产者和消费者。虽然MQTT持久性有一些支持,但它是最好的实时通讯总线。

2、CoAP基本上是一个在Client和Server之间传递状态信息的单对单协议。虽然它支持观察资源,但是CoAP最适合状态转移模型,而不是单纯的基于事件。

3、MQTT Clients与Broker之间保持TCP长连接,这个在NAT环境中也不会有问题。CoAP Clients与Server都要接收和发送UDP包。在NAT环境下使用CoAP,需要使用“隧道掘进”或者端口转发(内网穿透),否则像LWM2M(轻量级M2M)一样,首先初始化设备到‘头端’( head-end )的连接.

4、MQTT不支持带有类型或者其它帮助Clients理解的标签消息。MQTT消息可用于任意目的,但前提是所有的Clients必须知道消息格式。而CoAP则相反,它内置内容协商和发现支持,这样允许设备彼此窥测以找到交换数据的方式。