RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 994093
Accepted
andreymal
andreymal
Asked:2020-06-18 22:35:39 +0000 UTC2020-06-18 22:35:39 +0000 UTC 2020-06-18 22:35:39 +0000 UTC

UUID 和 GUID 有什么区别?

  • 772

我经常看到这两个缩写,我想知道它们有什么区别?

терминология
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    andreymal
    2020-06-18T22:35:39Z2020-06-18T22:35:39Z

    简而言之:没有区别,它们的意思是一样的。

    更新:虽然 GUID(来自 Microsoft)和 UUID(来自 RFC 4122)看起来相似并且用于相似的目的,但存在细微但有时很重要的差异。特别是,微软文档提到,一个 GUID 可以在任何位置包含任何十六进制数字,而 RFC 4122 要求version和的特定值variant。它还提到 GUID 必须完全大写,而 UUID 必须“以小写形式输出并且在键入时不区分大小写”。这可能导致不同库之间的不兼容(示例)。

    (以下为答案原文)


    将它们视为一个 16 字节(128 位)的值,该值是唯一的。Microsoft 称它们为 GUID,而其他所有人都称它们为 UUID。

    UUID 规范的作者和微软自己目前都认为它们是同义词:

    • RFC 4122 指出UUID 是“也称为 GUID(全球唯一标识符)” ;

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

    • 甚至微软在其文档中声明:“通用唯一标识符 (UUID) 一词有时在 Windows 协议规范中用作 GUID 的同义词”。

    但是,真正正确的答案取决于“UUID”一词的确切含义。

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

    Microsoft 文档中暗示所有 UUID 都是有效的 GUID。但是,仍不清楚:任何 GUID 是否都是有效的 UUID?换句话说,UUID 只是 GUID 的一个子集,还是同一个集合?

    在 RFC 4122 中,我们可以找到 UUID 的四个不同版本(“变体”)。这是因为在 UUID 规范出现之前就使用了这样的 16 字节标识符。在规范中,他们试图结合这些选项。根据第 4.1.1 节,选项包括:

    • 选项 0 ( 0xxx) - 保留用于与过时的 Apollo 网络计算系统兼容;

    • 选项 1 ( 10xx) - 主要选项,在 RFC 4122 中有描述(有五个子选项,称为“版本”);

    • 选项 2 ( 110x) 保留用于向后兼容 Microsoft 系统;

    • 选项 3 ( 111x) 留作将来使用。

    根据 RFC 4122,所有 UUID 变体都是“真正的 UUID”,因此所有 GUID 也是 UUID。如果您从字面上回答“UUID 和 GUID 之间有什么区别”这个问题,那么根据 RFC,答案是 没有区别(但考虑到下面写的内容)。

    但并非所有 GUID 都是变体 1 UUID(例如,Microsoft COM 的 GUID 是变体 2 UUID)。如果您回答“选项 1 的 GUID 和 UUID 之间是否存在差异”这个问题,那么答案是肯定的——它们可能不同。有人问关于 UUID 和 GUID 的问题可能不知道变种的存在,当他们说“UUID”时,他们隐含的只是版本 1 的 UUID(例如,他们听说过一些关于带有 MAC 地址 + 时间的 UUID 和关于随机 UUID,它们都是选项 1) 的两个版本。在这种情况下,答案是肯定的,有区别。

    所以答案取决于提问者说“UUID”时的意思。他是指选项1的UUID还是一般的任何UUID?

    第二部分取决于使用哪个规范作为 UUID 的定义。

    让我们看一下ITU-T X.667 ISO/IEC 9834-8:2004,它应该完全符合 RFC 4122。第 11.2 条有一个额外的句子说(翻译):“所有符合本建议书的 UUID | 国际标准应具有变体位,八位字节 7 的位 7 设置为 1,八位字节 7 的位 6 设置为 0。” 翻译成人类语言,这意味着只有变体 1 UUID ( 10xx) 符合此标准。在这种情况下,并非所有 GUID 都对应于 ITU-T/ISO/IEC 所理解的 UUID。

    因此,真正的答案还取决于问题所暗示的 UUID 规范。如果我们谈论任何 UUID,而不仅仅是选项 1 UUID,那么GUID 和 IETF UUID (RFC 4122) 之间没有区别,但GUID 和 ITU-T/ISO/IEC UUID 之间存在区别!

    二进制编码也可能不同。编码 GUID 时,可以更改前三个字段的字节顺序。这与 UUID 不同,UUID 总是只使用网络字节顺序(大端)。如果您需要将 UUID/GUID 编码为二进制形式,请仔细阅读 UUID/GUID 实现的有关字节序的文档。

    Биты  Байты  Название поля   Порядок байтов  Порядок байтов
                                 (GUID)          RFC 4122
    
    32    4      Data1           Native          Big
    16    2      Data2           Native          Big
    16    2      Data3           Native          Big
    64    8      Data4           Big             Big
    

    Hoylen对enSO的回答略微松散,并附有社区的补充。UUID 变体编号未在 RFC 中定义,在此答案中,变体编号根据变体指示符中非零位的数量进行编号(如 Wikipedia 中所示)。

    • 24

相关问题

  • 什么是虚拟处理器?

  • 为什么说“架构 x86”?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5