Their uniqueness does not depend on a central registration authority or coordination between the parties generating them, unlike most other numbering schemes.
Information labeled with UUIDs by independent parties can therefore be later combined into a single database or transmitted on the same channel, with a negligible probability of duplication.
Later, the Open Software Foundation (OSF) used UUIDs for their Distributed Computing Environment (DCE).
the Microsoft Windows platforms adopted the DCE design as "Globally Unique IDentifiers" (GUIDs).
RFC 4122 registered a URN namespace for UUIDs and recapitulated the earlier specifications, with the same technical content.
UUIDs are standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE).
[7][8] UUIDs are documented as part of ISO/IEC 11578:1996 "Information technology – Open Systems Interconnection – Remote Procedure Call (RPC)" and more recently in ITU-T Rec.
Version 1 concatenates the 48-bit MAC address of the "node" (that is, the computer generating the UUID), with a 60-bit timestamp, being the number of 100-nanosecond intervals since midnight 15 October 1582 Coordinated Universal Time (UTC), the date on which the Gregorian calendar was first adopted by the bulk of Europe.
RFC 4122 states that the time value rolls over around 3400 AD,[2]: 3 depending on the algorithm used, which implies that the 60-bit timestamp is a signed quantity.
However some software, such as the libuuid library, treats the timestamp as unsigned, putting the rollover time in 5623 AD.
[2] In contrast to other UUID versions, version-1 and -2 UUIDs based on MAC addresses from network cards rely for their uniqueness in part on an identifier issued by a central registration authority, namely the Organizationally Unique Identifier (OUI) part of the MAC address, which is issued by the IEEE to manufacturers of networking equipment.
[14] The uniqueness of version-1 and version-2 UUIDs based on network-card MAC addresses also depends on network-card manufacturers properly assigning unique MAC addresses to their cards, which like other manufacturing processes is subject to error.
Virtual machines receive a MAC address in a range that is configurable in the hypervisor.
[15] Additionally some operating systems permit the end user to customise the MAC address, notably OpenWRT.
Documents can sometimes be traced to the computers where they were created or edited through UUIDs embedded into them by word processing software.
In that case, the RFC requires that the least significant bit of the first octet of the node ID should be set to 1.
RFC 9562 reserves version 2 for "DCE security" UUIDs; but it does not provide any details.
[8] Version-2 UUIDs are similar to version 1, except that the least significant 8 bits of the clock sequence are replaced by a "local domain" number, and the least significant 32 bits of the timestamp are replaced by an integer identifier meaningful within the specified local domain.
Per RFC 9562, the seventh octet's most significant 4 bits indicate which version the UUID adheres to.
[19] Version 7 UUIDs (UUIDv7) are designed for keys in high-load databases and distributed systems.
UUIDv7 begins with a 48 bit big-endian Unix Epoch timestamp with approximately millisecond granularity.
For example, 00112233-4455-6677-8899-aabbccddeeff is encoded as the bytes 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff.
[23] For example, 00112233-4455-6677-8899-aabbccddeeff is encoded as the bytes 33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff.
The family field comes directly after the first dot, so in this case 0d (13 in decimal) for DDS (Data Distribution Service).
[28] Significant uses include ext2/ext3/ext4 filesystem userspace tools (e2fsprogs uses libuuid provided by util-linux), LVM, LUKS encrypted partitions, GNOME, KDE, and macOS,[29] most of which are derived from the original implementation by Theodore Ts'o.
The superblock is a part of the file system, thus fully contained within the partition, hence doing dd if=/dev/sda1 of=/dev/sdb1 leaves both sda1 and sdb1 with the same label and UUID.
There are several flavors of GUIDs used in Microsoft's Component Object Model (COM): UUIDs are commonly used as a unique key in database tables.
The NEWID function in Microsoft SQL Server version 4 Transact-SQL returns standard random version-4 UUIDs, while the NEWSEQUENTIALID function returns 128-bit identifiers similar to UUIDs which are committed to ascend in sequence until the next system reboot.
For example, in 2002 Jimmy Nilsson reported a significant improvement in performance with Microsoft SQL Server when the version-4 UUIDs being used as keys were modified to include a non-random suffix based on system time.
[39] By reordering and encoding version 1 and 2 UUIDs so that the timestamp comes first, insertion performance loss can be averted.