محاسبهگر زیرشبکه IP: CIDR، ماسک زیرشبکه و بازه میزبان
جزئیات زیرشبکه IPv4 را بر اساس یک آدرس و پیشوند CIDR محاسبه کنید: آدرس شبکه و broadcast، بازه میزبانهای قابل استفاده، ماسک زیرشبکه و ماسک وایلدکارد.
IP Subnet Calculator
Results
Subnet Mask in Binary
Results follow RFC 791 (IPv4 addressing), RFC 4632 (CIDR notation), RFC 950 with RFC 919 and RFC 922 (network and broadcast reservation), and RFC 3021 (/31 point-to-point links).
مستندات
محاسبهگر زیرشبکه IP
محاسبهگر زیرشبکه IP جزئیات شبکهٔ پشت یک نشانی IPv4 و طول پیشوند را محاسبه میکند. از این دو ورودی، نشانی شبکه، نشانی برادکست، دامنهٔ نشانیهای میزبان قابلاستفاده، ماسک زیرشبکه و ماسک وایلدکارد را به دست میآورد.
کاری که ماشینحساب انجام میدهد
این ابزار یک نشانی IPv4 را میپذیرد که بهصورت چهار عدد جداشده با نقطه نوشته شده باشد، مانند 192.168.1.10، و طول پیشوندی از ۰ تا ۳۲. نوشتن این دو در کنار هم بهشکل CIDR، مانند 192.168.1.10/۲۴، نیز کار میکند: بخش /۲۴ خودکار در فیلد پیشوند قرار میگیرد.
محاسبهگر این موارد را برمیگرداند:
- نمادگذاری CIDR: شبکه بهشکل نشانی/پیشوند، مانند 192.168.1.0/۲۴.
- نشانی شبکه: نخستین نشانی در بلوک. این نشانی خود شبکه را مشخص میکند.
- نشانی پخش همگانی: آخرین نشانی در بلوک. پیامی که به آن ارسال شود به همهٔ میزبانهای زیرشبکه میرسد.
- دامنهٔ میزبانهای قابلاستفاده: نخستین و آخرین نشانی که یک دستگاه واقعاً میتواند استفاده کند.
- میزبانهای قابلاستفاده و نشانیهای کل: تعداد نشانیهای موجود در بلوک و تعداد نشانیهای آزاد برای دستگاهها.
- ماسک زیرشبکه و ماسک وایلدکارت: ماسک بهشکل نقطهگذاریشده، مانند 255.255.255.0، و معکوس آن، ۰٫۰.۰٫۲۵۵.
- ماسک زیرشبکه بهصورت بیتبهبیت، با هشت بیت برای هر اکتت.
نتایج از RFC ۷۹۱ (آدرسدهی IPv4)، RFC ۴۶۳۲ (نمادگذاری CIDR)، RFC ۹۵۰ همراه با RFC ۹۱۹ و RFC ۹۲۲ (رزروهای شبکه و پخش همگانی)، و RFC ۳۰۲۱ (پیوندهای نقطهبهنقطهٔ /۳۱) پیروی میکنند.
زیرشبکهبندی چگونه کار میکند
نشانی IPv4 یک عدد ۳۲ بیتی است. این نشانی بهصورت چهار اکتت نوشته میشود که هر اکتت ۸ بیت دارد و مقداری از ۰ تا ۲۵۵ را نگه میدارد. طول پیشوند این ۳۲ بیت را به دو بخش تقسیم میکند. نخستین بیتها، به تعدادی که پیشوند تعیین میکند، شبکه را مشخص میکنند. بیتهای باقیمانده یک میزبان را درون آن شبکه مشخص میکنند.
یک شبکهٔ /۲۴، ۲۴ بیت را برای بخش شبکه نگه میدارد و ۸ بیت را برای میزبانها باقی میگذارد. هشت بیت میزبان ۲⁸ = ۲۵۶ نشانی ایجاد میکند. یک شبکهٔ /۲۶ فقط ۶ بیت میزبان دارد، بنابراین ۲⁶ = ۶۴ نشانی را در خود جای میدهد.
ماسک زیرشبکه همین تقسیم را بهصورت یک نشانی مینویسد: برای هر بیت شبکه یک بیت ۱ و برای هر بیت میزبان یک بیت ۰. برای /۲۴ این مقدار ۲۵۵٫۲۵۵.۲۵۵٫۰ است. ماسک وایلدکارت همهٔ بیتهای ماسک زیرشبکه را معکوس میکند. فهرستهای دسترسی مسیریاب، بهویژه در تجهیزات سیسکو، نشانیها را با ماسکهای وایلدکارت تطبیق میدهند؛ به همین دلیل ابزار هر دو را نشان میدهد.
فرمول زیرشبکه
برای طول پیشوند p بین ۰ و ۳۰، محاسبهگر قواعد زیر را که در RFC ۹۵۰ و RFC ۴۶۳۲ تعریف شدهاند، اعمال میکند:
- ماسک زیرشبکه = p بیت بالایی واژهٔ ۳۲-بیتی که روی ۱ تنظیم شدهاند.
- نشانی شبکه = نشانی IP AND ماسک زیرشبکه (عملگر AND بیتی فقط جایی بیت را نگه میدارد که هر دو ورودی دارای ۱ باشند).
- نشانی پخش همگانی = نشانی شبکه OR ماسک وایلدکارت (هر بیت میزبان روی ۱ تنظیم میشود).
- نشانیهای کل = ۲⁽³²⁻ᵖ⁾.
- میزبانهای قابلاستفاده = ۲⁽³²⁻ᵖ⁾ − ۲. این تفریق نشانی شبکه و نشانی پخش همگانی را حذف میکند؛ این دو نشانی را RFC ۹۵۰ و RFC ۹۱۹ رزرو کردهاند.
- نخستین میزبان قابلاستفاده = نشانی شبکه + ۱. آخرین میزبان قابلاستفاده = نشانی پخش همگانی − ۱.
دو طول پیشوند از قواعد متفاوتی پیروی میکنند. یک /۳۱ دقیقاً ۲ نشانی دارد و RFC ۳۰۲۱ هر دو را در یک پیوند نقطهبهنقطه میزبان قابلاستفاده میداند، بدون هیچ نشانی پخش همگانی. یک /۳۲ نشاندهندهٔ یک نشانی منفرد است: در مجموع ۱ نشانی، ۱ نشانی قابلاستفاده و بدون نشانی پخش همگانی. برای این دو حالت، ابزار نخستین نشانی را بهجای «نشانی شبکه»، «مبنای پیشوند» مینامد، زیرا هیچکدام از این بلوکها نشانیای را برای مشخصکردن شبکه رزرو نمیکنند.
هر نتیجه از محاسبات روی یک عدد ۳۲-بیتی به دست میآید. ابزار نشانیها را یکییکی فهرست نمیکند؛ بنابراین یک /۰ که همهٔ ۴٬۲۹۴٬۹۶۷٬۲۹۶ نشانی IPv4 را پوشش میدهد، بهاندازهٔ یک /۳۲ سریع محاسبه میشود.
مثال حلشده
برای نشانی 10.128.7.33 با طول پیشوند /۲۶:
- ماسک زیرشبکه: ۲۶ بیت یک که با ۶ بیت صفر دنبال میشوند، برابر است با ۱۱۱۱۱۱۱۱٫۱۱۱۱۱۱۱۱.۱۱۱۱۱۱۱۱٫۱۱۰۰۰۰۰۰ که بهصورت ۲۵۵٫۲۵۵.۲۵۵٫۱۹۲ خوانده میشود.
- نشانی شبکه: نشانی را با ماسک AND کنید. سه اکتت نخست بدون تغییر عبور میکنند. در اکتت آخر، ۳۳ در مبنای دودویی 00100001 است؛ AND با ۱۱۰۰۰۰۰۰ مقدار 00000000 را میدهد که برابر ۰ است. نشانی شبکه 10.128.7.0 است، بنابراین نمادگذاری CIDR برابر 10.128.7.0/۲۶ میشود.
- نشانی پخش همگانی: همهٔ ۶ بیت میزبان را روی ۱ تنظیم کنید. اکتت آخر به 00111111 تبدیل میشود که برابر ۶۳ است. نشانی پخش همگانی ۱۰٫۱۲۸.۷٫۶۳ است.
- شمارشها: ۲⁶ = ۶۴ نشانی کل و ۶۴ − ۲ = ۶۲ میزبان قابلاستفاده.
- دامنهٔ میزبان: از 10.128.7.1 تا ۱۰٫۱۲۸.۷٫۶۲.
- ماسک وایلدکارد: معکوس ماسک زیرشبکه، یعنی ۰٫۰.۰٫۶۳.
نمونهٔ دوم با ورودی پیشفرض ابزار، 192.168.1.10/۲۴: شبکه 192.168.1.0، پخش همگانی 192.168.1.255، میزبانها از 192.168.1.1 تا 192.168.1.254، ۲۵۴ میزبان قابلاستفاده از ۲۵۶ نشانی کل، ماسک زیرشبکه 255.255.255.0 و ماسک وایلدکارت ۰٫۰.۰٫۲۵۵ است.
قراردادهای مورد پیروی ابزار
اکتتهای دارای صفر پیشرو رد میشوند. ابزار 010.1.1.1 را رد میکند و آن را بهصورت ۱۰٫۱.۱٫۱ نمیخواند. این رفتار عمدی است. تابع POSIX inet_aton که پشت ping، curl و بیشتر حلکنندههای سیستمعامل قرار دارد، اکتتی را که با صفر آغاز شود بهصورت هشتهشتی تفسیر میکند؛ بنابراین 010.1.1.1 برای آن برنامهها به معنای 8.1.1.1 است. هیچ حدس اعشاری یا هشتهشتیای نمیتواند با تفسیر همهٔ خوانندهها سازگار باشد، بنابراین ابزار هیچکدام را نمیپذیرد. پیشوندی که بهصورت /08 نوشته شود نیز به همین دلیل رد میشود.
تعداد میزبان دو واحد کم میشود. برخی محاسبهگرها اندازهٔ خام بلوک را بهعنوان تعداد میزبان گزارش میکنند. این ابزار از RFC ۹۵۰ پیروی میکند: در هر بلوک از /۰ تا /۳۰، بخش میزبانِ تماماً صفر نشانی شبکه را مشخص میکند و بخش میزبانِ تماماً یک نشانی پخش همگانی است؛ بنابراین هر دو حذف میشوند و یک /۲۴ دارای ۲۵۴ میزبان قابلاستفاده است، نه ۲۵۶.
یک /۳۱ دو میزبان قابلاستفاده دارد. متنهای قدیمیتر، که پیش از RFC ۳۰۲۱ (منتشرشده در ۲۰۰۰) نوشته شدهاند، یک /۳۱ را غیرقابلاستفاده میدانند، زیرا کمکردن دو نشانی رزروشده عدد صفر را باقی میگذارد. RFC ۳۰۲۱ هر دو رزرو را برای پیوندهای نقطهبهنقطه حذف کرد و مسیریابها چند دهه است که از این قابلیت پشتیبانی میکنند؛ بنابراین ابزار ۲ میزبان قابلاستفاده و بدون نشانی پخش همگانی گزارش میکند.
هر پیشوندی از /۰ تا /۳۲ پذیرفته میشود. یک /۰ بلوکی معتبر است که کل فضای IPv4 را پوشش میدهد و با نحوهٔ ظاهرشدن 0.0.0.0/۰ در جدولهای مسیریابی بهعنوان مسیر پیشفرض سازگار است.
فقط IPv4. IPv6 (RFC ۴۲۹۱) از نشانیهای ۱۲۸-بیتی و نمادگذاری متفاوت استفاده میکند و در محدودهٔ این ابزار نیست. ابزار همچنین بازههای با کاربرد خاص، مانند نشانیهای خصوصی یا لوپبک را علامتگذاری نمیکند (RFC ۶۸۹۰)؛ فقط محاسبات نشانی را گزارش میدهد.
سؤالات رایج
یک /۲۴ چند میزبان قابلاستفاده دارد؟ 254. یک /۲۴، ۸ بیت میزبان باقی میگذارد و ۲⁸ = ۲۵۶ نشانی ایجاد میکند. دو نشانی رزرو هستند: نشانی شبکه و نشانی پخش همگانی. بنابراین ۲۵۴ نشانی برای دستگاهها باقی میماند.
ماسک وایلدکارت چیست؟ معکوس بیتبهبیت ماسک زیرشبکه است. هرجا ماسک زیرشبکه دارای ۱ باشد، ماسک وایلدکارت دارای ۰ است و برعکس. برای ماسک 255.255.255.0، ماسک وایلدکارت ۰٫۰.۰٫۲۵۵ است. فهرستهای کنترل دسترسی در بسیاری از مسیریابها از ماسکهای وایلدکارت برای توصیف نشانیهایی استفاده میکنند که یک قاعده با آنها تطبیق میکند.
چرا یک /۳۱ نشانی برادکست ندارد؟ یک /۳۱ فقط دو نشانی دارد. رزروکردن یکی برای شبکه و دیگری برای برادکست چیزی باقی نمیگذارد؛ بنابراین RFC ۳۰۲۱، /۳۱ را پیوندی نقطهبهنقطه تعریف میکند که در آن هر دو نشانی میزبان هستند و نشانی برادکست وجود ندارد. محاسبهگر ۲ میزبان قابلاستفاده را گزارش میکند و نشانی برادکست را غیرقابلاعمال علامت میزند.
چرا 010.1.1.1 رد میشود و بهصورت 10.1.1.1 خوانده نمیشود؟ زیرا سیستمعاملها دربارهٔ خوانش اعشاری ساده توافق ندارند. inet_aton در POSIX اکتتی را که با صفر آغاز شود هشتهشتی میخواند؛ بنابراین 010 برای بیشتر سیستمها به معنای ۸ است. ردکردن ورودی تنها پاسخی است که نمیتواند بیسروصدا با رفتاری که دستگاه خود کاربر انجام میدهد متفاوت باشد.
تفاوت نشانیهای کل و میزبانهای قابلاستفاده چیست؟ نشانیهای کل اندازهٔ کامل بلوک هستند؛ یعنی ۲ به توانِ (۳۲ منهای طول پیشوند). میزبانهای قابلاستفاده همین عدد منهای دو نشانی رزروشدهاند، بهجز در /۳۱ (هر دو قابلاستفادهاند) و /۳۲ (نشانی منفرد همان میزبان است).
نشانی شبکهٔ 192.168.1.10/۲۴ چه معنایی دارد؟ این نشانی 192.168.1.0 است که با نگهداشتن ۲۴ بیت نخست نشانی و صفرکردن بیتهای میزبان به دست میآید. این نشانی کل زیرشبکه را مشخص میکند و نمیتوان آن را به دستگاهی اختصاص داد.
منابع
- Postel، J. «RFC ۷۹۱: پروتکل اینترنت.» IETF، ۱۹۸۱.
- Mogul، J. و J. Postel. «RFC ۹۵۰: روش استاندارد زیرشبکهبندی اینترنت.» IETF، ۱۹۸۵.
- Mogul، J. «RFC ۹۱۹: پخش دیتاگرامهای اینترنتی.» IETF، ۱۹۸۴.
- Fuller، V. و T. Li. «RFC ۴۶۳۲: مسیریابی بیندامنهای بدون کلاس (CIDR).» IETF، ۲۰۰۶.
- Retana، A. و دیگران. «RFC ۳۰۲۱: استفاده از پیشوندهای ۳۱-بیتی روی پیوندهای نقطهبهنقطهٔ IPv4.» IETF، ۲۰۰۰.