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

网络协议通俗易懂详解指南

目录

1. 什么是网络协议?

1.1 协议的本质

1.2 为什么需要协议?

1.3 协议分层的概念

2. TCP协议详解 - 可靠的信使 📦

2.1 TCP是什么?

2.2 TCP的核心特性

🔗 面向连接

🛡️ 可靠传输

📊 流量控制

2.3 TCP三次握手 - 建立连接

2.4 TCP四次挥手 - 断开连接

2.5 TCP数据格式

2.6 TCP实际应用

3. UDP协议详解 - 快速的信使 ⚡

3.1 UDP是什么?

3.2 UDP vs TCP对比

3.3 UDP数据格式

3.4 UDP实际应用

🎮 在线游戏

📹 视频直播

🎵 语音通话

📺 IPTV网络电视

4. HTTP/HTTPS协议 - 网页浏览的语言 🌐

4.1 HTTP是什么?

4.2 HTTP请求响应过程

📤 HTTP请求(客户端→服务器)

📥 HTTP响应(服务器→客户端)

4.3 HTTP状态码

2xx 成功状态 ✅

3xx 重定向状态 🔄

4xx 客户端错误 ❌

5xx 服务器错误 💥

4.4 HTTPS - 加密的HTTP 🔐

🔒 HTTPS工作过程

4.5 HTTP实际应用示例

🔍 搜索百度

📝 提交登录表单

5. Modbus TCP协议 - 工业设备的对话 🏭

5.1 Modbus是什么?

5.2 Modbus TCP特点

5.3 Modbus数据模型

5.4 Modbus TCP帧格式

5.5 Modbus功能码

📖 读取指令

✏️ 写入指令

5.6 Modbus TCP实际应用

🏭 工厂自动化场景

🏠 楼宇自动化应用

5.7 Modbus TCP编程示例

🐍 Python读取数据例子

6. MQTT协议 - 物联网的邮局 📮

6.1 MQTT是什么?

6.2 MQTT核心概念

🏢 代理服务器(Broker)

📚 主题(Topic)

📊 QoS服务质量

6.3 MQTT消息格式

6.4 MQTT工作流程

🔌 连接过程

📝 订阅主题

📤 发布消息

📥 接收消息

6.5 MQTT实际应用

🏠 智能家居系统

🚗 车联网应用

🏭 工业物联网

6.6 MQTT编程示例

🐍 Python订阅温度数据

📤 Arduino发布传感器数据

7. FTP协议 - 文件传输专家 📁

7.1 FTP是什么?

7.2 FTP工作模式

🎯 主动模式(Active Mode)

🚶‍♂️ 被动模式(Passive Mode)

7.3 FTP双连接机制

7.4 FTP命令详解

👤 身份验证命令

📂 目录操作命令

📁 文件操作命令

⚙️ 传输模式命令

7.5 FTP响应码

1xx 初步响应 🔄

2xx 成功响应 ✅

3xx 需要进一步信息 📝

4xx 暂时失败 ⚠️

5xx 永久失败 ❌

7.6 FTP实际应用

🌐 网站文件管理

📊 企业文件服务器

🔄 数据备份同步

7.7 FTP客户端工具

💻 图形界面工具

💻 命令行工具

7.8 FTP安全改进

🔐 FTPS(FTP over SSL/TLS)

🛡️ SFTP(SSH File Transfer Protocol)

8. DNS协议 - 网络世界的电话簿 📞

8.1 DNS是什么?

8.2 域名结构

8.3 域名分类

🌐 顶级域(TLD)分类

🏠 常见主机名

8.4 DNS服务器层次

🏠 本地DNS服务器

🌍 根域名服务器

🏢 顶级域名服务器

🏪 权威域名服务器

8.5 DNS查询过程

🔍 递归查询 vs 迭代查询

🔄 完整查询过程

8.6 DNS记录类型

📍 A记录(Address)

📍 AAAA记录(IPv6)

🏷️ CNAME记录(别名)

📮 MX记录(邮件交换)

📋 NS记录(名称服务器)

📝 TXT记录(文本信息)

