物联网四大协议
物联网四大协议 物联网协议物联网协议 ProtocolProtocol TransportTCP Publish/ Messaging Subscribe Request/ Response 2G, 3G, 4G Suitability 1000s nodes LLN Suitability 1000s nodes Compute Resources FairFairExcellentFair ExcellentExcellentExcellentExcellent XMPPXMPP TCP Publish/ Subscribe Request/ Response Request/ Response Request/ Response MQTTMQTT UDP CoAPCoAPRESTful HTTPRESTful HTTP TCP 10Ks RAM/Flash10Ks RAM/Flash10Ks RAM/Flash 10Ks RAM/Flash Smart Energy Utility Field Area Networks Profile 2 premise energy management/ home services Remote Success Storied management of consumer white goods Extending enterprise messaging into IoT applications 协议一物联网协议 XMPP XMPP 是一种基于标准通用标记语言的子集 XML 的协议,它继承了在 XML 环境中灵活的 发展性。因此,基于 XMPP 的应用具有超强的可扩展性。经过 扩展以后的 XMPP 可以通 过发送扩展的信息来处理用户的需求,以及在 XMPP 的顶端建立如内容发布系统和基于地 址的服务等应用程 序。而且,XMPP 包含了针对服务器端的软件协议,使之能与另一个进 行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。 基本网络结构基本网络结构 XMPP 中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双 向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与 异构即时通信系统的互联互通,异构系统可以包括 SMS(短信),MSN,ICQ 等。基本 的网络形式是单客户端通过 TCP/IP 连接到单服务器,然后在之上传输 XML。 工作原理工作原理 XMPP 核心协议通信的基本模式就是先建立一个 stream,然后协商一堆安全之类的东 西,中间通信过程就是客户端发送 XML Stanza,一个接一个的。服务器根据客户端发送 的信息以及程序的逻辑,发送 XML Stanza 给客户端。但是这个过程并不是一问一答 的,任何时候都有可能从一方发信给另外一方。通信的最后阶段是关闭流,关闭 TCP/IP 连接。 功能功能 传输的是与即时通讯相关的指令。在以前这些命令要么用 2 进制的形式发送(比如 QQ),要么用纯文本指令加空格加参数加换行符的方式发送(比如 MSN)。而 XMPP 传 输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了 XML 格式的纯文本。 优点优点 XMPP 协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码 库等方面,都已经各自有多种实现。 缺点缺点 网络通信过程中数据冗余率非常高,网络流量中 70 都消耗在 XMPP 协议层了。对于 物联网来说,大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备, 省电、省流量是所有底层服务的一个关键技术指标,XMPP 协议看起来已经落后了。 协议二物联网协议 MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个 即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所 有联网物品 和外部连接起来,被用来当做传感器和致动器(比如通过 Twitter 让房屋联 网)的通信协议。 MQTT 简介 MQTT 是基于二进制消息的发布/订阅编程模式的消息协议,最早由 IBM 提出的,如今已 经成为 OASIS 规范。由于规范很简单,非常适合需要低功耗和网络带宽有限的 IoT 场 景,比如 遥感数据 汽车 智能家居 智慧城市 医疗医护 由于物联网的环境是非常特别的,所以由于物联网的环境是非常特别的,所以 MQTTMQTT遵循以下设计原则遵循以下设计原则 1.精简,不添加可有可无的功能。 2.发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递。 3.允许用户动态创建主题,零运维成本。 4.把传输量降到最低以提高传输效率。 5.把低带宽、高延迟、不稳定的网络等因素考虑在内。 6.支持连续的会话控制。 7.理解客户端计算能力可能很低。 8.提供服务质量管理。 9.假设数据不可知,不强求传输数据的类型与格式,保持灵活性。 运用 MQTT 协议,设备可以很方便地连接到物联网云服务,管理设备并处理数据,最后 应用到各种业务场景,如下图所示 发布发布/ /订阅模式订阅模式 与请求/回答这种同步模式不同,发布/订阅模式解耦了发布消息的客户(发布者)与订阅 消息的客户(订阅者)之间的关系,这意味着发布者和订阅者之间并不需要直接建立联 系。打个比方,你打电话给朋友,一直要等到朋友接电话了才能够开始交流,是一个典型 的同步请求/回答的场景;而给一个好友邮件列表发电子邮件就不一样,你发好电子邮件 该干嘛干嘛,好友们到有空了去查看邮件就是了,是一个典型的异步发布/订阅的场景。 熟悉编程的同学一定非常熟悉这种设计模式了,因为它带来了这些好处 发布者与订阅者不必了解彼此,只要认识同一个消息代理即可。 发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。 发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。 主题主题 MQTT 是通过主题对消息进行分类的,本质上就是一个 UTF-8 的字符串,不过可以通过 反斜杠表示多个层级关系。主题并不需要创建,直接使用就是了。 主题还可以通过通配符进行过滤。其中,可以过滤一个层级,而只能出现在主题最后 表示过滤任意级别的层级。 举个例子举个例子 building-b/floor-5代表 B 楼 5 层的设备。 /floor-5代表任何一个楼的 5 层的设备。 building-b/代表 B 楼所有的设备。 注意,MQTT 允许使用通配符订阅主题,但是并不允许使用通配符广播。 服务质量服务质量 为了满足不同的场景,MQTT 支持三种不同级别的服务质量(Quality of Service,QoS) 为不同场景提供消息可靠性 级别 0尽力而为。消息发送者会想尽办法发送消息,但是遇到意外并不会重试。 级别 1至少一次。消息接收者如果没有知会或者知会本身丢失,消息发送者会再次发 送以保证消息接收者至少会收到一次,当然可能造成重复消息。 级别 2恰好一次。保证这种语义肯定会减少并发或者增加延时,不