Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
IEC 29341-2 定义了 UPnP 设备架构第二版,这是所有 UPnP 设备和服务器模板的基础规范。UDA 2.0 在寻址、发现、描述、控制、事件和呈现机制方面对早期 1.0 规范进行了重大改进。该架构遵循六层模型:寻址(获取 IP 地址)、发现(通过 SSDP 查找设备)、描述(获取设备和服务的 XML 描述)、控制(通过 SOAP 调用操作)、事件(通过 GENA 订阅状态变更)和呈现(渲染基于 HTML 的设备用户界面)。
2.0 版本在多个方面带来了重要改进。发现层现在支持可配置超时的单播 M-SEARCH 响应,减少了大型部署中的多播流量。设备描述模式扩展了 deviceType 版本控制,使控制点能够在发现过程中区分 UDA 1.0 和 2.0 设备。事件机制获得了重要更新:GENA 订阅超时从 30 分钟扩展为可配置值(推荐默认值 300 秒),并且 Callback URL 现在支持 HTTPS 端点以实现加密事件传递。此外,UDA 2.0 强制支持 BOOTID.UPNP.ORG 头部,使控制点能够检测设备重启并相应地刷新缓存的描述。
| 特性 | UDA 1.0 | UDA 2.0 |
|---|---|---|
| IPv6 支持 | 未指定 | 原生支持(强制) |
| 发现机制 | 仅多播 | 多播 + 单播 |
| GENA HTTPS 回调 | 不支持 | 支持 |
| BOOTID 头部 | 未定义 | 强制要求 |
| 设备类型版本控制 | 隐式 | 显式(主版本.次版本) |
| 最大缓存时间 | 默认 1800 秒 | 可配置 |
CONFIGID.UPNP.ORG 头部。UDA 2.0 设备宣告一个概括其服务集的配置 ID。如果控制点缓存已持有匹配的配置 ID,可以跳过设备描述检索步骤以节省带宽。然而,实现不当的 CONFIGID 会导致控制点缓存过时的描述并错误渲染设备的能力。UDA 2.0 的 SOAP 控制层引入了 UPNP-EVENT-SUBSCRIBE 和 UPNP-EVENT-UNSUBSCRIBE 头部以改进事件通道管理。事件子系统现在支持每个订阅多个回调 URL,在主回调端点不可达时提供冗余。LastChange 事件负载格式经过规范化,在所有服务类型中使用一致的 XML 结构,简化了解析器的实现。在呈现方面,UDA 2.0 鼓励使用响应式 HTML5 页面,以适应桌面和移动控制点浏览器。
SearchPort 和 SecureDevice 扩展为安全的 UPnP 通信提供了框架。虽然不是强制要求,但强烈建议处理敏感数据或在多租户环境中运行的设备实施这些扩展。ST: ssdp:all 搜索可能触发比搜索请求大数个数量级的响应包。生产部署必须在网络边界使用访问控制列表过滤 SSDP 流量,以防止参与 DDoS 放大攻击。实现符合 UDA 2.0 的设备栈需要在所有六层进行仔细的状态管理。BOOTID 计数器必须跨电源周期持久保存并单调递增。CONFIGID 必须在设备服务集或描述 URL 发生变化时更新,这意味着设备描述 XML 应动态生成而非从静态文件提供。对于控制点端,实现一个缓存层,同时遵循 SSDP 头部的 max-age 指令并在 BOOTID 变更时使缓存失效——这种混合方法在网络效率和准确性之间取得了平衡。
ssdp:byebye 消息。ssdp:alive 消息以新地址重新宣告其存在,并递增 BOOTID 字段。控制点必须监控 BOOTID 变更以检测地址更新。