CoAP:Constrained Application Protocol协议是为物联网中资源受限的设备制定的应用层协议,即简化版的基于UDP的HTTP协议。其核心内容为资源抽象、REST式交互可扩展的头选项等。应用程序通过URI标志来获取服务器上的资源,使其可以像HTTP协议一样对资源进行GET、PUT、POST和DELETE等操作。C/S架构,功耗低不能反向控制。适用于需要通过标准互联网网络进行远程控制或监控的小型低功率传感器,开关,阀门和类似的组件,服务器对不支持的类型可以不响应

CoAP协议自身拥有如下特点:

  1)报头压缩,数据包小

  包含一个紧凑的二进制报头和扩展报头,它只有短短的4B的基本报头。

  2)方法和URIs

  为了实现客户端访问服务器上的资源,这是Web架构的主要特点。

  3)传输层使用UDP协议,适用于非安全性数据场合

  CoAP协议是建立在UDP协议之上,以减少开销(TCP需要三次握手)和支持组播功能。

  4)支持异步通信

  HTTP协议对M2M通信不适用,这是由于事务总是由客户端发起的。CoAP协议支持异步通信,这对M2M通信应用来说是常见的休眠/唤醒机制。

  5)支持资源发现

  为了自主地发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。

  6)支持缓存

  CoAP协议支持资源描述的缓存以优化其性能。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)

是IBM(依托ThinkPHP框架)开发的传感器和控制器之间的一个即时通讯协议,基于发布订阅模式(消息的生产者和消费者解构decoupling,极大地提高系统的扩展性和网络拓扑),有多个客户端--》一个代理服务器(channel)《--多个目标服务器组成的多对多,基于TCP、异步常连接,功耗大可以进行反向控制(服务器对客户端的控制)。

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

报警:设置触发条件,消息推送(各种途径短消息、GPRS/邮件。。。),远程控制和处理。

分布式缓存Redis之发布/订阅(Pub/Sub)https://blog.csdn.net/u011489043/article/details/78780255

LWM2M:移动的onenet即是

  是传统的OMA-DM协议基础之上发展起来的,属于订阅主动(服务器向客户端订阅))上报型(周期性或时间触发),基于REST架构,以coap为传输层协议,以资源为基本单位。

LwM2M载荷支持四种格式 plain text、Opaque、TLV、JSON,这四种协议要求服务器端必须都要支持,而在客户端必须支持TLV格式

  

LwM2M协议的主要开源实现有以下几个:

  • OMA LwM2M DevKit:提供可视化界面与LwM2M服务器交互。
  • Eclipse Leshan:基于Java,提供了LwM2M服务器与LwM2M客户端的实现。
  • Eclipse Wakaama:基于C,提供了LwM2M服务器与LwM2M客户端的实现。
  • AVSystem Anjay:基于C,提供了LwM2M客户端的实现。

此外,EMQ也实现了EMQ服务器上的LwM2M网关插件,实现了LwM2M协议的大部分功能,LwM2M设备可以注册至EMQ-LWM2M上,从而通过EMQ-LWM2M访问并管理设备,设备也可以向EMQ-LWM2M上报信息,并使用EMQ后端的服务来采集数据,参考:https://www.jianshu.com/p/11d34008f486

