物联网架构和五种通信协议

首页 » 物联网 » 物联网架构和五种通信协议

ThingsKit 物联网平台

物联网架构和五种通信协议

物联网架构和五种通信协议

消息触达能力是物联网(internet ofthings, IOT)的重要支撑,物联网的很多技术都源于移动互联网。刘猫将讲解移动互联网消息推送技术在物联网中的应用和演进。

一、物联网架构及关键技术

从发展来看,无线接入是物联网设备的核心技术,身份设备管理和消息推送技术是物联网云的核心技术。从场景体验来看,除了前者,还包括手机的前端开发技术。

IP互联架构是物联网事实上的标准(物联网TCP/IP层的关键技术将另行阐述,敬请关注)。本文提到的消息推送技术是一种基于TCP/IP协议的应用层协议技术。

我们再进一步抽象一下基于IP架构的物联网构成,如下图所示(忽略互联网、路由等基础技术):

物联网架构和五种通信协议

可以看出,核心组件是物联网设备、网关和云。物联网设备可以分为两类。一种是它们天然支持TCP/IP,可以直接接入物联网,比如wifi、GPRS/3G/4G(当然还有即将到来的5G)等设备;另一种是未能支持IP协议,需要网关(协议转换)接入物联网,如Zigbee、蓝牙等设备。对于蓝牙设备来说,手机实际上是一个网关。

手机通过自身蓝牙与周边蓝牙设备通信,消息通过手机wifi或3G/4G模块与云端服务器通信。

物联网架构和五种通信协议

  • 从场景来看,物联网最终服务于人类,手机是人类体验最直接的入口。所以上图中,手机的组件是可以单独添加的,和一般的网关是可以区分的。由此可见,物联网的核心组成部分是:设备端-网关-云-手机。
  • 从应用层开发技术来看,物联网应用基于TCP/IP架构。在屏蔽底层网关协议转换的基础上,物联网应用的组件为:设备端-云-手机。

好了,有了上面的介绍,我们就从物联网应用的角度来分析设备、云、手机的直接消息推送技术。包括云与设备的双向通信技术,手机与云的双向通信技术。

二、移动互联网通信模式

互联网有B/S和C/S两种通信模式,在移动互联网领域,APP以客户端的角色,通过C/S模式与服务器server进行通信;微信是一个超级APP,它允许用户通过内置的浏览器进行H5编程,以获得控制硬件设备的能力,所以微信硬件平台的通信模块是B/S模式。

移动互联网B/S技术和传统互联网没什么区别。微信内置浏览器支持H5,因此可以获得良好的平台扩展性。最近重点关注基于微信硬件平台的物联网,就围绕B/S模式的消息推送技术来说说它的演进。

HTTP是B/S的基础,HTTP有GET和POST两种方式。

物联网架构和五种通信协议

三、消息推送技术演进

1.HTTP单向通信

使用浏览器HTML文本标记语言,即浏览器通过HTTP协议向服务器发送请求(请求的内容包括URL,也就是我们常说的URL),服务器通过HTTP协议将URL对应的HTML内容发送回浏览器作为响应。

1)手机:微信由于内置浏览器,自然支持前端页面。

2)云端到移动端的推送:云端可以使用JSP/PHP等技术开发设计前端网页和简单逻辑。

3)设备端:设备端上线或访问服务器参数等内容时,需要模拟HTTP协议(C语言)向服务器发出请求,请求的格式一般不使用HTML,而是使用更简单的XML或JSON协议格式。

4)云到设备推送:云使用HttpServlet(即使用http协议的Servlet)响应设备的HTTP请求,以XML或JSON格式回复消息。

5)缺点:这种通信方式的特点是一个请求一个响应,总是需要客户端先向服务器发送请求,服务器才会响应。服务器从不主动向客户端发送消息,客户端发出请求后,服务器只回复一次。这种HTTP单向通信模式在互联网领域有很大的作用,就是服务器可以无状态,大大简化了服务器的服务流程,提高了效率。但是在物联网领域,我们要求的是双向通信能力。服务器应该能够主动向设备或移动电话发送消息。

物联网架构和五种通信协议

在这种模式下,如何才能做到双向沟通?唯一的办法就是客户端不断地发出请求(或者周期性地),服务器不断地回复。这种模式的缺点很明显:

一是网络负载重,服务器每次响应后都会关闭连接,所以每次通信都要重新握手。HTTP协议的头内容长度不小。

二是实时性差。一般设备端会定期轮询服务器看有没有新消息,轮询的方式并不能得到很好的实时性能。

