Struktur einer UUID
Grundstruktur einer UUID
Eine UUID besteht immer aus 128 Bits = 16 Bytes.
Typische Darstellung:
123e4567-e89b-12d3-a456-426614174000
Aufgeteilt:
8-4-4-4-12 Hex-Zeichen
Das entspricht:
- 32 Bit β 16 Bit β 16 Bit β 16 Bit β 48 Bit
Bit-Level Aufbau (allgemein)
Eine UUID hat zwei wichtige feste Bestandteile:
1. π’ Version (4 Bits)
- Gibt an, wie die UUID erzeugt wurde (v1βv7)
- Sitzt im 3. Block (die ersten 4 Bits davon)
Beispiel:
xxxxxxxx-xxxx-1xxx-....
β
Version
2. π§ Variant (2β3 Bits)
- Gibt das Format der UUID an (meist RFC 4122 / 9562)
- Sitzt im 4. Block am Anfang
Typische Werte:
10xxβ Standard UUID (das, was du fast immer siehst)
Beispiel:
xxxxxxxx-xxxx-xxxx-8xxx-....
β
Variant
π¦ Beispiel analysiert
UUID:
123e4567-e89b-12d3-a456-426614174000
π Zerlegt:
123e4567β Teil 1e89bβ Teil 212d3β Teil 3 β Version = 1a456β Teil 4 β Variant = a (= 1010 β RFC-konform)426614174000β Teil 5
π§© Unterschied je nach Version
Jetzt wirdβs interessant:
Der Inhalt der 128 Bits hΓ€ngt stark von der Version ab.
πΉ UUID v1 (Zeitbasiert)
Aufbau:
time_low (32)
time_mid (16)
time_high + version (16)
variant + clock_seq (16)
node (48)
EnthΓ€lt:
- Zeitstempel
- Clock Sequence (gegen Kollisionen)
- MAC-Adresse
π Deshalb:
- eindeutig
- aber privacy-problematisch
πΉ UUID v4 (Random)
Aufbau:
random (122 bits)
+ version (4 bits)
+ variant (2-3 bits)
π Fast alles ist Zufall
Nur:
- Version
- Variant
sind fest codiert
πΉ UUID v7 (modern π₯)
Aufbau (vereinfacht):
unix_ts_ms (48 bits)
version (4 bits)
rand (12 bits)
variant (2-3 bits)
rand (62 bits)
π Mischung aus:
- Zeit (Millisekunden seit 1970)
- Zufall
Vorteil:
- Sortierbar
- Keine MAC-Adresse
- Gute Verteilung
π Visuelle Darstellung (v7 Beispiel)
|------ Zeit (48) ------|ver|--- rand ---|var|-------- rand --------|
π§ Wichtige Erkenntnisse
- UUID ist kein reiner Zufallsstring
- Einige Bits sind immer reserviert:
- Version
- Variant
- Je nach Version:
- Zeit enthalten β
- Hash enthalten β
- MAC enthalten β
- oder komplett random β
β οΈ Kleine Stolperfallen
- Hex-Darstellung β echte interne Reihenfolge (Endianness kann verwirren)
- v1/v6 kΓΆnnen Infos leaken (Zeit, GerΓ€t)
- v4 ist nicht sortierbar β schlecht fΓΌr DB-Indizes
- v7 lΓΆst viele dieser Probleme
No comments to display
No comments to display