MQTT协议整理1、界说 MQTT是一个轻量级的接纳Broker的基于TCP(默认端标语1833)的发布/订阅式异步遥信消息队列传输应用层协议。操持初始目标是为大量盘算本领有限、工作在低带宽、不可靠的长途传感器和控制器装备通讯,非常恰当物联网通讯。IBM公司1999年提出的。 2、服务质量 Qo0:“最多一次”,消息发布完全依靠底层 TCP/IP 网络,分发的消息大概丢失或重复,不会收到发布确认相应。 比方,这个品级可用于环境传感器数据,单次的数据丢失不要紧,由于不久后还会有第二次发送 Qo1:“至少一次”,确保消息可以到达,但消息大概会重复; Qo2:“只有一次”,确保消息只收到一次。publisher缓存了message和msgID,而服务器缓存了msgID,两方都做记载以是可以包管消息不重复,但是由于记载是须要删除的,这个删除流程同样多了一倍 比方,这个品级可用在一个计费体系中,这里如果消息重复或丢失会导致不准确的收费。 3、14种报文范例(版本3)--分为五大类 第一类: Connect:客户端毗连服务器 Connack:服务器确认毗连哀求(保持长毗连,还要定时发心跳包与服务保持毗连) 第二类: Publish:客户端/服务器发布消息(message:Payload) Puback:服务器发布确认(QoS 1) Pubrec:服务器发布收到(QoS 2 第一步 确认通报乐成) Pubrel:客户端发布开释(QoS 2 第二步 告诉服务器删除msgID) Pubcomp:服务器发布完成(QoS 2 第三步 告诉客户端删除msg) 第三类: Subscribe:客户端订阅主题(Topic) Suback:服务器订阅确认 Unsubscribe:客户端取消订阅 Unsuback:服务器取消订阅确认 第四类: Pingreq:客户端心跳哀求(1. 在没有任何别的控制报文从客户端发给服务的时,告知服务器客户端还活着;2. 哀求服务端发送相应确认它还活着;3. 利用网络以确认网络毗连没有断开) Pingresp:服务器心跳相应(表现服务端还活着) 第五类: Disconnect:客户端断开毗连 4、MQTT控制报文 固定报头格式如下: 5、Connect return code MQTT的CONNACK消息中对返回码(return code)作了如下的界说: 0x00 Connection Accepted 0x01 Connection Refused: unacceptable protocol version 0x02 Connection Refused: identifier rejected 0x03 Connection Refused: server unavailable 0x04 Connection Refused: bad user name or password 0x05 Connection Refused: not authorized 6-255 Reserved for future use ! |