系列文章目录
前言
其实都懒得介绍了,大家搜资料,一搜一大把,我总结下要点。一、MQTT特点
- 发布/订阅模式
- 优点:轻巧、 开放、 简单、 规范, 易于实现。
- MQTT协议运行于TCP之上,属于应用层协议。
- 三个消息质量等级。
二、客户端与服务端
信息交互:
三、MQTT消息格式
报文格式:
三部分—固定报头+可变包头+有效载荷
1.固定报文头
MQTT固定报文头最少有两个字节,第一字节包含消息类型和QoS级别等标志位。
第二字节开始是剩余长度字段,该长度是后面的可变报文头加消息负载的总长度,该字段最多允许四个字节。
2.可变报文头
可变报文头主要包含协议名、协议版本、连接标志、心跳间隔时间、连接返回码、主题名等.
3.有效负荷
当MQTT发送的消息类型是CONNECT(连接)、PUBLISH(发布)、SUBSCRIBE(订阅)、SUBACK(订阅确认)、UNSUBSCRIBE(取消订阅)时,则会带有负荷。
有效负载的具体格式:
ClientID_Len(2byte)+CilenID+ UserName_Len(2byte)+UserName+
PassWord_Len(2byte)+PassWord
CilenID:
UserName:
PassWord:
还不是太懂的话,看第二章代码,一眼就明白了。
四、 消息质量等级
# 五、 必须要用的三元组(以后详细操作)• QoS 0:最多分发一次。消息的传递完全依赖底层的TCP/IP网络,协议里没有定义应答和重试,消息要么只会到达服务端一次,要么根本没有到达。
• QoS 1:至少分发一次。服务器的消息接收由PUBACK消息进行确认,如果通信链路或发送设备异常,或者指定时间内没有收到确认消息,发送端会重发这条在消息头中设置了DUP位的消息。
• QoS 2:只分发一次。这是最高级别的消息传递,消息丢失和重复都是不可接受的,使用这个服务质量等级会有额外的开销。
总结
如果看不懂,就把这几张都看一遍。
然后再结合我的操作方式,你跟着操作一遍。
记住也要看下一章代码部分(注释很详细的)。
(手把手写MQTT协议)