شبکه را آسان بیاموزیم – قسمت اول- آدرس دهی در شبکه – IPv4 Addressing

comments0 نظر views بازدید
Share

در این بخش قصد داریم در مورد آدرس دهی در شبکه صحبت کنیم و نکات و موارد مهم و کلیدی مربوط به آن را مطرح کنیم، ضمنا در هر بخش با ارائه مثالهای مرتبط سعی خواهیم داشت نکات بصورت کامل و قابل درک بیان شود.

ممکن است فکر کنید آدرس دهی IP در یک شبکه کار ساده و بی اهمیتی می باشد و به راحتی می توان به یک اینترفیس یا کارت شبکه بر روی یک کامپیوتر و یا تجهیزات دیگر آدرس IP اختصاص داد و همین که آدرس ها بتوانند با یکدیگر ارتباط برقرار کنند، و به اصطلاح Ping بین آنها را دریافت کردید کار تمام است و دیگر نیازی به فکر کردن در مورد نحوه محاسبه آدرسها و همچنین دقت در مصرف آدرسها نیست. اما نکته مهم در اینجاست که اگر هدفمان ایجاد یک شبکه هرچند کوچک و محدود می باشد و یا اینکه می خواهیم در طراحی شبکه های خود از ابتدا منطق و مفهوم آدرس دهی را رعایت کنیم و بتوانیم با گذشت زمان در محاسبه و طراحی آدرس دهی تجربه و مهارت پیدا کنیم از همان آغاز باید مفاهیم مربوط به آن را در نظر گرفته و رعایت کنیم.

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

همانطور که می دانید سیستم های اطلاعاتی و کامپیوتری محاسبات را بر اساس اعداد بصورت باینری انجام می دهند که شامل ۰ و ۱ می باشد، از مجموع صفرها و یک های موجود در یک عدد باینری می توانیم عملیات مورد نظر و یا اعداد دسیمال یا هگزادسیمال مورد نظر را استخراج کنیم. در آدرس دهی IP نسخه چهار یا همان IPv4 مجموع تعداد صفرها و یا یک هایی که در ساختار آدرس وجود دارند در مجموع تعداد ۳۲ عدد باینری یا ۳۲ صفر و یا یک می باشد به همین دلیل به آن یک آدرس ۳۲ بیتی می گوئیم. شاید در مورد آدرس دهی از نوع IP نسخه شش یا همان IPv6 نیز زیاد شنیده باشید، این نوع آدرس دهی نیز در حال حاضر بسیار مورد استفاده و کاربردی می باشد و حتما در بخشهای بعدی پس از آشنایی با آدرس دهی از نوع IPv4 به آن خواهیم پرداخت.

همانطور که در بالا اشاره شد، آدرس دهی IPv4 با استفاده از ۳۲ bit انجام می شود با توجه به این امر سوالات زیر در ذهن ما ایجاد می شود:

  • آیا این ۳۲ بیت همگی در کنار هم قرار میگیرند؟
  • آیا آدرس IPv4 از یک قسمت کلی تشکیل شده یا از چند بخش تشکیل می شود؟
  • آیا راهی برای به خاطر سپاری آن برای ما وجود دارد؟
  • آیا در این نوع آدرس دهی راهی برای جداسازی منطقی آدرس ها از یکدیگر وجود دارد؟
  • آیا می توانیم ارتباط بین بازه آدرس های مختلف را کنترل کنیم؟
  • آیا دسترسی از یک بازه آدرس به یک بازه آدرس در محل دیگر امکانپذیر است؟
  • و سوالاتی از این قبیل …

پاسخ به این سوالات در بخش های بعدی برای شما امکانپذیر خواهد بود، الیته اگر در حال حاضر پاسخ ها را می دانید، جهت یادآوری مطالب مربوطه ادامه مطلب را مطالعه نمائید.

نوع محاسبه و نوع نمایش آدرس IPv4 توسط سیستم های اطلاعاتی با یکدیگر کاملا متفاوت است، به این معنی که اعدادی که ما در بخش آدرس IP بر روی یک سیسنم مشاهده می کنیم بصورت نمایش اعداد از نوع دسیمال می باشد در صورتی که اعداد متناظری که سیستم جهت محاسبه آن آدرس مورد استفاده قرار می دهد از نوع باینری می باشد. به عنوان مثال در صورتی که ما عدد ۵ را که بصورت دسیمال می باشد در نظر بگیریم، این عدد برای یک سیستم اطلاعاتی و کامپیوتری بصورت ۱۰۱ معنا خواهد داشت.

به همین دلیل قبل از آغاز اشاره به آدرس های IP به بخش های تشکیل دهنده و اجزای آن اشاره می کنیم. همانطور که گفتیم اعداد باینری یا همان صفر و یک های حاضر در آدرس IPv4 در مجموع ۳۲ عدد یا از به شکلی که از این پس به آن اشاره می کنیم ۳۲ بیت می باشد. این مجموع ۳۲ بیت باینری در آدرس IPv4 به چهار دسته کوچکتر که هر دسته شامل هشت بیت می باشد تقسیم شده و با استفاده از نقطه یا همان Dot از یکدیگر جدا می شوند، به دسته های کوچکتری تقسیم میشوند که هر کدام از این دسته ها یک Octet نامیده می شوند. بنابر این یک آدرس IPv4 آدرسی ۳۲ بیتی می باشد که از چهار Octet تشکیل شده است.

