{{위키데이터 속성 추적}}
[[파일:UEFI variables on Linux screenshot.png|thumb]]
'''범용 고유 식별자'''(汎用固有識別子, {{llang|en|universally unique identifier}}, UUID)는 [[소프트웨어]] 구축에 쓰이는 식별자 표준으로, [[개방 소프트웨어 재단]](OSF)이 [[분산 컴퓨팅 환경]](DCE)의 일부로 표준화하였다.

== 역사 ==
UUID는 원래 [[네트워크 컴퓨팅 시스템|아폴로 네트워크 컴퓨팅 시스템]](NCS)에서 사용되었다가 나중에 [[개방 소프트웨어 재단]](OSF)의 [[분산 컴퓨팅 환경]](DCE)에서 사용되었다. DCE UUID의 초기 설계는 NCS UUID에 기반을 두었으며<ref>{{서적 인용
  | last = Zahn
  | first = Lisa
  | title = Network Computing Architecture
  | page = 10
  | publisher = [[Prentice Hall]]
  | year = 1990
  | isbn = 0-13-611674-4 }}</ref>, 여기서 디자인은 아폴로 컴퓨터가 설계한 [[운영 체제]]인 [[도메인/OS]]에 정의되고 사용된 [[64비트 컴퓨팅|64비트]] 고유 식별자의 영향을 받았다.

== 개요 ==
네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해서는 각각의 고유한 이름이 필요하다. 이 이름은 고유성(유일성)이 매우 중요하다. 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. 고유성을 완벽하게 보장하려면 중앙관리시스템이 있어서 일련번호를 부여해 주면 간단하지만 동시다발적이고 독립적으로 개발되고 있는 시스템들의 경우 중앙관리시스템은 불가능하다. 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.

== 정의 ==
UUID는 16 [[옥텟]] (128[[비트 (단위)|비트]])의 수이다. [[표준 형식 (수학)|표준 형식]]에서 UUID는 32개의 [[십육진법|십육진수]]로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다. 이를테면 다음과 같다.
: 550e8400-e29b-41d4-a716-446655440000
340,282,366,920,938,463,463,374,607,431,768,211,456개의 사용 가능한 UUID가 있다.

8-4-4-4-12 포맷 문자열은 16바이트의 UUID를 위한 레코드 레이아웃에 기반을 둔다:<ref name="RFC 4122">{{cite IETF|title=A Universally Unique IDentifier (UUID) URN Namespace|rfc=4122|first1=P.|last1=Leach|first2=M.|last2=Mealling|first3=R.|last3=Salz|publisher=[[국제 인터넷 표준화 기구]]|year=2005|month=July|accessdate=2017-01-17}}</ref>
{| class="wikitable"
|+ UUID 레코드 레이아웃
|-
! 이름
! 길이 (byte)
!길이 (hex)
!길이 (bits)
! 내용
|-
| time_low
| 4
|8
|32
| 시간의 low 32비트를 부여하는 정수
|-
| time_mid
| 2
|4
|16
| 시간의 middle 16비트를 부여하는 정수
|-
| time_hi_and_version
| 2
|4
|16
| 최상위 비트에서 4비트 "version", 그리고 시간의 high 12비트
|-
| clock_seq_hi_and_res  clock_seq_low
| 2
|4
|16
| 최상위 비트에서 1-3비트는 UUID의 레이아웃형식, 그리고 13-15비트 클럭 시퀀스
|-
| node
| 6
|12
|48
| 48비트 노드 id
|}

== 버전 ==
* 버전 1 (MAC 주소)
* 버전 2 (DCE 보안)
* 버전 3 (MD5 해시)
* 버전 4 (랜덤)
* 버전 5 (SHA-1 해시)

== 이 식별자를 사용하는 언어 / 시스템 ==
* 액션스크립트
* 아파치 Solr
* C
* C++
* Caché 오브젝트스크립트
* CakePHP
* 코코아/카본 (OS X)
* 코드기어 라드 스튜디오 (델파이/C++빌더)
* 코드퓨전
* 커먼 리스프
* CouchDB
* D
* 에펠
* Erlang
* 파이어버드 서버
* 프리 파스칼 & 라자루스 IDE
* 해스켈
* Haxe
* 자바
* 자바스크립트
* KohanaPHP
* Lasso
* 루아
* OS X
* MySQL
* 닷넷 프레임워크
* OCaml
* 오라클 데이터베이스
* 펄
* PHP
* PostgreSQL
* 프로그레스 오픈에지 ABL
* 파이썬
* 레볼루션/RunRev
* 루비
* SAP 비즈니스오브젝트 데이터 서비스
* SQL 서버
* Tcl
* 유닉스
* Openstack

== 같이 보기 ==
* [[생일 공격]]
* [[통합 자원 식별자]]
== 각주 ==
{{각주}}

== 외부 링크 ==
* [http://www.itu.int/rec/T-REC-X.667/en International Standard "X.667 : … Generation … of Universally Unique Identifiers (UUIDs)…"] (ITU-T Rec. X.667 as of 2008-08, freely available)
* [http://www.itu.int/ITU-T/studygroups/com17/oid.html International Standard "Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components"] (ITU-T Rec. X.667 | ISO/IEC 9834-8, freely available)
* [https://web.archive.org/web/20170726052655/http://www.ietf.org/rfc/rfc4122.txt A Universally Unique IDentifier (UUID) URN Namespace] (IETF RFC 4122)
* [http://www.famkruithof.net/uuid/uuidgen?typeReq=-1 Extract the time from a version 1 UUID / GUID]
* [http://www.itu.int/ITU-T/asn1/uuid.html Global UUID registration function at ITU-T]

[[분류:식별자]]
[[분류:고유 식별자]]