MQTT--学习

简介

  • MQTT(Message Queuing Telemetry Tranport)中文称消息队列遥测传输协议,IBM公司为了一个通信卫星连接管道的项目研发的,是一种订阅/发布模式的“轻量级”通信协议,可以为远程设备提供稳定可靠的信息传输。

  • 常见的通信协议
    在这里插入图片描述

  • TCP/IP参考模型可以分为四层:应用层、传输层、网络层、链路层。TCP和UDP位于传输层,应用层常见的协议有HTTP、FTP、SSH等。MQTT协议运行于TCP之上,属于应用层协议,因此只要是支持TCP/IP协议栈的地方,都可以使用MQTT。

  • MQTT协议中的三个角色

    发布方:发布消息的客户端

    服务器(代理):

    1. 接受来自客户的网络连接
    2. 接受客户发布的应用信息
    3. 处理来自客户端的订阅和退订请求
    4. 向订阅的客户转发应用程序消息

    订阅方:订阅消息主题和接收消息的客户端

在这里插入图片描述

MQTT应用

MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

1、物联网M2M通信,物联网大数据采集

2、Android消息推送,WEB消息推送

3、移动即时消息,例如Facebook Messenger

4、智能硬件、智能家具、智能电器

5、车联网通信,电动车站桩采集

6、智慧城市、远程医疗、远程教育

7、电力、石油与能源等行业市场

MQTT特点

  • 实现简单
  • 轻量、占用带宽低
  • 可传输任意类型的数据
  • 可保持的会话(session)
  • 基于 TCP 协议的应用层协议;
  • 采用 C/S 架构;
  • 使用订阅/发布模式,将消息的发送方和接受方解耦;
  • 提供 3 种消息的 QoS(Quality of Service): 至多一次,最少一次,只有一次;
  • 收发消息都是异步的,发送方不需要等待接收方应答。

MQTT服务器TCP占用端口

客户端连接的是1883端口
在这里插入图片描述

MQTT客户端

1、功能:

  • 发布其他客户端可能会订阅的信息;
  • 订阅其它客户端发布的消息;
  • 退订或删除应用程序的消息;
  • 断开与服务器连接。

2、库:

  • emqtt项目组: https://github.com/emqtt
  • Paho C 库:http://www.eclipse.org/paho/files/mqttdoc/MQTTAsync/html
  • mqtt.org: https://github.com/mqtt/mqtt.github.io/wiki/libraries

MQTT协议中的术语

  • 主题(topic):消息的类型,订阅者订阅后,就会收到该主题的消息内容。
  • 消息体(payload):消息的内容,是指订阅者具体要使用的内容。
  • 订阅:订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。
  • 会话:每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
  • 主题筛选器:一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。

MQTT协议报文结构

固定报头|可变报头|消息体
  • 固定头(Fixed header):存在于所有MQTT数据包中,表示数据包类型及数据包的分组类标识。

    (1)位表示
    在这里插入图片描述
    (2)数据类型
    在这里插入图片描述

  • 可变头(Variable header):存在于部分MQTT数据包中,数据包类型决定了可变头是否存在及其具体内容。

  • 消息体(Payload):存在于部分MQTT数据包中,表示客户端收到的具体内容。

      (1)CONNECT:消息体内容主要是:客户端的ClientID、订阅的Topic、Message以及用户名
     和密码。
     (2)SUBSCRIBE:消息体内容是一系列的要订阅的主题以及QoS。
     
     (3)SUBACK:消息体内容是服务器对于SUBSCRIBE所申请的主题及QoS进行确认和回复。
     
     (4)UNSUBSCRIBE:消息体内容是要订阅的主题。
    

MQTT协议中的动作

  • Connect:等待与服务器建立连接
  • Disconnect:等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话
  • Subscribe:等待完成订阅
  • UnSubscribe:等待服务器取消客户端的一个或多个topics订阅
  • Publish:MQTT客户端发送消息请求,发送完成后返回应用程序线程
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值