Is there any difference between a GUID and a UUID?
我看到了这两个首字母缩略词,我想知道guid和uuid之间是否有什么区别?
简单的答案是:没有区别,它们是一样的。将它们视为一个16字节(128位)的值,该值用作唯一值。在Microsoft Speak中,它们被称为guid,但在不使用Microsoft Speak时,它们被称为uuid。好的。
甚至UUID规范和Microsoft的作者都声称它们是同义词:好的。
从IETF RFC 4122"通用唯一标识符(UUID)URN命名空间"的介绍中可以看出:"UUID(通用唯一标识符)的统一资源名称命名空间,也称为guid(全局唯一标识符)。"好的。
根据ITU-T建议X.667,ISO/IEC 9834-8:2004国际标准:"UUID也称为全球唯一标识符(guid),但本建议中不使用此术语。"好的。
微软甚至声称UUID RFC指定了一个guid:"在微软Windows编程和Windows操作系统中,如[rfc4122]中指定的全局唯一标识符(guid)是……在Windows协议规范中,术语"通用唯一标识符(UUID)"有时用作guid的同义词。"好的。
但是正确的答案取决于当问题说"uuid"是什么意思…好的。
第一部分取决于提问者在说"uuid"时的想法。好的。
微软的声明暗示所有UUID都是guid。但是所有的guid都是真正的uuid吗?也就是说,所有uuid的集合只是所有guid集合的一个子集,还是完全相同的集合?好的。
查看RFC4122的细节,UUID有四个不同的"变体"。这主要是因为这样的16字节标识符在创建UUID规范之前就已经被使用了。根据RFC 4122第4.1.1节,UUID的四个变体是:好的。
根据RFC4122,所有的uuid变体都是"真正的uuid",那么所有的guid都是真正的uuid。对于字面上的问题"guid和uuid之间是否有任何区别",对于rfc 4122 uuid,答案肯定是否定的:没有区别(但以下面的第二部分为准)。好的。
但并非所有的guid都是变体2 uuid(例如,Microsoft com有变体3 uuid的guid)。如果问题是"guid和变量2 uuid之间有什么区别",那么答案是肯定的——它们可以是不同的。问这个问题的人可能不知道变种,他们可能只是在说"uuid"这个词时才想到变种2 uuid(例如,他们模糊地知道mac地址+时间和uuid的随机数算法形式,这两种形式都是变种2的版本)。在这种情况下,答案是肯定的不同。好的。
因此,答案在某种程度上取决于被问者在说"UUID"这个词时的想法。它们是指变体2 UUID(因为这是它们唯一知道的变体)还是所有UUID?好的。
第二部分取决于将哪个规范用作UUID的定义。好的。
如果您认为这令人困惑,请阅读ITU-T X.667 ISO/IEC 9834-8:2004,该标准应与RFC 4122保持一致并在技术上完全兼容。在第11.2条中有一句额外的话:"符合本建议的所有UUID国际标准应具有八位字节7的位7设置为1,八位字节7的位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标准的区别仅在于前3个字段的字节顺序。好的。
1 2 3 4 5 6 7 | 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 |
好啊。
guid是微软对uuid标准的实现。
维基百科:
The term GUID usually refers to Microsoft's implementation of the Universally Unique Identifier (UUID) standard.
来自维基百科文章的最新引用:
RFC 4122 itself states that UUIDs"are also known as GUIDs". All this suggests that"GUID", while originally referring to a variant of UUID used by Microsoft, has become simply an alternative name for UUID…
不是真的。guid更以Microsoft为中心,而uuid的使用更广泛(例如,在urn:uuid:urn方案和corba中)。
guid在不一定是128位值的地区有着长期的使用,其使用方式与uuid相同。例如,RSS规范将guid定义为您选择的任何字符串,只要它是唯一的,并具有"is permalink"属性,以指定您使用的值只是指向要联合的项目的permalink。
微软的