درک شبکه، بخشی اساسی در پیکربندی محیط‌های پیچیده در اینترنت است. این امر در هنگام تلاش برای برقراری ارتباط موثر بین سرورها، ایجاد سیاست‌های امن شبکه و سازماندهی گره‌های شما بسیار مأثر است.

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

 

 

درک آدرس‌های IP

هر مکان یا دستگاهی در شبکه باید دارای آدرس باشد. بدین معنی که می‌توان با اشاره به طراحی آن تحت یک سیستم آدرس‌های از پیش تعریف شده، به آن دستگاه رسید. در مدل TCP/IP معمولی از شبکه لایه‌ای، این کار با چند لایه مختلف انجام می‌شود؛ اما معمولاً زمانی‌که به یک آدرس در شبکه اشاره می‌کنیم، منظور همان آدرس IP است.

آدرس‌های IP اجازه دسترسی به منابع شبکه از طریق یک رابط شبکه را فراهم می‌کنند. اگر یک رایانه بخواهد با رایانه دیگری ارتباط برقرار نماید، می‌تواند اطلاعات را به آدرس IP رایانه ریموت هدایت کند. با فرض اینکه این دو کامپیوتر در یک شبکه هستند، یا اینکه رایانه‌ها و دستگاه‌های مختلفی در بین این دو وجود دارند و می‌توانند درخواست‌ها را از طریق شبکه منتقل نمایند، رایانه‌ها باید بتوانند با یکدیگر ارتباط داشته و اطلاعاتی را ازسال کنند.

هر آدرس IP باید در شبکه خود منحصر به فرد باشد. شبکه‌ها می‌توانند از یکدیگر جدا باشند؛ یا اینکه ارتباط آن‌ها بصورت bridge باشد تا دسترسی بین شبکه‌های مجزا فراهم شود. سیستمی به نام Network Address Translation وجود دارد که هنگامی‌که بسته‌ها از مرزهای شبکه عبور می‌نمایند، اجازه می‌دهد تا آدرس‌های بسته بازنویسی شوند و به آن‌ها اجازه می‌دهد تا به مقصد صحیح خود ادامه دهند. به عبارت دیگر، این سیستم اجازه می‌دهد تا از آدرس IP یکسانی در شبکه‌های منفرد و متعدد استفاده شود؛ همچنان که (در صورت پیکربندی صحیح) به آن‌ها امکان ارتباط با یکدیگر را می‌دهد.

 

این مطلب نیز ممکن است برای شما مفید باشد: پیدا کردن اطلاعات شبکه در سیستم عامل ابونتو

 

تفاوت بین IPv4 و IPv6

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

آدرس‌های IPv4، آدرس‌های 32 بیتی هستند. هر بایت یا هر بخش 8 بیتی آدرس، به یک دوره تقسیم می‌شود و به طور معمول به صورت یک عدد 0-255 بیان می‌شود.

یک آدرس IPv4 معمولی مشابه زیر است:

192.168.0.5

کمترین مقدار در هر هشت‌تایی، عدد 0 و بالاترین مقدار 255 است.

شما همچنین می‌توانید این آدرس را به صورت باینری بیان نمایید تا ایده بهتری از شکل ظاهری هر بایت بدست آورید. در این روش، نمایش هر 4 بیت با یک فاصله جدا شده و نقطه‌های بین هر بایت با خط تیره جایگزین شده است:

1100 0000 - 1010 1000 - 0000 0000 - 0000 0101

 

تشخیص اینکه این دو روش نوشتن، یک آدرس IP یکسانی را نشان می‌دهند، بعداً برای درک مفاهیم مهم خواهد بود.

اگرچه تفاوت‌های دیگری نیز در عملکرد پروتکل و پس زمینه IPv4 و IPv6 وجود دارد؛ اما تفاوت قابل توجه در فضای آدرس آن‌ها است. IPv6، آدرس‌ها را به صورت یک عدد 128 بیتی بیان می‌کند. این بدان معنی است که فضای IPv6 به تعداد 7.9*1028 برابر نسبت به IPv4 می‌تواند آدرس IP تعریف کند.

