شناسه منحصر به فرد جهانی

یک شناسه منحصر به فرد جهانی (انگلیسی: Universally unique identifier) (مخفف: UUID ) یک عدد ۱۲۸-بیتی است که برای شناسایی اطلاعات در سیستم‌های کامپیوتری استفاده می‌شود. بجای این اصطلاح، اصطلاح شناسه منحصر به فرد عمومی (انگلیسی: Globally unique identifier) (مخفف: GUID ) نیز به کار می‌رود.
اگر UUIDها طبق روش‌های استاندارد تولید شوند، بدون اینکه به یک نهاد ثبت کننده مرکزی یا هماهنگی با سایر تولیدکننده‌های UUID برای تایید یکتایی نیاز داشته باشند، عملا یکتا خواهند بود. این برخلاف بیشتر روش‌های دیگر است. گرچه احتمال اینکه یک UUID تکراری باشد، صفر نیست، اما آنقدر به صفر نزدیک است که می‌توان از آن چشم پوشی کرد.
بنابراین هر کسی می‌تواند یک UUID ایجاد کند و از آن برای شناسایی «چیزی» استفاده کند و اطمینان داشته باشد که UUIDای که تولید کرده‌است با UUIDهایی که قبلا تولید شده یا بعدا تولید خواهد شد، تداخلی ندارد. اطلاعاتی که بوسیله UUIDها توسط موجودیت‌های مستقل برچسب گذاری شده‌اند می‌توانند بعدا با یکدیگر اذغام شده و در یک پایگاه داده قرار گیرند، بدون آنکه نیاز به از بردن تداخل‌های بین شناسه‌ها شود.
کاربرد UUIDها و GUIDها گسترده‌است و بسیاری از پلتفرم‌های محاسباتی از امکاناتی برای تولید آن‌ها و پارس کردن نمایش متنی UUIDها پشتیبانی می‌کنند.
قالب
در شیوه متعارف نمایش متنی، شانزده بایت یک شناسه UUID توسط ۳۲ رقم هگزادسیمال (مبنای ۱۶) که در ۵ گروه که توسط خط فاصله از یکدیگر جدا شده‌اند در قالب 8-4-4-4-12 که در مجموع ۳۶ کاراکتر (۳۲ کاراکتر الفبایی و چهار خط فاصله) را تشکیل می‌دهد، نشان داده می‌شوند. به عنوان مثال:
123e4567-e89b-12d3-a456-426655440000
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
چهار بیت از رقمی که با M نشان داده شده‌است، نسخه UUID و رقمی که با N نشان داده شده‌است، نوع UUID را مشخص می‌کند. در این مثال M، یک و N مقدار a (10 ده دهی) را نشان می‌دهد، به این معنی است که نوع UUID از نوع ۱، و نسخه آن نیز ۱ می‌باشد که طبق DCE/RFC4122 نوع UUID براساس زمان است.
قالب متعارف ۸-۴-۴-۴-۱۲ براساس "طرح بندی رکورد" برای UUIDهای ۱۶ بایتی است:
+طرح بندی رکورد UUID
نام
طول (بایت)
طول (ارقام هگزادسیمال)
محتوا
time_low
۴
۸
عدد صحیحی که ۳۲ بیت پایینی زمان است
time_mid
۲
۴
عدد صحیحی که ۱۶ بیت میانی زمان است
time_hi_and_version
۲
۴
۴ بیت پرارزش، نسخه را مشخص کرده و ۱۲ بیت دیگر ۱۲ بیت بالایی زمان است
clock_seq_hi_and_res clock_seq_low
۲
۴
بیت‌های ۱ تا ۳ پرارزش نوع UUID و ۱۳ تا ۱۵ بیت باقی مانده دنباله ساعت است (clock sequence)
node
۶
۱۲
شناسه گره ۴۸ بیتی
این فیلدها مربوط به نسخه‌های ۱ و 2 UUID که مبتنی بر زمان است، می‌باشد اما همان قالب ۸-۴-۴-۴-۱۲ برای همه UUIDها استفاده می‌شود.
GUIDهای مایکروسافت گاهی با استفاده از دوابرو نمایش داده می‌شوند:
{123e4567-e89b-12d3-a456-426655440000
این قالب را نباید با "قالب رجیستری ویندوز" اشتباه شود.
فضای نام Uniform Resource Name (مخفف: URN) برای UUIDها تعریف می‌کند. یک UUID به عنوان یک URN به شکل زیر است:
urn
کدبندی
کدبندی دودویی (انگلیس: binary encoding) UUIDها در سامانه‌های مختلف، متفاوت است. بسیاری از سامانه‌ها UUID را به صورت کامل در قالب big-endian کدبندی می‌کنند.
برای مثال 00112233-4455-6677-8899-aabbccddeeff به صورت بایت‌های 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff کدبندی می‌شود.
سامانه‌های دیگر به ویژه مارشال UUIDها در مایکروسافت در کتابخانه‌های COM/OLE از قالب mixed-endian استفاده می‌کنند که در آن ۳ مولفه اول UUID به صورت little-endian و دو مولفه آخری به صورت big-endian کدبندی می‌شوند.
برای مثال 00112233-4455-6677-8899-aabbccddeeff به صورت بایت‌های 33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff کدبندی می‌شود.
گونه‌ها
یکی از گونه‌های تعریف شده توسط , نوع ۰ (نشان داده شده با یک بیت الگوی 0xxx N=0..7 ) برای سازگاری با سیستم قدیمی circa 1988 که اکنون منسوخ شده‌است و قالب UUID 1.5 سامانه محاسبات شکبه‌ای آپولو (انگلیسی: Apollo Network Computing System) تعریف شده‌است. در این قالب، ۶ بایت اول زمان با طول ۴۸ بیت است (تعداد واحدهای ۴ میلی ثانیه از ۱ ژانیویه 1980 UTC). هفت بایت آخر یک شناسه میزبان (انگلیسی: host ID) 56-بیتی است. گرچه در جزئیات متفاوتند، شباهت گونه ۱ با گونه ۰ کاملا مشهود است.
حمله تولد
یوآرآی