2. Matter协议栈与WiFi承载

Matter 并不是一种全新的无线通信技术,它更像是一套“应用层通用语言”加上“基于 IP 的传输约定”。理解 Matter 与 WiFi 的关系,关键要抓住一句话:Matter 负责设备之间“说什么、怎么交互”,WiFi 负责“把 IP 报文送到对端”。两者处在不同协议层次,通过 IPv6 这一共同底座衔接起来。本节从协议分层入手,逐层拆解 Matter 应用层、数据模型、交互模型,以及 WiFi 作为底层承载时的实际数据路径。

一、分层视角:Matter 站在 IP 之上,WiFi 站在 IP 之下

把 Matter 设备想象成一栋楼:WiFi 是楼外的道路和运输系统,IPv6 是统一的门牌地址体系,Matter 则是楼内各房间约定的沟通规则。Matter 规范明确定义自己运行在 IPv6 之上,因此它并不关心底层是 WiFi、以太网还是 Thread——只要该链路能承载 IPv6,Matter 就能工作。WiFi 承载时,典型的分层自下而上是:

  • 物理层/数据链路层:WiFi(IEEE 802.11,常见 2.4GHz,也支持 5GHz),负责无线帧的调制、信道接入与 MAC 寻址。
  • 网络层:IPv6,为每个节点分配地址,负责跨网段路由;Matter 依赖 IPv6 的链路本地地址与全局地址。
  • 传输层:UDP 与 TCP。Matter 的操作交互主要走 UDP(配合消息可靠重传机制),部分场景使用 TCP。
  • Matter 会话层/安全层:负责会话建立、消息加密(AES-CCM)、重传与去重、消息计数器。
  • Matter 交互模型层:定义 Read/Write/Invoke/Subscribe 等交互动作。
  • Matter 数据模型层:用 Cluster、Attribute、Command、Event 描述设备能力。
  • 应用层:具体业务逻辑,如开关灯、调亮度、读温度。

下面这张图把上述分层与 WiFi 承载时的实际数据路径画在一起,注意观察“应用数据如何一路封装到 WiFi 帧,再在对端逐层解封”。

Matter over WiFi 协议分层与数据路径 发送端(如手机 App / 控制器) 应用层:开灯 / 调亮度业务逻辑 数据模型:OnOff Cluster / LevelControl 交互模型:Invoke / Read / Subscribe 会话与安全:加密、重传、去重 传输层:UDP(+ 可靠消息机制) 网络层:IPv6 寻址与路由 WiFi 链路:802.11 帧 / MAC 接收端(如智能灯 / 节点设备) 应用层:执行开灯 / 设置亮度 数据模型:属性值更新 / 事件上报 交互模型:响应 / 状态回报 会话与安全:解密、校验、去重 传输层:UDP 端口接收 网络层:IPv6 地址匹配 WiFi 链路:802.11 帧 / MAC WiFi 无线信道 封装下行 → ← 解封上行 Matter 消息 (含 Cluster/Command) UDP 数据报 (IPv6 载荷) IPv6 报文 (源/目的地址)

二、数据模型:设备能力的“结构化描述”

Matter 数据模型是设备对外暴露能力的标准结构。最上层是 Node(节点),一个节点可以包含多个 Endpoint(端点),每个端点下挂若干 Cluster(簇),簇内再包含 Attribute(属性)、Command(命令) 和 Event(事件)。以一盏可调光智能灯为例:

  • Endpoint 1 表示“灯”这个功能单元;
  • OnOff Cluster(0x0006)提供 OnOff 属性与 On/Off/Toggle 命令;
  • LevelControl Cluster(0x0008)提供 CurrentLevel 属性与 MoveToLevel 命令;
  • Descriptor Cluster 描述该端点支持哪些簇,供控制器发现能力。

这种模型的价值在于:控制器不需要厂商私有协议,只要按标准簇定义读写属性、调用命令,就能控制不同品牌的设备。属性有明确的数据类型(布尔、8 位无符号整数、枚举等)和取值范围,例如 CurrentLevel 通常为 0~254,0 表示最暗、254 表示最亮。

三、交互模型:控制器与设备之间的四种基本动作

Matter 交互模型定义了应用层如何交换数据,核心有四类:

交互方向典型用途
Read控制器 → 设备读取属性当前值,如查询灯是否开启
Write控制器 → 设备写入属性,如设置默认亮度
Invoke控制器 → 设备调用命令,如执行开灯、调亮度
Subscribe控制器 → 设备订阅属性/事件变化,设备在变化时主动上报

其中 Subscribe 是 Matter 体验流畅的关键。控制器订阅 OnOff 属性后,设备状态一旦变化(例如被物理开关改变),会主动推送报告,而不是让控制器轮询。这减少了网络流量,也让 App 界面能实时刷新。交互消息通过会话层加密传输,并带有消息计数器防止重放。

四、WiFi 承载:从 Matter 消息到 802.11 帧

当底层是 WiFi 时,Matter 消息的旅程大致如下:应用层生成命令 → 数据模型编码为 TLV → 交互模型封装为 Matter 消息 → 会话层加密并附加消息头 → 交给 UDP → 加上 IPv6 头 → 由 WiFi 驱动封装成 802.11 数据帧 → 经无线信道发送。接收端反向解封,最终由应用层执行动作。

这里有两个实践要点。第一,IPv6 地址:WiFi 节点通常同时拥有链路本地地址(fe80::/10)和由路由器分配的全局地址。Matter 设备入网后通过 mDNS/DNS-SD 广播自己的服务信息,控制器据此发现设备并建立会话。第二,UDP 端口:Matter 使用固定端口进行通信(操作端口 5540),防火墙或 AP 的客户端隔离功能若阻断该端口或禁止组播,会导致设备无法被发现或控制。

调试提示:如果手机 App 能发现设备但控制无响应,优先检查 AP 是否开启了“客户端隔离”或“组播过滤”,这两项会阻断 Matter 依赖的 mDNS 发现与 UDP 通信。

五、一个可观察的示例:调亮度命令的完整路径

假设控制器要把灯的亮度设为 128,可以按下面的思路观察整个过程:

  1. 控制器在已订阅的 LevelControl 簇上调用 MoveToLevel 命令,参数 Level=128、TransitionTime=0。
  2. 命令被编码进 Matter 消息,经会话层加密后通过 UDP 发往灯的 IPv6 地址 5540 端口。
  3. 灯收到后解密、校验,执行命令,把 CurrentLevel 更新为 128。
  4. 由于控制器已订阅该属性,灯主动上报新值 128;App 界面亮度滑块同步到约 50%(128/254)。
  5. 若在抓包工具中观察,可看到 WiFi 帧内是 IPv6/UDP 报文,UDP 载荷为加密的 Matter 消息,无法直接读出明文命令——这正是安全设计的体现。

理解这条路径后,排查问题就有了层次感:设备发现失败,先看 mDNS 与组播;能发现但控制失败,看 UDP 端口与客户端隔离;控制成功但状态不同步,看订阅是否建立、事件是否上报。把 Matter 的分层与 WiFi 承载关系记牢,后续的配网、调试与性能优化都会顺理成章。