آدرس دهی بدون کلاس

مقدمه:

همانگونه که در فصل قبل دیدیم، آدرس دهی بدون کلاس مشکلا ت زیادی ایجاد می کند. تا اواسط دهه ۹۰ یک بازه آدرس به معنای بلوکی از آدرس های کلاس Aیا B یا C بود

در دهه ۹۰ میلادی تامین کنندگان خدمات اینترنت یا ISP ها رواج پیدا کردند. در حقیقت ISP سازمانی است که دسترسی ه اینترنت را برای افراد، شزکت های کوچک و موسساتی که نمی خواهند سایت اینترنت ایجاد کنند ولی خواهان استفاده از سرویس های اینترنت نظیر پست الکترونیک و وب هستند فراهم می آورد.

یک ISP معمولا بازه بزرگی از آدرس ها را در اختیار می گیرد و این آدرس ها را به بازه هایی کوچک تر تقسیم کرده و از طریق مودم های Dialup، مودم های DSL، مودم های کابلی و نظایر آن در اختیار مشترکین خود قرار می دهد. در هر حال، مشتری برای حضور در اینترنت به یک آدرس IP نیاز دارد.

برای تسهیل این امر و مرتفع سازی مشکلات مربوط به آدرس دهی کلاس دار، مدیران اینترنت در سال ۱۹۹۶ معماری جدیدی به نام آدرس دهی بدون کلاس ایجاد کردند که موجب کنار زدن آدرس دهی کلاس دار شده است.

بلوک های با طول متغیر:

در آدرس دهی بدون کلاس، بلاک هایی باطول متغیر که به هیچ یک از کلاسها متعلق نیستند تخصیص داده می شود. ایده آدرس دهی بدون کلاس تخصیص آدرس بر اساس نیاز، با بلوک هایی با طول متغیر است. در این روش کل فضای آدرس دهی به بلوک هایی با اندازه های متغیر تقسیم می شود و به هر سازمانی بلوکی با اندازه مناسب تخصیص می یابد

image

 

در این طرح آدرس دهی، بلوک ها میتوانند به میزان دلخواه آدرس داشته باشند. گرچه به نظر میآید که این جمله بدان معناست که دیگر هیچ محدودیتی در نحوه آدرس دهی و تعداد آدرسها وجود ندارد، اما واقعیت آن است که برای عملکرد درست نظام آدرس دهی، این سستم نیز دارای محدودیت های مشخصی است (اما به نسبت آدرس دهی کلاس دار، محدودیت های کمتری است)

image

 

ماسک در آدرس دهی بدون کلاس:

در آدرس دهی کلاس دار، نقاب هر بلوک آدرس از یک کلاس به صورت ضمنی مشخص است. یعنی برای تعیین ماسک، کافی است تعیین کنید، بلوک آدرس به کدام کلاس آدرس متعلق است. (با استفاده از بایت پر ارزش آدرس). پس از این میتوان با اعمال ماسک آدرس شروع و خاتمه بلوک را مشخص کرد.

image

image

image

در آدرس دهی بدون کلاس، وقتی آدرس مشخص است نمیتوان تعیین کرد این آدرس به کدام بلوک تعلق دارد مگر این که ماسک معلوم باشد. به عبارت دیگر، آدرس بدون ماسک معنی و هویت ندارد. ماسک با نمایش CIDR مشخص می شود. یعنی آدرس به شکل ۲۸خواهد بود

image

شکل ۲۸: قالب آدرس در نظام آدرس دهی بدون کلاس

در این شکل،n پس از اسلش (/n) تعداد بیت های مشترک تمام آدرس های موجود در یک بلوک را مشخص می کند (مفهومی شبیه به Net ID در آدرس دهی کلاس دار). بنابراین اگر n=20 باشد بدان معناست که ۲۰ بیت اول همه آدرس ها در این بلوک آدرس مقدار ثابت دارد و ۱۲ بیت باقیمانده آدرس مقادیر مختلف آدرس ها را می سازند.

