メインコンテンツまでスキップ

3. Namespace Registration Template (名前空間登録テンプレート)

Namespace ID (名前空間 ID): UUID

Registration Information (登録情報):

  • Registration date (登録日): 2003-10-01

Declared registrant of the namespace (名前空間の宣言登録者):

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

Declaration of syntactic structure (構文構造の宣言):

UUID は, すべての UUID の空間に関して, 空間と時間の両方にわたって一意である識別子です。UUID は固定サイズであり, 時間フィールドを含むため, 値がロールオーバーする可能性があります (使用される特定のアルゴリズムに応じて, 西暦 3400 年頃)。UUID は, 非常に短い寿命を持つオブジェクトのタグ付けから, ネットワーク全体で非常に永続的なオブジェクトを確実に識別することまで, 複数の目的に使用できます。

UUID の内部表現は, セクション 4 で説明されているように, メモリ内の特定のビットシーケンスです。UUID を URN として正確に表現するには, ビットシーケンスを文字列表現に変換する必要があります。

各フィールドは整数として扱われ, その値は最上位桁を最初にして, ゼロ埋めされた 16 進数字文字列として出力されます。16 進値 "a" から "f" は小文字として出力され, 入力時は大文字小文字を区別しません。

UUID 文字列表現の正式な定義は, 次の ABNF [7] によって提供されます:

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"

以下は, URN としての UUID の文字列表現の例です:

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

Relevant ancillary documentation (関連する補助文書):

  • [1][2]

Identifier uniqueness considerations (識別子の一意性に関する考察):

本文書は, UUID を生成するための 3 つのアルゴリズムを指定しています: 最初のものは 802 MAC アドレスの一意の値を活用して一意性を保証し, 2 番目のものは疑似乱数生成器を使用し, 3 番目のものは暗号ハッシュとアプリケーション提供のテキスト文字列を使用します。その結果, ここでのメカニズムに従って生成された UUID は, 割り当てられた, または割り当てられる予定の他のすべての UUID から一意になります。

Identifier persistence considerations (識別子の永続性に関する考察):

UUID は本質的にグローバルな意味で解決することが非常に困難です。これは, UUID がその空間コンテキスト内で一時的に一意であるという事実と相まって, UUID が可能な限り永続的であることを保証します。

Process of identifier assignment (識別子割り当てのプロセス):

UUID を生成するには, 登録機関に連絡する必要はありません。一つのアルゴリズムは, 各ジェネレーターに対して空間上の一意の値を必要とします。この値は通常 IEEE 802 MAC アドレスであり, ネットワーク接続されたホストでは通常すでに利用可能です。アドレスは, IEEE 登録機関から取得したアドレスブロックから割り当てることができます。そのようなアドレスが利用できない場合, またはプライバシーの懸念により使用が望ましくない場合, セクション 4.5 では 2 つの代替案を指定しています。別のアプローチは, 以下に定義されているバージョン 3 またはバージョン 4 UUID を使用することです。

Process for identifier resolution (識別子解決のプロセス):

UUID はグローバルに解決可能ではないため, これは適用されません。

Rules for Lexical Equivalence (字句等価性のルール):

セクション 4.1.2 の表に示されているように, UUID の各フィールドを符号なし整数と見なします。次に, 一対の UUID を比較するには, 各 UUID から対応するフィールドを重要度順に, そのデータ型に従って算術的に比較します。対応するすべてのフィールドが等しい場合にのみ, 2 つの UUID は等しくなります。

実装上の注意として, 適切なバイト順の正規化を実行し, 次に 2 つの UUID を 128 ビット符号なし整数として扱うことにより, 多くのシステムで等価性比較を実行できます。

本文書で定義されている UUID は, 辞書式順序でも並べ替えることができます。一対の UUID の場合, UUID が異なる最上位フィールドが最初の UUID に対してより大きい場合, 最初のものは 2 番目のものに続きます。UUID が異なる最上位フィールドが 2 番目の UUID に対してより大きい場合, 2 番目のものは最初のものに先行します。

Conformance with URN Syntax (URN 構文への準拠):

UUID の文字列表現は, URN 構文と完全に互換性があります。ビット指向のメモリ内 UUID 表現から URN に変換する場合, 文字列表現セクションで言及されているバイト順の問題に厳密に従うように注意する必要があります。

Validation mechanism (検証メカニズム):

UUID のタイムスタンプ部分が将来にあり, したがってまだ割り当て可能ではないかどうかを判断する以外に, UUID が「有効」かどうかを判断するメカニズムはありません。

Scope (範囲):

UUID の範囲はグローバルです。