MQTT协议基础资料

MQTT(Message Queuing Telemetry Transport)
是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。
它工作在TCP协议之上,与HTTP同属于应用层协议,默认端口号是1883,通常情况下使用TCP长连接进行通信。

MQTT是一个C/S架构的发布/订阅模式的消息传输协议。
服务器端称为broker,broker不负责具体业务,只负责转发客户端的消息,将客户端发布的数据,转发到所有订阅了该主题的客户端。

MQTT的应用模式是多个客户端之间的通信,某个客户端订阅了主题后,它将会收到所有客户端发布到该主题下面的数据。
这个“主题”和HTTP协议中的URI类似,是一串标识符。
在MQTT的协议框架下,实际处理业务数据的服务器本质上也是一个MQTT客户端。
业务服务器只需要实现一个MQTT客户端,而broker已经有大量成熟的软件可以直接使用,大大降低了传统服务器软件的开发难度。因此使得MQTT在物联网场景广泛应用。


MQTT客户端一般工作流程:
1.建立TCP连接(1883端口);
2.发送
连接请求(附带客户端ID、用户名、密码等信息,进行登陆和认证),等待响应;
3.订阅一个或多个主题(还可以使用通配符);
4.发布一个或多个主题(附带有效载荷数据);
5.空闲时发起心跳请求,保有活连接;
6.接收已订阅的主题数据;
7.发送断开请求;
8.断开TCP连接;


MQTT协议使用2进制数据模式,数据包格式为:

固定包头可变包头有效载荷
最小2字节,最大5字节可选长度可选长度

固定包头包含控制类型和包长度:

Bit76543210
BYTE1MQTT控制报文的类型用于指定控制报文类型的标志位
BYTE2

剩余长度

BYTE3剩余长度(可选,当BYTE2大于0x80时有效)
BYTE4剩余长度(可选,当BYTE3大于0x80时有效)
BYTE5剩余长度(可选,当BYTE4大于0x80时有效)

可变包头和有效载荷在此不详述,详见参考资料。

 

参考资料:https://mcxiaoke.gitbooks.io/mqtt-cn/content/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值