第三,浏览器每次发送请求都是用所有的HTML内容来响应,消息长度太大。在这种情况下,会发现浏览器页面不断刷新。

2.Ajax轮询

Ajax技术是一种浏览器支持的JavaScript技术。可以部分改善用户体验技术,让用户在不注意浏览器页面刷新的情况下,向服务器发送请求并得到响应。其原理是:

1)微信浏览器发送URL页面请求,服务器响应HTML页面内容。

2)HTML页面使用js调用XMLHttpRequest向服务器发送异步通信请求。

3)服务器将XML格式数据响应给浏览器页面。

4)HTML页面使用DOM模型动态刷新页面元素。

物联网架构和五种通信协议

Ajax技术是微信硬件平台框架中推荐的页面交互技术,但其本质仍然遵守HTTP单向通信的规则,只是页面交互时不需要刷新整个页面。其双向通信的实时性问题仍未解决。

3.Websocket

Websocket是HTML5支持的新协议,可以真正支持浏览器和服务器之间的双向通信。Tomcat7及以上也已经支持Websocket API。

1)为了兼容浏览器HTTP协议,Websocket规定在第一次请求时仍要发送符合HTTP协议规范的头,但其Connection字段的值为Upgrade,Upgrade字段加上socket的值,即通知服务器要建立的通信是Websocket双向通信。如果服务器接受,它将返回101给客户端进行协议交换。

2)下一次通信将不再使用HTTP作为传输协议,而是使用Websocket规定的数据格式,分为控制帧和数据帧。控制帧是心跳帧(ping),服务器响应pong,有结束帧;一帧是实数据格式,它的格式头只有6个字节(2个字节头和4个字节掩码),后面是实数据(掩码转换后)。它比HTTP格式头的长度小得多。

3)客户端与服务器之间的连接一直保持到关闭,在当前周期内发送一个2字节3字节的ping帧。

可以看出,Websocket相对于ajax有了很大的提升。既省去了经常需要连接的握手,又简化了协议的格式。最重要的是保证了实时性,因为双方是真正的全双工通信。

物联网架构和五种通信协议

微信浏览器客户端支持Websocket,服务器使用Tomcat7以上的WebsocketServlet类,设备端使用C语言按照Websocket协议模拟通信。

我们在使用设备端模拟Websocket通信协议时,一般会先看协议,然后使用HttpWatch等工具来捕捉数据包,捕捉到的头是GET ws://ip:port/path。如果C语言也是如此,我们将报告400个错误请求。因为C语言在与socket建立通信时已经使用了IP和port,所以C语言发送的第一个包的头是GET/path,前面不能加ws://ip:port/。

4.MQTT

以上分析将移动互联网的技术应用于物联网,它有一个具体的特点,就是连接建立时会传输URL地址。这两个角色是客户机和服务器。这种架构一般被称为RESTful架构(此外,还有面向SOAP应用的web服务架构)。

RESTful架构在互联网中的应用越来越广泛,但物联网除了互联互通之外还有其独特之处,如其终端设备资源有限、应用场景低功耗、网络连接环境差(时断时续)等等。用C语言模拟使用RESTful架构(比如Websocket)会让终端的负载更重,服务器发送给终端设备的消息可能会因为断线而收不到。

物联网架构和五种通信协议

MQTT是IBM退出物联网的轻量级协议,基于TCP/IP层协议。它是物联网的重要组成部分,可能会成为物联网事实上的标准。具有QoS,可以缓冲消息,通过重传机制保证终端设备接收消息;其报文格式极其简化,最短为两个字节;它提供订阅和发布模式来有效地推送消息。

MQTT有三个角色,包括服务器代理、订阅者和发布者。

1)启动服务器代理。

2)订阅者从服务器代理订阅相关主题。

3)发布者将主题信息发布到服务器代理。

4)服务器代理将消息推送给订阅该主题的所有订阅者。

MQTT用C/C++语言和JAVA包实现。需要明确的是,MQTT更适合设备终端与手机APP socket之间的通信,但不能支持浏览器使用。如果要支持微信浏览器的应用,需要添加一个类似WebsocketServlet的技术来支持浏览器。此时MQTT被JS接口封装,调用完成消息推送。

5.CoAP

CoAP是受限应用协议的同义词。它基于UDP协议,即只需要在设备终端实现UDP协议的底层,而不需要实现更复杂的TCP协议。这种约定比较少。我没有用C语言模拟过,就不展开了。

物联网架构和五种通信协议

本文章来源于互联网,如有侵权,请联系删除!

相关推荐: java扶贫平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署

java扶贫平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 java扶贫平台计算机毕业设计MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技…