هرکدام از Octet ها دارای هشت بیت می باشد و هر کدام از بیتها می تواند صفر و یا یک باشد، به این ترتیب اگر تمامی اعداد در این هشت بیت همگی صفر باشند Octet به این صورت ۰۰۰۰۰۰۰۰ خواهد بود و اگر همگی یک باشند Octet به این صورت ۱۱۱۱۱۱۱۱ خواهد بود. به این ترتیب با قرار گرفتن صفر در تمامی بیتهای موجود در Octet کوچکترین عدد ایجاد می شود و با قرار گرفتن یک در تمامی بیتهای موجود در Octet بزرگترین عدد قابل ارائه در یک Octet ایجاد میگردد. بنا براین تا به اینجای کار کوچکترین و بزرگترین اعداد قابل استفاده در یک Octet را معرفی کردیم:

۰۰۰۰۰۰۰۰

۱۱۱۱۱۱۱۱

یک آدرس IPv4 می تواند بصورت زیر مشخص شود، در این مثال هر X می تواند یا ۰ باشد یا ۱

XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX

توجه داشته باشید که هر هشت بیت از این آدرس ۳۲ بیتی در یک بخش با عنوان Octet قرار میگیرد و هر کدام از این بخش ها با استفاده از Dot از یکدیگر جدا میشوند.  .

بعنوان مثال در اینجا یک آدرس IPv4 بصورت باینری را نمایش داده ایم

 ۱۰۱۱۰۱۰۰٫۱۱۱۱۰۰۱۱٫۱۱۰۱۱۱۰۱٫۱۱۰۰۰۱۰۱

شاید تعجب کرده باشید و شاید پیش خودتان بگوئید اگر بخواهیم به این شکل آدرس های IP را در سیستم وارد کنیم و یا اینکه بخواهیم به خاطر بسپاریم بسیار سخت و مدیریت و کنترل آدرسها بسیار دشوار خواهد بود. برای اینکه این مشکل پیش نیاید در نمایش و استفاده از آدرس های IPv4 از معادل عددی دسیمال این اعداد باینری استفاده می کنیم. حال چگونه این اعداد باینری را به اعداد دسیمال تبدیل کنیم؟

نکته اول این است که در تبدیل اعداد باینری به دسیمال در آدرسهای IP از اعداد در مبنای دو استفاده می کنیم به این شکل که از حاصل ضرب عدد صفر یا یک در عدد دو به توان اعداد به ترتیب ۰ تا ۷ برای هر بیت بصورت جداگانه حاصل را بدست آورده و سپس مجموع اعداد بدست آمده را برای هر Octet بصورت جداگانه محاسبه می کنیم.

بنابر این اعداد ۰ تا ۷ را بعنوان توان در نظر میگیریم و عدد یک را در عدد دو که به ترتیب به توانهای ذکر شده در می آید ضرب میکنیم. به این شکل:

1

همانطور که در بالا مشاهده می کنید هر کدام از بیتها می تواند حاصل توان و ضرب نهایی به شکل بالا باشد.

در اولین bit حاصل ضرب ۱ در دو به توان صفر عدد ۱ می باشد.

در دومین bit حاصل ضرب ۱ در دو به توان یک عدد ۲ می باشد.

در سومین bit حاصل ضرب ۱ در دو به توان دو عدد ۴ می باشد.

در چهارمین bit حاصل ضرب ۱ در دو به توان سه عدد ۸ می باشد.

در پنجمین bit حاصل ضرب ۱ در دو به توان چهار عدد ۱۶ می باشد.

در ششمین bit حاصل ضرب ۱ در دو به توان پنج عدد ۳۲ می باشد.

در هفتمین bit حاصل ضرب ۱ در دو به توان شش عدد ۶۴ می باشد.

در هشتمین bit حاصل ضرب ۱ در دو به توان هفت عدد ۱۲۸ می باشد.

حال اگر این اعداد که به ازای هر کدام از bit های موجود در یک Octet با استفاده از عملیات بالا بدست آمده است را در کنار هم قرار دهیم، حاصل به شکل زیر خواهد بود:

2

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

در این مثال اعداد باینری موجود در هر Octet را بصورت جداگانه محاسبه می کنیم.

۱۱۰۱۰۱۰۱٫۱۱۱۰۱۰۰۱٫۱۰۰۰۱۰۰۱٫۰۰۰۰۱۱۰۰

در Octet اول یعنی ۱۱۰۱۰۱۰۱ به ازای هر عدد یک عدد مربوط به آن در جدول زیر را وارد می کنیم

3

