个人理解图示:
1.MQTT协议实现方式
实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者、代理、订阅者,其中消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者也可以是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
- 主题:可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
- 负载:可以理解为消息内容,是指的订阅者具体收到的数据。
2.网络传输与应用消息
- MQTT通过 TCP/IP 构建底层网络传输,它将建立客户端到服务器的连接,提供了两者之间的有序、无损、基于字节流的双向传输。
- 当消息通过MQTT服务器发送时,MQTT会把相关的服务质量与主题相关联。
3.MQTT客户端
使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以
- 发布消息给其它相关的客户端。
- 订阅以请求接受相关的消息。
- 取消订阅以移除接受消息的请求。
- 从服务端断开连接
4. 服务器
MQTT服务器以称为"消息代理"(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以:
- 接受来自客户端的网络连接。
- 接受客户端发布的应用消息。
- 处理客户端的订阅和取消订阅请求。
- 转发应用消息给符合条件的已订阅客户端。
5. MQTT协议中的订阅、主题、会话
5.1 订阅(Subscription)
订阅包含主题筛选器(Topic Filter)和服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅,每一个会话中的每个订阅都有一个不同的主题筛选器。
5.2 会话(Session)
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
5.3 主题名(Topic Name)
连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。
5.4 主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
5.5 负载(Payload)
消息订阅者所具体接收的内容。
6. MQTT协议中的方法
MQTT协议中定义了一些方法(也被称为动作),主要方法有:
- Connect 与服务器建立连接。
- Disconnect 与服务器断开 TCP/IP 连接。
- Subscribe 订阅
- UnSubscribe 取消订阅
- Publish MQTT客户端发送消息