热门标签 | 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则相反,它内置内容协商和发现支持,这样允许设备彼此窥测以找到交换数据的方式。

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


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
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社区 版权所有