热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mqtt在物联网中的应用(mqtt服务器和tcp直连的区别)

会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结


一、MQTT 1、概要:


消息队列遥测传输(mqtt )是IBM开发的即时消息传输协议,有可能成为物联网的重要组成部分。 该协议支持所有平台,几乎可以连接所有联网的物品和外部,用作传感器和制动器(例如通过推特将房子连接到网络)的通信协议。


2、主要特点:


MQTT协议是专为在大量计算能力有限、低带宽、不可靠的网络中工作的远程传感器与控制设备之间的通信而设计的协议,具有以下主要特征:


使用分发/订阅消息模式提供一对多的消息分发,并取消APP应用的合并


切断负载内容的消息传输;


使用TCP/IP进行网络连接


有三种消息传递服务质量:


“至多一次”,信息传播完全依赖于基础TCP/IP网络。 发生邮件丢失或重复。 在这个级别上,环境传感器数据可以丢失一次读取记录。 因为不久会有第二次发送。


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


“一次”,让消息只传一次。 如果在计费系统中发生重复或丢失的消息会导致不正确的结果,则可以使用此级别。


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


二、CoAP由于物联网中的许多设备受资源限制,也就是说内存容量小,处理能力有限,传统的HTTP协议APP应用于物联网太大,无法应用。 ITF的核心工作组提出了基于REST架构的CoAP协议。 CoAP是6LowPAN协议栈中的APP应用层协议。


三、Lightweight M2M OMA是国际组织,最初定义了OMA-DM的一组协议,用于远程管理移动终端设备,如手机开户、版本升级等。 OMA-DM有非常广泛的APP应用,很多运营生,例如Verizon无线、Sprint有自己的OMA-DM服务,在加入手机/模块时通过了定制的OMA-DM加入测试随着物联网的兴起,OMA基于传统的OMA-DM协议,提出了LWM2M协议。 2013年底,OMA发布了LWM2M标准。


OMA Lightweight M2M的主要动机是定义一组适用于各种物品的互联网设备的轻量级协议。 因为M2M设备通常是资源非常有限的嵌入式终端,没有UI,计算能力和网络通信能力有限。 另外,由于物联网终端数量庞大,节约网络资源变得越来越重要。


LWM2M定义了三个逻辑实体:


(1) LWM2m服务器


(2) lwm2m客户端负责服务器命令的执行和执行结果的上报


(3) LWM2M引导服务器bootstrap服务器负责LWM2M客户端的构成。


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


)1)设备发现和注册(Device Discovery and Registration )该接口提供了客户机在服务器上注册、服务器客户机支持的能力(简单来说,是哪些资源和对象oboce


2 ) bootstrap:bootstrap服务器通过该接口构成客户机-例如lwm2m服务器的URL地址


)3) devicemanagementandserviceenablement )这是最主要的业务接口。 lwm2m服务器向客户端发送命令,接受响应。


信息报告:该接口是lwm2m客户端,用于报告传感器温度等资源信息。 上报方法可以是事件触发,也可以是周期性的。


轻量级m2m协议栈




LWM2M Objects:中的每个对象都对应于客户端的特定功能实体。 LWM2M规范定义了标准对象,如下所示


URN : OMA : LW M2M : OMA :2; (lwm2m服务器对象)


URN : OMA : LW M2M : OMA :3; (lwm2m访问控制对象)


每个对象下面可以有许多资源。 例如,固件对象可以具有固件版本号、大小等资源。


Vendor可以自己定义对象


lwm2m协议:定义了读取、写入、执行、创建或删除等逻辑操作。


CoAP:可以用作IETF定义的增强型应用协议为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则相反,它内置内容协商和发现支持,这样允许设备彼此窥测以找到交换数据的方式。

五、物联网定制开发,加关注私信“技术粗心的黑裤”


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
author-avatar
mobiledu2502900917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有