MQTT协议原理

2.1 MQTT协议实现方式
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者
Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消
息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
1Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容
payload);
2payload,可以理解为消息的内容,是指订阅者具体要使用的内容。
2.2 网络传输与应用消息
MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字
节流的双向传输。
当应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连。
2.3 MQTT客户端一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:
1)发布其他客户端可能会订阅的信息;
2)订阅其它客户端发布的消息;
3)退订或删除应用程序的消息;
4)断开与服务器连接。
2.4 MQTT服务器端
MQTT服务器以称为"消息代理"Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者
之间,它可以:
1)接受来自客户的网络连接;
2)接受客户发布的应用信息;
3)处理来自客户端的订阅和退订请求;
4)向订阅的客户转发应用程序消息。
2.5 发布/订阅、主题、会话
MQTT 是基于 发布(Publish)/订阅(Subscribe) 模式来进行通信及数据交换的,与 HTTP 请求(Request)/(Response) 的模式有本质的不同。
订阅者(Subscriber) 会向 消息服务器(Broker) 订阅一个 主题(Topic) 。成功订阅后,消息服务器会将该主题 下的消息转发给所有的订阅者。
主题(Topic) ‘/’ 为分隔符区分不同的层级。包含通配符 ‘+’ ‘#’ 的主题又称为 主题过滤器(Topic Filters); 不 含通配符的称为 主题名(Topic Names) 例如:
发布者(Publisher) 只能向主题名发布消息,订阅者(Subscriber) 则可以通过订阅主题过滤器’ 来通配多个主题名称。
 
'+': 表示通配一个层级,例如a/+,匹配a/x, a/y
'#': 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d
注: ‘+’ 通配一个层级,’#’ 通配多个层级(必须在末尾)。
会话(Session
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间, 也可能在客户端和服务器之间跨越多个连续的网络连接。
2.6 MQTT协议中的方法
MQTT协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存
在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。主要方法有:
1CONNECT:客户端连接到服务器
2CONNACK:连接确认
3PUBLISH:发布消息
4PUBACK:发布确认
5PUBREC:发布的消息已接收
6PUBREL:发布的消息已释放
7PUBCOMP:发布完成
8SUBSCRIBE:订阅请求
9SUBACK:订阅确认
10UNSUBSCRIBE:取消订阅
11UNSUBACK:取消订阅确认
12PINGREQ:客户端发送心跳
13PINGRESP:服务端心跳响应
14DISCONNECT:断开连接
15AUTH:认证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值