草庐IT

物联网协议概述

YF云飞 2023-06-02 原文

目录

前言

内容

CoAP(Constrained Application Protocol 受限应用协议)

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

哪种协议?从应用场景要求的层面分析如何选用

1、服务端主动发送给客户端的数据(反控)的时效性(如通过 APP 控制硬件动作)

2、设备环境对底层协议的要求或限制

3、在 NAT 网络环境中是否需要调整

4、实现多对多的通信还是单对单通信

5、服务质量等级及自动重连重发

6、对网络稳定性要求

7、对硬件设备的功耗影响


前言

物联网是在互联网的基础上延伸和扩展的一种网络,其用户端延伸和扩展到了任何物品之间,彼此进行信息交换和通信,目的是实现所有物品与网络的连接,从而方便识别、管理和控制。

无线物联网的特点包括:全面感知、实时准确传递物品信息、利用智能计算技术对海量数据进行分析和处理,以实现智能化控制。

由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的 HTTP 协议应用在物联网上就显得过于庞大而不适用。

MQTT 协议和 CoAP 协议都是物联网中比较流行的协议,都对传输量做了很大的精简,传输开销小,以适应物理网的网络环境。

内容

CoAP(Constrained Application Protocol 受限应用协议)

CoAP 是 6LowPAN 协议栈中的应用层协议。COAP 协议网络传输层由 TCP 改为 UDP。
COAP 是二进制格式的,HTTP 是文本格式的,COAP 比 HTTP 更加紧凑。
轻量化,COAP 最小长度仅仅 4B,一个 HTTP 的头都几十个 B 了。
支持可靠传输,数据重传,块传输。 确保数据可靠到达。
支持 IP 多播,即可以同时向多个设备发送请求。
非长连接通信,适用于低功耗物联网场景。

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

为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布 / 订阅型消息协议。轻量、简单、开放和易于实现。
1. 使用发布 / 订阅消息模式,提供一对多的消息发布,解除应用程序耦合
2. 使用 TCP/IP 提供网络连接
3. 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量


这些特点使它适用于受限环境。例如,但不仅限于此:
特别适合于网络代价昂贵,带宽低、不可靠的环境
・能在处理器和内存资源有限的嵌入式设备中运行
・使用发布 / 订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合
・使用 TCP/IP 提供网络连接
・提供 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制


哪种协议?从应用场景要求的层面分析如何选用

1、服务端主动发送给客户端的数据(反控)的时效性(如通过 APP 控制硬件动作)
 

       因 MQTT 协议是保持连接的,所以及时性相对很好;CoAP 协议是无连接响应式通讯,因此不能主动推送,要等客户端访问才可以携带回去,及时性相对较差。

2、设备环境对底层协议的要求或限制


  MQTT 协议是建立在 TCP 协议基础之上的,因此他也具备 TCP 协议的优缺点;CoAP 协议是建立在 UDP 协议基础之上的,因此他也具备 UDP 协议的优缺点。

3、在 NAT 网络环境中是否需要调整


  因 MQTT 协议是保持长连接的,所以在 NAT(Network Address Translation,网络地址转换)下没有问题;CoAP 协议因是无连接方式,需要使用 NAT 穿透性手段。

NAT NAT(Network Address Translation,网络地址转换)是 1994 年提出的。当在专用网内部的一些主机本来已经分配到了本地 IP 地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用 NAT 方法。这种方法需要在专用网连接到因特网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT 路由器,它至少有一个有效的外部全球 IP 地址。这样,所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和因特网连接。

4、实现多对多的通信还是单对单通信


  因 MQTT 协议的消息模型是发布/订阅式的,所以是可以多对多通信的;CoAP 协议的消息模型是请求 / 响应式的,所以是单对单通信。

5、服务质量等级及自动重连重发


  因 MQTT 协议有 QoS 配置,支持服务质量等级和自动重连重发机制;CoAP 本身不具备,需要应用层自己来写这个逻辑。

  

6、对网络稳定性要求


  MQTT 协议利用自动重连重发机制解决网络不稳定问题,断网就会触发重连;CoAP 协议只有客户端发送的时候需要保证网络连接正常,其他时段无需连接。

7、对硬件设备的功耗影响


  MQTT 协议因有保持连接,所以功耗略高于 CoAP 协议。

有关物联网协议概述的更多相关文章

  1. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  2. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  3. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  4. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  5. ruby-on-rails - 在服务器上没有互联网访问权限的 Capistrano 部署 - 2

    如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答

  6. ruby - ZeroMQ 安全地通过互联网 - 2

    我一直在使用zeroMQ,我希望能够通过Internet安全连接。我在ruby​​中,可以使用SSL和/或某种shh连接,但找不到有关如何执行此操作的任何示例。我找到了这个旧的stackoverflow链接,HowdoeszeromqworktogetherwithSSL?说他们正在研究某种安全性,但那是一年前的事了,我找不到任何新的引用资料。即使这不是内置在zeroMQ中,我也假设会有一些方法可以使用OpenSSL或类似的东西来设置它。注意:如果您想要安全传输,zeroMQ网站提到使用VPN或其他东西。我不想使用VPN。一定有更好的方法。 最佳答案

  7. 网络实验之RIPV2协议(一) - 2

    一、RIPV2协议简介  RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对

  8. Win10 / 11新电脑最简单跳过联网激活和使用本地账户登录方法 - 2

    跳过联网激活:OOBE界面直接按Ctrl+Shift+F3进入审核模式。这样就可以直接进入系统进行一些硬件测试等,而不用联网激活导致新机无法退货。需要注意的是,在审核模式下进行的一些操作都会保留,并不会在退出后自动还原!安装的软件在正常开机进系统后还会看见!如果电脑确实没连互联网又不想强行跳过OOBE(网上很多教程会叫你直接结束OOBE进程,但这是不推荐的,因为一些厂商自带优化程序和系统初始化设置在后面都会应用,对于笔记本跳过的话你会发现驱动和内置应用都没有装上。其实这部分脚本就在系统盘的Recovery隐藏文件夹下),可以参考以下方式:https://www.landiannews.com/

  9. ruby-on-rails - Ruby On Rails 3.x 离线安装(没有互联网连接) - 2

    如果有人能提供一些关于在没有互联网连接的计算机上安装ruby​​onrails3.x框架的见解,我将不胜感激。所有教程或解释似乎都假设始终存在互联网连接。有没有简单的方法来下载包含所有依赖项的包并简单地安装包。提前致谢 最佳答案 最后。您需要手动下载的Gem的完整列表,以便在离线模式下安装Rails(或在阻止您的“gem”命令工作的代理之后)。此列表假定您已经拥有以下内容(Windows7):Ruby1.9.2RubyGems1.8.24DevKit列表。转到ruby​​gems.org并使用搜索功能下载以下每个Gem。您不需要键入

  10. 【毕业设计】基于单片机的智能温控农业大棚系统 - 物联网 stm32 - 2

    文章目录1简介2绪论2.1课题背景与目的3系统设计详细设计描述3.2硬件部分温度测量电路其他电路部分3.3软件部分主程序子系统程序温湿度程序流程键盘显示子程序3.4实现效果3.5部分相关代码4最后1简介Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机项目基于单片机的智能温控农业大棚系统大家可用于课程设计或毕业设计单片机-嵌入式毕设选题大全及项目分享:https://blog.csdn.net/m0_71572576/article/details/1254090522绪论2.1课题背景与目的近年来我国的温室控制取得了长足的进步,首先在温室群控制方面,进行了初步的探索和理论研究,其次在温室

随机推荐