一、先看下相关国外的专业数据对四大协议的比较:

Protocol                                    CoAP                         XMPP                                                  RESTful HTTP                                                                 MQTT

Transport UDP TCP TCP TCP
Messaging Request/Response Publish/Subscribe Request/Response Request/Response Publish/Subscribe Request/Response
2G, 3G, 4G Suitability (1000s nodes) Excellent Excellent Excellent Excellent
LLN Suitability (1000s nodes) Excellent Fair Fair Fair
Compute Resources 10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash
Success Storied Utility Field Area Networks Remote management of consumer white goods Smart Energy Profile 2 (premise energy management/home services) Extending enterprise messaging into IoT application

XML的解析对于嵌入多设备来说是比较痛苦的 ,所以在嵌入设备上做开发的时候,最好不要选择基于XML的协议。

         二、四大协议的基本介绍

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

物联网协议MQTT

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议

物联网协议CoAP

CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在最近几年的时间中,专家们预测会有更多的设备相互连接,而这些设备的数量将远超人类的数量。在这种大背景下,物联网和M2M技术应运而生。虽然对人而言,连接入互联网显得方便容易,但是对于那些微型设备而言接入互联网非常困难。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常的小巧,最小的数据包仅为4字节。

物联网协议RESTful HTTP

REST 指的是一组 架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合 云计算之类的环境。客户端可以缓存数据以改进性能

   三、从现有的移动端(Android)消息推送方案中,也可以看出MQTT协议和XMPP协议的优缺点

方案1、 使用GCM服务(Google Cloud Messaging)  
简介:Google推出的云消息服务,即第二代的G2DM。  
优点:Google提供的服务、原生、简单,无需实现和部署服务端。  
缺点:Android版本限制(必须大于2.2版本),该服务在国内不够稳定、需要用户绑定Google帐号,受限于Google。

方案2、 使用XMPP协议(Openfire + Spark + Smack)  
简介:基于XML协议的通讯协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。  
优点:协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn。  
缺点:协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高。

方案3、 使用MQTT协议(更多信息见:  http://mqtt.org/ )  
简介:轻量级的、基于代理的“发布/订阅”模式的消息传输协议。  
优点:协议简洁、小巧、可扩展性强、省流量、省电,目前已经应用到企业领域(参考:  http://mqtt.org/software ),且已有C++版的服务端组件rsmb。  
缺点:不够成熟、实现较复杂、服务端组件rsmb不开源,部署硬件成本较高。

方案4、 使用HTTP轮循方式  
简介:定时向HTTP服务端接口(Web Service API)获取最新消息。  
优点:实现简单、可控性强,部署硬件成本低。  
缺点:实时性差。

对各个方案的优缺点的研究和对比,推荐使用MQTT协议的方案进行实现,主要原因是: MQTT最快速,也最省流量(固定头长度仅为2字节),且极易扩展,适合二次开发 。

总结来说:

如果我们对上面的结果进行一次PK,我想最后的结果就是MQTT vs CoAP。HTTP对于嵌入式设备来说太重了,也不灵活,XMPP就更不用说了,与MQTT还有一比的便是CoAP——一个还在草稿阶段的协议。

转载于:https://www.cnblogs.com/jhj117/p/5521083.html

转:XMPP协议、MQTT协议、HTTP协议、CoAP协议的基本比较相关推荐

  1. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍

    CoAP协议学习笔记可点此查看. 1 前言 在之前的学习中,没有过多关注加密.但实际部分厂家的IoT平台(阿里云.OneNET)已经启用了相关安全处理,有必要深入学习下. 在 CoAP 协议 RFC7 ...

  2. 互联网协议 — MQTT 消息队列遥测传输协议

    目录 文章目录 目录 MQTT MQTT 的设计原则 MQTT 的实现原理 MQTT 的关键术语 MQTT 的方法 MQTT 报文结构 Linux MQTT Server Android MQTT C ...

  3. CoAP 协议解析说明(转)

    CoAP 协议全面分析 HTTP与COAP 请求与响应示例 HTTP请求(文本格式) POST https://getman.cn/echo HTTP/1.1 User-Agent: Fiddler ...

  4. 物联网平台 源码 智慧农业物联网平台 ,支持mqtt,h ttp,coap协议 java+postgresql,支持集群

    物联网平台 源码 智慧农业物联网平台 ,支持mqtt,h ttp,coap协议 java+postgresql,支持集群. 支持萤石云摄像头接入,云台控制,支持nbiot,lora物联网平台,5g物联 ...

  5. 物联网基础之了解CCP协议,COAP协议,MTQQ协议等

    首先介绍下背景.最近开始研究物联网的套件.公司选中了阿里物联网套件,所以博主就开始投入到漫长的开发文档中.由于博主并非嵌入式开发者,所以一些名字没有听过,这对文档的阅读造成了不少的困扰,所以在此记录一 ...

  6. 物联网通信之Coap 协议

    物联网通信之Coap 协议 Coap 简介 名为受限制的应用协议,是UDP上的应用层协议.适用于小内存,低处理和低存储能力的设备.传输内容小巧精简,对于较大的数据可分块传输.客户端可以发送观察者请求, ...

  7. 干货 | CoAP协议例析

    点击上方"中兴开发者社区",关注我们 每天读一篇一线开发者原创好文 在物联网领域中,MQTT和CoAP是最主要的两个应用协议.MQTT(Message Queuing Teleme ...

  8. Thingsboard 物联网平台 CoAP 协议介绍

    可复制:121202538 中文社区:http://thingsboard.org.cn TB的MQTT设备协议 TB官网: https://thingsboard.io/ TB GitHub: ht ...

  9. 一个用来学习CoAP协议的小例子

    1 CoAP简介 CoAP 是受限制应用协议的简称,是物联网应用层协议之一.物联网应用层协议主要还有HTTP和MQTT,这三种协议有各自不同的应用场景.其中HTTP和MQTT使用TCP作为传输层协议, ...

最新文章

  1. Chapter 2 Open Book——29
  2. matlab 画 矩阵点,在MATLAB中绘制矩阵中点之间的线
  3. Computational methods for analysis of single molecule sequencing data
  4. 五道java小题,补更四道java小题
  5. 深入分析 iBATIS 框架之系统架构与映射原理--转载
  6. select html value属性,HtmlSelect.DataValueField 属性 (System.Web.UI.HtmlControls) | Microsoft Docs...
  7. android 自定义view实现拖动放大缩小_自定义itemClickView
  8. led显示屏服务器怎么设置,led显示屏怎么改字幕 led显示屏改字幕方法
  9. Linux的sort命令
  10. Linux 基础知识系列第一篇
  11. 一:学习Linux前准备工作
  12. UML---StarUML破解与使用
  13. sublime3安装常用插件
  14. 从零开始学Android自定义View之动画系列——属性动画(2)
  15. 吉林大学计算机数据中心排名,高校考研学霸人数排行:吉林大学5000排名第13
  16. 科普 | 天才在左,疯子在右
  17. 彷徨 | HDFS核心设计思想图
  18. Java实现Zoho Mail 发送邮件,使用hutool工具类。
  19. L1 distace、L2 distance,L1 norm、L2 norm,L1、L2范数
  20. 2023年天津医科大学药学考研考情与难度、参考书及上岸前辈经验

热门文章

  1. pytorch迁移学习--模型建立的代码实现
  2. pytorch dropout代码解读
  3. 【matlab】元胞数组(使用celldisp显示元胞数组)
  4. php 删除最后一个空数组,php删除空数组
  5. if else if else语句格式_if-else代码优化的八种方案
  6. 常见面试算法:树回归、树剪枝
  7. dbentry mysql_DbEntry.Net(Lephone Framework) Access ORM:安装和简单使用
  8. axure小程序模板_公众号和小程序模板消息
  9. a大于10小于15C语言,计算机基础复习模拟试卷
  10. python数据分析实例_Python数据分析及可视化实例之爬虫源码(05)