当前位置: 首页 > news >正文

马良行网站3d模型预览怎么做的常见的线下推广渠道有哪些

马良行网站3d模型预览怎么做的,常见的线下推广渠道有哪些,万网域名注册,做片视频在线观看网站目录 MQTT协议概述 协议架构与工作原理 消息格式与类型 QoS服务质量详解 主题与订阅机制 连接与会话管理 安全机制 协议版本对比 实际应用场景 实现示例与最佳实践 ​​ MQTT协议概述 什么是MQTT MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅…

目录

MQTT协议概述

协议架构与工作原理

消息格式与类型

QoS服务质量详解

主题与订阅机制

连接与会话管理

安全机制

协议版本对比

实际应用场景

实现示例与最佳实践

​​

MQTT协议概述

什么是MQTT

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻量级消息传输协议,专为低带宽、高延迟或不可靠网络环境下的物联网设备通信而设计。

历史背景

  • 1999年:由IBM的Andy Stanford-Clark和Arcom的Arlen Nipper开发
  • 2010年:IBM将MQTT协议免费发布
  • 2014年:成为OASIS国际标准
  • 2019年:MQTT 5.0版本发布,增强了功能和性能

核心特性

1. 轻量级设计
协议开销小:
- 最小消息头:2字节
- 连接开销:最少6字节
- 协议简单,易于实现
2. 发布/订阅模式
解耦通信:
- 发布者和订阅者无需直接连接
- 支持一对多、多对多通信
- 动态主题订阅
3. QoS服务质量保证
三种QoS级别:
- QoS 0:最多一次传递
- QoS 1:至少一次传递  
- QoS 2:恰好一次传递
4. 持久连接与会话
连接管理:
- TCP长连接
- 会话状态保持
- 自动重连机制

适用场景

理想应用环境
  • 低带宽网络:2G/3G移动网络
  • 不稳定连接:间歇性网络中断
  • 资源受限设备:MCU、传感器节点
  • 大规模部署:数万至数百万设备
典型应用领域
物联网设备通信:
├── 智能家居:温控、照明、安防
├── 工业监控:传感器数据采集
├── 车联网:车辆状态、导航数据
├── 智慧城市:环境监测、交通管理
├── 移动应用:即时消息、位置服务
└── 远程监控:设备状态、告警通知

协议架构与工作原理

网络架构模型

MQTT网络拓扑
┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│   Publisher │    │   Publisher │    │   Publisher │
│  (发布者)    │    │  (发布者)    │    │  (发布者)    │
└──────┬──────┘    └──────┬──────┘    └──────┬──────┘│                  │                  ││                  │                  │└──────────────────┼──────────────────┘│┌──────▼──────┐│    MQTT     ││    Broker   ││   (代理)     │└──────┬──────┘│┌──────────────────┼──────────────────┐│                  │                  ││                  │                  │
┌──────▼──────┐    ┌──────▼──────┐    ┌──────▼──────┐
│ Subscriber  │    │ Subscriber  │    │ Subscriber  │
│  (订阅者)    │    │  (订阅者)    │    │  (订阅者)    │
└─────────────┘    └─────────────┘    └─────────────┘

核心组件详解

1. MQTT Broker(代理服务器)

职责和功能:

  • 消息路由:根据主题将消息分发给订阅者
  • 连接管理:维护客户端连接状态
  • 会话管理:保存客户端会话信息
  • 权限控制:认证和授权管理
  • 消息持久化:保存离线消息和retained消息

常见Broker实现:

开源Broker:
├── Mosquitto:Eclipse基金会,C语言实现
├── EMQ X:Erlang实现,高性能分布式
├── VerneMQ:Erlang实现,集群支持
├── HiveMQ:Java实现,企业级
└── ActiveMQ:Apache项目,Java实现云服务Broker:
├── AWS IoT Core
├── Azure IoT Hub  
├── Google Cloud IoT Core
├── 阿里云IoT平台
└── 华为云IoT平台
2. MQTT Client(客户端)

类型分类:

  • Publisher(发布者):发送消息到特定主题
  • Subscriber(订阅者):接收特定主题的消息
  • Publisher+Subscriber:既发布又订阅消息

客户端状态:

连接状态转换:
Disconnected → Connecting → Connected → Disconnecting → Disconnected↑                                          ↓└────────────── Reconnecting ←──────────────┘

