了解物联网中的实时协议
实时通信技术是物联网(IoT)应用开发的绝对必要条件。 想象一下您的手机与灯光通信的用例。 如果灯打开前需要几秒钟,那就是用户体验失败了。
实时通信技术的发展是一个无需提及即时消息就无法解释的故事。 从历史上看,即时消息是原始的消费者友好型,互联网连接的实时通信客户端。 AOL IM,ICQ和Jabber是支持实时通信的即时消息客户端的几个示例。 这一切都发生在20世纪90年代。
今天,随着我们开发物联网设备之间的通信协议,我们将从构建即时消息解决方案中汲取经验教训。 目前,物联网设备使用三种主要的实时协议:XMPP,CoAP和MQTT。 有趣的是,XMPP起源于Jabber,一种开放的即时通讯协议。
XMPP
可扩展消息传递和在线协议(XMPP)是一种基于XML的TCP通信协议,可以在两个或多个连接的实体之间实现结构化数据的近实时交换。 XMPP的开箱即用功能包括状态信息和联系人列表维护。 虽然这两个功能最初都是为即时消息传递而设计的,但它们具有明显的物联网应用。 部分由于其开放性和XML基础,XMPP已经扩展用于发布 - 订阅系统 - 再次,非常适合物联网应用。
使用XMPP作为物联网通信协议有几个主要优点。 主要优势是XMPP的分散性。 XMPP的工作方式类似于电子邮件,在传输代理的分布式网络上运行,而不是依赖于单个中央服务器或代理(如CoAP和MQTT那样)。 与电子邮件一样,任何人都可以轻松运行自己的XMPP服务器,允许设备制造商和API运营商创建和管理自己的设备网络。 并且因为任何人都可以运行自己的服务器,如果需要安全性,则可以使用内置TLS加密在公司内部网上隔离安全认证协议。
不幸的是,XMPP也存在一些缺点。 最大的缺陷之一是缺乏端到端加密。 虽然有许多用例可能不需要加密,但大多数物联网设备最终都需要加密。 缺乏端到端加密是物联网制造商的主要缺点。
另一个缺点是缺乏服务质量(QoS)。 确保消息传递在物联网世界中比在即时消息传递世界中更重要。 如果您的报警系统没有收到要自行开启的信息,那么您一直计划的假期很容易被破坏。
CoAP协议
约束应用程序协议(CoAP)是专门开发的,允许资源受限的设备使用UDP而不是TCP通过Internet进行通信。 开发人员可以使用与使用传统基于REST的API的设备相同的方式与任何支持CoAP的设备进行交互。 CoAP对于与需要通过互联网控制的低功耗传感器和设备进行通信特别有用。
CoAP是一种简单的请求/响应协议(同样,非常类似于REST),它遵循传统的客户端/服务器模型。 客户端可以对资源进行GET,PUT,POST和DELETE请求。 CoAP数据包使用位域来最大化内存效率,并且它们广泛使用从字符串到整数的映射,以使数据包保持足够小,以便在设备上传输和解释。 除了极小的数据包大小,CoAP的另一个主要优点是它使用UDP; 使用数据报允许CoAP在基于分组的技术(如SMS)之上运行。
所有CoAP消息都可以标记为“可确认”或“不可确认”,作为应用级QoS。 虽然SSL / TLS加密不可用,但CoAP使用数据报传输层安全性(DTLS),类似于TCP版本的TLS。 默认加密级别相当于3, 072位RSA密钥。 即便如此,CoAP还是设计用于只有10KB RAM的微控制器。
CoAP的一个缺点:它是一对一的协议。 尽管可以进行使群组广播成为可能的扩展,但广播功能并非协议所固有的。 可以说,更重要的缺点是缺少发布 - 订阅消息队列。
MQTT
消息队列遥测传输(MQTT)是一种发布 - 订阅消息传递协议。 与CoAP类似,它是在考虑资源约束的设备的情况下构建的。 MQTT具有轻量级数据包结构,旨在节省内存使用和功耗。 连接的设备订阅MQTT代理上托管的主题。 每当另一个设备或服务向主题发布数据时,订阅它的所有设备将自动获得更新的信息。
MQTT的主要优点是发布 - 订阅消息队列和多对多广播功能。 使用与MQTT代理的长期传出TCP连接,来回发送带宽有限的消息简单明了。
永远在线连接的缺点是它限制了设备进入睡眠状态的时间。 如果设备主要休眠,则可以使用另一个MQTT协议:MQTT-S,它使用UDP而不是TCP。
MQTT的另一个缺点是基本协议缺乏加密。 MQTT被设计为轻量级协议,并且加入加密会给连接增加大量开销。 您可以在应用程序级别添加自定义安全性,但这可能需要大量工作。
物联网ABCs
了解底层协议对于每个想要充分利用物联网技术的开发人员都很重要。 随着空间的升温,关于在设备之间创建有效通信所需的内容将会有更多问题。 更重要的是,对于那些创建不仅与设备交互而且还控制它们的API的人来说,实时通信将是绝对必要的。 人们通过互联网即时通信的方式开始变得更加通用。
更多关于“物联网培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。