در آدرس دهی بدون کلاس دو واژه پیشوند (prefix) و طول پیشوند (prefix length) معمولا مورد استفاده قرار می گیرند. پیشوند نام دیگری برای بخش مشترک آدرس است (مثل Net ID). بین ماسک و طول پیشوند رابطه یک به یک وجود دارد؛ یعنی هر پیشوند دقیقا مشخص کننده یک ماسک است (به جدول ۵ نگاه کنید)

image

جدول ۵: طول پیشوند ها و ماسک های معادل

دو واژه پسوند(suffix) و طول پسوند (suffix length) نیز گاهی در آدرس دهی بدون کلاس استفاده می شوند. پسوند بخش متغیر آدرس است (مثل Host ID). طول پسوند برابر با ۳۲-n در نمایش CIDR است.

image

شکل ۲۹: مفاهیم پیشوند و پسوند جایگرین netid و hostid هستند

با توجه به آنچه که گفتیم یک آدرس در شیوه آدرس دهی بدون کلاس قالب زیر رادارد

image

شکل ۳۰: قالب تفصیلی آدرس در آدرس دهی بدون کلاس

محدودیت های آدرس دهی بدون کلاس:

با توجه به مفهوم پیشوند در آدرس دهی بدون کلاس که شرح آن در بالا رفت، ناچارا بلوک های آدرسی که توسط آدرس دهی بدون کلاس مشخص می شوند باید محدودیت های زیر را برآورده کنند

الف- تعداد آدرس ها باید توانی از ۲ باشد. دلیل این امر کاملا واضح است پسوند تعداد بیت های متغیر آدرس را در هر بلاک نشان میدهد. که با استفاده از آن میتوان آدرس داشت. (n طول پیشوند است). مشخص است که این تعداد توانی از ۲ است.

ب- اولین آدرس هر بلوک باید بر تعداد آدرس های بلوک قابل تقسیم باشد: این محدودیت ناشی از مفهوم ماسک است. اگر n بیت اول آدرس در همه آدرس های یک بلوک ثابت باشد، نخستین آدرس بلوک آدرسی است که ۳۲-n بیت کم ارزش آدرس آن همگی صفر است. از منظر باینری، معادل باینری اولین آدرس بلوک، یک عدد۳۲ بیتی است که ۳۲-n بیت کم ارزش آن ۰ است. این عدد باینری حتما بر بخشپذیر است (!!!)

مثال: کدام یک از موارد زیر میتواند آدرس شروع بلوکی باشد که حاوی ۱۶ آدرس است؟

۱-۲۰۵٫۱۶٫۳۷٫۳۲

۲-۱۹۰٫۱۶٫۴۲٫۴۴

حل: آدرس ۱ به دلیل اینکه بر ۱۶ بخشپذیر است میتواند آدرس شروع بلاک باشد و آدرس ۲ به دلیل عدم بخش پذیری نمی تواند آدرس شروع باشد. (برای انجام تقسیم کافی است معادل دهدهی آدرس ها رابنویسید. توجه داشته باشید که نمایش دهدهی نقطه دار در حقیقت نمایش آدرس IP در مبنای ۲۵۶ است)

یافتن جزئیات بلوک آدرس:

در آدرس دهی بدون کلاس، بلوکی از آدرس به یک سازمان تخصیص یافته است که اندازه آن ثابت نیست. اما با داشتن یک آدرس کامل در بلوک میتوان جزئیات بلوک را به صورت کامل تعیین کرد. این کار بر اساس مفهوم پیشوند امکانپذیر است

مثال: یکی از آدرس های بلوک برابر با ۱۶۷٫۱۹۹٫۱۷۰٫۸۲/۲۷ است. اولین آدرس بلوک کدام است؟

