GUID和UUID之间是否有区别?

我看到了这两个缩写词,我想知道GUID和UUID之间是否有区别?


GUID是微软对UUID标准的实施。

按维基百科:

术语GUID通常是指Microsoft对通用唯一标识符(UUID)标准的实现。

来自同一维基百科文章的更新报价:

RFC 4122本身规定UUID“也被称为GUID”。 所有这些都表明,“GUID”虽然最初是指Microsoft使用的UUID的变体,但它已成为UUID的替代名称......


简单的答案是: 没有区别 ,它们是相同的。 将它们视为一个用作唯一值的16字节(128位)值。 在微软中,他们被称为GUID,但在不使用微软的时候称他们为UUID。

即使是UUID规范的作者和微软声称他们是同义词:

  • 从IETF RFC 4122“通用唯一标识符(UUID)URN命名空间”的简介:“UUID(通用唯一标识符)的统一资源名称命名空间,也称为GUID(全局唯一标识符)。”

  • 从ISO / IEC 9834-8:2004国际标准ITU-T X.667建议书:“UUID也被称为全球唯一标识符(GUID),但本建议书不使用此术语。”

  • 而且,Microsoft甚至声称GUID由UUID RFC规定:“在Microsoft Windows编程和Windows操作系统中,[RFC4122]中指定的全局唯一标识符(GUID)是...术语通用唯一标识符(UUID )有时在Windows协议规范中用作GUID的同义词。“

  • 但是正确的答案取决于问题意味着什么时候它说“UUID”...

    第一部分取决于提问者在说“UUID”时想的是什么。

    微软声称暗示所有的UUID都是GUID。 但是所有GUID都是真正的UUID? 也就是说,所有UUID的集合只是所有GUID集合的一个适当的子集,还是完全相同的集合呢?

    查看RFC 4122的详细信息,有四种不同的UUID“变体”。 这主要是因为在创建UUID规范时将这些规范集中在一起之前,这些16字节标识符才被使用。 从RFC 4122第4.1.1节来看,UUID的四种变体是:

  • 保留,网络计算系统向后兼容
  • RFC 4122中规定的变体(其中有五个子变体,称为“版本”)
  • 保留,微软公司向后兼容
  • 留作未来定义。
  • 根据RFC 4122,所有的UUID变体都是“真正的UUID”,那么所有的GUID都是真正的UUID。 对于字面问题“GUID和UUID之间是否有区别”,RFC 4122 UUIDs的答案肯定是否定的: 没有区别 (但受以下第二部分的限制)。

    但并非所有GUID都是变体2 UUID(例如,Microsoft COM具有变体3 UUID的GUID)。 如果问题是“GUID和变体2UUID之间是否有区别”,那么答案是肯定的 - 它们可以不同。 有人问这个问题可能不知道变体,他们可能只是在他们说单词“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,第6个字节的第8个字节设置为0“。 这意味着只有变体2 UUID符合该标准(这两个比特值意味着变体2)。 如果这是真的,那么并非所有GUID都符合ITU-T / ISO / IEC UUID,因为符合的ITU-T / ISO / IEC UUID只能是变体2值。

    因此,真正的答案也取决于问题所讨论的UUID的规范。 假设我们清楚地谈论所有UUID而不仅仅是变体2 UUID:GUID和IETF的UUID之间没有区别 ,但是GUID和符合ITU-T / ISO / IEC的UUID 是不同的!

    二进制编码可能不同

    当以二进制编码(而不是人类可读的文本格式)时,GUID可以存储在具有四个不同字段的结构中,如下所示。 该格式仅与前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
    

    不是真的。 GUID更以微软为中心,而UUID更广泛地使用(例如urn:uuid:URN方案和CORBA方面)。

    链接地址: http://www.djcxy.com/p/2661.html

    上一篇: Is there any difference between a GUID and a UUID?

    下一篇: Collisions when generating UUIDs in JavaScript?