简短回答:没有区别,它们是同一件事情。
2020-08-20更新:尽管Microsoft使用的GUID和RFC4122定义的UUID看起来相似且具有类似的用途,但存在微妙但偶尔重要的差异。特别是,
一些Microsoft GUID文档允许GUID在任何位置包含任何十六进制数字,而RFC4122则要求
版本
和
变体
字段具有特定值。此外,根据
同一链接,GUID应全部大写,而UUID应“以小写字符输出,并在输入时不区分大小写”。这可能会导致代码库之间的不兼容性(
例如这种情况)。
(以下为原始答案)
将它们视为一个16字节(128位)的值,用作唯一值。在 Microsoft 术语中,它们被称为 GUID,但在非 Microsoft 术语中,请称其为 UUID。
即使是 UUID 规范的作者和 Microsoft 也声称它们是同义词:
从IETF RFC 4122的介绍中可以看出:"UUID(通用唯一标识符)是一个为UUIDs(通用唯一标识符),也称为GUIDs(全局唯一标识符)定义的统一资源名称命名空间。"
根据ITU-T Recommendation X.667,ISO/IEC 9834-8:2004国际标准所述:“UUID也被称为全局唯一标识符(GUID),但本建议不使用此术语。”
甚至微软也声称 GUID 是由 UUID RFC 指定的:“在 Microsoft Windows 编程和 Windows 操作系统中,全局唯一标识符 (GUID),如 [RFC4122] 中所指定的那样,是... 有时在 Windows 协议规范中使用通用唯一标识符 (UUID) 这个术语来作为 GUID 的同义词。”
但是“正确答案”取决于问题在说“UUID”时的意思……
第一部分取决于提问者在说“UUID”时的想法。
微软的声明意味着所有UUID都是GUID。 但是所有GUID都是真正的UUID吗?也就是说,所有UUID的集合只是所有GUID集合的一个子集,还是完全相同的集合?
查看RFC 4122的详细信息,有四种不同的UUID“变量”。这主要是因为在创建UUID规范之前,这样的16字节标识符已经在使用。从
RFC 4122的4.1.1节中,UUID的四个变量如下:
- 保留,网络计算机系统向后兼容
- RFC 4122中指定的变量(其中有五个子变量,称为“版本”)
- 保留,Microsoft Corporation向后兼容
- 保留以供将来定义。
根据RFC 4122,所有UUID变体都是"真实的UUIDs",那么所有GUID都是真实的UUIDs。对于文字问题"GUID和UUID之间有什么区别吗",对于RFC 4122 UUIDs来说答案绝对是否定的:
没有差异(但受下面第二部分的影响)。但并非所有GUID都是
变体 2 UUID(例如Microsoft COM具有变体3 UUID的GUID)。如果问题是"GUID和变体2 UUID之间有什么区别吗",那么答案就是可以——它们可能不同。提问的人可能不知道
变体,他们可能只考虑到说"UUID"这个词时
变体 2 UUID(例如,他们隐约知道UUID的MAC地址+时间和随机数算法形式,这两种形式都是
变体 2 的
版本)。在这种情况下,答案是
不同的。因此,答案在某种程度上取决于提问者在说"UUID"这个词时想到了什么。他们是指变体2 UUID(因为这是他们唯一知道的变体),还是所有UUIDs?
第二部分取决于使用哪个规范作为UUID的定义。
如果你认为这很令人困惑,请阅读
ITU-T X.667 ISO/IEC 9834-8:2004,它应该与
RFC 4122完全技术兼容。在第11.2条款中有一个额外的句子,它说:“符合本建议书|国际标准的所有UUID都应具有位7的变体位设置为1和位6的变体位设置为0”。这意味着只有
变体 2 UUID符合该标准(这两个位值表示
变体 2)。如果这是真的,那么并不是所有的GUID都符合ITU-T / ISO / IEC UUIDs,因为符合ITU-T / ISO / IEC UUIDs的只能是
变体 2值。
因此,真正的答案也取决于问题所问的UUID规范。假设我们明确讨论的是所有UUID而不仅仅是变体2 UUID:GUID和IETF的UUID之间
没有区别,但GUID和符合ITU-T/ISO/IEC的UUID之间
有差异!
二进制编码可能不同当以二进制形式编码(而不是人类可读的文本格式)时,GUID
可以 存储在具有四个不同字段的结构中,如下所示。这种格式与[UUID标准]
8仅在前3个字段的字节顺序上有所不同。
Bits Bytes Name Endianness Endianness
(GUID) RFC 4122
32 4 Data1 Native Big
16 2 Data2 Native Big
16 2 Data3 Native Big
64 8 Data4 Big Big