物联网四大协议
物联网四大协议 物联网协议物联网协议 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:恰好一次。保证这种语义肯定会减少并发或者增加延时,不