🔄 PTR记录(反向解析)

8.7 DNS缓存机制

⏰ TTL(生存时间)

🗂️ 缓存层次

8.8 DNS实际应用

🏠 家庭网络DNS设置

🏢 企业DNS管理

🌐 CDN加速原理

8.9 DNS安全

🛡️ DNS劫持防护

🔐 DNSSEC协议

9. DHCP协议 - 自动地址分配员 🎫

9.1 DHCP是什么?

9.2 DHCP解决什么问题?

❌ 没有DHCP的痛苦

✅ 有了DHCP的便利

9.3 DHCP工作过程

🤝 四步握手过程

1️⃣ DHCP Discover(发现)

2️⃣ DHCP Offer(提供)

3️⃣ DHCP Request(请求)

4️⃣ DHCP ACK(确认)

9.4 DHCP地址池管理

🏊‍♂️ 地址池概念

📋 地址分配策略

9.5 DHCP租约管理

⏰ 租约生命周期

🔄 续约过程

9.6 DHCP配置选项

⚙️ 常用DHCP选项

9.7 DHCP实际应用

🏠 家庭路由器DHCP设置

🏢 企业DHCP部署

9.8 DHCP故障排除

🔍 常见DHCP问题

🛠️ DHCP诊断命令

10. 实际应用场景 🏗️

10.1 家庭网络场景

🏠 智能家居网络

🎮 游戏网络优化

10.2 企业网络场景

🏢 办公网络架构

🏭 工业自动化场景

10.3 物联网场景

🌾 智慧农业

🏥 医疗物联网

10.4 云计算场景

☁️ 微服务架构

🎮 在线游戏后端

10.5 安全场景应用

🛡️ 零信任网络架构

总结与学习建议 🎓

🎯 核心要点回顾

📚 深入学习路径

🔰 初学者阶段

🎯 进阶阶段

🚀 专家阶段

🛠️ 实践建议

🏠 家庭实验环境

📊 监控和分析工具

💻 编程实践

📖 推荐学习资源

📚 经典书籍

🎥 在线课程

🌐 技术网站

🎯 职业发展方向

🔧 网络工程师

💻 软件开发工程师

🔬 研究方向



1. 什么是网络协议?

1.1 协议的本质

网络协议就像人类的语言规则

🗣️ 人类对话

  • 中文对话:你好 → 你好
  • 英文对话:Hello → Hello
  • 日文对话:こんにちは → こんにちは

💻 计算机对话

  • HTTP协议:GET /index.html → 200 OK + 网页内容
  • TCP协议:SYN → SYN+ACK → ACK
  • SMTP协议:MAIL FROM → 250 OK

1.2 为什么需要协议?

生活中的例子

🏪 去超市买东西

1. 你:我要买苹果
2. 店员:苹果5元一斤,要几斤?
3. 你:要2斤
4. 店员:总共10元,谢谢!

这就是一套"购物协议"

💻 计算机访问网站

1. 浏览器:我要访问www.baidu.com
2. DNS服务器:百度的地址是220.181.38.148
3. 浏览器:向220.181.38.148请求首页
4. 百度服务器:这是首页内容

这就是HTTP协议

1.3 协议分层的概念

就像写信寄快递

📝 应用层:写信内容(HTTP、FTP、Email)
📮 传输层:装信封、写地址(TCP、UDP)
🗺️ 网络层:选择邮递路线(IP)
🚚 链路层:具体运输方式(以太网、WiFi)
🛤️ 物理层:道路基础设施(网线、光纤)

每一层都有自己的"语言规则"(协议)


2. TCP协议详解 - 可靠的信使 📦

2.1 TCP是什么?

TCP = Transmission Control Protocol(传输控制协议)

生活比喻:TCP就像顺丰快递

  • 保证送达:收不到会重发
  • 完整无损:检查包裹是否损坏
  • 按序到达:即使分多个包裹,也会按顺序送达
  • 签收确认:收到后要签字确认

2.2 TCP的核心特性

🔗 面向连接

就像打电话

