第6章 数据通信基础
本章目标
掌握三种发送模式(单播/组播/广播)、APS 收发原语、确认机制与 Binding 绑定。日志来自 zigbee-aps-data 与 zigbee-led-control 真实运行。
6.1 三种发送模式
| 模式 | 发给谁 | 寻址 | 典型场景 |
|---|---|---|---|
| 单播 Unicast | 指定一台设备 | 目标短地址 | 控制某一盏灯 |
| 组播 Groupcast | 一组设备(同组号) | 16 位组地址 | 「全部卧室灯一起关」 |
| 广播 Broadcast | 全网设备 | 0xFFFF | 发现设备、全网同步 |
类比
单播=打电话给一个人;组播=在「家庭群」发一条;广播=在小区大喇叭喊一声。
6.2 APS 收发原语
- APSDE-DATA.request:应用层「发数据」的请求(发给谁、带什么);
- APSDE-DATA.indication:APS 层「收到数据」后通知应用层;
- APSDE-DATA.confirm:APS 层报告「发出去了 / 失败了」。
6.3 真实日志:单播与组播
官方示例 zigbee-aps-data 同时演示了组播和单播(5 字节数据包):
+9.09145s Node 4 | GROUPCAST | ApsdeDataIndication: Received DATA packet with size 5 for destination EndPoint 3
+9.09145s Node 4 | GROUPCAST | ApsdeDataIndication: Received DATA packet with size 5 for destination EndPoint 9
+9.16303s Node 3 | GROUPCAST | ApsdeDataIndication: Received DATA packet with size 5 for destination EndPoint 3
+10.6711s Node 3 | UCST | ApsdeDataIndication: Received DATA packet with size 5 for destination EndPoint 3组播时同一台设备的端点 3、端点 9 都收到了(一个组可对应多个端点);单播只送指定端点。日志里的 GROUPCAST / UCST 就是投递模式标记。
单播(点对点 LED)的收发对照:
+6s [协调器/控制器] 发送 LED 命令: 0x1 (seq 1) -> 终端 (短地址 42:24)
+6.00144s [终端 1/LED 执行器] 收到命令 | 源端点 8 -> 目的端点 3 | 帧长 2
[应用层解析] 命令码=0x1 序号=1
[执行动作] 终端 1 拉高 GPIO -> LED 点亮成功 (LED=ON)6.4 确认机制(两层)
| 层级 | 谁和谁 | 保证什么 |
|---|---|---|
| MAC 层 ACK | 每一跳(邻居之间) | 「这一跳送过去了」(802.15.4 自带) |
| APS 层确认 | 端到端(源端点到目的端点) | 「你(目的端点)真的收到了」 |
记忆
MAC ACK 是「快递员之间点货」,APS ACK 是「寄件人找收件人签收」。
6.5 APS Binding 绑定
Binding 是 APS 层的绑定表:把「源端点 + 簇」映射到「目标端点/组」。绑定好后应用层只按簇发送,APS 自动转发给绑定的目标——典型场景是「墙上无线开关绑定一盏灯」。
ns-3 模块提供 ApsmeBindRequest(BIND/UNBIND)接口。Binding 让我们从「面向地址」编程变成「面向业务」编程。