در این Octet همانطور که مشاهده می نمائید از سمت چپ به راستbit اول  یک عدد ۱۲۸ و bit دوم یک عدد ۶۴ و زمانیکه به bit سوم می رسیم عدد صفر را مشاهده می کنیم به همین دلیل عددی که بدست خواهد آمد از حاصل ضرب صفر در عدد ۳۲ خواهد بود که همان صفر است و bit چهارم یک عدد ۱۶ وجود دارد، همچنین زمانی که به bit پنجم می رسیم عدد صفر را در آدرس مشاهد میکنیم که حاصل ضرب آن در عدد ۸ همان صفر خواهد بود پس به ازای آن یک صفر در نظر می گیریم، bit ششم یک عدد ۴ و bit هفتم نیز حاصل ضرب صفر در عدد ۲ که صفر است خواهد بود و در نهایت در bit هشتم نیز یک عدد ۱ در نظر خواهیم گرفت. در نهایت نتیجه محاسبات مربوط به این Octet به شکل زیر خواهد بود:

۱۱۰۱۰۱۰۱

(۱x128) + (1x64) + (0x32) + (1x16) + (0x8) + (1x4) + (0x2) + (1x1)

۱۲۸ + ۶۴ + ۰ + ۱۶ + ۰ + ۴ + ۰ + ۱

نتیجه این عملیات ساده عدد ۲۱۳ خواهد بود.

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

۱۱۱۰۱۰۰۱

(۱x128) + (1x64) + (1x32) + (0x16) + (1x8) + (0x4) + (0x2) + (1x1)

۱۲۸ + ۶۴ + ۳۲ + ۰ + ۸ + ۰ + ۰ + ۱

نتیجه این عملیات ساده نیز عدد ۲۳۳ خواهد بود.

حال به سراغ Octet سوم می رویم و به همین شکل اعداد باینری آن را به عدد دسیمال تبدیل می کنیم.

۱۰۰۰۱۰۰۱

(۱x128) + (0x64) + (0x32) + (0x16) + (1x8) + (0x4) + (0x2) + (1x1)

۱۲۸ + ۰ + ۰ + ۰ + ۸ + ۰ + ۰ + ۱

نتیجه این عملیات ساده نیز عدد ۱۳۷ خواهد بود.

حال به سراغ Octet چهارم می رویم و به همین شکل اعداد باینری آن را به عدد دسیمال تبدیل می کنیم.

۰۰۰۰۱۱۰۰

(۰x128) + (0x64) + (0x32) + (0x16) + (1x8) + (1x4) + (0x2) + (0x1)

۰ + ۰ + ۰ + ۰ + ۸ + ۴ + ۰ + ۰

نتیجه این عملیات ساده نیز عدد ۱۲ خواهد بود.

در نهایت با بدست آوردن چهار Octet و با قرار دادن آنها در کنار هم می توانیم آدرس IPv4 را بصورت کامل در حالت Decimal در کنار یکدیگر داشته باشیم.

۲۱۳٫۲۳۳٫۱۳۷٫۱۲

با مقایسه آدرس بدست آمده در حالت دسیمال با آدرس در حالت باینری می توانیم به راحتی و سهولت کار با آدرس های IPv4 در حالت دسیمال پی ببریم.

۱۱۰۱۰۱۰۱٫۱۱۱۰۱۰۰۱٫۱۰۰۰۱۰۰۱٫۰۰۰۰۱۱۰۰                   ۲۱۳٫۲۳۳٫۱۳۷٫۱۲

۱۱۰۱۰۱۰۱ = ۲۱۳

۱۱۱۰۱۰۰۱ = ۲۳۳

۱۰۰۰۱۰۰۱ = ۱۳۷

۰۰۰۰۱۱۰۰ = ۱۲

با توجه به مواردی که به آنها اشاره نمودیم اگر اعداد باینری موجود در یک Octet  همگی در کوچکترین حالت ممکن یعنی صفر باشند عدد بدست آمده به شرح زیر عدد صفر خواهد بود:

۰۰۰۰۰۰۰۰

(۰x128) + (0x64) + (0x32) + (0x16) + (0x8) + (0x4) + (0x2) + (0x1)

۰ + ۰ + ۰ + ۰ + ۰ + ۰ + ۰ + ۰

حال اگر تمامی این اعداد را با یکدیگر جمع کنیم عدد بدست آمده ۰ خواهد بود.

اگر اعداد باینری موجود در یک Octet همگی در بیشترین حالت یعنی عدد یک باشند عدد بدست آمده به شرح زیر ۲۵۵ خواهد یود:

 ۱۱۱۱۱۱۱۱

(۱x128) + (1x64) + (1x32) + (1x16) + (1x8) + (1x4) + (1x2) + (1x1)

۱۲۸ + ۶۴ + ۳۲ + ۱۶ + ۸ + ۴ + ۲ + ۱

حال اگر تمامی این اعداد را با یکدیگر جمع کنیم عدد بدست آمده ۲۵۵ خواهد بود.

بنابر این کوچکترین و بزرگترین اعداد قابل استفاده در آدرس IPv4 به ترتیب اعداد ۰ و ۲۵۵ خواهد بود.

در بخشهای بعدی در مورد اجزای مختلف آدرس IPv4 و همچنین کلاسهای مختلف IPv4 صحبت خواهیم نمود.

Share

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *