物联网的通信协议TCP/IP、UDP、HTTP、MQTT、CoAP

物联网核心组成就是物联设备、网关和云端。物联设备分为两类,一类是其自身天然支持TCP/IP而能直接接入物联网,如wifi、GPRS/3G/4G(当然,还有即将到来的5G)等设备;另一类是其未能支持IP协议而需要网关(协议转换)来接入物联网,如Zigbee、蓝牙等设备。对于蓝牙设备而言,手机其实是一个网关。

互联网有B/S和C/S两种通信模式。在移动互联网领域,APP是以C/S的方式以client的角色跟服务器server进行通信;

HTTP==超文本传输协议。主要应用于 web 浏览器。它运行在一个客户/服务器模型上,服务器响应任何的客户端需求。因 web 网页可能会加载很多内容,因此该协议有必要建立在 TCP/IP 堆栈之上。

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

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

云端对设备端推送:云端使用HttpServlet(即使用http协议的servlet)对设备的HTTP请求进行响应,回复XML或者JSON格式的消息。

Websocket是HTML5支持的一种新的协议,它能够真正支持浏览器和服务器之间进行双向通信。Tomcat7及以上版本也已经支持Websocket API。

  • 1)为了能够兼容浏览器HTTP协议,Websocket规定在第一次发起请求时依然要发出符合HTTP协议规范的Header,但其Connection域的值是Upgrade,并增加Upgrade域,值是socket,即告知服务器,即将建立的通信是Websocket双向通信。服务器如果接受,会返回101给客户端进行协议切换。
  • 2)接下来的通信将不再以HTTP作为传输协议,而是使用Websocket规定的数据格式进行通信,其分为控制帧和数据帧。控制帧是发出心跳帧(ping),而服务器响应pong,还有结束帧;数据帧就是真实数据格式,其格式头只有6个字节(2个字节头和4个字节的掩码),后面就是真实的数据(经过掩码转换)。比HTTP格式头的长度要小多了。
  • 3)客户端和服务器之间是一直保持连接,直到close,当前期间要发发2个字节的3字节的ping帧。

 

TCP/IPãUDPãHTTPãMQTTãCoAPè¿äºç§ç©èç½åè®®æ¦è¿°

MQTT:MQ 遥测传输(MQ Telemetry Transport,简称MQTT)是一个面向 IoT 应用程序的轻量级连接协议。它基于 TCP/IP 网络连接使用发布/订阅方法来传输数据。设计思想是开放、简单、轻量、易于实现,这也使它成为 IoT 开发的理想平台。MQTT 包括代理和客户端两个部分。客户端可以访问或修改设备的数据,代理是持有并传递数据。

MQTT 使用发布/订阅消息模式。客户端可以在一个话题(Topic)下面发布特定参数数据给代理。另一个对此话题感兴趣的客户可以订阅该话题,并定期收到更新的消息。

MQTT 提供一个有质量的服务,从 IoT 角度来看,其本质是消息的优先级。在任何情况下一个重要的消息可以传输到目的地,因此有了服务质量(QoS),虽然传输速度会变慢但是交付有了保证。一个动态的数据源速度优先于效率,然而分配一个较低的 QoS,更像是一个“fire-and-forget”事件,如 UDP。

在一个主题下,MQTT 可以保留最后一个已收到的消息,前提是它发送给订阅者订阅链已启动。这允许订阅者在一个存在的客户端和代理网络中异步连接。这也为检查冗余及数据丢失提供了一个工具。

MQTT 客户端有一个属性称之为 Last Will a和 Testament。该属性允许客户端在异常中断的情况下发送通知给代理。这个快速的反馈有利于无线传感器网络自动再生,同时检测并修复缺失节点和异常值,最终确保无线传感器网络中数据流完美循环。

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

  • 1)启动服务器代理。
  • 2)订阅者向服务器代理订阅相关主题。
  • 3)发布者向服务器代理发布主题信息。
  • 4)服务器代理想所有订阅该主题的订阅者推送消息。

 

TCP/IPãUDPãHTTPãMQTTãCoAPè¿äºç§ç©èç½åè®®æ¦è¿°

CoAP 是一个基于 REST 模型的网络传输协议。主要用于轻量级 M2M 通信。由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的 HTTP 协议应用在物联网上就显得过于庞大而不适用,CoAP 应运而生。

就用户可见性而言,CoAP 模拟了 HTTP 协议,并从这个角度来看,读数传感器数据本质上是像做一个 HTTP 请求。

CoAP 更有趣的功能之一是能够发现网络中的节点。这对于低功耗无线传感器网络的自治和自我修复设计非常有用。关于无线传感器网络的可扩展性问题,可以使用 CoAP 协议来发现节点常规的冗余。

CoAP 是建立在 UDP 栈上,这是与 HTTP 或 MQTT 相比最主要的区别。它可以更加快速和更好的资源优化,而非资源密集型。

然而,在 CoAP 协议下 QoS 因素保持不变情况下,CoAP 相比 HTTP/MQTT 更加不可靠。但是 4 字节的头文件对于连续流系统如环境监测传感器网络是一个不错的选择。

TCP/IPãUDPãHTTPãMQTTãCoAPè¿äºç§ç©èç½åè®®æ¦è¿°

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值