简单介绍物联网MQTT协议

本文介绍了MQTT协议,一种基于发布/订阅模型的物联网通信协议,对比了请求/响应模型,强调了QoS等级在消息可靠性和服务质量上的作用。
摘要由CSDN通过智能技术生成

​ 在学习mqtt应用层协议之前,我们先来介绍一下发布/订阅模型以及请求/响应模型两种模型。

  • 请求/响应模型是网络应用系统中最常见的模型。在这种模型中,一个客户端(如一个Web浏览器)向服务器发送一个请求,服务器处理这个请求并返回一个响应。这个过程是同步的,意味着客户端需要等待服务器的响应。这种模型的优点是简单和易于理解,但在处理大量并发请求时可能会导致性能问题。

  • 发布/订阅模型。在这种模型中,有一个或多个发布者(通常是一个事件或消息源)和多个订阅者(对这些事件或消息感兴趣的观察者)。粗浅的理解,发布者将一个消息发布到一个中介上,然后中介存储这个消息,订阅者如果订阅了这个消息,那么中介再将这条消息发给订阅者。这个过程是异步的,意味着观察者可以在发布者的事件或消息处理过程中进行其他操作。这种模型的优点是能够处理大量并发事件或消息,但需要谨慎处理避免消息丢失或处理错误。
    pub/sub 最重要的方面是消息的发布者与接收者(订阅者)的解耦。这种解耦有几个维度:
    空间解耦:发布者和订阅者不需要相互了解(比如不需要交换彼此的 IP 地址和端口)。
    时间解耦:发布者和订阅者不需要同时运行。
    同步解耦:两个组件的操作在发布或接收时不需要中断。
    并且每个订阅者可以通过过滤不同的主题,内容,类型,来获取到自己想要的数据。

一,MQTT标准物联网协议

1,简单介绍

MQTT(Message Queuing Telemetry Transport),是一种基于发布/订阅(publish/subscribe)模型的“轻量级”通讯协议,该协议构建于TCP/IP协议上。MQTT 最大优点在于,轻量化。

  • MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
    (1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题中的消息的内容payload。
    (2)payload,消息的内容,是指订阅者具体要使用的内容。不同的客户端在连接中介Broker 之后,每个客户端都可以发布和订阅主题。
2,MQTT协议组成

​ MQTT 协议由三个部分组成,分别是固定头,可变头以及消息体(有效负载)。
在这里插入图片描述

  • 固定头(两个字节长);固定头存在于所有的MQTT数据包中,表示数据包类型及数据包的分组类标识。其结构如下:

在这里插入图片描述

  1. 标志位:包括DUP,QoS等级,Retain发布保留标识。

    DUP:发布消息的副本。用来在保证消息的可靠传输,如果设置为1,则在下面的变长中增加Messageld,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。

    QoS:发布消息的服务质量等级,占用两个位00,01,10,11,他有三个等级0,1,2,其中11,也就是3,是被保留的。

    RETAIN:发布保留标识,表示服务器要保留这次推送的信息(设置为1),默认设置为0,即订阅者订阅后,就把这消息发给它,之后删除这个消息。

  2. MQTT控制报文的消息类型:

    名称值(十进制)流方向描述
    Reserved0不可用保留位
    CONNECT1客户端到服务器客户端请求连接到服务器
    CONNACK2服务器到客户端连接确认
    PUBLISH(常用)3双向发布消息
    PUBACK4双向发布确认
    PUBREC5双向发布收到(保证第1部分到达)
    PUBREL6双向发布释放(保证第2部分到达)
    PUBCOMP7双向发布完成(保证第3部分到达)
    SUBSCRIBE8客户端到服务器客户端请求订阅
    SUBACK9服务器到客户端订阅确认
    UNSUBSCRIBE10客户端到服务器请求取消订阅
    UNSUBACK11服务器到客户端取消订阅确认
    PINGREQ12客户端到服务器PING请求
    PINGRESP13服务器到客户端PING应答
    DISCONNECT14客户端到服务器中断连接
    Reserved15不可用保留位
  3. 剩余长度:若最高位为1,那么表示长度不够,使用剩余长度,若为0,那么固定头只有一个字节大小,没有剩余长度。

  • 可变头:

    一般是用来存储包标识符,即Packet Identifier。

QoS等级(消息发布服务质量):MQTT含有三种QoS消息发布服务质量等级,分别是QoS0,QoS1,QoS2。

QoS0等级:“至多发送一次”,“可能会发生消息的丢失”,即应用层协议MQTT完全依赖底部的TCP/IP协议族(传输层以及网络层协议),sender尽力的去发送一条数据,收到了就受到了,若信息丢失了。

QoS1等级:“至少接收到一次”,“可能会发生消息的丢失或重复”,用来确保消息一定会到达目的地,因此会有一个应答机制,sender向receiver发送一个消息,若发送失败,那么sender会一直发送消息直至receiver至少收到一次,因为多次的重传,所以可能会导致接收到重复的信息。

QoS2等级:“只有一次”sender会给receiver不停的发送消息直至receiver收到消息,并且会保证receiver仅收到一次消息,相比于前两个QoS等级,他没有消息重复和丢失的问题存在。

QoS是用来描述的是客户端和中介broker之间的信息质量等级,而不是发布者和订阅者之间的,这点需要注意,不要混淆。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值