Blog

Blog

PHODAL

物联网相关web技术

找了一下一些常用的物联网相关的Web技术,整理如下。

REST

REST不论是在HTTP协议中,还是在CoAP中都是常用的技术之一,虽然说不上是技术,但是常用是有的。

REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的 应用通过URI来获取资源的表征。获得这些表征致使这些应用程序转变了其状态。随着不断获取资源的表征,客户端应用不断地在转变着其状态,所谓表征状态转移。

记得我在写毕业论文的时候这样写到:

REST服务实际上是充当着网络与设备的传输介质,构建一个REST服务也就相当于 获取一个URL下的某个数据。

需要注意的是,这里最后关注的还是M2M的思想,写给机器的接口。

CoAP

REST算是CoAP协议遵循的一个基本原则,除此之外他还是为受限制的设备而开始的协议。

受约束的应用协议(COAP)是一种软件协议旨在以非常简单的电子设备,使他们能够在互联网上进行交互式通信中使用。它特别针对小型低功率传感器,开关,阀门和需要被控制或监督远程,通过标准的Internet网络类似的组件。 COAP是一个应用层协议,该协议是用于在资源受限的网络连接设备,例如无线传感器网络节点使用。 COAP被设计为容易地转换为HTTP与Web简化集成,同时也能满足特殊的要求,例如多播支持,非常低的开销,和简单性。多播,低开销,以及简单性是因特网极其重要物联网(IOT)和机器对机器(M2M)设备,这往往是积重难返,有太多的内存和电源,比传统的互联网设备有。因此,效率是非常重要的。 COAP可以在支持UDP或UDP的模拟大多数设备上运行。

CoAP简化了HTTP协议,只提供了REST的四个方法。然而POST和PUT在我设计IoT-CoAP的时候发现这两种行为是类似的,让人想起了patch方法。

6LoWPAN

虽然还没有玩过这个东西,但是这个显然很受欢迎。

Lowpan是IPv6 over Low-power wireless Personal Area Networks的首字母缩写,是IETF组织制定的物联网标准体系,它的物理层和MAC层采用802.15.4标准,网络层采用IPv6,并制定了专门的RPL组网路由协议,传输层采用UDP,应用层采用低开销的CoAP。简单讲,6Lowpan系统是一套完整的类似于Zigbee的网络技术,Zigbee能用的领域6Lowpan都可以使用,但是6Lowpan采用IPv6,具有许多优势,包括具有海量的地址空间,可与TCP/IP网络无缝集成,实现端到端的数据传输,并且很容易与HTTP转换,易于集成到互联网,开放的协议,无需专利费等。6Lowpan已经被ISA 100.11a、ETSI M2M、Zigbee SEP2.0等标准所采纳,很可能像TCP/IP成为互联网的事实标准那样,成为物联网领域的事实标准。Cisco、IBM、Honywell、TI、NXP等巨头以及Thingsqaure等众多初创企业都已经采用6Lowpan技术,研发相关芯片、协议栈、中间件以及应用系统,逐渐成为产业发展趋势。

有意思的是这是低功耗的网络,采用的是UDP。

MQTT

IoT-CoAP的一个分支中就用到了这个协议。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。

然而有意思的是MQTT采用的是使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。似乎从某种程度上来说这个会比CoAP的观察者好一点,因为是一对多。只是结果是推送功能的话,似乎还是是设备去获取状态。。

XMPP

与JSON同样流行的还有XML,所以XMPP也会受到JAVA程序员的大爱。。

XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。

UDP

就设备来说UDP会比HTTP好一点。。

UDP协议的全称是用户数据报协议 ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

uIP

似乎这个和CoAP的目的是类似的,然而就目前而言还是没有CoAP来得有针对性。

uIP 协议栈去掉了完整的 TCP/IP 中不常用的功能,简化了通讯流程,但保留了网络通信必须使用的协议,设计重点放在了 IP/TCP/ICMP/UDP/ARP 这些网络层和传输层协议上,保证了其代码的通用性和结构的稳定性。

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Engineer, Consultant, Writer, Designer

ThoughtWorks 技术专家

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 最新技术分享

标签