Programing

GUID와 UUID간에 차이점이 있습니까?

lottogame 2020. 9. 29. 07:08
반응형

GUID와 UUID간에 차이점이 있습니까?


이 두 가지 약어가 던져져 있는데 GUID와 UUID 사이에 차이점이 있는지 궁금합니다.


대답은 간단 하다 : 차이는 , 그들은 같은 일을하지 않습니다. 고유 한 값으로 사용되는 16 바이트 (128 비트) 값으로 처리하십시오. Microsoft-speak에서는 GUID라고 부르지 만 Microsoft-speak를 사용하지 않을 때는 UUID라고합니다.

UUID 사양 및 Microsoft의 작성자조차도 동의어라고 주장합니다.

  • IETF RFC 4122 소개에서 " UUID (Universally Unique IDentifier) ​​URN 네임 스페이스 ": "GUID (Globally Unique IDentifier)라고도하는 UUID (Universally Unique IDentifier)에 대한 Uniform Resource Name 네임 스페이스")

  • 로부터 ITU-T 권고 X.667, ISO / IEC 9834-8 : 2004 국제 표준 : "UUID를도 전역 고유 식별자 (GUID)로 알려져 있지만,이 용어는이 표준에서 사용되지 않습니다."

  • Microsoft 는 GUID가 UUID RFC에 의해 지정 된다고 주장 합니다. "Microsoft Windows 프로그래밍 및 Windows 운영 체제에서 [RFC4122]에 지정된 GUID (Globally Unique Identifier)는 ... UUID라는 용어 )는 Windows 프로토콜 사양에서 GUID의 동의어로 사용되기도합니다. "

그러나 정답 은 질문이 "UUID"라고 말할 때 의미하는 바에 따라 다릅니다.

첫 번째 부분은 질문자가 "UUID"를 말할 때 생각하는 것에 달려 있습니다.

Microsoft의 주장은 모든 UUID가 GUID임을 의미합니다. 그러나 모든 GUID가 실제 UUID입니까? 즉, 모든 UUID 집합이 모든 GUID 집합의 적절한 하위 집합입니까, 아니면 정확히 동일한 집합입니까?

RFC 4122의 세부 사항을 살펴보면 UUID의 4 가지 "변형"이 있습니다. 이는 대부분 UUID 사양을 만들 때 해당 사양이 통합되기 전에 이러한 16 바이트 식별자가 사용 되었기 때문입니다. RFC 4122 의 섹션 4.1.1 에서 UUID 의 네 가지 변형 은 다음과 같습니다.

  1. 예약, 네트워크 컴퓨팅 시스템 이전 버전과의 호환성
  2. 변형 RFC 4122에 지정된는 (이 중 "버전"이라고 다섯 하위 변종이 있습니다)
  3. 예약 됨, Microsoft Corporation 이전 버전과의 호환성
  4. 향후 정의를 위해 예약되어 있습니다.

RFC 4122에 따르면 모든 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의 정의로 사용되는 사양에 따라 다릅니다.

혼란 스럽다고 생각되면 RFC 4122 와 완벽하게 기술적으로 호환되고 정렬되어야 하는 ITU-T X.667 ISO / IEC 9834-8 : 2004읽어보십시오 . 11.2 절에는 "이 권고 | 국제 표준을 준수하는 모든 UUID는 옥텟 7의 비트 7이 1로 설정되고 옥텟 7의 비트 6이 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 다음과 같이 4 개의 다른 필드가있는 구조에 저장 될 수 있습니다 . 이 형식은 처음 3 개 필드의 바이트 순서 만 UUID 표준 과 다릅니다 .

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는 Microsoft의 UUID 표준 구현입니다.

위키 백과 :

The term GUID usually refers to Microsoft's implementation of the Universally Unique Identifier (UUID) standard.

An updated quote from that same Wikipedia article:

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…


Not really. GUID is more Microsoft-centric whereas UUID is used more widely (e.g., as in the urn:uuid: URN scheme, and in CORBA).


GUID has longstanding usage in areas where it isn't necessarily a 128-bit value in the same way as a UUID. For example, the RSS specification defines GUIDs to be any string of your choosing, as long as it's unique, with an "isPermalink" attribute to specify that the value you're using is just a permalink back to the item being syndicated.


Microsoft's GUID's textual representation can be in the form of a UUID being surrounded by two curly braces {}.


One difference between GUID in SQL Server and UUID in PostgreSQL is letter case; SQL Server outputs upper while PostgreSQL outputs lower.

The hexadecimal values "a" through "f" are output as lower case characters and are case insensitive on input. - rfc4122#section-3

참고URL : https://stackoverflow.com/questions/246930/is-there-any-difference-between-a-guid-and-a-uuid

반응형