網絡協議通俗易懂詳解指南

目錄

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83442.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

量子加速器切入 AI 底層架構!能源焦慮時代,ORCA 正在改寫數據中心的計算邏輯

內容來源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨浪味仙 行業動向&#xff1a;2000字丨5分鐘閱讀 人工智能的飛速發展&#xff0c;令計算需求呈現爆炸式增長&#xff0c;也催生出專為 AI 設計的新型計算基礎設施形態——AI…

< 買了個麻煩 (二) 618 京東云--輕量服務器 > “可以為您申請全額退訂呢。“ 工單記錄:可以“全額退款“

事情進展是這樣的&#xff1a; 海外接聽 一分鐘 1-2 元&#xff0c;具體多少要問聯通。 這幾天接電話&#xff0c;有點兒心煩&#xff0c;看見來自 010-86310548 以為是 ICP 備案&#xff0c;結果接起來全是 VPS &#xff08;輕量應用服務器&#xff09;這個工單&#xff0c;就…

接口限頻算法:漏桶算法、令牌桶算法、滑動窗口算法

文章目錄 限頻三大算法對比與選型建議一、漏桶算法&#xff08;Leaky Bucket Algorithm&#xff09;1.核心原理2.實現3.為什么要限制漏桶容量4.優缺點分析 二、令牌桶算法&#xff08;Token Bucket Algorithm&#xff09;1.核心原理2.實現&#xff08;1&#xff09;單機實現&am…

HTML5 盒子模型

1. 盒子模型的概念 2. 邊框&#xff08;border&#xff09; 邊框顏色&#xff08;border-color&#xff09; 邊框粗細&#xff08;border-width&#xff09; 邊框樣式&#xff08;border-style&#xff09; border簡寫&#xff08;border&#xff1a;&#xff09; 3. 外邊距&am…

【Linux】Linux高級I/O

參考博客&#xff1a;https://blog.csdn.net/sjsjnsjnn/article/details/128345976 一、五種IO模型 阻塞式I/O非阻塞式I/OI/O復用&#xff08;多路轉接&#xff09;信號驅動式I/O異步I/O I/O我們并不陌生&#xff0c;簡單的說就是輸入輸出&#xff1b;對于一個輸入操作通常包…

關于界面存在AB測試后UI刷新空白的問題

問題描述&#xff1a; 在同一頁面存在AB面&#xff0c;A和B同時都有一個rv&#xff0c;然后A面的rv填充不了數據&#xff0c;B面的可以。 問題解決&#xff1a; header_task布局里的include_new_gift_sign里有一個和外層一樣id的recyclerview include的標簽的作用是。在infl…

Go 協程(Goroutine)入門與基礎使用

一、什么是協程&#xff08;Goroutine&#xff09;&#xff1f; 簡單來說&#xff0c;協程是由 Go 語言運行時管理的輕量級線程。相比系統線程&#xff0c;它的調度開銷極小&#xff0c;內存占用非常少&#xff08;默認只需 2KB 棧空間&#xff09;。 你可以在一個程序中輕松…

matlab 各種智能優化算法

1. 優化算法相關 蟻群優化算法&#xff08;ACO&#xff09; 蟻群優化算法是一種模擬螞蟻覓食行為的優化技術。以下是一個簡化版的ACO用于解決旅行商問題&#xff08;TSP&#xff09;的MATLAB代碼&#xff1a; function [bestRoute, minDist] acoTsp(distMatrix, numAnts, n…

Hilt -> Android 專屬依賴注入(DI)框架

Hilt 是 Google 基于 Dagger 封裝的 Android 專屬依賴注入&#xff08;DI&#xff09;框架&#xff0c;顯著簡化了依賴管理流程&#xff0c;提升代碼可維護性和可測試性。以下是核心要點及使用指南&#xff1a; dagger2: Dagger 2 原理和使用-CSDN博客 Hilt vs Dagger2&…

AISHELL-5 全球首套智能駕艙中文語音交互數據集開源

