Cisco CCNA · 200-301 v2.0

ساختار IPv4 و Prefix

IPv4 هنوز بخش بزرگی از شبکه‌های سازمانی و سناریوهای CCNA را تشکیل می‌دهد. برای Subnetting، Routing و عیب‌یابی باید بتوانی یک آدرس را همراه Prefix بخوانی و دقیق بفهمی کدام بیت‌ها Network و کدام بیت‌ها Host هستند. این پایه را اگر درست بسازی، محاسبات فصل به مجموعه‌ای از قواعد قابل فهم تبدیل می‌شوند نه جدول‌هایی که باید حفظ شوند.

در پایان این درس باید بتوانی
  • ساختار ۳۲ بیتی IPv4 و چهار Octet را توضیح بدهی
  • رابطه Binary با نمایش ده‌دهی IPv4 را بفهمی
  • بخش Network و Host را بر اساس Prefix تشخیص بدهی
  • Prefixهای مرزی و غیرمرزی را درست تفسیر کنی
  • یک IPv4 را بدون Prefix تحلیل ناقص نکنی
  • تفاوت نگاه CIDR با Classهای قدیمی را بفهمی

ساختار ۳۲ بیتی IPv4

یک IPv4 Address از ۳۲ بیت ساخته شده است. بیت فقط می‌تواند مقدار ۰ یا ۱ داشته باشد. چون خواندن ۳۲ رقم صفر و یک برای انسان سخت است، این ۳۲ بیت را به چهار گروه ۸ بیتی تقسیم می‌کنیم. به هر گروه ۸ بیتی Octet می‌گوییم. بعد مقدار هر Octet را به عدد ده‌دهی تبدیل می‌کنیم و چهار عدد را با نقطه از هم جدا می‌نویسیم.

نمایش یک آدرس
192.168.10.25

هر بخش یک Octet است:
۱۹۲ | ۱۶۸ | ۱۰ | ۲۵

هر Octet می‌تواند از ۰ تا ۲۵۵ باشد، چون ۸ بیت در حالت‌های مختلف می‌توانند ۲۵۶ مقدار بسازند. عدد ۰ یکی از این مقدارهاست و عدد ۲۵۵ آخرین مقدار است. پس چیزی مثل 192.168.300.10 یک IPv4 معتبر نیست، چون ۳۰۰ از محدوده یک Octet خارج است. برای Subnetting لازم نیست متخصص ریاضی باشی، ولی باید ارزش ۸ بیت یک Octet را بشناسی. از چپ به راست ارزش بیت‌ها ۱۲۸، ۶۴، ۳۲، ۱۶، ۸، ۴، ۲ و ۱ است. هر بیتی که ۱ باشد، ارزشش در جمع قرار می‌گیرد و هر بیتی که ۰ باشد، حساب نمی‌شود.

تبدیل ۱۹۲ به Binary
۱۲۸ ۶۴ ۳۲ ۱۶ ۸ ۴ ۲ ۱
 ۱   ۱  ۰  ۰ ۰ ۰ ۰ ۰

۱۲۸ + ۶۴ = ۱۹۲
پس ۱۹۲ در Binary برابر ۱۱۰۰۰۰۰۰ است.

همین منطق برای همه Octetها استفاده می‌شود. هدف از یاد گرفتن Binary این نیست که تمام روز آدرس‌ها را به صفر و یک تبدیل کنی. Binary کمک می‌کند بفهمی Prefix دقیقاً روی کدام بیت متوقف شده و چرا Subnet Mask عددهایی مثل 255.255.255.192 یا 255.255.255.224 دارد. برای اینکه عدد ۳۲ بیت فقط یک تعریف حفظی نباشد، بهتر است رابطه بین شکل ده‌دهی آدرس و شکل واقعی آن را دقیق ببینی. دستگاه آدرس 192.168.10.25 را به‌صورت چهار عدد جداگانه ذخیره نمی‌کند؛ هر Octet در نهایت به هشت بیت تبدیل می‌شود و کنار سه Octet دیگر قرار می‌گیرد. نقطه‌هایی که در آدرس می‌بینیم فقط خواندن آن را برای انسان ساده می‌کنند. این نگاه بعداً در Subnetting خیلی مهم می‌شود، چون مرز Network و Host ممکن است وسط یک Octet قرار بگیرد و دیگر نتوانیم فقط از روی نقطه‌ها تصمیم بگیریم. محدوده ۰ تا ۲۵۵ برای هر Octet هم از همین هشت بیت می‌آید. هشت بیت ۲۵۶ حالت مختلف می‌سازند؛ از ۰۰۰۰۰۰۰۰ که برابر صفر است تا ۱۱۱۱۱۱۱۱ که برابر ۲۵۵ می‌شود. بنابراین قبل از هر محاسبه Subnetting می‌توانی یک کنترل ساده انجام بدهی: اگر یکی از چهار بخش IPv4 از ۲۵۵ بزرگ‌تر باشد یا عدد منفی داشته باشد، آدرس از نظر ساختار IPv4 معتبر نیست. این کنترل ساده جلوی خیلی از اشتباه‌های تایپی در مستندات و Configuration را می‌گیرد.

