IP مخفف اینترنت پروتکل است - پروتکل یعنی قوانین یکسانی که برای اجرای یک یا چند عمل طراحی شده اند - مبنای 2 برای باینری کردن اعداد در IP بسیار مهم است مبنای 2 یعنی بر توان های 2 محاسبات انجام می شود برای محاسبات عدد 2 را به توان اعداد 0 تا 7 بدست می آوریم و عدد دسیمال ( مثلاً 152 ) را بر آن اعداد بدست امده تقسیم و جمع می کنیم برای مثال :
عدد 152 را در مبنای باینری ( 2 دویی ) بدست آورید ؟
حل :
2 به توان 0 = 1
2 به توان 1 = 2
2 به توان 2 = 4
2 به توان 3 = 8
2 به توان 4 = 16
2 به توان 5 = 32
2 به توان 6 = 64
2 به توان 7 = 128
این 152 به 128 منها شود = 24
24 - 16 = 8
8 - 8 = 0
یعنی این عدد بر این چند عدد می تواند محاسبه شود و دقیق آن به صورت :
1 ضربدر ( 2 به توان 7 ) + 0 ضربدر ( 2 به توان 6 ) + 0 ضربدر ( 2 به توان 5 ) + 1 ضرب ( 2 به توان 4 + 1 ضربدر ( 2 به توان 3 ) + 0 ضرب ( 2 به توان 2 ) + 0 ضرب ( 2 به توان 0 ) که باینری آن محاسبه می شود
هر جا عدد دسیمال 152 بر یکی از اعداد تفریق شود 1 و اگر نشود 0 می گذاریم
و وقتی این مقدار 0 و 1 را از سمت چپ به راست کنار هم قرار دهیم باینری آن 10011000 می شود
128+16+8 = 152
انشالله که انواع کلاس های IP رو بلد باشید 192.168.1.1/24 رو در نظر بگیرید دارای تقسیمات زیر است :
24 = Network Bits
8 = Host Bits
0 = ( N + H ) - 32 = سابنت بیت ها
Host Per Subnet = دو به توان H منهای 2
Subnets = دو به توان S که 0 شده بود 1
برای بدست آوردن سابنت مسک و سابنت و برادکست و اولین و آخرین IP فول کلاس ها و شبه فول کلاس ها از روش زیر استفاده می شود :
یک فول کلاس :
10.1.1.1/8
AND آکتد اول در کلاس A با 255 گرفته شود :
SM = 255.0.0.0
10.0.0.0 = SN
BA = 10.255.255.255 میشه wildcard سابنت هم حساب کرد که هست => 255.255.255.255 از سابنت مسک بالا 255.0.0.0 کم کنیم 0.255.255.255 که با جمع با 10.0.0.0 میشه همین برادکست
10.0.0.1 = FA
10.255.255.254 = LA
یک شبه فول کلاس :
100.1.1.1/24
255.255.255.0
100.1.1.0
100.1.1.255
کلاس لس ها :
192.168.1.130/25
255.255.255.128 ( مشخص کردن آکتد اینترست از روی 25 تا 1 )
256-128 = 128 MN ( مشخص کردن عدد جادویی - هر آکتد 256 تا عدد دارد )
حالا شرط میزاریم کوچکتر و مساوی از عدد 130 چ عددی است که 128 بر آن بخش پذیر است :
192.168.1.128 = SN
برای بدست آوردن برادکست SN + MN -1
192.168.1.255 = BA
FA = 192.168.1.129
LA = 192.168.1.254
یک مثال دیگر :
172.16.200.101/20
255.255.240.0
عدد 200 تقسیم بر 16 = 12.5 گِردش کنیم 12 ضربدر 16 = 192 ( اگر عدد مثلاً 200 بر عددی مثل 20 بخش پذیر بود خود 200 عددی هست که بر کوچکتر و مساوی خودش بخش پذیر )
256 -240 = 16
192+16-1 = 207
SN = 172.16.192.0
BA = 172.16.207.255
یک مثال :
آدرس 17.16.15.14 در سافیکس 9 بدست آورید :
17.16.15.14 آدرس ( دامنه تغییرات از اکتد دوم شروع میشه )
255.128.0.0 = 9 نت مسک ( اکتد دوم با توجه به نکته ای که بالا گفته شد )
17.0.0.0/9 = نتورک ( 16 تا در 128 تقسیم نمیشه 0 میشه بعد از آن همگی اکتد ها 0 می شوند )
17.127.255.255 = برادکست
17.0.0.1 = حداقل هاست
17.127.255.254 = حداکثر هاست
روش Subnet Zero :
آدرس هایی که فول کلاس هستند اما در پرفیکس دیگری هستند :
166.25.0.0/22 که در کلاس 166.25.0.0/16
حل :
255.255.252.0
4 = 252 - 256
166.25.4.0/22 شبکه قبل از آن 3.255 خواهد بود
166.25.8.0/22
...
166.25.252.0 سابنت 64 ام است
طبق روش بالا توضیح دادیم :
N = 16
H = 10
6 = S = 32 - (16+10) سابنت شبکه === > S = 2^6 = 64
HPS = 2^10 - 2 = 1022
- سابنت ماسک ما هم برابر S=32-(H+N) است حاصل برابر میشه با 32-31= یک
- به ازای هر هاست H سابنت میشه دو به توان H منهای دو که میشه 128 - 2 = 126 ( 2 آدرس به دلیل آدرس شروع شبکه و برادکست حذف شدن )
- حالا به ازای هر نتورک N سابنت دو به توان S = دو میشه
نکته : عباراتی نظیر 30/ را CIDR یا Perfix می گویند
مجیک نامبر Magic Number ---> مثال بالا در 25/ معادل سابنت ماسک 255.255.255.128 میشه هنگامی که از 256 کم بشه 128 = 128 خواهد شد این عدد را مجیک نامبر می گویند ( آن را به خاطر بسپارید )
- حالا به آیپی مثال برگردید و عدد 100 در آکتد آخر رو 100 تقسیم به 128 انجام بدهید به طوری که عددی صحیح بدون اعشاری بدست بیاورید حاصل در اینجا 0 میشه و صفر ضربدر عدد مجیک نامبر میشه 0 >>>> حالا آیپی مثال ما میشه 200.1.1.0
- برای بدست آوردن برادکست از فرمول مجیک نامبر منهای سابنت نامبر که 0 شد در آخرین اکتید جمع و از یک کم کنید میشه 200.1.1.127
حالا یک مثال دیگه :
172.16.70.211/18 یک آدرس از کلاس B داریم ابتدا آن را به 18 سافیکس برمی گردونیم 255.255.192.0 حالا 192 میشه آکتد سوم که تغییرات روش اعمال میشه مجیک نامبر رو بدست بیارید 256-192=64 میشه حالا آکتد سوم آیپی مثال رو تقسیم بر حاصل مجیک نامبر کنید میشه یک و نیم که عدد صحیح آن یک است سابنت نامبر میشه 172.16.64.0 ( دقت کنید سابنت نامبر هر چقدر بشه بقیه اکتد های بعدش 0 صفر میشن ) حالا برادکست آدرس رو پیدامی کنیم که میشه مجیک نامبر + سابنت نامبر منهای یک = 127 ( آکتد های بعد از این رقم برابر 255 میشن چون برادکست هست و بقیش 1 است ) پس داریم 172.16.127.255
- حالا اولین آدرس استفاده شده 172.16.64.1 و آخرین آدرس 172.16.127.254 خواهد بود
یک مثال دیگر و راه حل دوم :
172.16.170.211/18
- مرحله اول 255.255.192.0 برابر 256-192 = 64
- مرحله دوم 170 رو ببر روی 64 تقسیم کن ببین عدد رندش چیه !!! میشه 2
- مرحله سوم 2 رو ضربدر 64 کن میشه 128 حالا اکتد سابت نامبر میشه 172.16.128.0 میشه
- مرحله چهارم بدست اوردن برادکست که از فرمول سابنت نامبر + مجیک نامبر - یک میشه 191 بقیه هم 255 میشه 172.16.191.255
-مرحله پنجم اولین آدرس رو بنویسیم 172.16.128.1 و اخرینش 172.16.191.254
* آموزش سوپرنتینگ
برای مثال ادرس 166.25.0.0/22 رو در نظر بگیرید :
- مرحله اول بدست آوردن سابنت ماسک معادل با آن 255.255.252.0
- بیت های نتورک N = 16 و هاست H = 10 و بیت سابنت S=6 و هاست هر سابنت هم میشه دو به توان ده - دو سابنت نامبر هم دو به توان 6 برابر 64 میشه و مجیک نامبر برابر میشه 256-252=4 که 252 اخر آکتدی که باهاش کار می کنیم
- حالا اولین ادرش شبکه 166.25.0.0 و شبکه بعدی 166.25.4.0 و شبکه بعدی 166.25.8.0 و تا 64 بار ادامه پیدا می کند تا به 166.25.252.0 برسیم
- حالا بین هر شبکه ای 1022 تا ادرس هاست خواهیم داشت به این روش سوپرنتینگ می گویند
حالا فرض کنید به ما تعداد هاست و شبکه رو بدن و از ما بخوان که آنالیز ایپی ادرس روی شبکه انجام دهیم :
برای مثال فرض کنید H = 139 و S=177 باشد و در کلاس B باشد
- در اینجور مسائل ابتدا اطلاعات سوال رو بنویسید N=16 و تعداد هاست هر زیر شبکه برابر >= 139 و تعداد نتورک برای هر شبکه میشه Nos>=177
- طبق فرمول داشتیم تعداد هاست ها منهای عدد دو پس => 139 باید باشد پس حاصل میشه دو به توان 8 = 128 و تعداد هاست ها 8 میشه ( یعنی دو به توان H هاست )
- طبق فرمول هم برای هر سابنت که S هست باید دو به توان S شود >= 177 که عددی برابر با S = 8
نکته : S رو میشه از رابطه 32 - ( H+N ) = ؟ هم بدست اورد که باز میشه 8
- حالا طبق مرتب سازی یک سابنت که داشتیم N+S+H = 255.255.255.0 میشه چون 24 / شده ( ما در کلاس های سابنت به اکتد آخر معدل کلاس نیاز داریم )
مثال :
در کلاس می خواهیم برای هر شبکه 1000 هاست و 44 زیر شبکه ( نتورک ) داشته باشیم
- نزدیک ترین عدد که بزرگتر یا مساوی H باشد میشه = 1024 یعنی دو به توان H منهای 2
ما N و H و S رو میخواهیم = که کلاس B برای N ها = 16 برای H ها 10 و برای S ها میشه 6
- پس حالا 22/ N+S و عددی معدل باینری 11111111.11111111.11111100.00000000
حالا فرض کنید دسته ای IP آدرس ها رو دارید و قصد دارین بهترین سابنت نامبر و بهترین ساینت ماسک رو بدست بیاریم :
114.3.4.0
114.3.5.0
114.3.6.0
114.3.7.0
این همان عمل Summarization هست که روتر ها در روتینگ انجام می دهند برای حل این مسائل :
- مرحله اول تمامی IP آدرس ها به صورت باینری یعنی 0 و 1 بنویسید :
به ترتیب می شوند :
01110010.00000011.00000100.000000000
01110010.00000011.00000101.00000000
01110010.00000011.00000110.00000000
01110010.00000011.0000111.00000000
حالا دقت کنید تغییرات از کجا اعمال شده همانطور که میبینید تغییرات در آکتد سوم در سه بیت اول ( از راست به چپ ) اتفاق افتاده است
- مرحله دوم یک خط فرضی که برای تمام ستون های اعداد باینری قبل از 1 در اکتد سوم می کشیم تا مرزی بین تغییرات باینری بیت ها با بیت هایی که ثابت هستند داشته باشیم
- مرحله سوم : حالا از دست راست پشت خط فرضی که کشیده این همه رو 0 کنیم ( آکتد سوم از بیت دوم به سمت راست )
- حالا آیپی آدرس اول میشود 114.3.4.0 که ساینت نامبر
- مرحله چهارم : تمامی اعداد سمت راست خط فرضی رو 1 بنویسید مثلاً ایپی ادرس 114.3.7.0 میشود 114.3.7.255 که آدرس برادکست این شبکه بدست میاید
روش ساده تر :
بسته به رنج کلاس آدرس ها باید از NetID به سمت بیت های Host ID کم کنیم و به NetID اضافه کنیم برای مثال اگر بخواهیم 2 بیت به NetID اضافه کنیم آن بیت ها را در سابنت ایجاد شده به صورت 0.0 - 1.0 - 1.0 - 1.1 خواهد بود ( تمام حالت ها ) حالا تفکیک سابنت ها ایجاد می شود برای این کار از فرمول ساده :
2 به توان n استفاده می کنیم => تعداد سابنت مورد نظر می باشد و مثال :
یک کلاس C که 4 سابنت تقسیم شود و سابنت ماسک جدید را محاسبه کنید :
2 به توان n => که 4 شده و n=2 است سابنت پیش فرض 255.255.255.0 است و 2 بیت در آکتد چهارم به صورت 1100000 = 192 می شود - سابنت ماسک با AND شدن یک ها به صورت NetID می شود - وقتی می گوییم NetID /30 یعنی سی تا 1 داریم
فرض کنید می خواهید از یک کلاس فول مثل کلاس سی برای نزدیک به 300 هاست استفاده کنید این آدرس 255.255.255.0 هست و فقط 254 هاست را پشتیبانی می کند ( 2 به توان H که تعداد هاست ها است و آن در کلاس سی 8 است ) برای رفع این کمبود آدرس از کلاس لس ها استفاده می شود - حتی زمانی که بازده آدرس دهی خیلی بیش از اندازه ما باشد :
آدرس های ورژن 4 دارای دو قسمت NetId و HostId است کلاس لس ها دارای سابنتینگ هستند درست مرزی بین هاست آیدی و نت آیدی ایجاد می کند و همان سابنت هست این سابنت متعلق به نت آیدی می شود ( به این عمل قرض گرفتن از بیت های هاست آیدی به نت آیدی سابنتینگ می گویند ) تعداد سابنت های ایجاد شده برابر است با 2 به توانی از بیت هایی که از هاست قرض گرفته شده است :
مثال 1 :
برای آیپی روبرو سابنت مسک رو حساب کنید که 300 سابنت داشته باشیم :
192.168.0.0
255.255.0.0
حل مثال 1 :
برای حل اینگونه سوالات ابتدا سابنت ها رو برابر یک عبارتی مثله S ( بیت های قرض گرفته شده ) قرار می دهیم سپس 2 به توان S باید بزرگتر مساوی 300 در سوال باشد حالا عدد S می شود 9 حالا باینری آدرس سوال رو می نویسیم :
00000000 00000000 168 192
00000000 000000000 255 255
0 0000000000 ( 9 بیت قرض گرفته شده )
هاست ها 7 تا ( از چپ به راست ) و نت های جدید 9 بیت بیشتر شدند می شوند :
255.255.255.128 پس ادرس شبکه جدید می شود :
192.168.0.0
255.255.255.128
حالا 2 به توان تعداد بیت هاست که با H نشان می دهیم منهای 2 = 126 خواهد شد
به خاطر بسپرید خیلی بدردمون میخوره :
1 2 4 8 16 32 64 128
255 254 252 248 240 224 192 128
32/ 31/ 30/ 29/ 28/ 27/ 26/ 25/
سوال :
در کلاس B هاست 210 و سابنت 55 عدد باشد
حل :
N = 16
H = 8
S = 6
جمع مقادیر 30 می شود اگر 32 بود کاری نداشت یک سابنت میشد و مسئله حل بود چون کمتر از 32 شده - پس 32-(16+8) = 8 گاومون زایید چون S ما 6 شد اینجا 8 شده ولی 6 و 8 درست هستند بین آنها 7 قرار دارد 6-7-8 داریم برای 32 شدن 7 باید 9 تا H باشد ( چون سابنتینگ انجام میدیم از هاست ها بر می داریم = H ) در کل داریم 16 + 8 + 8 | 16 + 10 + 6 | 16 + 9 + 6
N = 16
H = 8-9-10
S = 8-7-6
255.255.255.0 === 24 = 256
255.255.254.0 === 23 = 512
255.255.252.0 === 22 = 1024
HPS = 2^H-2 >= 210
S = 2^6 >= 55
روش دیگر :
وقتی میگیم یک سابنت با 200 نود ( هاست )یک ادرس پراویت را در نظر بگیرید برای 200 تا هاست یک کلاس سی کافی است :
192.168.1.0/24
این 0 دارای 8 بیت باینری است که می دهد 2 به توان 8 منهای 2 مساوی 254 نود یا هاست ( 2 نتورک و برادکست چون استفاده نمی شود کم می کنیم )
باید سعی کنیم جلوی اصراف در ادرس ها رو بگیریم نه خیلی زیاد نه خیلی کم ( که خیلی کم شبکه ما رو مختل خواهد کرد )
سابنتینگ بر اساس خروجی اعداد 1 تا ... به توان 2 است
مثال :
6 سابنت به ما بدهد ( تعداد هاست مهم نیست ) 192.168.0.0 در 255.255.255.0/24
حل :
2 به توان 3 ( بزرگتر > = مساوی با 6 شود ) که = 8 - 2 = 6 ( با 3 و 8 خیلی کار داریم ) تا سابنت مرحله بعدی سابنت ماسک 255.255.255.0 که توان 3 سابنت ماسک را تغییر خواهد داد به نت آیدی نمی شود دست زد در کلاس سی 255.255.255 است سراغ 0 ها می رویم و 3 تا ( از چپ به راست عدد 1 بزار ) قرض می گیریم 11100000 که 224 می شود حالا سابنت ماسک جدید 255.555.255.224 می شود و 27/ خواهیم داشت ( 27 تا 1 باینری ) در مرحله بعدی عدد مجیک نامبر 256 را بر 8 تقسیم می کنیم می شود 32 تا که 8 سابنت داریم که در هر کدام 32 نود جا می شود :
255.555.255.224/27
256/8 = 32 که باقیمانده همیشه باید 0 شود حالا حرکت های 32 تایی داریم تا 8 بلوک :
32 ضربدر 0 = 0
32 ضربدر 1 = 32
...
32 ضربدر 8 = 256 ( فقط در ضرب نوشته می شود همان 255 در هر بلوک حساب کنید )
برادکست هم 1 عدد از آخرین سابنت کم می کنیم
مثال :
6 سابنت به ما بدهد ( تعداد هاست مهم نیست ) 172.16.0.0 در 255.255.0.0/16 بتواند 2000 سابنت بدهد
حل :
2000 از کدام عدد نزدیکتر <= است که 2 به توان 11 می شود 2048 که سابنت 255.255.0.0 چون کلاس B هستیم 11 بیت از 0 ها قرض می گیریم یعنی 16 با 11 = 27 تا 1 داریم 255.255.255.0 ما کاری به 255 ها نداریم ( 1 ها رو در سابنت دست نمی زنیم سراغ 0 ها می رویم ) 255.255.255.224 حالا 3 تا 1 در آکتد چهارم داریم که به توان 2 می شود 8 تا و 256/8 = 32 که حرکت ها می شود 32 تا 8 تایی که در کلاس A و B کاری به تعداد نداریم فقط حرکت برایمان مهم خواهد بود :
172.16.0.0
32
64
96
...
224
چون 256 باهاش کاری نداریم ( مگر اینکه پشت آن نت آیدی باشد آن موقع 256 نوشته می شود ) بعدی :
1.0
1
...
224
بعدی میشه :
2.0
روش سابنتینگ و سوپرنتینگ در کتاب مایکروسافت پرس
آدرس 198.1.0.0/24 را به 7 سابنت تقسیم کنید و همه رنج ها با سابنت ماسک آن را محاسبه کنید :
طبق فرمول 2n <= 7 که می شود n = 3
حالا 3 بیت داریم که از تعداد هاست بیت ها به نت بیت ها اضافه می شود :
0 0 0 حالا قبل آنها همه 0 و یکبار همه 1 قرار دهید می شود 0 تا 31 شروع 1 - 30 خواهد بود
1 0 0
0 1 0
1 1 0
0 0 1
1 0 1
0 1 1
1 1 1 قبل آنها همه 0 و همه 1 حالا 224 تا 255 داریم و شروع 225 تا 254
بیت ها رو از کوچک به بزرگ مرتب کردیم برای این دسته های بزرگ باینری از سمت چپ 4 تا 0 و 4 تا 1 بنویسید و ستون دوم 2 تا صفر 2 تا 1 و تکرار تا پایان در ستون سوم همه یکی در میان 0 تا 1 قرار میدیم تا ستون های سه گانه بالا ایجاد شود
سوپرنتینگ
می توان عمل برعکس سابنتینگ رو انجام داد و سوپرنتینگ ایجاد کرد بیت نت رو به بیت هاست اضافه کنیم با سوپرنتینگ می توان عمل روتینگ رو حذف و نت ID های یکسانی ایجاد کرد سوپرنتینگ بین رنج های مختلف شدنی است اما نه همیشه !!! این شرایط عبارتند از :
- بیت ها جدا شده کلیه حالت های ممکن را شامل شوند مثلاً اگر بخواهیم دو تا bit به Host ID اضافه کنیم ، آن بیت ها باید در سابنت های مربوطه برابر 00 - 01 - 10 - 11 باشد
- بعد جداسازی بیت ها از نت آیدی باید بیت های باقی مانده در نت آیدی کلیه سابنت ها با یکدیگر برابر باشد
برای مثال :
.192.1.1
بخواهیم سوپرنتینگ کنیم خواهد بود 000000 0 0 می شود 0 تا 63 و آدرس 26/ 192.1.1.0
111111
و آدرس بعدی 26 / 192.1.1.64 باشد 000000 1 0
111111
آدرس های بالا شرایط 2 گانه که در بالا گفته شد دارند بنابراین می توانند سوپرنتینگ شوند :
192.1.1.0/25