📞 拨号(建立连接)
🗣️ 通话(数据传输)
📞 挂机(断开连接)

TCP连接过程

客户端                     服务器|                         ||--"我想连接你"-->        |  SYN|                         ||<--"好的,我也想连接"--  |  SYN+ACK|                         ||--"连接建立!"-->        |  ACK|                         |开始传输数据...
🛡️ 可靠传输

确认机制

发送方:我发了数据包1
接收方:收到数据包1,请发数据包2
发送方:我发了数据包2
接收方:收到数据包2,请发数据包3

重传机制

发送方:我发了数据包3
(等待确认...超时)
发送方:没收到确认,重新发送数据包3
接收方:收到数据包3,确认!
📊 流量控制

就像水龙头控制水流

接收方:我的缓冲区还能接收1000字节
发送方:好的,我只发1000字节
接收方:我处理完了,现在能接收2000字节
发送方:好的,我发2000字节

2.3 TCP三次握手 - 建立连接

生活比喻:两个人约会

小明                        小红|                          ||--"你在吗?能聊天吗?"-->  |  (SYN)|                          ||<--"在啊,我也想聊!"--    |  (SYN+ACK)|                          ||--"好的,开始聊吧!"-->    |  (ACK)|                          |开始愉快聊天...

技术过程

第一次握手:客户端 → 服务器
发送:SYN=1, seq=x
含义:"我想建立连接,我的初始序号是x"第二次握手:服务器 → 客户端  
发送:SYN=1, ACK=1, seq=y, ack=x+1
含义:"我也想连接,我的序号是y,确认你的x"第三次握手:客户端 → 服务器
发送:ACK=1, seq=x+1, ack=y+1  
含义:"确认建立连接,确认你的y"

为什么需要三次握手?

  • 🔄 确认双方都能收发消息
  • 🛡️ 防止过期的连接请求
  • 🔢 同步双方的序列号

2.4 TCP四次挥手 - 断开连接

生活比喻:电话通话结束

小明                        小红|                          ||--"我说完了,挂机吧"-->    |  (FIN)|                          ||<--"好的,我知道了"--      |  (ACK)|                          ||<--"我也说完了"--          |  (FIN)|                          ||--"好的,再见!"-->        |  (ACK)|                          |通话结束

技术过程

第一次挥手:客户端 → 服务器
FIN=1:我没有数据要发送了第二次挥手:服务器 → 客户端
ACK=1:我知道你要关闭了第三次挥手:服务器 → 客户端
FIN=1:我也没有数据发送了第四次挥手:客户端 → 服务器
ACK=1:好的,连接关闭

2.5 TCP数据格式

TCP数据包就像快递包裹

📦 TCP数据包结构:
┌─────────────┬─────────────┐
│   源端口     │   目的端口   │  ← 寄件人和收件人
├─────────────┴─────────────┤
│        序列号              │  ← 包裹编号
├───────────────────────────┤
│        确认号              │  ← 确认收到的编号
├─────────────┬─────────────┤
│   控制位     │   窗口大小   │  ← 包裹类型和容量
├─────────────┼─────────────┤
│   校验和     │   紧急指针   │  ← 安全检查
├─────────────┴─────────────┤
│          数据               │  ← 实际内容
└───────────────────────────┘

重要字段解释

  • 🏠 端口号:就像门牌号,区分不同的服务
  • 🔢 序列号:包裹的编号,保证顺序
  • 确认号:确认收到哪个编号的包裹
  • 🚩 控制位:包裹类型(SYN=建立连接,FIN=关闭连接)

2.6 TCP实际应用

TCP适用场景

  • 🌐 网页浏览:必须完整接收HTML内容
  • 📧 邮件发送:邮件内容不能丢失
  • 📁 文件下载:文件必须完整无误
  • 💬 即时聊天:消息要准确传达

TCP端口示例

80端口:HTTP网页服务
443端口:HTTPS加密网页
25端口:SMTP邮件发送
110端口:POP3邮件接收
21端口:FTP文件传输
22端口:SSH远程登录

3. UDP协议详解 - 快速的信使 ⚡

