51学通信论坛2017新版

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1312|回复: 0
打印 上一主题 下一主题

纵论物联网(十):物联网应用层协议

[复制链接]

 成长值: 15613

  • TA的每日心情
    开心
    2022-7-17 17:50
  • 2444

    主题

    2544

    帖子

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    74104
    跳转到指定楼层
    楼主
    发表于 2017-9-16 18:10:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    导语



    物联网的关键技术主要解决三个方面的问题:物体的识别、物体的连接、物体的数据交换。每个方面都有一些技术解决方案,在前面的文章中,我们介绍了RFID、NFC等物体识别及电子标签的技术,也介绍了物联网节点组网与接入的技术。这篇文章主要讲一下物联网的数据是如何处理的。

    物联网关键技术大全

    物联网应用层协议



    LoRa、NB-IoT以及Zigbee、蓝牙主要解决的是物体互联以及接入网络的问题,从网络协议分层来看,基本上都属于数据链路层协议。对于物联网的数据交换,主要依靠应用层协议来解决。

    在移动互联网中,最常用的应用层协议就是HTTP协议,HTTP协议同样可以用于物联网系统中。HTTP协议采取的是请求-响应(Request-Response)的通信机制,服务器没有办法主动给客户端发送消息。如果要实现这种消息推送,就需要借助WebSocket这种全双工的通信机制。
    不过对于很多计算和存储资源有限的物联网节点,不太适合使用HTTP协议。除了HTTP协议以外,也有很多更适合于物联网应用的协议,比如MQTT、CoAP、AMQP、STOMP等。

    各个物联网软件平台最常使用的物联网协议

    发布-订阅机制



    很多物联网应用层协议都是基于发布-订阅(Publish-Subscribe)机制,这种机制非常适合物联网系统应用。MQTT协议、STOMP协议、AMQP协议以及DDS协议都属于这种发布-订阅的机制。
    每个传感器节点,采集的数据需要上传到网络,相当于是一个消息的发布,这个消息需要基于某个主题,比如传感器的类型。所有关心这个主题的节点,都可以通过订阅这个主题的消息,实时获取最新的数据。

    消息的发布和订阅是基于某个主题的,实现机制一般依赖于消息队列

    MQTT协议



    消息队列遥测传输协议(MQTT : Message Queuing Telemetry Transport)是为大量计算能力有限,工作带宽有限、网络环境不可靠的传感器或控制器而设计的协议。






    MQTT协议基于TCP协议


    MQTT协议原来是IBM开发的一个即时通讯协议,基于TCP协议实现。MQTT客户端需要通过消息代理(MQTT Broker)来进行消息的发布和订阅。
    MQTT协议的兼容性非常好,几乎支持所有平台,可以把各种物联网设备都连接起来。所以MQTT协议也是目前应用最广泛的物联网应用层协议。CoAP协议



    受限应用协议(CoAP:Constrained Application Protocol)是6LowPAN协议栈中的应用层协议,基于REST(表述性状态传递)架构风格,支持REST交互。

    CoAP协议基于UDP协议


    CoAP基于UDP协议,其设计初衷就是尽可能地方便地转换为HTTP协议。CoAP让用户可以像使用HTTP协议一样,在资源受限的物联网设备中使用CoAP协议。AMQP协议



    高级消息队列协议(AMQP:Advanced Message Queuing Protocol)是一个提供统一消息服务的应用层标准高级消息队列协议,为面向消息的中间件设计。

    AMQP的工作原理


    AMQP的工作原理与MQTT类似,也是基于发布-订阅机制。消息代理Broker的交换机组件(Exchange)会把接收到的消息,根据消息的主题,分配到不同的队列中,以便订阅者接收。

    RabbitMQ就是在AMQP协议基础上实现的一个消息系统,遵循Mozilla Public License开源协议。RabbitMQ在互联网应用中常被用作消息服务器。STOMP协议



    简单(流)文本定向消息协议(STOMP: Simple (or Streaming) Text Orientated Messaging Protocol),提供了一个可互操作的连接格式,允许STOMP客户端与任意STOMP消息代理(Broker)进行交互。
    STOMP协议由于设计简单,易于开发客户端,因此在多种语言和多种平台上得到广泛地应用。当前非常流行的开源消息服务器ActiveMQ、Apollo、RabbitMQ(需要插件)都支持STOMP协议。

    ActiveMQ支持TCP、XMPP、STOMP等协议进行消息传输


    STOMP基于TCP协议,客户端和服务器之间的通信是通过“帧”(Frame)来实现,每个帧由多“行”(Line)组成。STOMP协议定义了帧结构。

    Stomp帧格式


    STOMP帧第一行是命令,紧跟着键值对形式的Header内容。然后是一个空行,最后是Body内容。数据分发服务DDS


    数据分发服务(DDS:Data Distribution Service for Real-Time Systems),是面向实时系统的数据分布服务,是由OMG组织提出的协议。

    DDS的数据分发的实时效率非常高,能做到秒级内同时分发百万条消息到众多设备。DDS在服务质量(QoS)上提供非常多的保障途径,因此适用于国防军事、工业控制这些高可靠性、可安全性应用领域的原因。不过DDS目前还只限于在有线网络部署,无线网络的可靠性可能满足不了DDS的QoS要求。总结



    上面列出了一些比较常见的物联网应用层协议,但并不全面,还有一些相对更加小众的协议,公开资料也比较少。目前很难说哪种物联网应用层协议会实现垄断局面,还要看各自生态和市场需求的未来发展。

    如果希望了解更多关于物联网的信息,请继续关注“微说互联网”的“纵论物联网”系列。
    声明:本文转载自网络。版权归原作者所有,如有侵权请联系删除。
    扫描并关注51学通信微信公众号,获取更多精彩通信课程分享。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|51学通信技术论坛

    GMT+8, 2025-1-31 18:09 , Processed in 0.068179 second(s), 32 queries .

    Powered by Discuz! X3

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表