Zum Hauptinhalt springen

3. Namensraum-Registrierungsvorlage (Namespace Registration Template)

Namensraum-ID (Namespace ID): UUID

Registrierungsinformationen (Registration Information):

  • Registrierungsdatum: 2003-10-01

Erklärter Registrant des Namensraums (Declared registrant of the namespace):

  • JTC 1/SC6 (ASN.1 Rapporteur Group)

Deklaration der syntaktischen Struktur (Declaration of syntactic structure):

Eine UUID ist ein Bezeichner, der sowohl über Raum als auch über Zeit eindeutig ist, bezogen auf den Raum aller UUIDs. Da eine UUID eine feste Größe hat und ein Zeitfeld enthält, ist es möglich, dass Werte überlaufen (um das Jahr 3400 n. Chr., abhängig vom verwendeten spezifischen Algorithmus). Eine UUID kann für mehrere Zwecke verwendet werden, vom Markieren von Objekten mit einer extrem kurzen Lebensdauer bis zur zuverlässigen Identifizierung sehr persistenter Objekte über ein Netzwerk hinweg.

Die interne Darstellung einer UUID ist eine spezifische Sequenz von Bits im Speicher, wie in Abschnitt 4 beschrieben. Um eine UUID genau als URN darzustellen, ist es notwendig, die Bitsequenz in eine Zeichenkettendarstellung zu konvertieren.

Jedes Feld wird als Ganzzahl behandelt und sein Wert wird als eine mit Nullen aufgefüllte hexadezimale Zeichenkette mit der bedeutendsten Ziffer zuerst ausgegeben. Die hexadezimalen Werte "a" bis "f" werden als Kleinbuchstaben ausgegeben und sind bei der Eingabe nicht case-sensitiv.

Die formale Definition der UUID-Zeichenkettendarstellung wird durch die folgende ABNF [7] bereitgestellt:

UUID                   = time-low "-" time-mid "-"
time-high-and-version "-"
clock-seq-and-reserved
clock-seq-low "-" node
time-low = 4hexOctet
time-mid = 2hexOctet
time-high-and-version = 2hexOctet
clock-seq-and-reserved = hexOctet
clock-seq-low = hexOctet
node = 6hexOctet
hexOctet = hexDigit hexDigit
hexDigit =
"0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" /
"a" / "b" / "c" / "d" / "e" / "f" /
"A" / "B" / "C" / "D" / "E" / "F"

Folgendes ist ein Beispiel für die Zeichenkettendarstellung einer UUID als URN:

urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

Relevante Begleitdokumentation (Relevant ancillary documentation):

  • [1][2]

Überlegungen zur Eindeutigkeit von Bezeichnern (Identifier uniqueness considerations):

Dieses Dokument spezifiziert drei Algorithmen zur Generierung von UUIDs: Der erste nutzt die eindeutigen Werte von 802-MAC-Adressen, um Eindeutigkeit zu garantieren, der zweite verwendet Pseudozufallszahlengeneratoren, und der dritte verwendet kryptographisches Hashing und von der Anwendung bereitgestellte Textzeichenketten. Als Ergebnis werden die gemäß den hier beschriebenen Mechanismen generierten UUIDs eindeutig von allen anderen UUIDs sein, die zugewiesen wurden oder zugewiesen werden.

Überlegungen zur Persistenz von Bezeichnern (Identifier persistence considerations):

UUIDs sind von Natur aus sehr schwer im globalen Sinne aufzulösen. Dies, zusammen mit der Tatsache, dass UUIDs innerhalb ihres räumlichen Kontexts zeitlich eindeutig sind, stellt sicher, dass UUIDs so persistent wie möglich bleiben werden.

Prozess der Bezeichnerzuweisung (Process of identifier assignment):

Die Generierung einer UUID erfordert nicht, dass eine Registrierungsbehörde kontaktiert wird. Ein Algorithmus erfordert einen über den Raum eindeutigen Wert für jeden Generator. Dieser Wert ist typischerweise eine IEEE 802-MAC-Adresse, die normalerweise bereits auf netzwerkverbundenen Hosts verfügbar ist. Die Adresse kann aus einem Adressblock zugewiesen werden, der von der IEEE-Registrierungsbehörde erhalten wurde. Wenn keine solche Adresse verfügbar ist oder Datenschutzbedenken ihre Verwendung unerwünscht machen, spezifiziert Abschnitt 4.5 zwei Alternativen. Ein anderer Ansatz besteht darin, UUIDs der Version 3 oder Version 4 zu verwenden, wie unten definiert.

Prozess zur Bezeichnerauflösung (Process for identifier resolution):

Da UUIDs nicht global auflösbar sind, ist dies nicht anwendbar.

Regeln für lexikalische Äquivalenz (Rules for Lexical Equivalence):

Betrachten Sie jedes Feld der UUID als vorzeichenlose Ganzzahl, wie in der Tabelle in Abschnitt 4.1.2 gezeigt. Um dann ein UUID-Paar zu vergleichen, vergleichen Sie arithmetisch die entsprechenden Felder jeder UUID in der Reihenfolge ihrer Bedeutung und gemäß ihrem Datentyp. Zwei UUIDs sind genau dann gleich, wenn alle entsprechenden Felder gleich sind.

Als Implementierungshinweis kann der Gleichheitsvergleich auf vielen Systemen durchgeführt werden, indem die entsprechende Byte-Reihenfolge-Kanonisierung durchgeführt wird und dann die beiden UUIDs als 128-Bit-vorzeichenlose Ganzzahlen behandelt werden.

UUIDs, wie in diesem Dokument definiert, können auch lexikographisch geordnet werden. Für ein UUID-Paar folgt die erste der zweiten, wenn das bedeutendste Feld, in dem sich die UUIDs unterscheiden, für die erste UUID größer ist. Die zweite geht der ersten voraus, wenn das bedeutendste Feld, in dem sich die UUIDs unterscheiden, für die zweite UUID größer ist.

Konformität mit URN-Syntax (Conformance with URN Syntax):

Die Zeichenkettendarstellung einer UUID ist vollständig kompatibel mit der URN-Syntax. Bei der Konvertierung von einer bitorientierten In-Memory-Darstellung einer UUID in eine URN muss darauf geachtet werden, die im Abschnitt zur Zeichenkettendarstellung erwähnten Byte-Reihenfolge-Probleme strikt einzuhalten.

Validierungsmechanismus (Validation mechanism):

Abgesehen von der Feststellung, ob der Zeitstempelteil der UUID in der Zukunft liegt und daher noch nicht zuweisbar ist, gibt es keinen Mechanismus zur Feststellung, ob eine UUID „gültig" ist.

Geltungsbereich (Scope):

UUIDs sind global im Geltungsbereich.