规范性关键词说明
必须
表示绝对要求。凡标注为“必须”的事项,均为本规范不可缺少的要求;未满足该要求,即不符合本规范。
不得
表示绝对禁止。凡标注为“不得”的事项,均为本规范明确禁止的行为;一旦出现,即不符合本规范。
应当
表示推荐性要求。在特定情形下,可能存在充分且合理的理由不按此要求执行;但在采取不同做法之前,实施者应充分理解其全部影响,并进行审慎评估与权衡。
不应当
表示负向推荐性要求。在特定情形下,某种行为可能是可接受的,甚至可能具有一定合理性或实际效益;但在采用该行为之前,实施者应充分理解其全部影响,并结合具体情况进行审慎评估与权衡。
可以
表示真正的可选项。某项内容是否采用,可由具体实现根据实际需求决定。某些实现可能因特定应用场景、市场需求或增强功能的考虑而选择支持该项内容,另一些实现则可以不支持该项内容。
未包含某一可选项的实现,仍应能够与包含该可选项的实现进行互操作,但其功能可能有所减弱;同样,包含该可选项的实现,也仍应能够与未包含该可选项的实现进行互操作,但该可选项自身所提供的特定能力除外。
关于规范性用语的使用
本规范中的此类规范性用语应谨慎使用,并尽可能从严控制使用范围。特别是,只有在以下情形下,才应使用具有强约束力的表述:
- 该要求确为实现互操作所必需;
- 该要求用于限制可能造成危害的行为,例如限制不当重传等。
例如,不应仅仅为了强制实施者采用某一种特定实现方式,而在该方式并非互操作所必需的情况下使用此类规范性用语。
安全性考虑
上述术语经常用于规定具有安全影响的行为。未满足“必须”或“应当”要求,或者实施了被“不得”或“不应当”限制的行为,其安全影响可能非常细微,但仍可能具有重要后果。
因此,规范编写者应尽可能说明未遵循相关建议或要求可能带来的安全影响。这一点尤为重要,因为大多数实现者通常无法直接获得促成该规范形成的讨论背景与实践经验。
致谢与说明
本文关于规范性关键词的说明参考并整理自 RFC 2119《用于表示需求级别的关键词》。该文档由 IETF 于 1997 年 3 月作为 BCP 14 发布。
RFC 2119 的原作者为 Scott Bradner (Harvard University)。相关术语定义综合整理自多个 RFC,同时吸收了 Robert Ullmann、Thomas Narten、Neal McBurnett 和 Robert Elz 等人的建议。
本文档中的当前版本系面向项目文档场景所作的整理与适配,供文档编写与引用使用。