특징:
GUID/UUID 는 특정 알고리즘에 의해 생성된 이진 길이가 128 비트인 숫자입니다.
공간과 시간면에서 유일하며, 같은 시간에 다른 곳에서 나오는 숫자가 다르다는 것을 보증한다. (존 F. 케네디, 시간명언)
기원 3400 년 이전에 생성된 UUID/GUID 는 생성된 다른 uuid/GUID 와 다릅니다.
GUID 가 필요한 경우 알고리즘에 의해 자동으로 생성될 수 있으며 이를 관리할 권한이 필요하지 않습니다.
GUID 길이는 상대적으로 짧으며 정렬, 식별 및 저장에 적합합니다.
사용:
특정 구성 요소, 프로그램, 파일, 데이터, 사용자 등을 식별합니다. , 그리고 네트워크에서 사용할 수 있습니다.
형식:
UUID 문자열 형식은 다음 EBNF 언어로 설명할 수 있습니다.
UUID =<;; Time _ low> "-"< Time _ mid & gt"- "
& lt 최대 시간 및 버전 & gt"- "
& lt 시계 _ 시퀀스 _ 및 _ 예약>
& ltclock _ seq _ low> "-"< 노드>
Time _ low = 4 * & lthexOctet & gt
Time _ mid = 2 * & lthexOctet & gt
Time _ high _ and _ version = 2 * & lthexoctet & gt
Clock _ seq _ and _ reserved = & lthexoctet & gt
Clock _ seq _ low = & lthexOctet & gt
노드 = 6 * & lthexoctet & gt
Hexoctet = & lthexdigit & gt & lthexdigit & gt
16 진수 =
"0" | "1"| "2" | "3" | "4" | "5" | "6" | "7" | "8" | ";
| "a" | "b" | "c" | "d" | "e" | "f "
| "A" | "B" | "C" | "D" | "E" | "F "
예: F81d4fae-7dec-11d0-a765-00 a0c91EEC
알고리즘:
GUID 의 알고리즘은 고유하지 않으며 여러 가지 방법으로 생성할 수 있습니다.
GUID 생성기는 시간별로 식별될 뿐만 아니라 네트워크 카드의 48 비트 IEEE 802 주소를 사용할 수 있는 장소도 고유하게 식별합니다.
GUID 의 128 비트는 16 바이트로 나눌 수 있습니다. 처음 8 바이트는 시간과 버전 번호이고, 중간 2 바이트는 UUID 변수와 시계 서수이며, 마지막 6 바이트는 위치를 식별합니다.
0 1 2 3
012 3 4 5 7 8 9 012 3 4 5 6 7 8 9 012 3 4 5 7 8 9 01
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 최소 시간 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_mid | time_hi_and_version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 클럭 시퀀스 고해상도 | 클럭 시퀀스 저해상도 | 노드 (0- 1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 노드 (2-5) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
UUID 변수는 9 번째 바이트의 처음 3 위에 있으며 네 가지 정의가 있습니다.
Msb0 Msb 1 Msb2 설명
0-예약됨. NCS 는 이전 버전과 호환됩니다.
1 0-이 문서에 지정된 변형.
1 1 0 예약, Microsoft 는 뒤로
화목하게 지내다
1 1 1 향후 정의를 위해 예약됩니다.
버전 번호는 7 번째 바이트의 처음 4 비트에 있습니다.
Msb0 Msb 1 Msb2 Msb3 버전 설명
0 0 0 0 1 1 시간 기반 버전
여기에 지정
문서.
0 0 0 1 0 2 DCE 예약
안전판, 포함
임베디드 POSIX UIDs.
0 0 0 1 1 3 이름 기반 버전
여기에 지정
문서
0 1 0 0 4 임의 또는 의사
무작위로 생성됨
버전은 에서 지정합니다
이 서류
타임스탬프 (타임스탬프)
UUID 버전 1, UTC 시간은 15 년 10 월 1582 의 00: 00: 00.00 부터 시작됩니다.
UTC 시간이 없는 경우에도 현지 시간을 사용할 수 있습니다. 시스템에서 일관성을 유지하는 한 사용하지 않는 것이 좋습니다.
현지 시간과 UTC 시간은 시차 문제일 뿐이다.
UTC-세계 조정 시
네임스페이스로부터 60 비트 숫자를 생성하는 UUID 버전 3.
UUID 버전 4, 임의 또는 의사 랜덤 생성 60 비트 숫자.
시계 순서
UUID 버전 1, 클럭 서수는 시계가 느려진 후의 반복을 방지하는 데 사용됩니다. 예를 들어, 네트워크 카드를 다른 컴퓨터로 옮기거나 전원을 끕니다.
이전 시계 일련 번호를 알고 있다면 1 을 추가합니다. 그렇지 않으면 무작위로 생성됩니다. 난수 시드를 대체하여 반복 가능성을 줄입니다.
UUID 버전 3, 네임스페이스로부터 14 숫자를 생성합니다.
위치 (노드) 의 id
UUID 버전 1, 호스트의 IEEE 주소 사용, 시스템에 IEEE 802 주소가 여러 개 있는 경우 둘 중 하나를 선택합니다.
IEEE 주소가 없는 경우 임의 또는 의사 랜덤 으로 설정하고 네트워크 카드의 주소와 다른지 확인합니다 (섹션 4 참조).
네임스페이스로부터 48 자리 숫자를 생성하는 UUID 버전 3.
UUID 버전 4, 임의 또는 의사 랜덤 생성 48 비트 숫자.
참고 자료:
Http://www.ics.uci.edu/~ ejw/authoring/uuid-guid/draft-leach-uuids-guids.