隨著汽車成為人們日常生活中不可或缺的一部分&#xff0c;而駕駛艙中傳統的觸摸交互方式容易分散駕駛員的注意力&#xff0c;存在安全風險&#xff0c;因此&#xff0c;車內基于語音的交互方式得到重視。與通常家庭或會議場景中的語音識別系統不同&#xff0c;駕駛場景中的系統…

openstack之neutron(一)

NFV基礎 neutron是對二層物理網絡的抽象與管理&#xff0c;實例的網絡功能由連接到vSwitch的端口上的vNIC共同實現&#xff0c;再通過物理服務器的物理網卡訪問外部的物理網絡。 NFV實現 網卡虛擬化&#xff1a;tap、tun、veth&#xff1b; 交換機虛擬化&#xff1a;linuxbri…

【Java】Arrays.sort:TimSort

一&#xff0c;概述 書接前文【Java】Arrays.sort:DualPivotQuicksort-CSDN博客 Arrays.sort對基本數據類型使用了雙軸快速排序&#xff0c;但是對Object[]類型&#xff0c;則使用了TimSort&#xff0c;TimSort是穩定的排序&#xff0c;它整合了插入排序歸并排序&#xff0c;…

一個n8n構建的能和LLM對話的Agent

一個n8n構建的能和LLM對話的Agent 1.OLLAMA1.1.下載和安裝1.2.設置環境變量1.3.重啟ollama1.4.測試1.5.拉取模型2.n8n部署2.1. 鏡像拉取和啟動2.2.注冊和登錄2.3.新建一個工作流3.說在后面的話環境搭建說明: windows(RTX 5090)+VM CENTOS 采用本地化的ollama運行LLM n8n是一…

升級 Ubuntu Linux 內核的幾種不同方法

方法 &#xff11; &#xff0d; 使用 dpkg 升級 Linux 內核&#xff08;手動方式&#xff09; 這個方法可以幫助你從 kernel.ubuntu.com 網站手動下載可用的最新 Linux 內核。如果你打算安裝最新版&#xff08;而不是穩定版或者正式發布版&#xff09;&#xff0c;那這種方法…

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一個位于網站根目錄下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指導網絡爬蟲&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取該網站的內容。這個文件遵循 Robots…

Linux 內核 Slab 分配器核心組件詳解

Slab 分配器是 Linux 內核中用于高效管理內存的機制&#xff0c;其核心目標是通過對象緩存減少內存碎片和分配/釋放開銷。以下詳細解析其核心組件及其協作關系&#xff1a; 一、Slab 系統的核心組件 組件 描述 作用場景 Slab 描述符 每個 Slab 的管理結構&#xff08;如 struc…

Oracle 的AHF (Automatic Health Framework) 工具

Oracle 的AHF (Automatic Health Framework) 工具 Oracle AHF (Automatic Health Framework) 是 Oracle 官方提供的診斷工具集合&#xff0c;用于自動收集、分析和診斷 Oracle 數據庫及集群環境的健康狀態和問題。 一 AHF 核心功能概述 1. 主要組件 TFA (Trace File Analyz…

華為服務器obsutil使用方法

本文不生產技術&#xff0c;只做技術的搬運工&#xff01;&#xff01;&#xff01; 前言 最近在使用華為云服務器進行模型訓練&#xff0c;發現其上傳下載文件都極慢&#xff0c;詢問華為官方人員是否限速&#xff0c;對方推薦使用obsutil作為中轉服務進行下載&#xff0c;在…

【大模型訓練】中短序列attention 和MOE層并行方式(二)

我們考慮一個典型的Transformer模型結構&#xff0c;在多層堆疊中&#xff0c;其中包含Attention層和MoE層&#xff08;FeedForward層被替換為MoE層&#xff09;。在模型最后是LM Head&#xff08;語言模型頭&#xff09;&#xff0c;通常是一個全連接層&#xff0c;將隱層向量…

2025-06-09(批量智能裁剪視頻尺寸并延長視頻時長)

import os import subprocess import random import json # 配置參數 TARGET_WIDTH 500 TARGET_HEIGHT 600 TARGET_DURATION 180 # 目標時長&#xff08;秒&#xff09; OUTPUT_DIR "processed_videos" MIRROR_MODES ["none", "horizontal&quo…