برای بیان این رنج آدرس گسترده، IPv6 به طور کلی به صورت هشت بخش از چهار رقم هگزادسیمال نوشته می‌شود. اعداد هگزادسیمال، اعداد 0-15 را با استفاده از ارقام 0-9 و همچنین حروف a-f (برای بیان 9-15) نشان می‌دهند. یک آدرس IPv6 معمولی ممکن است شبیه به این باشد:

1203:8fe0:fe80:b897:8990:8a7c:99bf:323d

همچنین می‌توانید، این آدرس‌ها را در یک قالب فشرده بنویسید. قوانین IPv6 به شما این امکان را می‌دهد که صفرهای ابتدایی هر بخش را از آن بخش حذف کرده و یک رنج از گروه‌های صفر را با یک کاراکتر "::" جایگزین نمایید.

به عنوان مثال، اگر یک گروه در آدرس IPv6 دارید که به شکل زیر است:

...:00bc:...

به جای آن می‌توانید، مقدار زیر را تایپ کنید:

...:bc:...

 

برای نشان دادن حالت دوم، اگر محدوده‌ای در آدرس IPv6 با چندین گروه به صورت صفر دارید (به عنوان مثال شکل زیر را در نظر بگیرید):

...:18bc:0000:0000:0000:00ff:...

شما می‌توانید آن را نیز به صورت زیر فشرده نمایید (همراه به حذف صفرهای اصلی گروه؛ مانند آنچه در بالا انجام دادیم):

...:18bc::ff...

در هر آدرس، تنها یکبار می‌توانید این کار را انجام دهید، در غیر این صورت امکان بازسازی آدرس به طور کامل وجود ندارد.

در این راهنما، مفاهیم باقیمانده از شبکه، با استفاده از آدرس IPv4 بررسی می شود؛ زیرا بحث در مورد فضای آدرس کوچک‌تر آسان‌تر است.

 

این مطلب نیز ممکن است برای شما مفید باشد: یافتن رابط های شبکه در دسترس در لینوکس

 

کلاس ها و محدوده های رزرو شده آدرس IPv4

آدرس‌های IP معمولاً از دو جزء جداگانه ساخته می‌شوند. قسمت اول آدرس برای شناسایی شبکه‌ای که آدرس بخشی از آن است استفاده می‌شود. قسمت دوم برای تعیین یک میزبان خاص در آن شبکه استفاده می‌شود.

مکانی که مشخصات شبکه به پایان برسد و مشخصات میزبان آغاز شود، به نحوه پیکربندی شبکه بستگی دارد. در این مورد بصورت دقیق‌تر در ادامه بحث خواهد شد.

آدرس‌های IPv4، از نظر کلاسیک به پنج "کلاس" مختلف تقسیم می‌شوند (با نام‌های A تاE )که از نظر بخش‌های فضای آدرس پذیر IPv4 با هم متفاوت هستند. این کلاس‌ها توسط چهار بیت اول هر آدرس تعیین می‌شوند. بنابراین، با مشاهده این بیت‌ها می‌توان فهمید که هر آدرس IP در چه طبقه‌ای قرار دارد.

در اینجا یک جدول ترجمه وجود دارد که آدرس‌ها را بر اساس بیت‌های اصلی آن‌ها تعریف می‌کند:

 

کلاس A

0—: اگر بیت اول یک آدرس IPv4 برابر با "0" باشد؛ این بدان معنی است که آدرس، بخشی از کلاس A است. بنابراین، تمام آدرس‌ها از 0.0.0.0 تا 127.255.255.255 در کلاس A است.

 

کلاس B

10–: کلاس B شامل تمام آدرس‌ها از 128.0.0.0.0 تا 191.255.255.255 است. این نشان دهنده آدرس‌هایی است که بیت اول آن ها "1" است، اما بیت دوم آن ها "1" نیست.

 

کلاس C

110-: کلاس C به صورت رنج آدرس‌های 192.0.0.0 تا 223.255.255.255 تعریف می‌شود. این نشان دهنده تمام آدرس‌هایی است که دو بیت اول آن ها "1" است؛ اما بیت سوم آن ها "1" نیست.

 

کلاس D

1110: این کلاس، آدرس‌هایی را شامل می‌شود که "111" را به عنوان سه بیت اول خود دارند، اما بیت بعدی آن ها "0" است. این محدوده آدرس شامل آدرس‌هایی از 224.0.0.0.0 تا 239.255.255.255 است.

 

کلاس E

