معرّف فريد عالميًا
المعرّف الفريد عالميًا ( UUID ) هو رقم مكون من 128 بت يُستخدم لتعريف المعلومات في أنظمة الحاسوب. ويُستخدم أيضًا مصطلح المعرّف الفريد عالميًا ( GUID )، عادةً في البرامج التي تُنتجها شركة مايكروسوفت . [ 1 ]
عند إنشائها وفقًا للمعايير، تكون معرّفات UUID فريدة من نوعها عمليًا. ولا تعتمد فرادتها على جهة تسجيل مركزية أو تنسيق بين الجهات التي تُنشئها، على عكس معظم أنظمة الترقيم الأخرى.
مع أن احتمال تكرار مُعرّف فريد عالمي (UUID) ليس معدومًا، إلا أنه قريب جدًا من الصفر لدرجة تجعله ضئيلاً للغاية. [ 2 ] وبالتالي، يُمكن لأي شخص إنشاء أعداد كبيرة من مُعرّفات UUID واستخدامها كمعرّفات مع يقين شبه تام بأنها لا تُكرر مُعرّفات UUID التي أنشأها أو سينشئها آخرون، حيث أن التنسيق الوحيد المطلوب لتحقيق التفرد هو الالتزام بمعايير UUID. لذا، يُمكن للمعلومات المُصنّفة بمُعرّفات UUID من قِبل جهات مستقلة أن تتعايش في قواعد البيانات أو القنوات نفسها، مع احتمال ضئيل للغاية للتكرار.
إن اعتماد معرّفات UUID واسع الانتشار، حيث توفر العديد من منصات الحوسبة الدعم لإنشائها ولتحليل تمثيلها النصي.
تاريخ
استخدم حاسوب أبولو معرّفات فريدة عالمية (UUIDs) في نظام الحوسبة الشبكية (NCS)، الذي أُطلق عام 1987، بتصميم مستوحى من المعرّفات الفريدة ذات 64 بت لنظام التشغيل Domain/OS ، وهو نظام تشغيل سابق لأبولو . [ 3 ] اعتمدت منصات مايكروسوفت ويندوز تصميم NCS (ولاحقًا تصميم DCE) كمعرّفات فريدة عالمية (GUIDs) في أوائل التسعينيات.
في وقت لاحق، استخدمت مؤسسة البرمجيات المفتوحة (OSF) معرّفات UUID في بيئة الحوسبة الموزعة (DCE)، بتصميم يعتمد جزئيًا على معرّفات NCS UUID. وقد وُثِّق ذلك في مواصفات DCE 1.1 RPC عام 1996، وفي مواصفات DCE 1.1 لخدمات المصادقة والأمان، المنشورة عام 1997. [ 4 ] [ 5 ] [ 6 ] كما وثّقت المنظمة الدولية للمعايير/اللجنة الكهروتقنية الدولية (ISO/IEC) تصميم DCE عام 1996، في معيار ISO / IEC 11578:1996 " تكنولوجيا المعلومات - الربط البيني للأنظمة المفتوحة - استدعاء الإجراءات عن بُعد ". [ 7 ]
في يوليو 2005، نشرت فرقة عمل هندسة الإنترنت (IETF) معيار RFC 4122 [ 1 ] ، الذي سجّل أيضًا مساحة اسم URN لمعرّفات UUID. وفي الوقت نفسه، قام الاتحاد الدولي للاتصالات (ITU) بتوحيد معرّفات UUID، استنادًا إلى المعايير السابقة والإصدارات المبكرة من RFC 4122، في توصية ITU-T X.667 ISO/IEC 9834-8. وكان هذا مكافئًا تقنيًا لـ RFC 4122 [ 8 ].
المواصفات الحالية لـ IETF هي RFC 9562 [ 9 ] ، وهي معيار مقترح نُشر في مايو 2024. وقد حددت هذه المواصفات ثلاثة إصدارات جديدة من UUID (6-8) من صيغة DCE. وتُستخدم حاليًا معرّفات UUID من تصميم DCE/IETF، مع توفير إمكانية التوافق مع الإصدارات السابقة من معرّفات UUID القديمة الخاصة بـ Apollo NCS ومعرّفات GUID الخاصة بـ Microsoft.
كان مؤلفو RFC 4122 هم بول ليتش، ومايكل ميلينغ ، وريتش سالز ، وكان مؤلفا المسودة الأولية للإنترنت عام 1997 [ 10 ] هما ليتش وسالز. شغل ليتش منصب مهندس نظام التشغيل Domain/OS، واستمر في العمل لدى أبولو كمصمم لنظام NCS، ثم ساهم، بصفته مهندسًا معماريًا متميزًا لدى مايكروسوفت، في تصميم OLE/COM/DCOM، حيث أدخل مفهوم UUIDs إلى ذلك المشروع. [ 11 ] وكان ليتش أيضًا أحد مؤلفي RFC 9562. أما سالز فكان عضوًا في فريق DCE التابع لمؤسسة البرمجيات المفتوحة. [ 12 ] اندمجت أبولو عام 1989 مع هيوليت-باكارد ، العضو المؤسس لمؤسسة البرمجيات المفتوحة. وقد ساهم أعضاء فريق NCS السابقون، بعد انضمامهم إلى هيوليت-باكارد، في إدخال مفهوم UUIDs إلى DCE التابع لمؤسسة البرمجيات المفتوحة. كان ميلينغ عضواً بارزاً في فريق هندسة الإنترنت (IETF)، حيث شغل مقعداً في المجموعة التوجيهية لهندسة الإنترنت، وشارك بشكل كبير في عمل فريق هندسة الإنترنت على معرّفات الموارد الموحدة (URNs). [ 13 ] وقد جمعت RFC 4122 كل هذه الجوانب معاً.
شكل
المعرّف الفريد العالمي (UUID) هو رقم مكون من 128 بت. ويُحدد معنى هذه البتات من خلال نوع المعرّف ، والذي تم تعريف ثلاثة أنواع منه. النوع الأكثر شيوعًا هو النوع الأول، بينما تُستخدم الأنواع الأخرى للتوافق مع الإصدارات السابقة أو للتعريفات المستقبلية. للنوعين الأول والثاني "إصدارات" تُحدد بدورها تفسير المعرّف الفريد العالمي.
المتغيرات
يوجد حقل المتغير في عدد متغير من البتات الأكثر أهمية في البايت التاسع. في التمثيلات النصية لمعرف UUID، يمثل هذا الحقل جزءًا من الرقم الست عشري الذي يلي الواصلة الثالثة. ويشير إلى تنسيق معرف UUID. المتغيرات التالية مُعرّفة:
- يُستخدم المتغير 0 (المُشار إليه بنمط البت الواحد 0 xxx 2 ، 0 16 إلى 7 16 ) للتوافق مع الإصدارات السابقة من تنسيق UUID الخاص بنظام الحوسبة الشبكية أبولو 1.5، الذي طُوّر حوالي عام 1987. يتداخل حقل المتغير في مُعرّفات UUID الحالية مع خانة عنوان عائلة UUID في نظام الحوسبة الشبكية، بحيث تحتوي أي مُعرّفات UUID لا تزال قيد الاستخدام على القيمة 0 في البت الأول من حقل المتغير. كما يشمل نطاق ترقيم المتغير 0 مُعرّف UUID الفارغ (Nil UUID).
- يُشار إلى مُعرّفات UUID من النوع الأول (10 xx 2 ، والتي تظهر على شكل 8 16 ، 9 16 ، a 16 أو b 16 ) باسم مُعرّفات RFC 4122/DCE 1.1 UUID ، أو مُعرّفات "Leach–Salz" UUID، نسبةً إلى مُؤلفي مسودة الإنترنت الأصلية . وهذه هي مُعرّفات UUID المُستخدمة حاليًا.
- يُستخدم المتغير الثاني (110 × 2 ، c 16 أو d 16 ) للتوافق مع الإصدارات السابقة من معرّفات GUID المستخدمة في Microsoft COM/DCOM. وقد استُخدم هذا التنسيق في معرّفات GUID المبكرة على منصة Microsoft Windows . تُنشئ أدوات Microsoft الحالية معرّفات UUID من المتغير الأول، وليس هذا المتغير. والفرق الرئيسي بين هذا المتغير والمتغير الأول، بالإضافة إلى بت المتغير الإضافي، هو ترتيب البايتات داخل معرّف UUID. وقد أعلن RFC 9562 أن هذا المتغير خارج نطاق هذا المعيار، لذا فإن الإصدارات الثلاثة الجديدة المُعرّفة للمتغير الأول لا تنطبق على المتغير الثاني.
- يتضمن المتغير 3 (111 x 2 ، e 16 أو f 16 ) الحد الأقصى لـ UUID، ولكنه غير محدد بخلاف ذلك ومحجوز للاستخدام المستقبلي.
الإصدارات
يحتوي كل من متغيري OSF DCE وMicrosoft COM/DCOM (1 و2 على التوالي) على إصدارات ، يُشار إليها بقيمة البتات الأربعة العليا من البايت السابع من UUID. في التمثيلات النصية لـ UUID، يُمثل هذا الرقم الست عشري الذي يلي الواصلة الثانية. لا تحتوي متغيرات Apollo NCS UUID من النوع 0 على إصدارات، حيث يتم تصنيفها فرعيًا عبر "عائلات العناوين" بدلاً من الإصدارات. نصت RFC 9562 [ 9 ] ، التي حددت الإصدارات 6 و7 و8، على أن المتغيرات الأخرى غير متغير OSF DCE 1 "خارج نطاق" RFC، تاركةً لمايكروسوفت تحديد إصدارات جديدة للمتغير 2. مع ذلك، فإن الإصدارات من 1 إلى 5، الموحدة في RFC 4122 [ 1 ] ، هي نفسها في متغير مايكروسوفت، باستثناء ترتيب البايتات.
| إصدار | يكتب | مصدر الوقت | مصدر الإنتروبيا/الهوية | أفضل حالة استخدام |
|---|---|---|---|---|
| 1 | قائم على الوقت | غريغوري (100 نانوثانية) وتسلسل الساعة | عنوان MAC | الأنظمة القديمة؛ التفرد الموزع |
| 2 | أمن DCE | تسلسل غريغوري (منخفض الدقة) وساعة | المعرف المحلي (UID/GID) والعقدة | بيئات الأمان القائمة على DCE [الأنظمة القديمة] |
| 3 | قائم على الاسم (MD5) | لا شيء (حتمي) | مساحة الاسم والاسم | معرّفات حتمية؛ تجزئة الأسماء القديمة |
| 4 | عشوائي | لا أحد | التشفير العشوائي | للأغراض العامة؛ أقصى قدر من الخصوصية |
| 5 | قائم على الاسم (SHA-1) | لا شيء (حتمي) | مساحة الاسم والاسم | المعرفات القطعية؛ مفضلة على الإصدار 3 |
| 6 | مرتبة زمنياً | غريغوري (100 نانوثانية) وتسلسل الساعة | عنوان MAC أو عنوان عشوائي | مفاتيح قاعدة البيانات؛ نسخة مُعاد ترتيبها 1 |
| 7 | مرتبة زمنياً | حقبة يونكس (مللي ثانية) | التشفير العشوائي | مفاتيح قواعد البيانات الحديثة؛ توطين عالي |
| 8 | مخصص | عامل | التنفيذ محدد | تصميمات تجريبية أو خاصة بالتطبيقات |
الإصداران 1 و 6 (التاريخ والوقت وعنوان MAC)
يُدمج الإصدار الأول عنوان MAC ذي 48 بت الخاص بـ "العقدة" (أي الحاسوب الذي يُنشئ UUID) مع طابع زمني ذي 60 بت. في الأنظمة التي تستخدم عناوين MAC ذات 64 بت من نوع EUI-64، تُستخدم أقل 48 بت أهمية. كما يُمكن استخدام رقم عشوائي ذي 48 بت.
الطابع الزمني هو عدد الفترات الزمنية التي تبلغ 100 نانوثانية منذ منتصف ليل 15 أكتوبر 1582 بالتوقيت العالمي المنسق (UTC)، وهو التاريخ الذي اعتُمد فيه التقويم الغريغوري لأول مرة. تنص RFC 4122 على أن قيمة الوقت تتكرر في عام 3409 ميلادي، [ 1 ] اعتمادًا على الخوارزمية المستخدمة، مما يعني أن الطابع الزمني ذو 60 بت هو قيمة مُوقّعة. مع ذلك، تتعامل بعض البرامج، مثل مكتبة libuuid، مع الطابع الزمني على أنه قيمة غير مُوقّعة، مما يجعل وقت التكرار في عام 5236 ميلادي. [ 14 ]
تُستخدم سلسلة ساعة "تفريد" مكونة من 13 أو 14 بت لتمديد الطابع الزمني ومعالجة الحالات التي لا يتقدم فيها تردد ساعة المعالج بالسرعة الكافية، أو عند وجود معالجات متعددة ومولدات UUID لكل عقدة. عندما يتم توليد معرّفات UUID بسرعة تفوق سرعة تقدم ساعة النظام، يمكن زيادة البتات الدنيا من الطابع الزمني وسلسلة الساعة لمحاكاة دقة أعلى وضمان التفرد. مع كل معرّف UUID من الإصدار 1 يُقابل نقطة واحدة في الفضاء (العقدة) والوقت (الفترات وسلسلة الساعة)، فإن احتمال تطابق معرّفين UUID من الإصدار 1 تم توليدهما بشكل صحيح يكاد يكون معدومًا. بما أن مجموع الوقت وسلسلة الساعة يبلغ 74 بت، فإن 2^ 74 (1.8 × 10^ 12 )يمكن إنشاء 22 أو 18 سيكستليون من معرّفات UUID الإصدار 1 لكل معرّف عقدة، بمعدل متوسط أقصى يبلغ 163 مليار في الثانية لكل معرّف عقدة. [ 1 ]
يكون تخطيط UUID الإصدار 1 كما يلي:
| اسم | الحجم (بايت) | الطول (بأرقام سداسية عشرية) | محتويات |
|---|---|---|---|
| الوقت_منخفض | 4 | 8 | عدد صحيح يمثل أقل 32 بت من الوقت |
| منتصف الوقت | 2 | 4 | عدد صحيح يمثل الأجزاء الستة عشر الوسطى من الوقت |
| time_hi_and_version | 2 | 4 | نسخة من أربعة بتات في البتات الأكثر أهمية، متبوعة بالبتات الـ 12 العليا من الوقت |
| clock_seq_hi_and_res clock_seq_low | 2 | 4 | متغير من اثنين إلى ثلاثة بتات في البتات الأكثر أهمية، متبوعًا بتسلسل الساعة المكون من 13 أو 14 بت |
| العقدة | 6 | 12 | معرف العقدة ذو 48 بت |
الإصدار 6 مطابق للإصدار 1 باستثناء ترتيب بتات الطابع الزمني. في الإصدار 6، تُرتّب بتات الطابع الزمني من الأكثر أهمية إلى الأقل أهمية. يُمكّن هذا الأنظمة من فرز مُعرّفات UUID من الإصدار 6 حسب ترتيب إنشائها ببساطة عن طريق فرزها معجميًا. من خلال إعادة ترتيب بايتات الطابع الزمني الأصلي (أعلى-أدنى) في نظام NCS لتمكين الفرز، يُصبح الإصدار 6 أقرب إلى مُعرّفات UUID من الإصدار 0 القديم في نظام NCS من الإصدار 1.
| مجال | العرض (بت) | وصف |
|---|---|---|
| ذروة الوقت | 32 | أهم 32 بت من الطابع الزمني ذي الـ 60 بت |
| منتصف الوقت | 16 | البتات الستة عشر الوسطى من الطابع الزمني ذي الـ 60 بت |
| إصدار | 4 | رقم الإصدار ذو 4 بت (0110) |
| الوقت_منخفض | 12 | أقل 12 بت أهمية من الطابع الزمني ذي 60 بت |
| متغير | 2 | النسخة ذات البتتين (10) |
| clock_seq | 14 | تسلسل الساعة ذو 14 بت |
| العقدة | 48 | معرف العقدة ذو 48 بت (عادةً ما يكون عنوان MAC) |
الإصدار 2 (التاريخ والوقت وعنوان MAC، إصدار أمان DCE)
يخصص كل من RFC 4122 و9562 [ 9 ] الإصدار 2 لمعرفات UUID الخاصة بـ "أمان DCE"، لكنهما لا يقدمان أي تفاصيل. ويعلن RFC 9562 أنها "خارج نطاق" هذا التعريف. وتتجاهل العديد من تطبيقات ومكتبات UUID الإصدار 2. ومع ذلك، فإن مواصفات الإصدار 2 من معرفات UUID مقدمة من مواصفات خدمات المصادقة والأمان DCE 1.1. [ 6 ]
| مجال | العرض (بت) | وصف |
|---|---|---|
| المعرف المحلي | 32 | معرف محلي 32 بت (عادةً ما يكون معرف مستخدم أو معرف مجموعة POSIX) |
| منتصف الوقت | 16 | البتات الستة عشر الوسطى من الطابع الزمني ذي الـ 60 بت |
| إصدار | 4 | رقم الإصدار المكون من أربعة بتات (0010) |
| time_hi | 12 | أعلى 12 بت من الطابع الزمني |
| متغير | 2 | النسخة ذات البتتين (10) |
| clock_seq_low | 6 | البتات الستة المنخفضة من تسلسل الساعة |
| local_id_domain | 8 | نطاق المعرف (على سبيل المثال، 0 لمعرف المستخدم، 1 لمعرف المجموعة) |
| العقدة | 48 | معرف العقدة ذو 48 بت (عادةً ما يكون عنوان MAC) |
تتشابه معرّفات UUID من الإصدار الثاني مع الإصدار الأول، باستثناء استبدال أقل 8 بتات أهمية في تسلسل الساعة برقم "نطاق محلي"، واستبدال أقل 32 بتًا أهمية في الطابع الزمني الميلادي ذي 60 بتًا بمعرّف عددي صحيح ذي دلالة ضمن النطاق المحلي المحدد. في أنظمة POSIX ، يُستخدم الرقمان 0 و1 في النطاق المحلي لمعرّفات المستخدمين ( UIDs ) ومعرّفات المجموعات ( GIDs ) على التوالي، بينما تُحدد باقي أرقام النطاق المحلي على مستوى الموقع. [ 6 ] أما في الأنظمة غير المتوافقة مع POSIX، فتُحدد جميع أرقام النطاق المحلي على مستوى الموقع.
وبالتالي، تُعدّ مُعرّفات UUID من الإصدار الثاني وسيلةً لدمج مُعرّف محليّ ذي 32 بت، خاصّ بالعقدة، من نوع مُحدّد ذي 8 بت ("النطاق")، مع مُعرّف العقدة وطابع زمنيّ ذي أصل ميلاديّ، ما يُحوّل المُعرّف الخاصّ بالعقدة إلى مُعرّف فريد عالميًا. لكنّ المقابل هو أنّ الطابع الزمنيّ ذو دقة منخفضة مُقارنةً بالطوابع الزمنية في الإصدار الأول، إذ يتكرر مرة واحدة فقط كل 429.49 ثانية، أي ما يزيد قليلًا عن 7 دقائق، وهو ما يختلف تمامًا عن التكرارات التي تبلغ 100 نانوثانية في الإصدار الأول. [ 15 ]
الإصداران 3 و 5 (القائمة على اسم النطاق)
Version-3 and version-5 UUIDs are generated by hashing a namespace identifier and name. Version 3 uses MD5 as the hashing algorithm, and version 5 uses SHA-1.[9] This is useful when systems need deterministically to generate the same UUID based on a set of other names or identifiers, without coordination.
The namespace identifier is itself a UUID. The RFC provides constant UUIDs to represent the namespaces for URLs, fully qualified domain names, object identifiers, and X.500 distinguished names; but any desired UUID may be used as a namespace designator. There is an IANA registry for additional namespace ids.
To determine the version-3 UUID corresponding to a given namespace and name, the UUID of the namespace is transformed to a string of bytes, concatenated with the input name, then hashed with MD5, yielding 128 bits. Then six or seven bits are replaced by fixed values, the four-bit version (e.g. 00112 for version 3), and the two- or three-bit UUID "variant" (e.g. 102 indicating an RFC 9562[9] UUIDs, or 1102 indicating a legacy Microsoft GUID). Since 6 or 7 bits are thus predetermined, only 121 or 122 bits contribute to the uniqueness of the UUID.
Version-5 UUIDs are similar, but SHA-1 is used instead of MD5. Since SHA-1 generates 160-bit digests, the digest is truncated to 128 bits before the version and variant bits are replaced.
Version-3 and version-5 UUIDs have the property that, given the version, the same namespace and name will map to the same UUID. However, neither the namespace nor name can be determined from the UUID, even if one of them is specified, except by brute-force search. RFC 4122 recommends version 5 (SHA-1) over version 3 (MD5). This is because it is believed that MD5 is more prone to collisions than SHA-1, though MD5 is somewhat faster. The RFC warns against use of UUIDs of any version as security capabilities.[1]:16
Version 4 (random)
A version-4 UUID is randomly generated. As in other UUIDs, four bits are used to indicate version 4, and two or three bits to indicate the variant (102 or 1102 for variants 1 and 2 respectively). Thus, for variant 1 (that is, most UUIDs) a random version-4 UUID will have six predetermined variant and version bits, leaving 122 bits for the randomly generated part, for a total of 2122, or 5.3×10يوجد 36 (5.3 أنديسيليون ) من معرّفات UUID المحتملة من الإصدار 4، المتغير 1. يوجد نصف هذا العدد من معرّفات UUID المحتملة من الإصدار 4، المتغير 2 (معرّفات GUID القديمة) نظرًا لوجود بت عشوائي أقل، حيث يتم استهلاك ثلاثة بتات للمتغير.
الإصدار 7 (طابع زمني وعشوائي)
تُستخدم معرّفات UUID من الإصدار 7 كمفاتيح تصاعدية متسلسلة، مرتبة حسب وقت الإنشاء، وقابلة للفرز المعجمي في قواعد البيانات الكبيرة والأنظمة الموزعة، مما يُسهم في تحسين موضع البيانات وأدائها. عند استخدام الإصدار 7 كمفاتيح لقواعد البيانات، تُدرج السجلات "الجديدة" في نهاية التسلسل المنطقي للمفاتيح، وتكون السجلات المتقاربة زمنيًا متقاربة في التسلسل. وهذا يختلف عن الإصدار 4 العشوائي، الذي عند استخدامه كمفاتيح لقواعد البيانات، يتوزع بشكل متساوٍ وعشوائي عبر التسلسل، حتى عندما تكون السجلات الأساسية متقاربة زمنيًا، مما يؤثر سلبًا على الأداء في العديد من أنواع قواعد البيانات.
يتم بناؤها على النحو التالي:
| مجال | العرض (بت) | وصف |
|---|---|---|
| unix_ts_ms | 48 | طابع زمني يونكس ذو 48 بت بالمللي ثانية |
| إصدار | 4 | رقم الإصدار المكون من أربعة بتات (0111) |
| rand_a | 12 | دقة طابع زمني تصل إلى 12 بتًا في أجزاء من الألف من الثانية، أو عداد رتابة، أو بيانات شبه عشوائية |
| متغير | 2 | النسخة ذات البتتين (10) |
| rand_b | 62 | 62 بت من عداد الرتابة، أو بيانات شبه عشوائية |
بالإضافة إلى الطابع الزمني، يُخصص ما مجموعه 74 بتًا للبنى الاختيارية الثلاث (دقة إضافية للطابع الزمني، عداد مُهيأ، بيانات عشوائية). وبغض النظر عن ترتيب هذه البنى واشتراط استخدام 12 بتًا كحد أقصى للدقة الإضافية للطابع الزمني، فإن عدد البتات المخصصة لكل بنية (بما في ذلك إمكانية استخدام 0) وتفاصيلها متروكة للمُنفذ. يمكن تعديل الطوابع الزمنية ذات 48 بتًا أو تشويشها أو إضفاء طابع ضبابي عليها لضمان الرتابة والخصوصية، ويُذكر صراحةً أنه لا يوجد شرط بشأن مدى قرب الطابع الزمني من وقت يونكس الفعلي. ولكن من الواضح أن الهدف هو أن تكون الطوابع الزمنية رتيبة وتقريبية لوقت يونكس، وينص معيار RFC على استخدام الإصدار 8 من UUID المخصص للتصاميم القائمة على الطوابع الزمنية والتي لا تعتمد على وقت يونكس. بخلاف بعض إصدارات UUID الأخرى، فإن إصدارات UUID 7 لا تتضمن عناوين MAC، ويمكنها تجنب مشكلات الخصوصية المرتبطة بها.
الإصدار 8 (مخصص)
في مُعرّف UUID المُخصّص، يكون الإصدار هو 8، ويجب أن تكون بتات المتغير 10، ليصبح المجموع 6 بتات. أما البتات الـ 122 المتبقية فلم يتم تحديدها.
وفقًا لمواصفات RFC، فإنّ معرّفات UUID من الإصدار 8 مخصصة للاستخدامات التجريبية والخاصة بمورّدين محددين. تشير مواصفات RFC، على سبيل المثال، إلى إمكانية استخدام هذا الإصدار لمعرّف قائم على الاسم/التجزئة، يتم إنشاؤه باستخدام دالة تجزئة أحدث من تلك المحددة لإصداري UUID 3 (MD5) و5 (SHA-1). كما تشير مواصفات RFC إلى إمكانية استخدام الإصدار 8 لتصميمات UUID القائمة على الطابع الزمني والتي لا تتناسب مع الإصدارين 6 أو 7، مثل تلك التي تستخدم حقبة زمنية مختلفة.
But version 8 is not restricted to such scenarios. In essence, version-8 UUIDs are 122 opaque bits, combined with six version and variant bits, allowing them to be separated from other UUID forms.
Unlike other versions, the RFC does not mandate a specific bit layout or generation algorithm, and they are not to be assumed to be unique. Unlike version-4 UUIDs, which should be 122 bits from a high-entropy source of randomness and where uniqueness and collision-resistance are subject to mathematical analysis, the uniqueness, unguessability, collision-resistance, privacy, etc of version-8 UUIDs, in general, can be relied upon based only on trust in the source (if known), out-of-band coordination, or external documentation beyond the standard. In addition, as with other UUID versions, there is no concept of version subtypes. What this means for version 8 is that in a situation where version-8 UUIDs from multiple sources and generation methods have been pooled into a single stream or database and some prove problematic, there is no way to separate the UUIDs by source, other than, perhaps, by resolving them, if that is possible.
Use of MAC addresses
In contrast to the other UUID versions, versions 1, 2, and 6 are based on MAC addresses from network cards, relying 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 mainly to manufacturers of networking equipment.[16] The uniqueness of the 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. MAC addresses also may come from sources other than network cards. For example, virtual machines receive a MAC address from a range that is configurable in the hypervisor,[17] and some operating systems permit the end user to customise the MAC address, notably OpenWrt.[18] When a device has an EUI-64 64-bit "MAC address", using the least significant 48 bits of it, as recommended by the RFC, may result in the node ID part of the UUID being duplicated. Thus, node IDs based on MAC addresses may not be globally unique.
غالبًا ما يعني استخدام عنوان MAC لبطاقة الشبكة الخاصة بالعقدة كمعرّف لها إمكانية تتبع معرّفات UUID من الإصدارات 1 و2 و6 إلى الحاسوب الذي أنشأها. ويمكن استخدام هذه المعرّفات لاستنتاج نوع الأجهزة المستخدمة في توليدها. كما يمكن أحيانًا تتبع المستندات إلى الحواسيب التي أُنشئت أو عُدّلت عليها من خلال معرّفات UUID المضمنة فيها بواسطة برامج معالجة النصوص . وقد استُغلت هذه الثغرة الأمنية في تحديد هوية مُنشئ فيروس ميليسا . [ 19 ]
يسمح RFC 9562 [ 9 ] باستبدال عنوان MAC في UUID من الإصدار 1 أو 2 أو 6 بمعرف عقدة عشوائي مكون من 48 بت، إما لعدم وجود عنوان MAC للعقدة، أو لعدم الرغبة في تضمينه. في هذه الحالة، يشترط RFC أن تكون البتة الأقل أهمية في أول ثمانية بتات من معرف العقدة تساوي 1. [ 1 ] يتوافق هذا مع بتة البث المتعدد في عناوين MAC، ويُستخدم تعيينها للتمييز بين UUIDs التي يُولّد فيها معرف العقدة عشوائيًا وUUIDs المستندة إلى عناوين MAC من بطاقات الشبكة، والتي عادةً ما تحتوي على عناوين MAC أحادية البث . [ 1 ]
استخدام الطوابع الزمنية
تعتمد الإصدارات 1 و2 و6 و7 على وقت إنشاء مُعرّف UUID، وتُظهره، وهو الوقت الذي غالبًا ما يتوافق مع إنشاء سجل أو حدث تاريخي. إذا كان هذا المُعرّف مرتبطًا بأشخاص أو أنشطتهم، فقد يكون من الممكن استنتاج عمر الشخص أو الوقت الدقيق لأنشطته من خلال مُعرّفات UUID. كما يُمكن تحديد وقت بدء تشغيل النظام، أو ما هي العناصر الجديدة أو المُحدّثة مؤخرًا فيه، من خلال مُعرّفات UUID المُرتبة زمنيًا والمتصاعدة بشكل رتيب. على سبيل المثال، إذا كانت العناصر المُحددة تُمثل طلبات منتجات أو تسجيلات مستخدمين، فقد يكون من الممكن تحديد نمو المستخدمين أو حجم المبيعات بمرور الوقت من خلال مُعرّفات UUID. وبالتالي، فإن مُعرّفات UUID المُرتبة زمنيًا، إذا كانت مرئية للعامة، قد تُسرّب معلومات شخصية أو تجارية، وتُثير مخاوف تتعلق بالخصوصية، وتُسهّل عمليات استخراج البيانات غير المرغوب فيها .
فيما يتعلق بترتيب وتصنيف معرّفات UUID، يبدأ الإصداران 1 و2 من "المنتصف" باستخدام البتات الـ 32 الأقل أهمية من الطابع الزمني. هذان الإصداران، بالإضافة إلى الإصدارات من 3 إلى 5 و8، لا يُرتبان ترتيبًا زمنيًا. لم يكن دور الطابع الزمني في هذه الإصدارات من معرّفات UUID هو تسهيل ترتيبها زمنيًا، بل تحقيق التفرد العالمي من خلال تثبيت عملية التوليد مكانيًا وزمنيًا.
تُعطي الإصدارات 6 و7 الأولوية لدور الطابع الزمني في فهرسة قواعد البيانات، مما يسمح بترتيب السجلات ترتيبًا زمنيًا. ومع ذلك، يوفر RFC 9562 مرونة كبيرة في تنفيذ الإصدار 7، حيث يُحدد إطارًا عامًا بدلًا من تخطيط بتات صارم لدقة الطابع الزمني الاختيارية التي تصل إلى أجزاء من الألف من الثانية، والعدادات، والعشوائية.
The specification allows the 48-bit Unix timestamp to be adjusted or "fuzzed" to maintain monotonicity (ensuring IDs created in rapid succession always increase) or to enhance privacy. Because the RFC does not define a strict maximum deviation from actual Unix time, different implementations may vary in how they balance chronological accuracy against these other requirements.[20]
Consequently, the lexical sortability of versions 6 and 7 UUIDs is most consistent when generated by the same library or system. Mixing UUIDs from different sources, or interleaving different versions and variants in a single database, can degrade the time-ordering and index locality that these versions were designed to provide.
RFC 9562 does not mandate a minimum number of random bits for version 7; it allows the sub-millisecond precision and monotonicity counter fields to occupy the remainder of the 128-bit structure. Consequently, collision resistance and guessability depend entirely on the specific implementation's allocation of these bits.[21]
Special values
The Nil UUID is 00000000-0000-0000-0000-000000000000 (that is, all clear bits), which can be useful to express the concept of "no such value".[9] This is a "variant 0" NCS UUID with an address family of "0", defined in NCS as "unspecified or uninitialized". The Max UUID, sometimes also called the Omni UUID, is FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF (that is, all set bits). This is intended to be used for expressing "end of UUID list".[9]
Encoding
Binary representation
Initially, Apollo Computer designed the UUID with the following wire format, based on a timestamp and a node identifier, similarly to version 1 and 6[4][22]
| Field | Width (bits) | Description |
|---|---|---|
| time_high | 32 | High-order 32 bits of the 64-bit 4-microsecond timestamp, origin=Jan 1, 1980 |
| time_low | 16 | Low-order 16 bits of the 64-bit 4-microsecond timestamp |
| reserved | 16 | Reserved field (often 0) |
| family | 8 | Address family (e.g., 0x00 for unspecified, 0x02 for IP, 0x0D for DDS) |
| host | 56 | 56-bit host identifier (network address) |
RFC 4122 incorporated legacy NCS UUIDs as "variant 0" of the new format by overlapping the variant bits of the new format with the NCS Address Family field. Since the highest address family value defined in NCS is 13 (hex 00 to 0D), the most significant bit in the variant octet is always 0 for extant NCS UUIDs, while this bit is 1 in the newer three IETF variants. In effect, NCS address families 0–127 became the new "variant 0", while the numbering space of NCS address families 128–255, which was undefined in NCS, was rededicated to variant-1-to-3 IETF and Microsoft UUIDs. The result was that legacy NCS UUIDs and variant-1-to-3 UUIDs were separated and could coexist in the same databases, and on the same communication channels.
| MSB 0 | MSB 1 | MSB 2 | Family (octet) | Variant | Description |
|---|---|---|---|---|---|
| 0 | x | x | x00-0x7F | 0 | Reserved. Apollo NCS backward compatibility, plus Nil. Subtyped by address family. |
| 1 | 0 | x | x80-xBF | 1 | OSF DCE UUID. Subtyped by versions (1-8). |
| 1 | 1 | 0 | xC0-xDF | 2 | Reserved. Microsoft backward compatibility. Subtyped by versions (1-5). |
| 1 | 1 | 1 | xE0-xFF | 3 | Reserved (Future, plus Max). |
The legacy Apollo NCS UUID has the format described in the previous table. The OSF DCE UUID variant is described in RFC 9562[9]. The Microsoft COM / DCOM UUID has its variant described in the Microsoft documentation, but for versions 1 to 5, is generally the same as the DCE variant, except for the extra variant bit and byte-ordering. (See next section.) Variant 2 does not have versions 6 to 8.
| Field | Width (bits) | Description |
|---|---|---|
| data_a | 32 | First 32 bits of the timestamp or data |
| data_b | 16 | Second 16 bits of the timestamp or data |
| version | 4 | The version number (bits 48 through 51) |
| data_c | 12 | Third 12 bits of the timestamp or data (bits 52 through 63) |
| variant | 2-3 | The RFC 9562 Variant bits (10x, 110, 111, bits 64-66) |
| data_d | 13-14 | The clock sequence or other data (bits 66 or 67 through 79) |
| data_e | 48 | The 48-bit node ID or other data (bits 80 through 127) |
The interpretation of the various bit-blocks varies in variants 1 and 2 according to the "version". In variant 2, data_a, data_b, version|data_c are byte-swapped and variant|data_d and data_e are not byte-swapped.
Byte ordering
Variant 1 UUIDs are sequentially encoded in big-endian. 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][24]
In contrast, variant 2 UUIDs ("GUIDs"): historically used in Microsoft COM/OLE libraries, have a mixed-endian format, with the first three fields (corresponding to version-1 timestamp subfields) being little-endian, while the final two fields are emitted as big-endian arrays of bytes. The example UUID above, if it were a variant 2 UUID, would be encoded on the wire as 33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff.[25][26] All versions under variant 2 are emitted with this byte ordering, including versions not containing numeric fields, such as 3,4, and 5.
Textual representation
In most cases, UUIDs are represented as hexadecimal values separated by hyphens. Most used is the 8-4-4-4-12 format, a string of 32 hexadecimal digits with four hyphens, xxxxxxxx-xxxx-vxxx-wxxx-xxxxxxxxxxxx. The hyphens separate the version-1 fields but the same format is commonly used for all versions. Every hexadecimal digit represents 4 bits; v represents the version nibble; and the high-order one to three bits of w are the variant. The Windows registry format is the same but wraps the UUID in {} braces. The byte-ordering differences of variant 2 are applicable in binary storage or transmission on the wire, and do not affect the textual presentation of the UUID.
Though they are still occasionally omitted, the format with hyphens was introduced with the newer variant system. Before that, the legacy Apollo format used a slightly different format 34dc23469000.0d.00.00.7c.5f.00.00.00. The first part is the time (time_high and time_low combined). The reserved field is skipped. The family field comes directly after the first dot, so in this case 0d (13 in decimal) for DDS (Data Distribution Service). The remaining parts, each separated with a dot, are the node bytes.
Lowercase hexadecimal digits are preferred. ITU-T Rec. X.667 requires lowercase on generation, but also requires the uppercase version to be accepted on input. Since UUIDs are 128-bit numbers, other formats are possible, and occasionally seen, such as decimal digits or binary.
RFC 4122[1] registers the "uuid" namespace for URNs. This makes it possible to form URNs from UUIDs, like urn:uuid:550e8400-e29b-41d4-a716-446655440000. The normal 8-4-4-4-12 format is used for this.
It is also possible to make an OID out of a UUID, which in turn provides another way to make a URN from it. The OID for the previous example is 2.25.113059749145936325402354257176981405696. The unsigned decimal form of the UUID is prefixed with 2.25, which represents the {joint-iso-itu-t(2) uuid(25)} "arc" within the OID namespace. This may be further prefixed with urn:oid: to make a second form of URN for UUIDs. In general, the uuid URN is recommended over the oid URN.
Collisions
A collision occurs when the same UUID is generated more than once and is assigned to different referents. In the case of many standard version-1, -2, or -6 UUIDs using unique MAC addresses and/or timestamps, collisions can occur only as a result of error, such as manufacturing problems, skewed clocks, or software bugs.
Duplicate UUIDs can also occur due to error with the UUID versions generated using processes such as random number generation or hashing. It is important, for example, to have a high-entropy source of randomness when generating version-4 UUIDs. But collisions can also occur without error with such UUIDs, due to chance -- "bad luck".
The probability of this is normally so small that it can be ignored, and can be computed precisely based on analysis of the birthday problem.[27] For example, the number of random version-4 UUIDs which need to be generated in order to have a 50% probability of at least one collision is 2.71 quintillion, computed as follows:[28]
This number would be equivalent to generating 1 billion UUIDs per second for about 86 years. A file containing this many UUIDs, at 16 bytes per UUID, would be about 43.4 exabytes (37.7 EiB) -- a file, listing only identifiers, a few orders of magnitude larger than the largest databases currently in existence, which are on the order of 100 PB (e.g. Google's web indexes). If generated according to the standards, duplicate UUIDs are more likely to be the result of bit-flips (a so called Single-event upset) caused by cosmic rays passing through memory or disk storage, than the result of mischance at UUID-generation time.
The smallest number of version-4 UUIDs which must be generated for the probability of finding of at least one collision to be p is approximated by the formula
Thus, the probability to find a duplicate within 103 trillion properly-generated version-4 UUIDs is one in a billion.
Uses
Filesystems
Several filesystem types (for example, ext4 and Btrfs) use a UUID to uniquely identify each filesystem to the operating system. (NTFS and FAT32 do not, utilising a shorter UID (Unique identifier) instead.)[29]
Filesystem userspace tools,[30] most of which are derived from the original implementation by Theodore Ts'o,[14] therefore make use of UUIDs.
An /etc/fstab file might assign mount points based on these UUIDs (or a UID for a FAT32 EFI system partition (ESP)):
# device-uuid mount-point fs-type options dump pass UUID = b18e3b6c-ccb7-4308-b527-35e5e6ee2145 / btrfs defaults 0 0 UUID = 103C-86D6 /efi vfat utf8 0 2 UUID = 64f3cb6a-e70e-45e5-8b90-d86cddbab7bb swap swap defaults 0 0 UUID = eda746c6-1f1b-4cf1-9225-d8b0b46511cc /mnt/Stuff btrfs defaults 0 0جداول التقسيم
يستخدم جدول تقسيم GUID ( GPT) معرّفات UUID (تُسمى هنا "GUID") لتحديد الأقسام وأنواعها. يتم تعيين معرّفات الأقسام الفريدة محليًا بواسطة نظام التشغيل. أما معرّفات أنواع الأقسام فهي أرقام معروفة، وعادةً ما يتم تعيينها من قِبل مُصنّعي أنظمة التشغيل أو الأجهزة.
مايكروسوفت كوم
توجد عدة أنواع من معرّفات GUID المستخدمة في نموذج كائنات المكونات (COM) الخاص بشركة مايكروسوفت:
- IID – مُعرّف الواجهة؛ (يتم تخزين المُعرّفات المُسجلة على النظام في سجل ويندوز في
[HKEY_CLASSES_ROOT\Interface][ 31 ] ) - CLSID– مُعرِّف الفئة؛ (مُخزَّن في
[HKEY_CLASSES_ROOT\CLSID]). عمليًا، لا ينفصل تمامًا عن مساحة IID ، لأن الوصول عن بُعد إلى الواجهة قد يتطلب كائنًا وسيطًا/بديلًا ، والذي كانت بعض مجموعات الأدوات تستخدمه لإنشائه بمعرّف فئة (CLSID) يساوي معرّف واجهة المستخدم (IID ). - LIBID – مُعرِّف مكتبة الأنواع؛ (مخزَّن في
[HKEY_CLASSES_ROOT\TypeLib][ 32 ] ) - CATID – مُعرّف الفئة؛ (وجوده على فئة ما يُحدد انتمائها إلى فئات معينة، مُدرجة في
[HKEY_CLASSES_ROOT\Component Categories][ 33 ] )
قواعد البيانات
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.[34] The Oracle DatabaseSYS_GUID function does not return a standard GUID, despite the name. Instead, it returns a 16-byte 128-bit RAW value based on a host identifier and a process or thread identifier, somewhat similar to a GUID.[35]PostgreSQL contains a UUID datatype[36] and can generate most versions of UUIDs through the use of functions from modules.[37][38]MySQL provides a UUID function which generates standard version-1 UUIDs.[39]
The random nature of standard UUIDs of versions 3, 4, and 5, and the ordering of the fields within standard versions 1 and 2 may create problems with database locality or performance when UUIDs are used as primary keys. 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. By reordering and encoding version-1 and -2 UUIDs so that the timestamp comes first, insertion performance loss can be averted.[40] This is the rationale for variant 1 (DCE) versions 6 and 7, standardized in RFC 9562[9].
Other examples
See also
References
- 123456789Leach, P.; Mealling, M.; Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. Internet Engineering Task Force. doi:10.17487/RFC4122. RFC4122. Retrieved 17 January 2017.
- ↑"Universally Unique Identifiers (UUID)". H2. Archived from the original on 9 July 2006. Retrieved 21 March 2021.
- ↑Leach, P. J.; Levine, P.H.; Hamilton, J. A.; Stumpf, B.L. (18–20 August 1982). "UIDs as internal names in a distributed file system". Proceedings of the first ACM SIGACT-SIGOPS symposium on Principles of distributed computing - PODC '82. pp. 34–41. doi:10.1145/800220.806679. ISBN 0-89791-081-8.
- 12Zahn, Lisa; Dineen, Terence; Leach, Paul; Martin, Elizabeth; Mishkin, Nathaniel; Pato, Joseph; Wyant, Geoffrey (1990). Network Computing Architecture. Prentice Hall. p. 10. ISBN 978-0-13-611674-5.
- ↑"DCE 1.1: Remote Procedure Call". The Open Group. 1997. Archived from the original on 7 July 2010. Retrieved 13 May 2005.
- 123"DCE 1.1: Authentication and Security Services". The Open Group. 1997. Archived from the original on 7 December 2010. Retrieved 22 June 2007.
- ↑ISO/IEC 11578:1996 Information technology – Open Systems Interconnection – Remote Procedure Call (RPC) (Technical report). International Organization for Standardization. 1996.
- ↑"Information technology – Procedures for the operation of object identifier registration authorities: Generation of universally unique identifiers and their use in object identifiers". ITU. October 2014. Archived from the original on 7 November 2025. Retrieved 8 May 2026.
- 12345678910Davis, K.; Peabody, B.; Leach, P. (2024). Universally Unique IDentifiers (UUIDs). Internet Engineering Task Force. doi:10.17487/RFC9562. RFC9562. Retrieved 9 May 2024.
- ↑P. Leach; R. Salz (February 1998). UUIDs and GUIDs. IETF. I-D draft-leach-uuids-guids-01.
- ↑"Paul Leach — IETF Datatracker". datatracker.ietf.org. Retrieved 8 May 2026.
- ↑ "سيرة ريتش سالز" . XML.com . مؤرشف من الأصل بتاريخ 27 نوفمبر 2024. تم الاطلاع عليه بتاريخ 8 مايو 2026.
شارك في العديد من مشاريع معايير OSF وIETF وW3C وOASIS
... - ↑ "مايكل ميلينغ - متتبع بيانات IETF" . datatracker.ietf.org . تم الاطلاع عليه بتاريخ 8 مايو 2026 .
- 1 2 "ext2/e2fsprogs.git - أدوات مساحة المستخدم لنظام الملفات Ext2/3/4" . Kernel.org . تم الاطلاع عليه بتاريخ 9 يناير 2017 .
- ↑ كوتشلينغ، أ.م. "ما الجديد في بايثون 2.5" . Python.org . مؤرشف من الأصل في 7 فبراير 2021. تم الاطلاع عليه في 23 يناير 2016 .
- ↑ "جهة التسجيل" . جمعية معايير IEEE . مؤرشف من الأصل في 4 أبريل 2011.
- ↑ "عناوين MAC للأجهزة الافتراضية" . Super User . مؤرشف من الأصل في 9 أغسطس 2024. تم الاطلاع عليه في 9 أغسطس 2024 .
- ↑ "إعداد عنوان MAC" . OpenWrt. 15 سبتمبر 2021. مؤرشف من الأصل في 18 أكتوبر 2022. تم الاطلاع عليه في 15 سبتمبر 2021 .
- ↑ رايتر، لوك (2 أبريل 1999). "تتبع شخصيات ميليسا البديلة" . زد نت . مؤرشف من الأصل في 26 يناير 2020. تم الاطلاع عليه في 16 يناير 2017 .
- ↑ ديفيس، ك.؛ بيبودي، ب.؛ ليتش، ب. (مايو 2024). "RFC 9562: المعرفات الفريدة عالميًا (UUIDs)، القسم 6.2: الرتابة والعدادات" . IETF . مؤرشف من الأصل في 8 مايو 2026. تم الاسترجاع في 8 مايو 2026 .
- ↑ ديفيس، ك.؛ بيبودي، ب.؛ ليتش، ب. (مايو 2024). "RFC 9562: المعرفات الفريدة عالميًا (UUIDs)، القسم 8: اعتبارات الأمان" . IETF . مؤرشف من الأصل في 8 مايو 2026. تم الاسترجاع في 8 مايو 2026 .
- ↑ "uuid.c" . opensource.apple.com . مؤرشف من الأصل بتاريخ 24 فبراير 2021. تم الاطلاع عليه بتاريخ 8 يونيو 2017 .
- ↑ ستيل، نيك. "تحليل معرّفات UUID" . مؤرشف من الأصل في 4 يونيو 2021. تم الاطلاع عليه في 4 يونيو 2021 .
- ↑ "شرح إصدارات UUID | UUIDTools.com" . www.uuidtools.com . مؤرشف من الأصل في 4 يونيو 2021. تم الاطلاع عليه في 4 يونيو 2021 .
- ↑ ليتش، بول. "المعرفات الفريدة العالمية والمعرفات الفريدة العامة" . مؤرشف من الأصل في 8 أبريل 2022. تم الاطلاع عليه في 18 يونيو 2022 .
- ↑ "طريقة Guid.ToByteArray (النظام)" . learn.microsoft.com . مؤرشف من الأصل في 22 يوليو 2025. تم الاطلاع عليه في 25 يونيو 2025 .
- ^ يسوع، باولو. باكيرو، كارلوس؛ ألميدا، باولو. “إنشاء المعرفات في البيئات المتنقلة” (PDF) . Repositorium.Sdum.Uminho.pt . أرشفة (PDF) من النسخة الأصلية في 17 أكتوبر 2022 . تم الاسترجاع في 19 يناير 2017 .
- ↑ ماثيس، فرانك هـ. (يونيو 1991). "مسألة عيد الميلاد المعممة". مجلة SIAM Review . 33 ( 2 ): 265-270 . CiteSeerX 10.1.1.5.5851 . doi : 10.1137/1033051 . ISSN 0036-1445 . JSTOR 2031144. OCLC 37699182 .
- ↑ إيدج، جيك (18 مايو 2022). "اللقطات، وعقد البيانات، ومعرفات نظام الملفات" . LWN.net . مؤرشف من الأصل في 28 ديسمبر 2025. تم الاطلاع عليه في 31 يناير 2026 .
- ↑ "gen_uuid.c" . opensource.apple.com . مؤرشف من الأصل بتاريخ 6 يوليو 2017. تم الاطلاع عليه بتاريخ 17 سبتمبر 2017 .
- ↑ "مؤشرات الواجهات والواجهات" . مركز مطوري ويندوز - تقنيات تطبيقات سطح المكتب . مايكروسوفت . مؤرشف من الأصل في 6 يوليو 2017. تم الاطلاع عليه في 15 ديسمبر 2015.
يمكنك الإشارة إلى واجهة أثناء التشغيل باستخدام مُعرّف واجهة فريد عالميًا (
IID
). يسمح هذا
المُعرّف
، وهو نسخة محددة من مُعرّف فريد عالميًا (
GUID
) تدعمه COM، للعميل بالاستعلام بدقة من كائن ما عما إذا كان يدعم دلالات الواجهة، دون أي تكلفة إضافية غير ضرورية ودون الارتباك الذي قد ينشأ في النظام من وجود إصدارات متعددة من نفس الواجهة بنفس الاسم.
- ↑ "تسجيل مكتبة أنواع" . شبكة مطوري مايكروسوفت . مايكروسوفت . مؤرشف من الأصل في 28 سبتمبر 2017. تم الاطلاع عليه في 15 ديسمبر 2015 .
- ↑ "التصنيف حسب إمكانيات المكونات" . مركز مطوري ويندوز - تقنيات تطبيقات سطح المكتب . مايكروسوفت . مؤرشف من الأصل في 22 نوفمبر 2017. تم الاطلاع عليه في 15 ديسمبر 2015.
يتم تخزين قائمة بمعرفات CATIDs والأسماء المقروءة في موقع معروف في سجل النظام
. - ↑ "NEWSEQUENTIALID (Transact-SQL)" . شبكة مطوري مايكروسوفت . مايكروسوفت . 8 أغسطس 2015. مؤرشف من الأصل في 6 يونيو 2010. تم الاطلاع عليه في 14 يناير 2017 .
- ↑ "مرجع SQL لقاعدة بيانات أوراكل" . أوراكل . مؤرشف من الأصل في 17 أكتوبر 2022. تم الاطلاع عليه في 19 يناير 2017 .
- ↑ "القسم 8.12 نوع UUID" . وثائق PostgreSQL 9.4.10 . مجموعة تطوير PostgreSQL العالمية. 13 فبراير 2020. مؤرشف من الأصل في 9 مارس 2018. تم الاطلاع عليه في 18 يناير 2017 .
- ↑ "uuid-ossp" . PostgreSQL: الوثائق: 9.6 . مجموعة تطوير PostgreSQL العالمية. 12 أغسطس 2021. مؤرشف من الأصل في 9 مارس 2018. تم الاطلاع عليه في 3 أبريل 2017 .
- ↑ "pgcrypto" . PostgreSQL: الوثائق: 9.6 . مجموعة تطوير PostgreSQL العالمية. 12 أغسطس 2021. مؤرشف من الأصل في 9 مارس 2018. تم الاطلاع عليه في 3 أبريل 2017 .
- ↑ "القسم 13.20 وظائف متنوعة" . دليل مرجعي لـ MySQL 5.7 . شركة أوراكل . مؤرشف من الأصل في 6 نوفمبر 2022. تم الاطلاع عليه في 18 يناير 2017 .
- ↑ "تخزين قيم UUID في MySQL" . بيركونا. 19 ديسمبر 2014. مؤرشف من الأصل في 29 نوفمبر 2020. تم الاطلاع عليه في 10 فبراير 2021 .
- ↑ "جداول بيانات ACPI" . UEFI . مؤرشف من الأصل في 18 نوفمبر 2025. تم الاطلاع عليه في 5 ديسمبر 2025 .
روابط خارجية
- التوصية ITU-T X.667 (متاحة مجاناً)
- ISO/IEC 9834-8:2014 (مدفوع)
- ملاحظة فنية رقم TN2166 - أسرار GPT - مطورو Apple
- توثيق UUID - معرف Apache Commons
- مفتاح CLSID - مستندات مايكروسوفت
- المعرّف الفريد العالمي - مكتبة المجموعة المفتوحة
- أداة فك تشفير UUID
- نبذة تاريخية عن المعرف الفريد العالمي (UUID)
- فهم كيفية إنشاء معرّفات UUID
- المعرفات الفريدة
- إدارة نظام التشغيل ويندوز
- مؤسسات عام 1996
