Простой ответ : без разницы , это одно и то же. Рассматривайте их как 16-байтовое (128 битное) значение, которое используется как уникальное значение. В Microsoft-говорят они называются GUID, но называют их UUID, когда не используется Microsoft-речь.
Даже авторы спецификации UUID и Microsoft утверждают, что они являются синонимами:
Из введения в IETF RFC 4122" A Пространство имен URN с универсальным уникальным идентификатором (UUID) ": "Пространство имен унифицированного имени ресурса для UUID (универсальный уникальный идентификатор) , также известный как GUID (глобальный уникальный идентификатор). "
Из Рекомендации МСЭ-Т X.667, международного стандарта ИСО / МЭК 9834-8: 2004 : «UUID также известны как глобально уникальные идентификаторы (GUID), но этот термин не используется в данной Рекомендации. "
И Microsoft даже заявляет GUID задается UUID RFC: «В программировании Microsoft Windows и в операционных системах Windows глобальный уникальный идентификатор (GUID), как указано в [RFC4122] , is ... Термин универсальный уникальный идентификатор (UUID) иногда используется в спецификациях протокола Windows как синоним GUID. "
Но правильный ответ зависит от того, что означает вопрос, когда он говорит "UUID" ...
Первая часть зависит от того, что думают спрашивающие, когда говорят «UUID».
Заявление Microsoft подразумевает, что все UUID являются GUID. Но все ли GUID являются настоящими UUID? То есть набор всех идентификаторов UUID является просто правильным подмножеством набора всех идентификаторов GUID или это точно такой же набор?
Рассматривая подробности RFC 4122, можно выделить четыре «варианта» UUID. Это происходит главным образом потому, что такие 16-байтовые идентификаторы использовались до того, как эти спецификации были объединены при создании спецификации UUID. Из раздела 4.1.1 RFC 4122 четыре варианта UUID:
- Зарезервировано, обратная совместимость сетевых вычислительных систем
- вариант , указанный в RFC 4122 (из которых есть пять подвариантов, которые называются "версиями")
- Зарезервировано, обратная совместимость с корпорацией Microsoft
- Зарезервировано для будущего определения.
Согласно RFC 4122, все варианты UUID являются "реальными UUID", тогда все GUID являются реальными UUID. На буквальный вопрос «есть ли разница между GUID и UUID», ответ определенно нет для RFC 4122 UUID: без разницы (но с учетом второй части ниже).
Но не все GUID являются вариантом 2 UUID (например, Microsoft COM имеет GUID, которые являются вариантом 3 UUID). Если бы вопрос был «есть ли разница между GUID и UUID варианта 2», то ответ был бы да - они могут быть разными. Кто-то задающий вопрос, вероятно, не знает о вариантах , и он может думать только о варианте 2 UUID, когда они произносят слово "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 октета 7, установленным в 0». Это означает, что только вариант 2 UUID соответствуют этому стандарту (эти два бита означают вариант 2). Если это так, то не все GUID соответствуют UUID МСЭ-T / ISO / IEC, поскольку совместимые UUID МСЭ-T / ISO / IEC могут быть только вариант 2 значения.
Следовательно, реальный ответ также зависит от того, какую спецификацию UUID задает вопрос. Предполагая, что мы четко говорим обо всех UUID, а не только о UUID варианта 2: между UUID GUID и IETF нет различий , а между GUID и *1097*, UUID МСЭ-T / ISO / IEC!
Двоичные кодировки могут отличаться
При кодировании в двоичном формате (в отличие от читаемого человеком текстового формата) GUID может быть сохранен в структуре с четырьмя различными полями, как указано ниже. Этот формат отличается от стандарта UUID только порядком байтов первых 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