Code Module | کد ماژول
1.93K subscribers
357 photos
42 videos
6 files
356 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
‏RFC 4122 چیست؟ 🎲

‏RFC 4122‏ یک استاندارد فنی هست که توسط سازمان IETF‏ (Internet Engineering Task Force) تعریف شده، و برای تولید UUID هست که به شناسه‌های GUID هم شناخته میشه. این استاندارد تعریف میکنه که UUID باید یک مقدار ۱۲۸ بیتی باشه که به‌صورت یونیک تولید میشه. هدف اصلی این شناسه‌ها اینه که بتونن بدون نیاز به یک مرجع مرکزی، آیدی های یونیک تولید کنن.

همون‌طور که گفتیم یکی از دلایل اصلی استفاده از UUIDها اینه که نیازی به یک مرجع متمرکز(Central Authority) برای تولیدشون وجود نداره. یعنی میتونن در هر سیستمی، بدون نگرانی از تداخل، آیدی های جدید تولید کرد. این ویژگی باعث میشه که UUIDها برای سیستم‌های توزیع‌شده و محیط‌هایی که نیاز به id به فرد دارن، ایده‌آل باشن. UUIDها میتونن به صورت خودکار و با سرعت بالا (تا ۱۰ میلیون آیدی در ثانیه) برای اهداف مختلفی مثل transaction IDs, database IDs, or session IDs و ... تولید و استفاده بشن.

IEEE 802 و ارتباط آن با UUID

‏IEEE 802 مجموعه‌ای از استانداردهای مربوط به شبکه‌های کامپیوتری هست که در لایه‌های فیزیکی و پیوند داده مدل OSI فعالیت میکنن. این استانداردها در فناوری‌های ارتباطی کاربرد داره.

در برخی نسخه‌های UUID، یکی از بخش‌های این شناسه ۱۲۸ بیتی، از آدرس MAC دستگاه گرفته میشه. آدرس MAC یک مقدار ۴۸ بیتی منحصر به فرد هست که به هر کارت شبکه اختصاص داده شده و معمولاً از یک محدوده‌ی آدرس اختصاصی، که توسط IEEE مدیریت و انتخاب میشه. استفاده از MAC در تولید UUID باعث میشه که شناسه‌ها در بین دستگاه‌های مختلف یکتا باشن. اما به دلایل امنیتی و حریم خصوصی، این روش همیشه توصیه نمیشه و در برخی نسخه‌های UUID، روش‌های دیگه‌ای جایگزین اون شدن.

ساختار
UUID بر اساس RFC 4122

‏UUIDها از ۱۲۸ بیت تشکیل شدن و به صورت یک استرینگ ۳۶ کاراکتری نمایش داده میشن. این رشته شامل ۳۲ کاراکتر هگزادسیمال (اعداد ۰-۹ و حروف a-f) و ۴ خط تیره (-) است که بخش‌های مختلف UUID رو از هم جدا می‌کنن. فرمت کلی UUID به این صورته:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
‏- x یک عدد هگزادسیمال (۰ تا ۹ و A تا F) هست

‏- M نسخه‌ی UUID رو مشخص میکنه.
‏- N مقدار variant رو تعیین میکنه.

‌‌‌‏UUID از چندین بخش اصلی تشکیل شده؟‏

1. ‏time_low (بخش پایین timestamp) – ۳۲ بیت

‏2. time_mid (بخش میانی timestamp) – ۱۶ بیت

‏3. time_hi_and_version (بخش بالایی timestamp + شماره نسخه) – ۱۶ بیت

‏4. clock_seq_hi_and_reserved (بخش بالایی شماره sequence + مقدار variant) – ۸ بیت

‏5. clock_seq_low (بخش پایینی شماره sequence) – ۸ بیت

‏6. node (شناسه گره، معمولاً MAC یا مقدار تصادفی) – ۴۸ بیت

‏انواع UUID و روش‌های تولید آنها‏

1. نسخه ۱ (UUIDv1): بر اساس زمان و شناسه گره (معمولاً آدرس MAC) ساخته میشه. این نسخه تضمین میکنه که UUIDها به ترتیب زمانی تولید بشن.

2. نسخه ۲ (UUIDv2): مشابه نسخه ۱ هست اما برای استفاده در سیستم‌های DCE Security طراحی شده.

3. نسخه ۳ (UUIDv3): بر اساس هش MD5 و یک نام (namespace) ساخته میشه.

4. نسخه ۴ (UUIDv4): به طور کامل تصادفی هست و از اعداد تصادفی برای تولید
UUID استفاده میکنه.

5. نسخه ۵ (UUIDv5): مشابه نسخه ۳ است اما از الگوریتم هش SHA-1 استفاده میکنه.


به صورت کلی RFC-4122 استانداردی هست که به ما اجازه میده، شناسه‌های منحصر به فرد رو بدون نیاز به هماهنگی با یک مرجع مرکزی تولید کنیم. برای اطلاعات بیشتر در مورد این استاندارد به داکیومنت مراجعه کنید.

#uuid #rfc4122
@CodeModule
8🔥4