Aller au contenu principal

3. Namespace Registration Template (Modèle d'enregistrement d'espace de noms)

Namespace ID (ID d'espace de noms) : UUID

Registration Information (Informations d'enregistrement) :

  • Registration date (Date d'enregistrement) : 2003-10-01

Declared registrant of the namespace (Déclarant de l'espace de noms) :

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

Declaration of syntactic structure (Déclaration de la structure syntaxique) :

Un UUID est un identifiant unique à travers l'espace et le temps, par rapport à l'espace de tous les UUID. Étant donné qu'un UUID a une taille fixe et contient un champ temporel, il est possible que les valeurs se répètent (vers l'an 3400 après J.-C., selon l'algorithme spécifique utilisé). Un UUID peut être utilisé à de multiples fins, depuis le marquage d'objets ayant une durée de vie extrêmement courte jusqu'à l'identification fiable d'objets très persistants sur un réseau.

La représentation interne d'un UUID est une séquence spécifique de bits en mémoire, comme décrit dans la section 4. Pour représenter précisément un UUID en tant qu'URN, il est nécessaire de convertir la séquence de bits en une représentation sous forme de chaîne.

Chaque champ est traité comme un entier et sa valeur est imprimée sous forme de chaîne de chiffres hexadécimaux remplie de zéros, le chiffre le plus significatif en premier. Les valeurs hexadécimales "a" à "f" sont affichées en minuscules et ne sont pas sensibles à la casse en entrée.

La définition formelle de la représentation sous forme de chaîne de l'UUID est fournie par l'ABNF [7] suivant :

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"

Voici un exemple de représentation sous forme de chaîne d'un UUID en tant qu'URN :

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

Relevant ancillary documentation (Documentation auxiliaire pertinente) :

  • [1][2]

Identifier uniqueness considerations (Considérations relatives à l'unicité de l'identifiant) :

Ce document spécifie trois algorithmes pour générer des UUID : le premier exploite les valeurs uniques des adresses MAC 802 pour garantir l'unicité, le second utilise des générateurs de nombres pseudo-aléatoires et le troisième utilise le hachage cryptographique et des chaînes de texte fournies par l'application. Par conséquent, les UUID générés selon les mécanismes décrits ici seront uniques par rapport à tous les autres UUID qui ont été ou seront attribués.

Identifier persistence considerations (Considérations relatives à la persistance de l'identifiant) :

Les UUID sont intrinsèquement très difficiles à résoudre dans un sens global. Ceci, couplé au fait que les UUID sont temporellement uniques dans leur contexte spatial, garantit que les UUID resteront aussi persistants que possible.

Process of identifier assignment (Processus d'attribution d'identifiant) :

La génération d'un UUID ne nécessite pas de contacter une autorité d'enregistrement. Un algorithme nécessite une valeur unique dans l'espace pour chaque générateur. Cette valeur est généralement une adresse MAC IEEE 802, habituellement déjà disponible sur les hôtes connectés au réseau. L'adresse peut être attribuée à partir d'un bloc d'adresses obtenu auprès de l'autorité d'enregistrement IEEE. Si une telle adresse n'est pas disponible ou si les préoccupations en matière de confidentialité rendent son utilisation indésirable, la section 4.5 spécifie deux alternatives. Une autre approche consiste à utiliser les UUID version 3 ou version 4 tels que définis ci-dessous.

Process for identifier resolution (Processus de résolution d'identifiant) :

Étant donné que les UUID ne sont pas résolvables globalement, cela n'est pas applicable.

Rules for Lexical Equivalence (Règles d'équivalence lexicale) :

Considérez chaque champ de l'UUID comme un entier non signé comme indiqué dans le tableau de la section 4.1.2. Ensuite, pour comparer une paire d'UUID, comparez arithmétiquement les champs correspondants de chaque UUID par ordre d'importance et selon leur type de données. Deux UUID sont égaux si et seulement si tous les champs correspondants sont égaux.

En tant que note d'implémentation, la comparaison d'égalité peut être effectuée sur de nombreux systèmes en effectuant la canonicalisation appropriée de l'ordre des octets, puis en traitant les deux UUID comme des entiers non signés de 128 bits.

Les UUID, tels que définis dans ce document, peuvent également être ordonnés lexicographiquement. Pour une paire d'UUID, le premier suit le second si le champ le plus significatif dans lequel les UUID diffèrent est plus grand pour le premier UUID. Le second précède le premier si le champ le plus significatif dans lequel les UUID diffèrent est plus grand pour le second UUID.

Conformance with URN Syntax (Conformité à la syntaxe URN) :

La représentation sous forme de chaîne d'un UUID est entièrement compatible avec la syntaxe URN. Lors de la conversion d'une représentation en mémoire orientée bits d'un UUID en URN, il faut veiller à respecter strictement les problèmes d'ordre des octets mentionnés dans la section de représentation sous forme de chaîne.

Validation mechanism (Mécanisme de validation) :

Outre la détermination de savoir si la partie horodatage de l'UUID est dans le futur et donc pas encore attribuable, il n'existe aucun mécanisme pour déterminer si un UUID est "valide".

Scope (Portée) :

Les UUID ont une portée mondiale.