Subnetting چیست ؟
ما هر وقت از Subnetting صحبت می کنیم به این معنی است که ما می خواهیم کلاس های A و B و C را که اصطلاحاً " Major" نامیده می شوند را ریز ریز کنیم ، و به Subnet های کوچکتری تبدیل کنیم ، ما وقتی می گوییم Subnet منظوزمان این هست که تعداد هاست ها را کوچکتر کنیم . ما می خواهیم Subnet mask جدیدی را برای تقسیم بندی و کوچکتر کردن Subnet ها ایجاد کنیم

برای مثال ، کلاس C شبکه به صورت پیش فرض به ما 254 هاست می دهد ، فرض کنید می خواهیم آنرا برای 30 هاست در شبکه LAN اختصاص بدهیم ، ما باید Subnet mask جدیدی را ایجاد کنیم .
مثال :
ما یک شبکه کلاس C ، Major داریم به شکل 192.168.1.0/24 و ما subnet mask 255.255.255.0 داریم ، ما 5 شبکه لازم داریم برای آن ها 30 هاست می خواهیم .
جواب :
ما ابتدا باید ببینیم چند بیت هاست را باید قرض بگیریم می شود 25 -2 = 30 ، یعنی 5 صفر برای هاست ها رزرو می کنیم تا subnetmask جدید هم بدست بیاید می شود :
11000000.10101000.00000001.00000000 = Network
11111111.11111111.11111111.00000000 = Default Subnet Mask = /24
11111111.11111111.11111111.11100000 = New Subnet Mask = /27
اگر 2 به توان 3 برسد = 8 تعداد Network ها را می دهد .
نتیجه گیری :
برای بدست آوردن Subnet / Network ما از 2به توان M استفاده می کنیم ، برای بدست آوردن Host از 2 به توان N منهای 2 استفاده می کنیم .
Network = 192.168.1.0/27 8 new subnets, 30 hosts/subnet
New subnet mask = 255.255.255.224
ما سه بیت داریم ، بقیه آدرس ها برای هاست به صورت زیر می شود :
11000000.10101000.00000001.xxxxxxxx ← all possible IP addresses in 192.168.1.0/24
11111111.11111111.11111111.11100000 ← new subnet mask /27
---------------------------------------------------
11000000.10101000.00000001.xxx00000 ← all possible network addresses
00000000 = 0
00100000 = 32
01000000 = 64
01100000 = 96
10000000 = 128
10100000 = 160
11000000 = 192
11100000 = 224
تمامی آدرس ها در حول همین 3 بیت به دست می آیند بنابراین داریم :
So, the 8 new /27 subnets look like these…
192.168.1.0 (zero subnet)
192.168.1.32
192.168.1.64
192.168.1.96
192.168.1.128
192.168.1.160
192.168.1.192
192.168.1.224 (broadcast subnet)
ما به آخرین عدد که 224 است در فرایند تغییرات شرکت داشته اند ،اصطلاحاً می گوییم که "interesting octet" ، هر چند ما به 5 تای این ها نیاز داریم اما در آینده می توانیم از 3 تای دیگر آنها برای شبکه استفاده کنیم .
مثال :
172.16.0.0/16 می خواهیم برای 100 subnet ، و 500 Host استفاده کنیم ، می خواهیم آدرس Zero و Broadcast را بدست آوریم .
جواب :
500 هاست به صورت 2n - 2 = 29 - 2 = 512 - 2 = 510 بدست می آید ، با توجه به فرایندی که در بخش های قبلی گفتیم عدد 512 را بر 1 2 4 8 16 32 64 128 256 که باید اینها < X باشند بدست می آریم ، حالا Subnet می شود 27 = 128 . عدد باینری ما 11111111.11111111.11111110.00000000 یعنی ما /23 برا
Subnet mask داریم :
New subnet mask = 255.255.254.0
حالا داریم :
Subnet 0 = 172.16.0.0 (zero subnet)
Subnet 1 = 172.16.2.0
Subnet 2 = 172.16.4.0
Subnet 3 = 172.16.6.0
.
.
Subnet 125 = 172.16.250.0
Subnet 126 = 172.16.252.0
Subnet 127 = 172.16.254.0 (broadcast subnet)
نکته : zero subnet همان صفر ها در هر Subnet ادرس است که بیت های آن به 0 منتهی شده اند ، آخرین رنج هاست های ما برادکست شبکه است
ممکن است سوال کنید چرا رنج های شبکه ما در آکتد سوم 2 تا 2 تا بالا می روند ، خوب گفتیم subnet mask برابر با 256 عدد از بین 0 تا 255 است ، 256 را از 254 که آکتد سوم است کم کنیم می شود 2 !!!
حالا اگر باز هم متوجه نشدید این بخش را نگاه کنید و به خاطر بسپارید :
1 2 4 8 16 32 64 128
254 در عبارت بالا می شود :
0 1 1 1 1 1 1 1
آکتد آخر از سمت راست 1 است که ختم شده به 0 ، این مرز بین Subnet/Host ما است ، بالا برابر با 2 است . حالا ما 2 تا 2 تا شروع می کنیم از اکتد سوم به بالا می رویم تا Subnet ها همگی بدست بیایند !!!
نکته : این را به خاطر بسپارید :
(network address increment = 256 -interesting octet of subnet mask)
هر گاه با داشتن subnet mask بخواهیم آدرس های Host برای هر Subnet را حساب کنیم می توانیم از فرمول بالا استفاده کنیم
مثال :
یک آدرس به صورت 192.168.1.0 داریم که Subnet mask جدید آن هست 255.255.255.240 است ، می خواهیم آدرس هاست آن را بدست آوریم :
256 - 240 = 16
192.1681.0( zero subnet) =( Subnet 0)
192.168.1.16 = Subnet 1