Skip to main content

3. Namespace Registration Template (命名空间注册模板)

Namespace ID (命名空间 ID): UUID

Registration Information (注册信息):

  • Registration date (注册日期): 2003-10-01

Declared registrant of the namespace (命名空间的声明注册人):

  • JTC 1/SC6 (ASN.1 Rapporteur Group)

Declaration of syntactic structure (语法结构声明):

UUID 是一个在空间和时间上都唯一的标识符, 相对于所有 UUID 的空间而言.由于 UUID 具有固定大小并包含时间字段, 因此值可能会翻转 (大约在公元 3400 年, 具体取决于所使用的特定算法).UUID 可用于多种目的, 从标记具有极短生命周期的对象, 到可靠地识别网络中非常持久的对象.

UUID 的内部表示是内存中特定的位序列, 如第 4 节所述.要准确地将 UUID 表示为 URN, 需要将位序列转换为字符串表示.

每个字段被视为整数, 其值以零填充的十六进制数字字符串打印, 最高有效数字在前.十六进制值 "a" 到 "f" 输出为小写字符, 输入时不区分大小写.

UUID 字符串表示的正式定义由以下 ABNF [7] 提供:

UUID                   = time-low "-" time-mid "-"
time-high-and-version "-"
clock-seq-and-reserved
clock-seq-low "-" node
time-low = 4hexOctet
time-mid = 2hexOctet
time-high-and-version = 2hexOctet
clock-seq-and-reserved = hexOctet
clock-seq-low = hexOctet
node = 6hexOctet
hexOctet = hexDigit hexDigit
hexDigit =
"0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" /
"a" / "b" / "c" / "d" / "e" / "f" /
"A" / "B" / "C" / "D" / "E" / "F"

以下是 UUID 作为 URN 的字符串表示的示例:

urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

Relevant ancillary documentation (相关辅助文档):

  • [1][2]

Identifier uniqueness considerations (标识符唯一性考虑):

本文档指定了三种生成 UUID 的算法: 第一种利用 802 MAC 地址的唯一值来保证唯一性, 第二种使用伪随机数生成器, 第三种使用加密哈希和应用程序提供的文本字符串.因此, 根据这里的机制生成的 UUID 将与已分配或将分配的所有其他 UUID 唯一.

Identifier persistence considerations (标识符持久性考虑):

UUID 在全局意义上本质上很难解析.这一点, 加上 UUID 在其空间上下文中是暂时唯一的事实, 确保 UUID 将尽可能保持持久.

Process of identifier assignment (标识符分配过程):

生成 UUID 不需要联系注册机构.一种算法需要每个生成器在空间上的唯一值.此值通常是 IEEE 802 MAC 地址, 通常在连接网络的主机上已经可用.该地址可以从 IEEE 注册机构获得的地址块中分配.如果没有此类地址可用, 或者隐私问题使其使用不可取, 第 4.5 节指定了两个替代方案.另一种方法是使用下面定义的版本 3 或版本 4 UUID.

Process for identifier resolution (标识符解析过程):

由于 UUID 不是全局可解析的, 因此不适用.

Rules for Lexical Equivalence (词法等价规则):

将 UUID 的每个字段视为无符号整数, 如第 4.1.2 节中的表所示.然后, 要比较一对 UUID, 按重要性顺序并根据其数据类型从每个 UUID 算术比较相应的字段.当且仅当所有相应字段相等时, 两个 UUID 才相等.

作为实现说明, 可以通过执行适当的字节序规范化, 然后将两个 UUID 视为 128 位无符号整数, 在许多系统上执行相等比较.

如本文档所定义, UUID 也可以按字典顺序排序.对于一对 UUID, 如果 UUID 不同的最高有效字段对于第一个 UUID 更大, 则第一个跟随第二个.如果 UUID 不同的最高有效字段对于第二个 UUID 更大, 则第二个在第一个之前.

Conformance with URN Syntax (符合 URN 语法):

UUID 的字符串表示与 URN 语法完全兼容.当从面向位的内存中的 UUID 表示转换为 URN 时, 必须注意严格遵守字符串表示部分中提到的字节顺序问题.

Validation mechanism (验证机制):

除了确定 UUID 的时间戳部分是否在未来并因此尚未可分配之外, 没有机制来确定 UUID 是否"有效".

Scope (范围):

UUID 的范围是全局的.