物联网协议CoAP协议学习的更多相关文章

  1. 无线物联网中CoAP协议的研究与实现【转】

    无线物联网中CoAP协议的研究与实现 时间:2013-04-09 来源:电子科技 作者:汤春明,张 荧,吴宇平 关键字:CoAP   无线   物联网   协议 摘要:由于物联网中的很多设备都是资源受 ...

  2. 物联网协议Coap协议介绍

    COAP协议简介 Coap(Constrained Application Protocol)是一种在物联网世界的类web协议,它的详细规范定义在 RFC 7252.COAP名字翻译来就是" ...

  3. Coap协议学习笔记-第一篇

    1. 物联网应用上一般使用单片机(或者其他SOC),单片机的RAM内存一般只有20KB~~128KB左右,然而一个TCP协议栈可能就20KB,所以只能用UDP,因为UDP相对小很多,然后在UDP上加了 ...

  4. 转战物联网·基础篇09-选择MQTT协议还是CoAP协议

      前面章节介绍过,MQTT协议和CoAP协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境.   XMPP协议也有人说是适合物联网通信的,但它是基于XML, ...

  5. 转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较

    一.先看下相关国外的专业数据对四大协议的比较: Protocol                                    CoAP                         XMP ...

  6. CoAP 协议解析说明(转)

    CoAP 协议全面分析 HTTP与COAP 请求与响应示例 HTTP请求(文本格式) POST https://getman.cn/echo HTTP/1.1 User-Agent: Fiddler ...

  7. MQTT研究之EMQ:【CoAP协议的ECC证书研究】

    今天研究的内容,是CoAP这个协议在EMQ消息队列的支持,CoAP是一个受限资源的协议,基于UDP实现的多用于物联网环境的通信协议.相关介绍不多说,可以看RFC. CoAP协议下,基于DTLS通信,同 ...

  8. 初识CoAP协议

    前言 本文介绍什么是CoAP,以及如何在物联网设备上使用它.CoAP是一种物联网协议,具有一些专门为受约束的设备而设计的有趣功能.还有其他一些可用于构建物联网解决方案的IoT协议,例如MQTT等. 物 ...

  9. COAP协议 - arduino ESP32 M2M(端对端)通讯与代码详解

    前言 最近我在研究 COAP 协议,在尝试使用 COAP 协议找了到了一个能在ESP32上用的coap-simple库,虽然库并不完善关于loop处理的部分应该是没写完,但是对于第一次接触COAP的朋 ...

随机推荐

  1. unittest 测试套件使用汇总篇

    # coding=utf-8import unittestfrom inspect import isfunction def usage(): """also unit ...

  2. 安慰奶牛Cheering up the Cow

    传送门 一次a就很开心 可以当作kruskal模板题(orz --------------------------------------------------------------------- ...

  3. 极简的js点击组图切换效果

    程序员进行前端开发时,时常要用到点击切换组图的动画效果,网上确实有很多此类插件,但是都很麻烦,乌糟糟无数代码,有那个看的时间,自己都能把功能写完了.在这里我提供一段极简的js点击组图切换效果代码,包含 ...

  4. 【C语言】字符数组,碎碎念

      存储方法: (1)字符数组赋值 ①初始化 ]={"China'} 或 ]="China' 注意:字符串可以不加{},单字符必须加 ]={,,} ②键盘输入 () char a; ...

  5. JZOJ5915 [2018NOIP模拟] 明日之星(广义后缀自动机,线段树)

    题目描述 给定一棵树,每个节点有一个权值 \(a_i\) 和一个字符串 \(s_i\). q组询问,每次询问一个字符串 S 和两个节点x,y: 求x到y路径上每个节点的字符串在 S 中出现的次数乘上各 ...

  6. js下false情况

    //为false的情况 false null NaN undefined "" 0

  7. 正确的上网姿势:ubuntu18.04使用clash

    本文为本人将CFW(Clash For Windows)上的配置文件应用到ubuntu上面的操作备忘,仅供个人使用 首先下载已经打包的clash压缩包:https://github.com/Dream ...

  8. laravel 模拟数据批量添加

    模拟User表结构: database/factories/UserFactory.php(模型工厂) <?php use App\Models\User; use Illuminate\Sup ...

  9. 【代码审计】VAuditDemo SQL注入漏洞

    这里我们定位 sqlwaf函数 在sys/lib.php中,过滤了很多关键字,但是42 43 44行可以替换为空 比如我们可以 uni||on来绕过过滤

  10. python的matplotlib的热门可视化动图

    1.图 2.代码 import pandas as pd import matplotlib as mpl import matplotlib.pyplot as plt import matplot ...