通信流程详解

1. 连接建立流程
客户端                                 Broker│                                    ││──── CONNECT ────────────────────→  │  1. 发送连接请求│                                    ││  ←──── CONNACK ──────────────────  │  2. 返回连接确认│                                    ││──── SUBSCRIBE ──────────────────→  │  3. 订阅主题(可选)│                                    ││  ←──── SUBACK ───────────────────  │  4. 订阅确认│                                    │
2. 消息发布流程
发布者                Broker                订阅者│                    │                    ││── PUBLISH ───────→ │                    │  1. 发布消息│                    │                    ││                    │ ── PUBLISH ─────→  │  2. 转发给订阅者│                    │                    ││  ←─ PUBACK ─────── │                    │  3. 发布确认(QoS1)│                    │                    ││                    │  ←─ PUBACK ─────── │  4. 接收确认(QoS1)
3. 心跳保活机制
客户端                                 Broker│                                    ││──── PINGREQ ────────────────────→  │  1. 发送心跳请求│                                    ││  ←──── PINGRESP ─────────────────  │  2. 返回心跳响应│                                    ││ ◄─── Keep Alive Timer ────────►   │  3. 保活定时器

消息格式与类型

MQTT消息结构

固定头部(Fixed Header)

所有MQTT消息都包含2-5字节的固定头部:

Byte 1: 消息类型和标志位
┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│  Bit 7  │  Bit 6  │  Bit 5  │  Bit 4  │  Bit 3  │  Bit 2  │  Bit 1  │  Bit 0  │
├─────────┴─────────┴─────────┴─────────┼─────────┼─────────┼─────────┼─────────┤
│        消息类型 (4 bits)                │   DUP   │   QoS   │   QoS   │ RETAIN  │
│                                       │         │  (Bit1) │ (Bit0)  │         │
└───────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┘Byte 2-5: 剩余长度(变长编码)

消息类型定义:

消息类型方向描述
0Reserved-保留
1CONNECTClient→Broker连接请求
2CONNACKBroker→Client连接确认
3PUBLISH双向发布消息
4PUBACK双向发布确认(QoS1)
5PUBREC双向发布接收(QoS2)
6PUBREL双向发布释放(QoS2)
7PUBCOMP双向发布完成(QoS2)
8SUBSCRIBEClient→Broker订阅请求
9SUBACKBroker→Client订阅确认
10UNSUBSCRIBEClient→Broker取消订阅
11UNSUBACKBroker→Client取消订阅确认
12PINGREQClient→Broker心跳请求
13PINGRESPBroker→Client心跳响应
14DISCONNECTClient→Broker断开连接
15Reserved-保留
可变头部(Variable Header)

根据消息类型包含不同的字段:

CONNECT消息可变头部:

┌──────────────────────────────────────┐
│ Protocol Name Length (2 bytes)       │ 
├──────────────────────────────────────┤
│ Protocol Name ("MQTT")               │
├──────────────────────────────────────┤
│ Protocol Level (1 byte)              │
├──────────────────────────────────────┤
│ Connect Flags (1 byte)               │
├──────────────────────────────────────┤
│ Keep Alive (2 bytes)                 │
└──────────────────────────────────────┘

PUBLISH消息可变头部:

┌──────────────────────────────────────┐
│ Topic Name Length (2 bytes)          │
├──────────────────────────────────────┤
│ Topic Name (variable)                │
├──────────────────────────────────────┤
│ Packet Identifier (2 bytes)          │ ← 仅QoS > 0时包含
└──────────────────────────────────────┘
载荷(Payload)

包含消息的实际数据,格式取决于消息类型:

CONNECT载荷:

┌──────────────────────────────────────┐
│ Client Identifier                    │
├──────────────────────────────────────┤
│ Will Topic (if Will Flag = 1)        │
├──────────────────────────────────────┤
│ Will Message (if Will Flag = 1)      │
├──────────────────────────────────────┤
│ Username (if Username Flag = 1)      │
├──────────────────────────────────────┤
│ Password (if Password Flag = 1)      │
└──────────────────────────────────────┘

核心消息类型详解

