摘要
- RFC 3059 允许 SLPv2 用户代理要求服务回复中的每个 URL 同时携带完整的已注册属性表。请求端故意发送一个空扩展,回复端才为每个 URL 填入一个扩展。
- 扩展
0x0002可选且遇到未知时应被忽略,所以回复中没有它只是启动回退的信号,不是“属性为零”的证明;请求了 SLP SPI 而响应方无法提供认证块时,扩展同样必须缺席。
空白在这里是一条指令
服务发现表面上像一个问题,实际上至少有两层:哪些服务符合条件,以及这些候选服务各有什么属性。SLPv2 的基本交换先返回服务 URL,客户端若需要属性,再对 URL 或服务类型发出 Attribute Request。
2001 年 2 月作为 Proposed Standard 发布的 RFC 3059,把这两层证据装进同一次往返,却没有把它们混成同一个事实。用户代理在 Service Request 中放入 Attribute List Extension,把 Service URL Length 与 Attribute List Length 都设为零,并省略对应字段。这个空结构不是空结果,而是一条语法化请求:请在 Service Reply 里附带属性。
同一个零长度字段,放在不同方向就承担不同含义。若把请求端的空壳读成“服务没有属性”,客户端还没有收到任何业务数据就已经替响应方作出了结论。
每个 URL 都要有自己的属性回执
支持该扩展的服务代理或目录代理,要针对 Service Reply 中的每个 URL Entry 返回一个 Attribute List Extension。扩展包含与之对应的 Service URL 和该服务的完整属性表。RFC 说扩展顺序应该与 URL Entry 顺序一致,同时又把 URL 明确写入每个扩展。
因此真正的连接键是 URL。顺序可以用于一致性检查,却不应取代显式身份。只按数组位置把属性贴到 URL 上,会把实现便利误当成协议权威。
“完整属性表”也不是现实世界中的全知视图。它指响应方持有的、与请求语言一致的注册属性。它受注册内容、语言、作用域、匹配条件和缓存状态约束。注册尚未过期,不证明服务此刻可达;某项现实能力没有登记,也不会凭空出现在列表里。RFC 3059 优化的是广告描述的传输,而不是运行结果的测量。
0x0002 的编号带着兼容政策
IANA 为该扩展登记了 0x0002。RFC 2608 把 0x0000 至 0x3FFF 定义为标准化但可选实现的扩展:接收方不认识时应忽略。这样,较早的实现即使不懂 RFC 3059,也仍能返回普通 Service Reply。
兼容性没有消除不确定性,只是把处理责任交给了客户端。RFC 3059 明确要求:若回复没有 Attribute List Extension,用户代理应假定 SA 或 DA 不支持它,并对拿到的每个 URL 分别发送 Attribute Request。缺席是一条回退指令,不是一个肯定的空属性表。
后来的 SLP 扩展可能使用强制实现编号区间,并对未知选项返回 OPTION_NOT_UNDERSTOOD。RFC 3421 的 Select 与 Sort 就提供了这种对照。但那是另一套编号和错误语义,不能倒灌进 0x0002。扩展这一形式从来不保证统一的失败表现。
认证会让同一种缺席拥有另一条路径
Service Request 可以带 SLP Security Parameter Index。只要带了 SPI,返回的每个 Attribute List Extension 就必须包括对应的认证块。若 SA 或 DA 不支持该 SPI,或者无法返回所需认证块,它就不得返回这个扩展。
于是,线上看到的“没有扩展”至少有两条相关路径:响应方根本没有实现 0x0002,或它无法满足这次请求的认证上下文。RFC 给客户端的实际动作仍是回退查询,并没有授权客户端从沉默中推导更精细的根因。
认证块也有清晰边界。按照 RFC 2608,它让用户代理验证覆盖内容未被修改,并由获授权代理发出,同时依赖 SPI 所指的密钥材料、算法参数与到期时间。验证通过不等于服务当前在线,不等于这名用户拥有访问权,更不等于后续应用事务成功。
被压缩的是对话,不是证据层级
没有扩展时,发现四个 URL 后获取属性,可能需要一次 Service Request 再加四次 Attribute Request。双方都支持 RFC 3059 时,同一批描述信息可以随一次回复到达。它改变的是时延与报文数量,不是数据的权威范围。
这种区别今天依然常见。界面因为没有拿到富化数据而显示“无能力”;资产表因为兼容路径未执行而记为“无属性”;自动选择器因为把“这里没有携带”误读为“已知不存在”而丢弃可用候选。RFC 3059 的回退规定,是对这类错误的一条早期、精确警告。
协议把成本放在了合理位置:响应方可以不实现优化仍保持兼容;想获得完整选择信息的用户代理必须识别缺失回执,并付出额外往返。节省网络工作不能兑换成凭空制造的确定性。
来源
- https://www.rfc-editor.org/rfc/rfc3059.html
- https://www.rfc-editor.org/rfc/rfc3059.txt
- https://www.rfc-editor.org/info/rfc3059/
- https://datatracker.ietf.org/doc/rfc3059/
- https://www.rfc-editor.org/rfc/rfc2608.html
- https://www.rfc-editor.org/rfc/rfc2609.html
- https://www.rfc-editor.org/rfc/rfc2614.html
- https://www.rfc-editor.org/rfc/rfc3082.html
- https://www.rfc-editor.org/rfc/rfc3224.html
- https://www.rfc-editor.org/rfc/rfc3421.html
- https://www.iana.org/assignments/svrloc-extensions/svrloc-extensions.xhtml
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
