欢迎来到天天文库
浏览记录
ID:28109851
大小:180.50 KB
页数:10页
时间:2018-12-08
《物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、物联网应用层协议选择和分析--MQTT、CoAP、HTTP、XMPP、SoAP MQTT协议 MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)最早是IBM开发的一个即时通讯协议,MQTT协议是为大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的一种协议。 MQTT协议的优势是可以支持所有平台,它几乎可以把所有的联网物品和互联网连接起来。 它具有以下主要的几项特性: 1、使用发布/订阅消息模式,提供一对多的消息发布和应用程序之间的解耦; 2、消息传输不需要知道负载内容; 3、使用TCP
2、/IP提供网络连接; 4、有三种消息发布的服务质量: QoS0:“最多一次”,消息发布完全依赖底层TCP/IP网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。 QoS1:“至少一次”,确保消息可以到达,但消息可能会重复。 QoS2:“只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。 5、小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量; 6、使用LastWill和Testament特性通知有关各方客
3、户端异常中断的机制; 在MQTT协议中,一个MQTT数据包由:固定头(Fixedheader)、可变头(Variableheader)、消息体(payload)三部分构成。MQTT的传输格式非常精小,最小的数据包只有2个bit,且无应用消息头。 下图是MQTT为可靠传递消息的三种消息发布服务质量 发布/订阅模型允许MQTT客户端以一对一、一对多和多对一方式进行通讯。 下图是MQTT的发布/订阅消息模式 CoAP协议 CoAP是受限制的应用协议(ConstrainedApplicationProtocol)的代名词。由于目前物联网中的很多设备都是资源
4、受限型的,所以只有少量的内存空间和有限的计算能力,传统的HTTP协议在物联网应用中就会显得过于庞大而不适用。因此,IETF的CoRE工作组提出了一种基于REST架构、传输层为UDP、网络层为6LowPAN(面向低功耗无线局域网的IPv6)的CoAP协议。 CoAP采用与HTTP协议相同的请求响应工作模式。CoAP协议共有4中不同的消息类型。 CON——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。NON——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。ACK——应答消息,接受到CON消息的响应。RST——复位消息,当接收者接受到的
5、消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。 CoAP消息格式使用简单的二进制格式,最小为4个字节。 一个消息=固定长度的头部header+可选个数的option+负载payload。Payload的长度根据数据报长度来计算。 主要是一对一的协议 举个例子: 比如某个设备需要从服务器端查询当前温度信息。 a.请求消息(CON):GET/temperature,请求内容会被包在CON消息里面 b.响应消息(ACK):2.05Content“22.5C”,响应内容会被放在ACK消息里面 CoAP与MQTT的区别
6、 MQTT和CoAP都是行之有效的物联网协议,但两者还是有很大区别的,比如MQTT协议是基于TCP,而CoAP协议是基于UDP。从应用方向来分析,主要区别有以下几点: 1、MQTT协议不支持带有类型或者其它帮助Clients理解的标签信息,也就是说所有MQTTClients必须要知道消息格式。而CoAP协议则相反,因为CoAP内置发现支持和内容协商,这样便能允许设备相互窥测以找到数据交换的方式。 2、MQTT是长连接而CoAP是无连接。MQTTClients与Broker之间保持TCP长连接,这种情形在NAT环境中也不会产生问题。如果在NAT环境下使用CoAP的
7、话,那就需要采取一些NAT穿透性手段。 3、MQTT是多个客户端通过中央代理进行消息传递的多对多协议。它主要通过让客户端发布消息、代理决定消息路由和复制来解耦消费者和生产者。MQTT就是相当于消息传递的实时通讯总线。CoAP基本上就是一个在Server和Client之间传递状态信息的单对单协议。 HTTP协议 http的全称是HyperTextTransferProtocol,超文本传输协议,这个协议的提出就是为了提供和接收HTML界面,通过这个协议在互联网上面传出web的界面信息。 HTTP协议的两个过程,Request和Respons
此文档下载收益归作者所有