1. CONNECT - 连接请求
{"messageType": "CONNECT","flags": {"username": true,"password": true,"willRetain": false,"willQoS": 1,"willFlag": true,"cleanSession": true},"keepAlive": 60,"payload": {"clientId": "device001","willTopic": "device/001/status","willMessage": "offline","username": "user001","password": "pass123"}
}

连接标志位详解:

  • Clean Session (Bit 1):是否清除会话状态
  • Will Flag (Bit 2):是否设置遗嘱消息
  • Will QoS (Bits 3,4):遗嘱消息的QoS级别
  • Will Retain (Bit 5):遗嘱消息是否保留
  • Password Flag (Bit 6):是否包含密码
  • Username Flag (Bit 7):是否包含用户名
2. PUBLISH - 发布消息
{"messageType": "PUBLISH","flags": {"dup": false,"qos": 1,"retain": false},"topic": "sensors/temperature","packetId": 12345,"payload": {"temperature": 23.5,"humidity": 65.2,"timestamp": "2024-12-07T10:30:00Z"}
}
3. SUBSCRIBE - 订阅请求
{"messageType": "SUBSCRIBE","packetId": 12346,"subscriptions": [{"topic": "sensors/+/temperature","qos": 1},{"topic": "alerts/#","qos": 2}]
}

QoS服务质量详解

QoS级别概述

MQTT提供三种服务质量级别,在可靠性和性能之间提供平衡:

QoS 0 - 最多一次传递(At most once)

特点:

  • 消息最多传递一次,可能丢失
  • 不进行确认,无重传机制
  • 性能最高,开销最小
  • 也称为"即发即忘"(Fire and Forget)

消息流程:

发布者                   Broker                   订阅者│                       │                       ││──── PUBLISH ─────────→│                       ││                       │──── PUBLISH ─────────→││                       │                       │└─── 无确认 ────────────┘                       │└─── 无确认 ─────────────┘

适用场景:

  • 网络稳定,可容忍消息丢失
  • 高频率数据(如传感器读数)
  • 性能要求高的场景
QoS 1 - 至少一次传递(At least once)

特点:

  • 确保消息至少传递一次
  • 可能出现消息重复
  • 需要确认机制,有重传
  • 性能和可靠性的平衡

消息流程:

发布者                   Broker                   订阅者│                       │                       ││──── PUBLISH ─────────→│                       ││                       │──── PUBLISH ─────────→││  ←─── PUBACK ─────────│                       ││                       │  ←─── PUBACK ─────────││        
http://www.dtcms.com/a/502243.html

相关文章:

  • 万全孔家庄做网站网站开发实验报告可行性分析
  • 外销网站怎么做的东莞公司网站建设小知识
  • 网站开发一个模板费用网站被谷歌降权
  • 注册一个网站要多少费用深圳网络科技公司排名
  • 有什么做兼职的好的网站网站建设seo优化
  • 专业团队优质网站建设方案登陆页面模板
  • 职业技能培训网站中国建设银行网站余额查询
  • 网站开发主要内容福州网站建设发布
  • 张家界建设网站公司网站推广活动策划
  • 想学做网站可以在哪学手机建站程序源码
  • 阿里巴巴做网站分录企业邮箱域名是什么意思
  • 怎么在自己的电脑做网站自学做包装设计的步骤
  • 企业网站开发需求分析网站在线咨询代码
  • 提供网站推广公司电话万能浏览器下载
  • 移动端网站开发流程微商城网站建设多少钱
  • 职业中学网站建设ghost hexo WordPress
  • 珠宝营销型网站wordpress 免插件 cdn
  • 怎么查询搜索关键词seo优化啥意思
  • 广州商务网站建设电话wordpress 极简 文字
  • 流行网站开发工具城建中心官网查询证书
  • 精美网站制作公司网络最好的运营商
  • 深圳制作网站主页网页制作和网页制作技术
  • 网站制作的动画怎么做的企业工商信息查询
  • 中药材天地网做中药零售网站给公司做网站数据分析
  • 关于加强网站建设和管理的通知聊城企业网站建设公司
  • 网站建设的常用技术在深圳怎么注册一家公司
  • 北京网站建设及优化怎样让公司网站更吸引人
  • 用dw如何做网站网站制作公司石家庄
  • 备案信息查询手机网站怎么优化
  • 盘锦做网站专家我要自学网app下载