بخش Network، Host و Prefix

یک IPv4 Address به‌تنهایی نمی‌گوید دستگاه در کدام شبکه است. باید Prefix یا Subnet Mask هم کنار آن باشد. Prefix تعیین می‌کند چند بیت اول آدرس برای شناسایی Network استفاده می‌شوند. بیت‌های باقی‌مانده برای آدرس‌دهی دستگاه‌های داخل همان شبکه هستند.

نمونه
192.168.10.25/24

/24 یعنی ۲۴ بیت اول بخش Network هستند.
۸ بیت آخر برای Host باقی می‌مانند.

در این مثال سه Octet اول، یعنی ۱۹۲.۱۶۸.۱۰، داخل بخش شبکه قرار می‌گیرند و Octet آخر برای دستگاه‌ها تغییر می‌کند. پس 192.168.10.25 و 192.168.10.80 با Prefix /24 در یک شبکه قرار می‌گیرند. این نتیجه فقط به خاطر شبیه بودن سه عدد اول نیست؛ دلیل واقعی همان ۲۴ بیت Prefix است. Prefix Length را با علامت / می‌نویسیم. /24 یعنی ۲۴ بیت شبکه، /26 یعنی ۲۶ بیت شبکه و /30 یعنی ۳۰ بیت شبکه. هرچه Prefix بزرگ‌تر شود، بیت‌های بیشتری برای Network مصرف می‌شوند و بیت‌های کمتری برای Host باقی می‌مانند. در نتیجه هر Subnet کوچک‌تر می‌شود. این موضوع را با یک مثال ساده ببین. /24 هشت بیت Host دارد. /25 فقط هفت بیت Host دارد، چون یک بیت دیگر به بخش Network داده شده است. بنابراین یک /25 نصف فضای آدرس یک /24 را در اختیار دارد. /26 دوباره نصف /25 است. همین الگو پایه تقسیم یک شبکه به Subnetهای کوچک‌تر است.

بخش Network و Host را نباید با این تصور یاد بگیری که همیشه سه عدد اول شبکه و عدد آخر Host است. این حالت فقط در Prefixهایی مثل /24 به‌صورت ظاهری با مرز Octet هماهنگ است. در /26، شش بیت اول Octet چهارم هنوز Network هستند و فقط دو بیت آخر برای Host باقی می‌مانند. در /20 هم چهار بیت اول Octet سوم داخل Network قرار می‌گیرند. بنابراین Prefix است که مرز واقعی را تعیین می‌کند، نه تعداد نقطه‌های آدرس.

تحلیل آدرس با Prefix واقعی

فرض کن فقط می‌دانی IP یک سیستم 10.10.10.20 است. هنوز نمی‌توانی Network Address را با اطمینان تعیین کنی. اگر Prefix /24 باشد، شبکه 10.10.10.0 است. اگر Prefix /16 باشد، شبکه 10.10.0.0 است. اگر Prefix /8 باشد، شبکه 10.0.0.0 است. یک IP یکسان با Prefixهای متفاوت در شبکه‌های متفاوتی قرار می‌گیرد. به همین دلیل در مستندات شبکه فقط نوشتن IP کافی نیست. باید IP و Prefix یا Subnet Mask کنار هم ثبت شوند. وقتی در Cisco IOS دستور show ip interface brief را می‌بینی، آدرس Interface را پیدا می‌کنی، ولی برای بررسی کامل Prefix معمولاً Configuration همان Interface را هم می‌بینی.

نمونه Configuration
interface GigabitEthernet0/0
 ip address 192.168.10.1 255.255.255.0
 no shutdown

گاهی افراد از روی شکل ظاهری IP حدس می‌زنند دو دستگاه در یک شبکه هستند. مثلاً چون هر دو با ۱۹۲.۱۶۸ شروع می‌شوند، آن‌ها را هم‌شبکه فرض می‌کنند. این روش قابل اعتماد نیست. دو دستگاه فقط زمانی در یک Subnet قرار دارند که محاسبه آدرس شبکه با Prefix آن‌ها نتیجه یکسانی بدهد. در مراحل بعدی همین محاسبه را دقیق انجام می‌دهیم. فعلاً کافی است این عادت را بسازی که هیچ IPv4 Address را بدون Prefix تحلیل نکنی. IP و Prefix یک زوج هستند و کنار هم معنی کامل‌تری می‌دهند. در کار واقعی، اشتباه در Prefix گاهی از خود IP خطرناک‌تر است، چون دستگاه ممکن است ظاهراً IP معقولی داشته باشد اما درباره Local یا Remote بودن مقصد تصمیم اشتباه بگیرد. فرض کن دو سیستم 192.168.10.20/24 و 192.168.10.200/25 هستند. از روی سه Octet اول شاید هر دو را هم‌شبکه فرض کنی، اما /25 شبکه را به دو نیمه تقسیم می‌کند و باید دقیقاً محدوده هرکدام را حساب کنی. همین اختلاف Mask می‌تواند باعث ارتباط یک‌طرفه یا رفتار گیج‌کننده شود.

برای همین در مستندسازی حرفه‌ای نوشتن IP بدون Mask یا Prefix ناقص است. اگر روی برچسب Server فقط 172.20.5.10 نوشته شده باشد، نفر بعدی نمی‌داند این Interface در /24، /23 یا /28 قرار دارد. حداقل اطلاعات لازم برای یک Interface شامل IP، Prefix، VLAN یا Segment مربوط و Gateway است. همین نظم ساده باعث می‌شود عیب‌یابی بعدی از حدس زدن فاصله بگیرد.

نمایش باینری و Prefixهای غیرمرزی

برای اینکه ساختار آدرس در ذهن ثابت شود، یک IPv4 را یک‌بار کامل به Binary نگاه کن. آدرس 192.168.10.25 در حالت دودویی برابر ۱۱۰۰۰۰۰۰.۱۰۱۰۱۰۰۰.۰۰۰۰۱۰۱۰.۰۰۰۱۱۰۰۱ است. نقطه‌ها فقط برای خوانایی هستند؛ دستگاه در اصل با همان ۳۲ بیت کار می‌کند.

نمونه کامل
192      .168      .10       .25
11000000 .10101000 .00001010 .00011001

وقتی Prefix /24 باشد، خط مرز بعد از سومین Octet قرار می‌گیرد و دیدنش ساده است. در Prefixهایی مثل /26 یا /27 مرز وسط Octet چهارم می‌افتد. دلیل اینکه Subnetting کمی محاسبه می‌خواهد همین است: بخشی از یک Octet Network و بخش باقی‌مانده Host می‌شود. Prefixهایی مثل /8، /16 و /24 دقیقاً روی مرز Octet تمام می‌شوند. اما بیشتر تمرین‌های CCNA فقط همین حالت‌های ساده نیستند. مثلاً /20 یعنی دو Octet کامل، یعنی ۱۶ بیت، برای Network هستند و چهار بیت اول Octet سوم هم به Network تعلق دارند. چهار بیت آخر Octet سوم به همراه تمام Octet چهارم Host هستند.

مرز /20
172.16.34.50/20
11111111.11111111.11110000.00000000
<------ Network ------><-- Host -->

این نگاه کمک می‌کند وقتی /20، /22 یا /29 می‌بینی، Prefix را صرفاً یک عدد عجیب نبینی. Prefix فقط می‌گوید مرز دقیقاً بعد از چند بیت قرار گرفته است. وقتی Prefix روی مرز Octet نیست، Binary تبدیل به ابزار فهم می‌شود، نه یک تمرین ریاضی جدا از شبکه. مثلاً /27 یعنی ۲۷ بیت اول Network هستند: ۲۴ بیت سه Octet اول و سه بیت از Octet چهارم. بنابراین در Octet چهارم Mask باید سه بیت ۱ و پنج بیت ۰ داشته باشیم: ۱۱۱۰۰۰۰۰ که مقدار ده‌دهی آن ۲۲۴ است. پس /27 برابر 255.255.255.224 می‌شود. اگر منطق بیت‌ها را بفهمی، لازم نیست جدول Maskها را کورکورانه حفظ کنی.

نمونه مرز /27
IP:   192.168.10.77/27
Mask: 255.255.255.224

Octet چهارم Mask:
۱۱۱۰۰۰۰۰
^^^----- 3 bit Network + 5 bit Host

CIDR و پایان مدل Classful

در منابع قدیمی‌تر با Class A، Class B و Class C روبه‌رو می‌شوی. این تقسیم‌بندی زمانی Prefix پیش‌فرض آدرس‌ها را از روی Octet اول حدس می‌زد. مثلاً Class C معمولاً با /24 در نظر گرفته می‌شد. شبکه‌های امروزی با CIDR کار می‌کنند و Prefix صریح همراه آدرس اهمیت دارد. پس اگر کسی گفت 192.168.1.10 چون Class C است حتماً /24 است، این نتیجه‌گیری برای طراحی مدرن قابل اعتماد نیست. ممکن است همان آدرس عمداً با /26 یا /28 استفاده شده باشد. همیشه Prefix واقعی Configuration را ببین. مدل Class A/B/C هنوز در بعضی متن‌های قدیمی و صحبت‌های روزمره دیده می‌شود، اما طراحی امروزی IPv4 بر پایه Prefix و CIDR انجام می‌شود. CIDR اجازه می‌دهد شبکه‌ها به Prefixهای متنوعی مثل /19، /23، /27 یا /30 تقسیم شوند و لازم نباشد اندازه شبکه به مرزهای قدیمی Classful محدود بماند. بنابراین در CCNA بهتر است Classهای قدیمی را فقط برای فهم اصطلاحات تاریخی بشناسی و تحلیل واقعی را همیشه بر اساس Prefix انجام بدهی. این تغییر نگاه روی Routing هم اثر دارد. Router به Prefix نگاه می‌کند و Routeهایی مثل 10.20.0.0/16 یا 10.20.30.0/24 را مستقل از Class قدیمی می‌فهمد. بعداً وقتی Routing Table را می‌خوانی، همین ساختار Prefix/Length پایه تشخیص مسیر مناسب خواهد بود. پس یادگیری درست IPv4 در این فصل مستقیماً مقدمه Routing است، نه یک مبحث جدا که بعداً فراموش شود.

سناریوی عملی

سیستم A آدرس 172.16.5.20/24 و سیستم B آدرس 172.16.5.90/24 دارد. هر دو با /24 بررسی می‌شوند، پس ۲۴ بیت اولشان بخش Network است و شبکه هر دو 172.16.5.0 می‌شود. اگر سیستم B به 172.16.6.90/24 تغییر کند، دیگر Network Address یکسان نیست و برای ارتباط مستقیم بین این دو شبکه به دستگاهی نیاز داریم که ترافیک را بین شبکه‌ها جابه‌جا کند. مفهوم Routing را در مرحله مربوط به خودش کامل بررسی می‌کنیم.

اشتباهات رایج

اشتباه‌های رایج در خواندن IPv4

  • IP را بدون Prefix تحلیل نکن
  • شباهت ظاهری Octetها را دلیل هم‌شبکه بودن ندان
  • عدد /24 را فقط به شکل یک عبارت حفظی نبین؛ آن را ۲۴ بیت Network در نظر بگیر
  • محدوده هر Octet را ۰ تا ۲۵۵ در نظر بگیر
تمرین عملی

تمرین ساختار IPv4

  1. عددهای ۱۰، ۱۷۲، ۱۹۲ و ۲۲۴ را با جدول ۱۲۸ تا ۱ به Binary تبدیل کن
  2. برای 192.168.50.10/24 مشخص کن چند بیت Network و چند بیت Host داریم
  3. همان IP را با /16 بررسی کن و تفاوت بخش Network را بنویس
  4. سه IP نمونه بساز که از نظر ظاهری شبیه باشند ولی با Prefix متفاوت در شبکه‌های متفاوت قرار بگیرند

نکته‌هایی که باید با خودت ببری

  • IPv4 برابر ۳۲ بیت است و در چهار Octet نمایش داده می‌شود
  • هر Octet 8 بیت دارد و از ۰ تا ۲۵۵ تغییر می‌کند
  • Prefix تعداد بیت‌های Network را مشخص می‌کند
  • IP بدون Prefix برای تعیین Subnet کافی نیست
  • Subnetting از تقسیم درست بیت‌های Network و Host شروع می‌شود
خودسنجی

ساختار IPv4 را بررسی کن

/26 یعنی چند بیت برای Network استفاده شده است؟

۲۶ بیت برای Network و ۶ بیت برای Host باقی می‌ماند.

آیا 192.168.1.10 به‌تنهایی Network Address را مشخص می‌کند؟

نه. Prefix یا Subnet Mask هم لازم است.

چرا هر Octet حداکثر ۲۵۵ است؟

چون ۸ بیت ۲۵۶ حالت از ۰ تا ۲۵۵ می‌سازند.

منابع رسمی

منابع مرجع این درس

مطالعه همیشه آزاد است

برای ذخیره پیشرفت وارد حساب شو

حساب کاربری برای آزمون و ثبت مرحله‌ها استفاده می‌شود

ورود یا ثبت‌نام