•  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

UUID(r43 Blame)

r43
r1
(삭제된 사용자)
1[[분류:식별 번호]][[분류:컴퓨터 공학]]
2[목차]
3[clearfix]
4== 개요 ==
5{{{+2 '''U'''niversally '''U'''nique '''Id'''entifier, UUID}}}
6
7다양한 분야에서 활용되는 고유 식별자 표준이다.
8
r42
9[[https://www.browserling.com/tools/random-uuid|여기]]서 UUID를 생성해 볼 수 있으며 [[https://devina.io/uuid-generator|#]]도 있다.
r27
10
r1
(삭제된 사용자)
11== 구성 ==
r43
12||<tablealign=center> a6446790-d3a6-'''4'''583-8f68-0f766f5f3800 ||
r1
(삭제된 사용자)
13|| UUID 버전 4 예시 ||
r43
14128비트 형식으로 [[16진수]] 32개와 4개의 하이픈(-)을 조합한 8-4-4-4-12의 패턴으로 구성되어 있으며, 13번째에 있는 '''볼드체'''는 UUID 버전을 의미한다.
r1
(삭제된 사용자)
15
16== 버전 ==
17버전 1부터 8까지 존재하며 버전 별로 생성 방식이 다르다. 가장 흔히 쓰이는 버전 4는 무작위 생성 방식을 가지고 있다.
18 * '''버전 1''': [[MAC 주소]]와 타임스탬프를 사용해 고유성을 보장하는 UUID로, 생성 시점과 장치 정보를 포함한다.
19 * '''버전 2''': DCE 보안 목적의 UUID로, 실제로는 거의 사용되지 않으며 대부분의 구현체에서 생략된다.
r2
(삭제된 사용자)
20 * '''버전 3''': 128비트의 [[MD5]] 해시 함수를 사용해 네임스페이스와 이름으로부터 결정론적으로 UUID를 생성한다.
r31
21 * '''버전 4''': 완전히 무작위로 생성되는 UUID로, 122비트를 랜덤하게 채워 매우 높은 고유성을 제공한다. [[the seed]]에서 채용한 버전의 UUID이며, Minecraft 계정 등에서도 가장 널리 사용되는 UUID 버전이다.
r2
(삭제된 사용자)
22 * '''버전 5''': 160비트의 [[SHA-1]] 해시 함수를 사용해 '''버전 3'''과 유사하게 작동하지만, 더 안전한 해시 알고리즘을 채택한다.
r1
(삭제된 사용자)
23 * '''버전 6''': '''버전 1'''과 구조는 동일하나, 타임스탬프 비트 순서를 개선해 정렬과 색인이 용이하다.
r29
24 * '''버전 7''': 밀리초 정밀도 타임스탬프와 랜덤 데이터를 결합해 분산 시스템의 키 생성에 최적화된 UUID이다. 타임스탬프 기반으로 생성되기 때문에 정렬이 용이하다.
r1
(삭제된 사용자)
25 * '''버전 8''': 커스터마이징할 수 있는 UUID로, 최소한의 버전/변형 제약만 존재한다.
r18
26=== 상세 ===
r20
27v1과 v6은 그레고리력의 1582년 10월 15일 자정을 기준으로 하여 100나노초를 1틱으로 계산하고 그 값을 60비트로 치환하는 방식을 사용하나, v7은 유닉스 시간을 기반으로 하여 1970년 1월 1일 자정을 기준으로 하고 그 값을 48비트로 치환하는 방식을 사용한다.
r1
(삭제된 사용자)
28
r18
29RFC 4122가 최초 발표되었을 당시에는 v1~5만 있었으나, 9562가 발표된 이후에는 v6~8이 추가되었다.
30
r35
31구분자에 해당하는 UUID의 17번째 인수는 일반적인 경우 RFC 4122에서 언급된 대로 8, 9, a, b만 사용되나, 네트워크 장비들을 위한 하위 호환에 0~7, c와 d는 Microsoft를 위한 하위 호환이며 f는 후속 규격인 RFC 9562에서 적용된 Max UUID를 위해 사용되었고, e는 아직 정의되지 않았다. [[https://www.rfc-editor.org/rfc/rfc9562.html#name-variant-field|#]]
r19
32
r1
(삭제된 사용자)
33== 기타 ==
r34
34 * [anchor(Nil/Empty UUID)][anchor(Max UUID)] 00000000-0000-0000-0000-000000000000으로 구성된 Nil/Empty UUID 포맷이 존재한다. [[https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.7|#]] 역으로 2진수 기준 모든 비트가 1로 설정된 ffffffff-ffff-ffff-ffff-ffffffffffff로 구성된 Max UUID도 있으나, 후자는 RFC 4122의 대체판인 RFC 9562가 발표됨과 동시에 추가되었다. [[https://www.rfc-editor.org/rfc/rfc9562.html#name-max-uuid|RFC Editor의 RFC 9562 문서 (영문 주의)]]
r14
35 * UUIDv4의 17번째 인수는 8, 9, a, b만 존재할 수 있다. 다시 말해 17번째 인수의 2비트는 [[2진수]] 기준 10으로 고정되어 124비트가 아닌 122비트만 사용되는 것이다. 따라서 '44444444-4444-4444-4444-444444444444' 이런 형식의 UUIDv4는 존재할 수 없다. --설령 가능하다고 해도 [[4자 금기]] 때문에 쓰지 않을지도?--
r1
(삭제된 사용자)
36
37== [[the seed]]에서 ==
38[[the seed]]에서는 계정 변경/삭제 기능이 생긴 후 도입되었으며, 계정 사용자는 계정 생성 즉시, IP 사용자는 최초 활동 즉시 자동 할당된다. IP 사용자의 경우 사람 모양 클릭 시 기여 내역이 없다면 문서/토론 기여 목록 탭이 뜨지 않지만, UUID 할당 이후 해당 페이지로 연결되는 탭이 보인다.
39
r26
40여담으로 [[IP|아이피]]로 어떤 문서를 편집한 후 1시간 내에 이 기여를 로그인한 사용자로 이전한다 해도 해당 [[IP]]에 할당된 UUID는 그대로 유지된다.
r1
(삭제된 사용자)
41
r24
42[[문서]]를 편집할 때마다 생성되는 각 리비전에도 UUID가 부여되며, 각 리비전의 문서 링크도 기존 리비전 넘버에서 UUID로 바뀌었다. [[더시드위키]], [[알파위키]], [[위브위키]]에서는 기존 리비전 형식의 링크를 입력해도 최신 판의 문서만 열람 가능하나 [[나무위키]]에 한해서는 넘겨주기 처리가 되도록 커스텀 패치가 된 것으로 추정된다. [[https://feedback.theseed.io/posts/1236|관련 the seed 포럼 글]]
r8
43
r9
44== 여담 ==
r25
45가끔 [[the seed]] 계열 위키들의 운영진들이 문서를 휴지통화할 때 UUID 4나 7을 표제어로 하여 처리할 때가 있다.
r10
46> ([redacted]에서 휴지통:0199866b-e0b3-7b24-a5c8-53ee9117a6da으로 문서 이동)
r11
47> ----
48> UUID 7 기반 휴지통화 예시
49----
50> (SK하이닉스에서 휴지통:bd1b1573-cf5f-4371-9987-8f7403058688으로 문서 이동)
51> ----
52> UUID 4 기반 휴지통화 예시
r36
53봇 [[RearAlice]]의 자동 휴지통화 처리는 UUIDv7을 이용한다. [[https://www.alphawiki.org/contribution/9a8ab7b4-4b77-41f1-87ac-541cbb360471/document?logtype=move|#]]
r9
54
r1
(삭제된 사용자)
55[각주]
56[include(틀:문서 가져옴/나무위키, title=UUID, version=37)]