1111: این کلاس، آدرس‌هایی بین 240.0.0.0 تا 255.255.255.255 را تعریف می‌کند. هر آدرسی که با چهار بیت "1" شروع شود؛ در این کلاس گنجانده شده است.

 

آدرس‌های کلاس D برای پروتکل‌های malti casting اختصاص یافته است که به شما امکان می‌دهد یک بسته را برای یک گروه از میزبان‌ها همزمان ارسال نمایید. آدرس‌های کلاس E برای استفاده‌های بعدی و تجربی اختصاص یافته و عمدتاً مورد استفاده قرار نمی‌گیرند.

به طور کلاسیک، هر یک از کلاس‌های عادی (A-C)، شبکه و بخش‌های میزبان آدرس را به طور متفاوت تقسیم می‌کنند تا شبکه‌های با اندازه‌های مختلف را در خود جای دهند.

آدرس‌های کلاس A از 4 بیت باقیمانده بخش ابتدایی برای نشان دادن شبکه و بقیه آدرس برای تعریف میزبان استفاده می‌کنند. این، برای تعریف چند شبکه با تعداد زیادی هاست مناسب است.

آدرس‌های کلاس B از دو بخش ابتدایی (4 بیت بخش اول و تمام بیت‌های بخش دوم) برای تعریف شبکه و بقیه برای تعریف میزبان‌های هر شبکه استفاده می‌کنند.

آدرس‌های کلاس C، از سه بخش اول (4 بیت بخش اول و تمام بیت‌های بخش دوم و سوم) برای تعریف شبکه و از بخش آخر برای تعریف میزبان در آن شبکه استفاده می‌نمایند.

تقسیم بخش‌های زیادی از فضای IP به کلاس‌ها، اکنون تقریباً یک مفهوم قدیمی است. در اصل، این به عنوان یک شکاف متوقف شده برای مشکل کمبود فضا در آدرس‌های IPv4 اجرا شد (بدین معنی که اگر در شبکه‌های جداگانه‌ای باشید می‌توانید چندین کامپیوتر با میزبان یکسان داشته باشید). این، بعدها با طرح‌های جدیدتر جایگزین شد که در ادامه به آن‌ها خواهیم پرداخت.

 

این مطلب نیز ممکن است برای شما مفید باشد: یافتن رمز عبور WiFi شبکه های متصل در لینوکس

 

محدوده های خصوصی رزرو شده

بخش‌هایی از فضای IPv4 وجود دارد که برای استفاده‌های خاص ذخیره شده است.

یکی از مفیدترین محدوده‌های رزرو شده، محدوده loopback است که توسط آدرس‌های 127.0.0.0.0 تا 127.255.255.255 مشخص شده است. این محدوده توسط هر میزبان برای آزمایش شبکه استفاده می‌شود. به طور معمول، این میزبان با اولین آدرس در این محدوده یعنی 127.0.0.1 آدرس دهی می‌شود.

هر یک از کلاس‌های عادی نیز محدوده‌ای در درون خود دارند که برای تعیین آدرس‌های شبکه خصوصی استفاده می‌شود. به عنوان مثال، برای آدرس‌های کلاس A، آدرس‌های از 10.0.0.0 تا 10.255.255.255 برای اختصاص شبکه خصوصی رزرو شده‌اند. برای کلاس B، این محدوده 172.16.0.0 تا 172.31.255.255 است. برای کلاس C، محدوده 192.168.0.0 تا 192.168.255.255 برای استفاده خصوصی رزرو شده است.

هر رایانه‌ای که مستقیماً به اینترنت متصل نباشد (هر رایانه‌ای که از طریق روتر یا سیستم NAT دیگری با اینترنت مرتبط باشد) می‌تواند، به دلخواه از این آدرس‌ها استفاده کند.

 

Netmaskها و Subnetها

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

همانطور که در بالا بحث کردیم، هر فضای آدرس به یک قسمت شبکه و یک قسمت میزبان تقسیم می‌شود. تعداد آدرسی که هر یک از این‌ها می‌گیرند، به کلاس مربوط به آدرس بستگی دارد. به عنوان مثال، برای آدرس‌های کلاس C، سه بخش اول برای توصیف شبکه و بخش آخر برای آدرس میزبان استفاده می‌شود. بنابراین، برای آدرس 192.168.0.15، بخش 192.168.0 مربوط به آدرس دهی شبکه است و بخش 15 آن میزبان را توصیف می‌نماید.

