首页 > 试题广场 >

试描述MQTT、CoAP、HTTP三种协议的区别

[问答题]
试描述MQTT、CoAP、HTTP三种协议的区别
答:
MQTT:MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。    

CoAP:CoAP是一种计算机协议,应用于物联网,基于REST架构。由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。 IETF的CoRE工作组提出了一种基于REST架构的CoAP协议。CoAP是6LowPAN协议栈中的应用层协议。

HTTP:http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。
发表于 2021-11-18 15:35:39 回复(0)
答:
MQTT:MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。    

CoAP:CoAP是一种计算机协议,应用于物联网,基于REST架构。由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的HTTP协议应用在物联网上就显得过于庞大而不适用。 IETF的CoRE工作组提出了一种基于REST架构的CoAP协议。CoAP是6LowPAN协议栈中的应用层协议。

HTTP:http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。
发表于 2020-08-26 22:56:47 回复(0)
答案从这几个层面进行比较与描述: 
1. 协议栈: 
   MQTT: TCP 长链接, CoAP: UDP 低功耗短连接, HTTP: TCP  
2.  请求方式
  MQTT: 发布订阅, CoAP: request/ response, HTTP:  request/ response
3. 通讯消息格式:

 MQTT:

CoAP: 
HTTP: 

4. 使用特点与使用场景

MQTT是多个客户端通过一个******传递消息的多对多协议。它通过让客户端发布消息、***决定消息路由和复制来解耦生产者和消费者。虽然MQTT持久性有一些支持,但它是最好的实时通讯总线。

CoAP基本上是一个在Client和Server之间传递状态信息的单对单协议。虽然它支持观察资源,但是CoAP最适合状态转移模型,而不是单纯的基于事件。
HTTP是适合使用在性能好一些的终端上,相对以上一些比较重,对设备要求相对高一些。不适合M2M的场景。


发表于 2018-08-08 06:33:28 回复(0)
MQTT:底层使用TCP连接,基于发布者和订阅者模组,可以大大解耦发布者和订阅者。另外两个客户端之间不能直接通讯,必须有一个broken,订阅者可以只订阅关心的内容,MQTT 通过心跳机制可以维持长时间实时在线。
CoAP:底层基于UDP,基于观察着和订阅者的模型,客户端和服务端需要调用观察模式,方可知道客户端的实时状态变化,由于底层是基于UDP,所以无法知道实时连接情况,但是可以启用心跳机制判断对端是否存在。
HTTP:底层使用TCP连接,是无状态连接,主要用于文本通讯,不用于做长时间实时连接
发表于 2020-10-18 14:45:56 回复(0)