摘要
- RFC 3367 将语言、地理位置和类别纳入通用查询属性,但把它们定义为“提示”,而非必须满足的筛选条件。
- 协议统一了问题的表达方式;匹配规则、结果排序和相关性的实际含义仍由每个服务掌握。
名称并不等于唯一答案
普通名称是词语或短语,不是全球唯一标识。“Mercury”可以指行星、企业、个人或产品;同一服务也可能为一个名称返回多条记录。RFC 3367 处理的是一个有限问题:客户端如何向服务查询与某个普通名称相关的记录。它没有规定服务发现与选择、名称注册、所有权或唯一性。因此,CNRP 是查询协议,不是命名权威。
共享词汇,不共享判断
协议提供的不只是一个名称字符串。核心查询属性包括普通名称、语言、地理位置、类别和结果范围。客户端可以先发送 ServiceQuery,了解服务支持哪些属性;服务也能公布自己的扩展数据类型。
但 RFC 3367 没有把这些字段变成全球统一的判定规则,而称它们为“提示”:由客户端提供的偏好和上下文。字段顺序可以表示优先级,服务仍可忽略这些提示,并尝试给出最匹配的结果。不同属性之间按逻辑 AND 组合,同一属性的多个值按 OR 组合。即便如此,返回结果也不必满足全部条件。“英语”和“伦敦”可以影响搜索,却不必排除所有不完全符合的记录。
最关键的设计边界正在这里:查询格式可以互操作,答案却仍由各服务分别决定。有的服务可能高度看重语言,有的可能只把它当作弱信号。RFC 没有规定统一权重公式,也没有定义通用的并列结果裁决方式。
编码解决不了语义
UTF-8 让文本能够交换,语言标签则提供结构化语言标识。但两者都不能决定不同拼写、文字体系、转写或名称是否指向同一对象。RFC 3367 把普通名称的等价与匹配规则留给具体服务和语言。字符编码保留字符串,却不会替字符串决定含义。
排序同样属于服务本地。一个服务可以依自己的相关性判断排列结果;不同服务的结果不会仅仅因为使用 CNRP 就拥有可比较的统一顺序。配套的 RFC 3368 定义了 go: URI,可指向特定服务或记录,也可表达更宽泛的查询,但并未消除这种职责划分。
互操作性的边界
RFC 3367 统一了偏好的表达、能力查询和字段组合的大体逻辑,把语义等价与最终排序留给服务运营者。这不是藏在脚注里的疏漏,而是协议的设计边界。共用词汇可以让系统对话,却无法让它们的判断自动一致。
借用 Lu Heng 关于运行代码优先的分析视角,这一区分很有帮助,但范围有限:规范描述实现可以交换什么,用户实际遇到的行为仍取决于服务如何实现。RFC 本身不能证明部署规模或商业影响。这里值得记录的历史变化更窄:偏好可以跨服务传递,相关性却仍留在服务本地。
来源
- RFC 3367 — Common Name Resolution Protocol
- RFC 3368 —
go:URI 方案 - RFC 1766 — 语言标签
- RFC 2277 — IETF 字符集与语言政策
- RFC 3629 — UTF-8
- RFC 5646 — 语言标签
- RFC 2119 — RFC 中表示规范要求的关键词
- RFC 2396 — URI 通用语法
- RFC 2616 — HTTP/1.1
- RFC 3986 — URI 通用语法
- RFC 3987 — 国际化资源标识符
- RFC 3367 发布记录
- IETF Datatracker 的 RFC 3367 记录
- IANA 媒体类型注册表
- Lu Heng,《Running-Code Primacy》
- Lu Heng,《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
