تاریخچه استفاده از Subnetting به اوایل دهه ۱۹۸۰ و استفاده از سیستم آدرس دهی IP برمی گردد، زمانی که با افزایش تعداد شبکهها و کامپیوترهای متصل به اینترنت، مدیریت و نظارت بر تمام آدرسهای شبکه با کلاسهای آدرس دهی موجود مشکل شد برای همین استفاده از Subnetting مطرح گردید تا بتوان آدرسها را به بخشها و Subnetهای کوچکتر تقسیم کرد.
قبل از هر چیز برای درک بهتر مطالب این مقاله ضروری که مقاله قبلی با عنوان آناتومی آدرس IP و آدرس Mac را حتما مطالعه و مطالب آن را فرا بگیرید.
Subnetting:
Subnetting یعنی تقسیم بندی آدرس های یک شبکه به چندین Subnet کوچکتر و مجزا از هم برای مدیریت بهتر و امینت بیشتر شبکه.
آی پی های همرنج می توانند باهم ارتباط داشته باشد اما تفکیک یا Subnetting باعث می شود آی پی های همرنج از سطح لایه سه از جدا شده و دیگر نتوانند آزادنه با دیگر آی پی های هم رنج ارتباط برقرار کنند.
نکته طلایی: قسمت Net ID تعداد شبکه هایی که می توانیم از روی یک رنج آی پی بسازیم را مشخص می کند و قسمت Host ID تعداد آی پی هایی را که می توانیم بسازیم.
در کلاسهای A و B، به علت بزرگ بودن قسمت Host ID تعداد آی پی های بسیار زیادی را در اختیار داریم که مدیریت و تامین امنیت این تعداد آی پی مشکل ساز هست. اکر شبکه ما کوچک باشد حتی در کلاس C نیز این مشکل وجود خواهد داشت.
مزایای Subnetting:
- Subnetting باعث سبک تر شدن روتینگ تیبل (Routing Table) و راحت تر شدن مدیریت و نظارت بر آی پی ها و زیر مجموعه های آن میشود.
- امکان دسته بندی و مدیریت آی پی های بخش های مختلف شبکه مثل: بخش حسابداری، مدیریت، فروش و … به صورت مجزا از هم و عدم ارتباط آنها در سطح لایه سه.
- امکان تفکیک آی پی های چندین شبکه در محدوده های جغرافیایی مختلفی از یکدیگر.
- امکان تفکیک کامپیوترهایی که نیاز به پهنای باند بیشتری در شبکه دارند از دیگران کامپیوترها.
آی پی ۱۷۲.۱۶.۰.۰/۱۶ را در نظر بگیرید، این آی پی کلاسB هست و ۶۵,۵۳۴ آی پی در اختیار ما قرار می دهد؛ در صورتی که شرکت ما به بیشتر از ۵۰ تا نیاز ندارد. که آی پی های پرت زیادی وجود خواهد داشت. همچنین همه این آی پی می توانند با هم ارتباط داشته باشند که اصلا امن نیست و امکان نفوذ دیگر افراد به عنوان کاربر شبکه ما از طریق این رنج آی پی های باز هست.
مراحل Subnetting:
اساس کار Subnetting محدود کردن آی پی ها به تعداد آی پی مورد نیاز شبکه به وسیله کم کردن تعداد بیت ها از بخش Host ID و انتقال بیت های اضافه به بخش Net ID و ساخت چندین Subnet می باشد.
مرحله اول Subnetting : یافتن کلاس آی پی، Host ID و Net ID و تبدیل آی پی به عدد باینری:
۱۲.۰.۰.۰
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
Class A => Net ID = 8 , Host ID = 24
مرحله دوم Subnetting : یافتن تعداد بیت های انتقالی یا m از بخش Host ID به Net ID:
برای یافتن تعداد بیت های انتقالی یا m دو تا فرمول داریم:
۱ ) تعداد Subnet ها یا زیر شبکه های مجزایی که نیاز داریم:
اگر نیاز بود که یک رنج آی پی را به تعداد مشخصی از subnet یا بخش تفکیک کنیم از فرمول زیر استفاده می کنیم:
۲m = Maximum Subnet ≥ needed Subnet
تعداد سابنت های تشکیل شده باید بیشتر یا مساوی سابنت های مورد نیاز باشد.
۲) تعداد آی پی هایی که در شبکه نیاز داریم:
اگر نیاز بوده که یک رنج آی پی را به تعداد مشخصی آی پی تفکیک کنیم از فرمول زیر استفاده می کنیم:
۲n – 2 = max IP ≥ needed IP
m= Host ID – n
تعداد آی پی های تشکیل شده باید بیشتر یا مساوی آی پی های مورد نیاز باشد.
m تعداد بیت هایی انتقالی که از سمت چپ Host ID برداشته و به انتهای Net ID اضافه می کنیم.
مرحله سوم Subnetting انتقال بیت های انتقالی یا m و یافتن New Net ID:
مرحله چهارم Subnetting: : محاسبه مجدد Subnet Mask برای شبکه جدید با برابر یک قرار دادن همه بیت های بخش های New Net ID شامل: Net ID و بخش اضافه شده به آن:
برای محاسبه Subnet Mask جدید تمامی بیت های بخشHost ID جدید را برابر ۰ و تمامی بیت های بخش Net ID جدید را برابر ۱ قرار می دهیم:
New Net ID = Old net ID + m
مرحله پنجم Subnetting : شناسایی network های جدید بر اساس عدد دسیمال New Net ID:
آخرین بیت New Net ID را یافته و به عدد دسیمال تبدیل می کنیم، مضارب این عدد دسیمال (که از صفر شروع می شود تا تعداد شبکه ای که نیاز داریم) را هر بار به عدد اوکتدی که آخرین بیت قرار داشته اضافه می کنیم تا به تعداد Needed Network شبکه ساخته شود.
مثال اول: شبکه ۱۲.۰.۰.۰ را به گونه ای subnet نمایید که ۶ شبکه در اختیار ما قرار دهد:
مرحله اول: یافتن کلاس آی پی و تبدیل آی پی به عدد باینری و انتقال بیت های انتقالی و یافتن New Net ID:
۱۲.۰.۰.۰
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
Class A => Net ID = 8 , Host ID = 24
مرحله دوم: یافتن تعداد بیت های انتقالی یا m
Needed Subnet= 6
۲m ≥ ۶ => 23 = 8 (max subnet) => m=3
مرحله سوم: انتقال بیت های انتقالی یا m و یافتن New Net ID:
m=3 => یعنی باید ۳ بیت از سمت چپ Host ID جزء بیت های Net ID جدید حساب می شوند.:
m=3 => New Net ID = 8+3=11 => 12.0.0.0/11
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
مرحله چهارم: محاسبه مجدد Subnet Mask برای شبکه جدید با برابر یک قرار دادن همه بیت های بخش های New Net ID شامل: Net ID و بخش اضافه شده به آن.
۱۱۱۱۱۱۱۱.[۱۱۱.۰۰۰۰۰].۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
[۱۲۸+۶۴+۳۲+۱۶+۸+۴+۲+۱=۲۵۵].[۱۲۸+۶۴+۳۲=۲۲۴.۰.۰]
۲۵۵.۲۲۴.۰.۰/۱۱
مرحله پنجم) شناسایی network های جدید بر اساس عدد دسیمال New Net ID:
آخرین بیت New Net ID=11=> در اوکتد دوم قرار دارد و ارزش دسیمال برابر ۳۲ دارد، پس هر بار به عدد اوکتد دوم مضارب عدد ۳۲ را اضافه می کنیم (شروع از صفر):
Needed Network = 6
شبکه اول: ۳۲*۰ => 12.0.0.0/11
شبکه دوم: ۳۲*۱ => 12.32.0.0/11
شبکه سوم: ۳۲*۲ => 12.64.0.0/11
شبکه چهارم: ۳۲*۳ => 12.0.96.0/11
شبکه پنجم: ۳۲*۴ => 12.128.0.0/11
شبکه ششم: ۳۲*۵ => 12.160.0.0/11
مثال دوم: تعیین ۴ subnet از آدرس ۱۶ /۱۷۲.۲۸.۰.۰
مرحله اول: یافتن کلاس آی پی، Host ID و Net ID و تبدیل آی پی به عدد باینری:
needed subnet = 4
۱۷۲.۲۸.۰.۰/۱۶ => Class B => Net ID= 16, Host ID = 16, subnet max => 255.255. 0.0
۱۰۱۰۱۱۰۰.۰۰۰۱۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
مرحله دوم: یافتن تعداد بیت های انتقالی یا m از بخش Host ID به Net ID:
needed subnet = 4
۲m ≥ needed subnet=> 2m ≥ ۴ => m=2
مرحله سوم: انتقال بیت های انتقالی یا m و یافتن New Net ID:
m=2 => New Net ID=> 16+2=18 => ۱۷۲.۲۸.۰.۰/۱۸
۱۷۲.۲۸. ۰.۰/۱۸
۱۰۱۰۱۱۰۰.۰۰۰۱۱۱۰۰.[۰۰۰۰۰۰۰۰].۰۰۰۰۰۰۰۰
مرحله چهارم: محاسبه مجدد Subnet Mask برای شبکه جدید با برابر یک قرار دادن همه بیت های بخش های New Net ID شامل: Net ID و بخش اضافه شده به آن:
۱۷۲.۲۸. ۰.۰/۱۸
۱۱۱۱۱۱۱۱.۱۱۱۱۱۱۱۱.[۱۱۰۰۰۰۰۰].۰۰۰۰۰۰۰۰
۲۵۵.۲۵۵.۱۹۲.۰/۱۸
مرحله پنجم) شناسایی network های جدید بر اساس عدد دسیمال New Net ID:
طبق محاسابت باینری بیت ۱۸ ام => ارزشی برابر با ۶۴ دارد، پس هر بار به عدد اوکتد سوم مضارب عدد ۶۴ را اضافه می کنیم (شروع از صفر):
شبکه اول: ۶۴*۰ => ۱۷۲.۲۸.۰.۰/۱۸ => 172.28.65.254 – ۱۷۲.۲۸.۰.۱
شبکه دوم: ۶۴*۱ => ۱۷۲.۲۸.۶۴.۰/۱۸ => 172.28.127.254 – ۱۷۲.۲۸.۶۴.۱
شبکه سوم: ۶۴*۲ => ۱۷۲.۲۸.۱۲۸.۰/۱۸ => 172.28.191.254 – ۱۷۲.۲۸.۱۲۸.۱
شبکه چهارم: ۶۴*۳ => ۱۷۲.۲۸.۱۹۲.۰/۱۸ =>172.28.255.254 – ۱۷۲.۲۸.۱۹۲.۱
نکته: رنج هر سابنت تا یکی کمتر از شروع شبکه بعدی هست. البته بدونه در نظر گرفتن Net ID و Brodcast ID هر سابنت.
سابنت مسک این شبکه های زیرمجموعه نیز با توجه به پرفیکس ۱۸، به صورت زیر نوشته می شود:
۲۵۵.۲۵۵.۱۹۲.۰
مثال سوم: تعیین ۷ subnet از آدرس ۲۴ /۱۹۲.۱۶۸.۴۸.۰
needed subnet =7 => 2m ≥ ۷ => m=3 => Net ID=> 24+3 =27 => 192.168.48.0/27
۱۹۲.۱۶۸.۴۸.۰/۲۷
۱۱۰۰۰۰۰۰.۱۰۱۰۱۰۰۰.۰۰۱۱۰۰۰۰.[۰۰۰]۰۰۰۰۰
طبق محاسابت باینری بیت ۲۷ ام => ارزشی برابر با ۳۲ دارد، پس هر بار به آی پی عدد اوکتد چهارم مضارب عدد ۳۲ را اضافه می کنیم (شروع از صفر) :
شبکه اول: ۳۲*۰ => ۱۹۲.۱۶۸.۴۸.۰/۲۷ => 192.168.48.31 – ۱۹۲.۱۶۸.۴۸.۰
شبکه دوم: ۳۲*۱ => ۱۹۲.۱۶۸.۴۸.۳۲/۲۷ => 192.168.48.65 – ۱۹۲.۱۶۸.۴۸.۳۲
شبکه سوم: ۳۲*۲ => ۱۹۲.۱۶۸.۴۸.۶۴/۲۷ => 192.168.48.95 – ۱۹۲.۱۶۸.۴۸.۶۴
شبکه چهارم: ۳۲*۳ => ۱۹۲.۱۶۸.۴۸.۹۶/۲۷ => 192.168.48.127 – ۱۹۲.۱۶۸.۴۸.۹۶
شبکه پنجم: ۳۲*۴ => ۱۹۲.۱۶۸.۴۸.۱۲۸/۲۷ => 192.168.48.159 – ۱۹۲.۱۶۸.۴۸.۱۲۸
شبکه ششم: ۳۲*۵ => ۱۹۲.۱۶۸.۴۸.۱۶۰/۲۷ => 192.168.48.191 – ۱۹۲.۱۶۸.۴۸.۱۶۰
شبکه هفتم: ۳۲*۶ => ۱۹۲.۱۶۸.۴۸.۱۹۲/۲۷ => 192.168.48.254 – ۱۹۲.۱۶۸.۴۸.۱۹۲
subnet max => 255.255.255.192 /27
مثال چهارم: تعیین ۱۵ subnet از آدرس ۱۹ /۱۸۶.۱۲۸.۳۲.۰
needed subnet =15 => 2m ≥ ۱۵ => m=4 => Net ID=> 19+4 =12 => 186.128.32.0/23
۱۶۸.۱۲۸.۳۲.۰/۲۳
۱۰۱۱۱۰۱۰.۱۰۰۰۰۰۰۰.۰۰۱۰۰۰۰۰.۰۰۰۰۰۰۰۰
طبق محاسابت باینری، بیت ۲۳ ام => ارزش برابر با ۲ دارد، پس هر بار به آی پی عدد اوکتد سوم مضارب ارزش ۲ را اضافه می کنیم (شروع از صفر) :
شبکه اول: ۲*۰ => ۱۶۸.۱۲۸.۳۲.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۳۲.۰
شبکه دوم: ۲*۱ => ۱۶۸.۱۲۸.۳۴.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۳۴.۰
شبکه سوم: ۲*۲ => ۱۶۸.۱۲۸.۳۶.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۳۶.۰
شبکه چهارم: ۲*۳ => ۱۶۸.۱۲۸.۳۸.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۳۸.۰
شبکه پنجم: ۲*۴ => ۱۶۸.۱۲۸.۴۰.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۴۰.۰
شبکه ششم: ۲*۵ => ۱۶۸.۱۲۸.۴۲.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۴۲.۰
شبکه هفتم: ۲*۶ => ۱۶۸.۱۲۸.۴۴.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۴۴.۰
شبکه هشتم: ۲*۷ => ۱۶۸.۱۲۸.۴۶.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۴۶.۰
شبکه نهم: ۲*۸ => ۱۶۸.۱۲۸.۴۸.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۴۸.۰
شبکه دهم: ۲*۹ => ۱۶۸.۱۲۸.۵۰.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۵۰.۰
شبکه یازدهم: ۲*۱۰ => ۱۶۸.۱۲۸.۵۲.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۵۲.۰
شبکه دوازهم: ۲*۱۱ => ۱۶۸.۱۲۸.۵۴.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۵۴.۰
شبکه سیزدهم: ۲*۱۲ => ۱۶۸.۱۲۸.۵۶.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۵۶.۰
شبکه چهاردم: ۲*۱۳ => ۱۶۸.۱۲۸.۵۸.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۵۸.۰
شبکه پانزدهم: ۲*۱۴ => ۱۶۸.۱۲۸.۶۰.۰/۱۶ => 168.128.32.31 – ۱۶۸.۱۲۸.۶۰.۰
subnet max => 255.255.255.192 /27
مثال: شبکه ۱۲.۰.۰.۰ را به گونه ای Subnetting نمایید که ۱۰۰ آدرس آی پی در اختیار ما قرار دهد:
مرحله اول: یافتن کلاس آی پی، Host ID و Net ID و و تبدیل آی پی به عدد باینری:
۱۲.۰.۰.۰
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
Class A => Net ID = 8 , Host ID = 24
مرحله دوم: یافتن تعداد بیت های انتقالی یا m از بخش Host ID به Net ID:
۲n – 2 ≥ ۱۰۰ => n=7 => m= Host ID – n= 24-7=17
مرحله سوم: انتقال بیت های انتقالی یا m و یافتن New Net ID:
۱۲.۰.۰.۰
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
New Net ID= Net ID + m =25
مرحله چهارم: محاسبه مجدد Subnet Mask برای شبکه جدید با برابر یک قرار دادن همه بیت های بخش های New Net ID شامل: Net ID و بخش اضافه شده به آن:
۱۲.۰.۰.۰/۲۵
۰۰۰۰۱۱۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰.۰۰۰۰۰۰۰۰
۲۵۵.۲۵۵.۲۵۵.۱۲۸
مرحله پنجم) شناسایی network های جدید بر اساس عدد دسیمال New Net ID:
آخرین بیت New Net ID را یافته و به عدد دسیمال تبدیل می کنیم، مضارب این عدد دسیمال (که از صفر شروع می شود تا تعداد شبکه ای که نیاز داریم) را هر بار به عدد اوکتدی که آخرین بیت قرار داشته اضافه می کنیم تا به تعداد Needed Network شبکه ساخته شود.
شبکه اول: ۰*۱۲۸=> ۱۲.۰.۰.۰/۲۵ => 12.0.0.126 – ۱۲.۰.۰.۰
نکته: آدرس پخش همگانی (Broadcast): 12.0.0.127
این سابنت ۱۲۶ آدرس IP قابل استفاده در اختیار ما قرار میدهد (از ۱۲.۰.۰.۱ تا ۱۲.۰.۰.۱۲۶)، که بیشتر از ۱۰۰ آدرس مورد نیاز ماست، اما کوچکترین سابنتی است که میتواند حداقل ۱۰۰ آدرس را پوشش دهد.