به طور پیش فرض، هر شبکه تنها یک زیرشبکه دارد که شامل تمام آدرس‌های میزبان تعریف شده در داخل آن است. netmask در اصل مشخصات تعداد بیت‌های آدرسی است که برای قسمت شبکه استفاده می‌شود. subnet mask یکی دیگر از netmaskها است که برای تقسیم بیشتر شبکه مورد استفاده قرار می‌گیرد.

هر بیت از آدرس که برای توصیف شبکه مهم تلقی می‌شود، باید به صورت یک بیت "1" در netmask نشان داده شود.

به عنوان مثال، آدرس مورد بحث در بالا (192.168.0.15) را می‌توان مشابه زیر، به صورت باینری بیان کرد:

1100 0000 - 1010 1000 - 0000 0000 - 0000 1111

 

همانطور که در بالا توضیح دادیم، قسمت شبکه برای آدرس های کلاس C، همان 3 بخش اول یا 24 بیت اول است. بنابراین، netmask آن به صورت زیر است:

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

این را می‌توان در قالب معمولی IPv4 به صورت 255.255.255.0 نوشت. هر بیتی که در نمایش باینری netmask برابر با "0" باشد، بخشی از میزبان آدرس محسوب می‌شود و می‌تواند متغیر باشد. بنابراین، بیت‌هایی که "1" هستند، برای شبکه یا زیرشبکه آن ثابت هستند.

با استفاده از یک عملیات AND بیتی بین آدرس و netmask، قسمت شبکه آدرس را می‌توان تعیین کرد. یک عملیات AND بیتی در اصل، قسمت شبکه آدرس را ذخیره می‌کند و قسمت میزبان را دور می‌اندازد. در مثال فوق به صورت زیر خواهد بود:

1100 0000 - 1010 1000 - 0000 0000 - 0000 0000

این را می‌توان به صورت 192.168.0.0 بیان کرد. بنابراین، مشخصات میزبان تفاوت بین این مقدار اصلی و قسمت میزبان در آدرس است. در مورد مثال ما، میزبان "0000 1111" یا 15 است.

ایده subnetting این است که بخشی از فضای میزبان یک آدرس را گرفته و از آن به عنوان مشخصات اضافی شبکه برای تقسیم مجدد فضای آدرس استفاده نمایید.

به عنوان مثال، یک netmask از 255.255.255.0 همانطور که در بالا مشاهده کردیم، 254 میزبان را در شبکه ایجاد می‌کند (شما نمی‌توانید از 0 یا 255 برای آدرس میزبان استفاده کنید؛ زیرا این دو آدرس رزرو شده اند). اگر بخواهیم این را به دو شبکه فرعی تقسیم نماییم، می‌توانیم از یک بیت قسمت میزبان آدرس به عنوان subnet mask استفاده کنیم.

 

بنابراین، در مثال ما، بخش شبکه این است:

1100 0000 - 1010 1000 - 0000 0000

و بخش میزبان به صورت زیر است:

0000 1111

می‌توانیم از بیت اول میزبان خود برای تعیین زیر شبکه استفاده کنیم. این کار را می‌توان با تنظیم subnet mask از:

1111 1111 - 1111 1111 - 1111 1111 - 0000 0000

به آدرس زیر انجام داد:

1111 1111 - 1111 1111 - 1111 1111 - 1000 0000

در علامت گذاری کلاسیک IPv4، این به صورت 192.168.0.128 بیان می‌شود.

آنچه در اینجا انجام داده‌ایم، تعیین بیت اول آخرین بخش آدرس به عنوان مشخص کردن آدرس شبکه است. با این کار به طور موثر می‌توان دو زیر شبکه را تولید کرد. اولین زیر شبکه از 192.168.0.1 تا 192.168.0.127 است. زیرشبکه دوم شامل میزبان‌های 192.168.0.129 تا 192.168.0.255 است. دقت کنید که از زیر شبکه خود نباید به عنوان آدرس استفاده نمایید.

اگر برای شبکه از بیت‌های بیشتری از فضای میزبان استفاده کنید، می‌توانید تعداد بیشتری از شبکه‌های فرعی را بدست آورید.

 

 

 

منبع:

digitalocean