3.1 UDP是什么?

UDP = User Datagram Protocol(用户数据报协议)

生活比喻:UDP就像广播电台

  • 速度快:说了就播,不等反馈
  • 🚫 不保证送达:听不到就算了
  • 📻 一对多:一个电台,很多收音机
  • 🎵 实时性好:适合音乐、新闻直播

3.2 UDP vs TCP对比

快递服务对比

特性TCP(顺丰快递)UDP(广播电台)
🚚 可靠性✅ 保证送达❌ 不保证接收
速度🐌 相对较慢⚡ 非常快
📋 确认机制✅ 需要签收❌ 无需确认
🔗 连接✅ 需要建立连接❌ 无连接
💰 开销📈 较大📉 很小

3.3 UDP数据格式

UDP数据包像明信片

📮 UDP数据包结构:
┌─────────────┬─────────────┐
│   源端口     │   目的端口   │  ← 寄件人和收件人
├─────────────┼─────────────┤
│    长度      │    校验和    │  ← 明信片大小和防伪
├─────────────┴─────────────┤
│          数据               │  ← 明信片内容
└───────────────────────────┘

对比TCP

  • 📏 更简单:只有8字节头部(TCP有20字节)
  • 更快速:没有复杂的控制机制
  • 💧 更轻量:适合小数据传输

3.4 UDP实际应用

UDP适用场景

🎮 在线游戏
游戏客户端 → 游戏服务器
"我的角色移动到坐标(100,200)"如果这个包丢了:
✅ UDP:继续发送下一个位置更新
❌ TCP:等待确认,可能造成游戏卡顿
📹 视频直播
直播服务器 → 观众
发送视频帧:帧1、帧2、帧3...如果帧2丢失:
✅ UDP:继续播放帧3(画面可能卡一下)
❌ TCP:等待重传帧2(整个直播卡住)
🎵 语音通话
VoIP电话、微信语音
实时性要求高,偶尔丢一点声音可以接受
但是不能有延迟,否则对话就乱了
📺 IPTV网络电视
电视信号广播:
一个服务器 → 成千上万个用户
如果每个用户都要确认接收,服务器会崩溃

常用UDP端口

53端口:DNS域名解析
67/68端口:DHCP自动分配IP
123端口:NTP时间同步
161端口:SNMP网络管理
514端口:Syslog日志

4. HTTP/HTTPS协议 - 网页浏览的语言 🌐

4.1 HTTP是什么?

HTTP = HyperText Transfer Protocol(超文本传输协议)

生活比喻:HTTP就像餐厅点菜

🍽️ 在餐厅点菜:
1. 顾客:"服务员,我要一份宫保鸡丁"
2. 服务员:"好的,马上给您准备"
3. 厨师:制作宫保鸡丁
4. 服务员:"您的宫保鸡丁来了"🌐 HTTP请求网页:
1. 浏览器:"服务器,我要baidu.com的首页"
2. 服务器:"好的,正在准备"
3. 服务器:查找并准备网页内容
4. 服务器:"这是百度首页的HTML内容"

4.2 HTTP请求响应过程

📤 HTTP请求(客户端→服务器)

请求格式就像订餐单

GET /index.html HTTP/1.1          ← 请求行:要什么菜
Host: www.example.com             ← 请求头:哪家餐厅
User-Agent: Chrome/91.0           ← 客户信息
Accept: text/html                 ← 接受什么格式← 空行← 请求体(GET通常为空)

请求方法解释

  • 🔍 GET:我要看菜单(获取网页)
  • 📝 POST:我要下订单(提交表单)
  • 📤 PUT:我要上传新菜谱(上传文件)
  • 🗑️ DELETE:删除这道菜(删除资源)
📥 HTTP响应(服务器→客户端)

响应格式就像上菜

HTTP/1.1 200 OK                   ← 状态行:菜品状态
Date: Mon, 27 Jul 2024 12:28:53   ← 响应头:上菜时间
Server: Apache/2.4.29             ← 厨房信息
Content-Type: text/html           ← 菜品类型
Content-Length: 1234              ← 菜品分量← 空行
<html>                            ← 响应体:实际菜品
<head><title>网页标题</title></head>
<body><h1>欢迎光临!</h1></body>
</html>

4.3 HTTP状态码

状态码就像餐厅的服务状态

2xx 成功状态 ✅
  • 200 OK:菜上齐了,请慢用
  • 201 Created:您的订单已成功创建
  • 204 No Content:订单处理完成,但没有菜品返回
3xx 重定向状态 🔄
  • 301 Moved Permanently:这道菜搬到新菜单了
  • 302 Found:这道菜临时换地方了
  • 304 Not Modified:菜品没变化,用之前的就行
4xx 客户端错误 ❌
  • 400 Bad Request:您的订单有误,请重新填写
  • 401 Unauthorized:请先登录会员
  • 403 Forbidden:抱歉,这道菜您不能点
  • 404 Not Found:抱歉,没有这道菜
  • 408 Request Timeout:您点菜太慢了,请重新点
5xx 服务器错误 💥
  • 500 Internal Server Error:厨房出故障了
  • 502 Bad Gateway:传菜员出问题了
  • 503 Service Unavailable:餐厅太忙,暂停服务
  • 504 Gateway Timeout:厨房响应太慢

4.4 HTTPS - 加密的HTTP 🔐

HTTPS = HTTP + SSL/TLS(安全套接字层)

生活比喻:HTTPS就像保密餐厅

🔓 HTTP(普通餐厅):
- 点菜声音很大,隔壁桌都能听到
- 菜单是明文的,任何人都能看
- 服务员可能是冒充的🔐 HTTPS(保密餐厅):
- 点菜用暗号,只有你和服务员懂
- 菜单是加密的,外人看不懂
- 服务员有身份证明,防止冒充
🔒 HTTPS工作过程
1. 客户端:"我要用加密方式点菜"
2. 服务器:"这是我的身份证(数字证书)"
3. 客户端:验证身份证真假
4. 双方:协商加密方式,生成密钥
5. 开始加密通信...

如何识别HTTPS

  • 🔒 地址栏有小锁图标
  • ✅ 网址以https://开头
  • 🛡️ 浏览器显示"连接是安全的"

4.5 HTTP实际应用示例

🔍 搜索百度

完整过程

1. 你在地址栏输入:www.baidu.com
2. 浏览器发送请求:GET / HTTP/1.1Host: www.baidu.com3. 百度服务器响应:HTTP/1.1 200 OKContent-Type: text/html<html>百度首页内容...</html>4. 浏览器解析HTML并显示页面
📝 提交登录表单

登录过程

1. 你在登录框输入用户名和密码
2. 浏览器发送POST请求:POST /login HTTP/1.1Host: www.example.comContent-Type: application/x-www-form-urlencodedusername=zhangsan&password=1234563. 服务器验证账号密码:HTTP/1.1 302 FoundLocation: /dashboardSet-Cookie: sessionid=abc1234. 浏览器跳转到用户中心页面

5. Modbus TCP协议 - 工业设备的对话 🏭

5.1 Modbus是什么?

Modbus = 工业设备通信的标准语言

生活比喻:Modbus就像工厂车间的对讲机

🏭 工厂场景:
车间主管:"1号机器,报告你的温度"
1号机器:"主管,我的温度是45度"
车间主管:"2号机器,把速度调到80%"
2号机器:"收到,速度已调整到80%"🔌 Modbus场景:
PLC:"温度传感器01,读取当前温度"
温度传感器:"PLC,当前温度是45.5°C"
PLC:"变频器02,设置频率为50Hz"  
变频器:"收到,频率已设置为50Hz"

5.2 Modbus TCP特点

为什么叫Modbus TCP?

  • 🏭 Modbus:工业通信协议的名字
  • 🌐 TCP:运行在TCP/IP网络上
  • 📡 结合:工业协议 + 以太网 = 现代工业通信

主要特点

  • 🤖 主从结构:一个主站,多个从站
  • 📊 数据透明:直接读写设备数据
  • 🔧 简单易用:指令简单,容易实现
  • 🌐 基于TCP:可靠传输,适合以太网

5.3 Modbus数据模型

Modbus就像设备的"档案柜"

📂 Modbus数据区域:
├── 📋 线圈(Coils)01-99999
│   ├── 开关状态:开/关
│   └── 例子:电机启停、阀门开关
│
├── 📝 离散输入(Discrete Inputs)10001-19999  
│   ├── 只读开关状态
│   └── 例子:按钮状态、限位开关
│
├── 📊 保持寄存器(Holding Registers)40001-49999
│   ├── 可读写数值
│   └── 例子:设定值、参数配置
│
└── 📈 输入寄存器(Input Registers)30001-39999├── 只读数值└── 例子:温度、压力、流量

生活比喻

🏠 智能家居控制面板:
📱 线圈区:控制开关(灯光、空调)
👁️ 离散输入:状态指示(门窗开关)
⚙️ 保持寄存器:设置参数(空调温度)
📊 输入寄存器:传感器数据(室内温度)

5.4 Modbus TCP帧格式

Modbus TCP数据包结构

📦 Modbus TCP数据包:
┌─────────────┬─────────────┬─────────────┐
│    MBAP头    │   功能码    │    数据      │
│   (7字节)    │   (1字节)   │   (变长)     │
└─────────────┴─────────────┴─────────────┘📋 MBAP头详细:
┌──────┬──────┬──────┬───────┬──────┬──────┐
│事务ID│协议ID│长度  │单元ID │功能码│数据  │
│2字节 │2字节 │2字节 │1字节  │1字节 │变长  │
└──────┴──────┴──────┴───────┴──────┴──────┘

字段解释

  • 🎫 事务ID:请求编号,用于匹配请求和响应
  • 🏷️ 协议ID:固定为0,表示Modbus协议
  • 📏 长度:后续字节数
  • 🏠 单元ID:设备地址(1-247)
  • 🔧 功能码:要执行的操作类型
  • 📊 数据:具体的操作数据

5.5 Modbus功能码

功能码就像不同的"指令类型"

📖 读取指令
01 读线圈状态
"读取1号设备的开关状态"
请求:01 01 00 00 00 10
响应:01 01 02 FF 0002 读离散输入  
"读取传感器的触发状态"
请求:01 02 00 00 00 08
响应:01 02 01 5503 读保持寄存器
"读取设备的设定值"
请求:01 03 00 00 00 02
响应:01 03 04 00 64 00 3204 读输入寄存器
"读取传感器测量值"
请求:01 04 00 00 00 02  
响应:01 04 04 01 2C 00 FA
✏️ 写入指令
05 写单个线圈
"控制1号开关打开"
请求:01 05 00 00 FF 00
响应:01 05 00 00 FF 0006 写单个寄存器
"设置温度为25度"
请求:01 06 00 01 00 19
响应:01 06 00 01 00 1915 写多个线圈
"批量控制多个开关"
请求:01 0F 00 00 00 08 01 55
响应:01 0F 00 00 00 0816 写多个寄存器
"批量设置多个参数"
请求:01 10 00 01 00 02 04 00 0A 00 14
响应:01 10 00 01 00 02

5.6 Modbus TCP实际应用

🏭 工厂自动化场景

系统架构

💻 上位机(SCADA)↕ Modbus TCP
🔄 PLC控制器↕ Modbus RTU
📊 现场设备群
├── 温度传感器
├── 压力传感器  
├── 变频器
└── 阀门控制器

实际通信例子

🌡️ 读取温度传感器数据:
SCADA → PLC: 读取30001寄存器
PLC → 温度传感器: 获取温度值
温度传感器 → PLC: 当前温度25.5°C
PLC → SCADA: 返回温度值255(25.5°C×10)🎛️ 控制变频器频率:
SCADA → PLC: 设置40001寄存器为500(50.0Hz)
PLC → 变频器: 设置频率50Hz
变频器 → PLC: 确认设置完成
PLC → SCADA: 设置成功确认
🏠 楼宇自动化应用

智能建筑系统

🖥️ 楼宇管理系统↕ Ethernet/TCP
🏢 各楼层控制器
├── 空调控制器
├── 照明控制器
├── 电梯控制器
└── 消防控制器控制例子:
- 读取各房间温度
- 控制空调开关和温度
- 调节照明亮度
- 监控电梯状态

5.7 Modbus TCP编程示例

🐍 Python读取数据例子
from pymodbus.client.sync import ModbusTcpClient# 连接Modbus TCP设备
client = ModbusTcpClient('192.168.1.100', port=502)# 读取保持寄存器(温度数据)
result = client.read_holding_registers(0, 1, unit=1)
if result.isError():print("读取失败")
else:temperature = result.registers[0] / 10.0print(f"当前温度: {temperature}°C")# 控制线圈(开关设备)
result = client.write_coil(0, True, unit=1)
if result.isError():print("控制失败")
else:print("设备已启动")client.close()

代码解释

  • 🔌 连接设备:指定IP地址和端口502
  • 📊 读取数据:从地址0读取1个寄存器
  • 🎛️ 控制设备:向地址0的线圈写入True(开启)
  • 错误处理:检查操作是否成功

6. MQTT协议 - 物联网的邮局 📮

6.1 MQTT是什么?

MQTT = Message Queuing Telemetry Transport(消息队列遥测传输)

生活比喻:MQTT就像微信群聊

💬 微信群聊模式:
1. 张三在"同学群"发消息:"今天天气真好"
2. 群里所有人都能收到这条消息
3. 后加入群的李四也能看到历史消息(可选)📡 MQTT发布订阅模式:
1. 温度传感器向"room/temperature"主题发布:"25.5"
2. 订阅这个主题的所有设备都收到温度数据
3. 新加入的设备也能收到最新的温度值

6.2 MQTT核心概念

🏢 代理服务器(Broker)

就像微信服务器

📱 设备A ←→ 📡 MQTT Broker ←→ 📱 设备B
📱 设备C ←→     (代理服务器)   ←→ 📱 设备D

代理服务器的作用

  • 📮 消息转发:接收并转发消息
  • 👥 客户端管理:管理连接的设备
  • 🗂️ 主题管理:管理发布订阅关系
  • 💾 消息存储:临时存储离线消息
📚 主题(Topic)

主题就像微信群的名称

🏠 智能家居主题结构:
home/
├── living_room/
│   ├── temperature    (客厅温度)
│   ├── humidity      (客厅湿度)
│   └── li

相关文章:

  • 应用层协议:HTTPS
  • 物联网技术发展与应用研究分析
  • 【AUTOSAR COM CAN】CanTSyn模块技术解析
  • ubuntu显示器未知
  • MobX与响应式编程实践
  • MySQL:分区的基本使用
  • 外贸网站服务器选择Siteground还是Hostinger,哪个更好?
  • 【C/C++】STL实现版本为什么比手写版本高?
  • 在Mathematica中使用Newton-Raphson迭代绘制一个花脸
  • 跳转指令四维全解:从【call/jmp 】的时空法则到内存迷宫导航术
  • 跳跃游戏 dp还是线段树优化
  • 在ubuntu等linux系统上申请https证书
  • OneNet + openssl + MTLL
  • GoC指令测试卷 A
  • 十一、【ESP32开发全栈指南: TCP通信服务端】
  • 零基础入门PCB设计 强化篇 第六章(实验——USB拓展坞PCB绘制)
  • Python爬虫-爬取各省份各年份高考分数线数据,进行数据分析
  • 物联网智慧医院建设方案(PPT)
  • 服务器新建用户无法使用conda
  • [HCTF 2018]admin 1
  • 北京网站建设降龙/东莞网络推广营销公司
  • 汉阴做网站/国外域名注册网站
  • 北京免费发布企业信息网站/广告推广软文案例
  • 河北 政府网站建设管理/给公司做网站要多少钱
  • 网站建设实习小结/手机端搜索引擎排名
  • 成都网站建设价格/搜索引擎优化教材答案