حل: طول پیشوند ۲۷ است، یعنی ۲۷ بیت اول ثابت است. اولین آدرس آدرسی است که ۵ بیت آخر آن صفر باشد

نمایش باینری آدرس

۱۰۱۰۰۱۱۱ ۱۱۰۰۰۱۱۱ ۱۰۱۰۱۰۱۰ ۰۱۰۱۰۰۱۰

۲۷بیت اول را نگه میداریم و بقیه را صفر می کنیم

۰۱۰۰۱۱۱ ۱۱۰۰۰۱۱۱ ۱۰۱۰۱۰۱۰ ۰۱۰۰۰۰۰۰

نتیجه به شکل CIDR

167.199.170.64/27

مثال: اگر یکی از آدرس های بلوک ۱۴۰٫۱۲۰٫۸۴٫۲۴/۲۰ باشد، اولین آدرس بلوک کدام است؟

حل: مانند حالت قبل عمل می کنیم. توجه دارید که در این مثال بیت های اول و دوم آدرس بدون تغییر باقی میمانند. بایت آخر نیز صفر خواهد شد. فقط بایت سوم را باید بررسی کرده و به دست بیاوریم (این گزاره ها با توجه به n=20 بیان شد) راه حل را در ادامه مشاهده می کنید.

image

مثال: در شبکه ای یکی از آدرس های بلاک برابر با۱۶۷٫۱۹۹٫۱۷۰٫۸۲/۲۷ است. تعداد آدر سهای این بلاک، محدوده آدرس ها و اولین و آخرین آدرس بلاک را مشخص کنید؟

پاسخ:

الف- ابتدا تعداد آدرس های بلاک را تعیین می کنیم

طول پیشوند مشخص کننده آن است که در این بلاک ۲۷ بیت آغازین آدرس ها ثابت و باقیمانده بیت ها یعنی ۵ بیت، متغیر است. بنا براین در این بلاک ۳۲ آدرس وجود دارد (۲۵)

ب- در مرحله بعد آدرس شروع بلاک یا همان آدرس شبکه را پیدا می کنیم. برای این منظور کافی است یکی از آدرس های موجود در بلاک را با ماسک AND کنیم. در این صورت داریم:

/۲۷=۲۵۵٫۲۵۵٫۲۵۵٫۲۲۴

۱۶۷٫۱۹۹٫۱۷۰٫۸۲ AND 255.255.224.0 = 167.199.170.64

image

ج- برای یافتن آخرین آدرس کافی است تا اولین آدرس را با تعداد آدرس ها جمع کنیم (جمع در مبنای ۲۵۶) به روش معادل میتوان نخستین آدرس را با مکمل یک ماسک OR کنیم. در این صورت داریم:

۱۶۷٫۱۹۹٫۱۷۰٫۶۴ OR 0.0.0.31 = 167.199.170.95

image

مثال: در این مثال نمونه ای از یک VLSM را مورد بررسی قرار می دهیم. فرض کنید شما مدیر شبکه یک سازمان هستید. به این سازمان یک بلاک آدرس C داده شده است ۲۰۱٫۴۵٫۲۲۲٫۰/۲۴. شما بر اساس برآوردهایی که انجام داده اید توانسته اید ۶ بخش مختلف را در سازمان تشخیص دهید که عبارتند از:

الف- بخش ۱ و ۲و۳و۴ هرکدام با ۱۰ کامپیوتر

ب-بخش ۵ با حدود ۴۰ کامپیوتر

ج- بخش ۶ با حدود ۱۰۰ کامپیوتر

با توجه به این اطلاعات شما تصمیم می گیرید تا با استفاده از زیر شبکه سازی این بخش ها را آدرس دهی کنید. زیر شبکه ها، محدوده آدرس های قابل استفاده و ماسک های هر یک از این زیرشبکه ها را ارائه دهید؟

راه حل:

برای بخش های ۱و۲و۳و۴ هر کدام ۱۶ آدرس در نظر می گیریم که جمعا ۶۴ آدرس را در بر می گیرد.

برای بخش ۵ تعداد ۶۴ آدرس در نظر می گیریم و بخش ۶ نیز می تواند حاوی ۱۲۸ آدرس باشد. جمع این تعداد ۲۵۶ خواهد بود

اما برای تقسیم بندی از شکل ۳۲ استفاده می کنیم.همانگونه که در این شکل نیز مشخص است اگر اولین بیت پر ارزش از ۸ بیت انتهایی آدرس ها را به مقدار ۰ به شکل ثابت مقدار دهی کنیم، در این صورت ۷ بیت انتهایی آدرس قابل تغییر و جمعا ۱۲۸ بیت ایجاد خواهند کرد که برای آدرس دهی ۱۲۶ میزبان کفایت می کند (مطابق با نیازهای بخش ۶). بنابراین برای بقیه آدرس ها این بیت پر ارزش مقدار ثابت ۱ خواهد داشت. حال اگر دومین بیت پر ارزش را به ۰ مقداردهی کنیم (یعنی ۲ بیت پر ارش به ۱۰ مقداردهی شده باشند) جمعا ۶۴ آدرس به دست خواهد آمد که مطابق با نیازهای بخش ۵ است. برای باقیمانده آدرس ها دو بیت پر ارزش از بایت آخر آدرس مقدار ۱۱ خواهند داشت. حال برای بخش های ۱و۲و۳و۴ کافی است ۲ بیت بعدی پس از ۲ بیت اول (یعنی جمعا ۴ بیت پرارزش اول) را بامقادیر ۰۰،۰۱،۱۰ و ۱۱ مقداردهی کنیم.

این توضیحات را میتوان در قالب نمودار درختی شکل ۳۱ نیز ارائه داد. مشاهده می کنید که مسیر رسیدن از ریشه تا هریک از برگ ها علاوه بر اینکه معین می کند چند بیت به عنوان زیر شبکه باید به پیشوند اضافه شود (طول مسیر) مقدار آنها را نیز مشخص می کند

image

شکل ۳۱: نمودار درختی نحوه زیرشبکه سازی با طول متغیر (مثال)

و در نهایت خلاصه کار به شکل زیر قابل بیان است:

image

شکل ۳۲: مثالی از یک زیر شبکه سازی با طول متغیر

نکته ای که باید همیشه برای این نوع تخصیص دهی مدنظر داشته باشید، این است که از بزرگترین زیر شبکه شروع کنید و تخصیص آدرس را از بزرگنرین زیرشبکه به کوچکترین زیرشبکه انجام دهید. اگر از روش درختی و نصف کردن استفاده کنید این کار به صورت اتوماتیک انجام می شود.

اهمیت یافتن نخستین آدرس بلاک (آدرس شبکه) :

با دنبال کردن مباحث تا به اینجا ممکن است با یک سئوال مواجه شده باشید و آن هم این است که اهمیت یافتن نخستین آدرس بلاک در یک چیست؟ مسیریاب ها برای مسیریابی نیاز دارند تا مشخص کنند که آدرس مقصد یک بسته، به کدام شبکه متعلق است تا بتوانند بر اساس اطلاعات موجود در جدول مسیریابی خود، اقدام به تعیین مقصد بعدی بسته نمایند. وجود روالی که مسیریاب بتواند بر اساس آن تعیین کند، یک آدرس متعلق به کدام شبکه است از منظر مسیریاب حیاتی است. در مثال های گوناگونی که در این فصل مورد بررسی قرار دادیم، وجود چنین روالی بارها مورد آزمون قرار گرفت.

این موضوع در شکل ۳۴ نمایش داده شده است

image

image

شکل ۳۴: مسیریابی در مسیریاب و نقش آدرس شبکه در مسیریابی

لطفا نظر خود را بنویسید

6 دیدگاه