Subnet calculation

Subnet calculation အကြောင်းနဲ့ ပတ်သက်ရင်ဘယ်လိုတွက်သလဲမပြောခင်ဘာလဲအရင်ပြောဖို့လိုမယ်ထင်ပါတယ်။ကျွန်တော်တို့တွေ တစ်ယောက်နဲ့တစ်ယောက်ဆက်သွယ်တဲ့အခါစာရေးဆက်သွယ်မယ်ဆိုရင်အိမ်နံပတ်၊ အိမ်လိပ်စာ၊စသဖြင့်လိုအပ်သလို ဖုန်းနဲ့ဆက်သွယ်ပြောဆိုတဲ့အခါလည်းဖုန်းနံပတ်လိုပါတယ်။ ဒီလိုပဲကွန်ပြူတာ စနစ်တွေဟာလည်းကွန်ယက်တစ်ခုအတွင်းချိတ်ဆက်ထားတဲ့အခါ စက်တစ်လုံးနဲ့တစ်လုံးဆက်သွယ်ဖို့ လိပ်စာနံပတ်စဉ် တစ်မျိုးကို သုံးပါတယ်။ဒီနံပတ်တွေကို IPaddress လို့ခေါ်ပါတယ်။ဒီ IP address တွေကိုbinary ဂဏန်းဂ လုံးတစ်တွဲ (8bits) နဲ့အုပ်စု ၄ စု တွဲထားပါတယ်။တစ်တွဲနဲ့ တစ်တွဲကြား dot အစက်လေးတစ်ခုခြားထားပါတယ်။11111111.11111111.11111111.11111111ဒီလိုပုံစံပါ၊ ဒါကို လူတွေဖတ်ရလွယ်အောင် decimalပြောင်းထားပြီးသုံးပါတယ်။စောစောက binaryအတွဲတွေကိုdecimal ပြောင်းလိုက်တော့255.255.255.255ဆိုပြီးဖြစ်သွားပါတယ်။8 bits ၄ခုစုထားတဲ့အတွက် စုစုပေါင်း32 bits ဖြစ်ပါတယ်။ဒီလို 8 bits ၄ခုပေါင်း 32bits စုတွဲတဲ့စနစ်ကိုIPv4 လို့ခေါ်ပြီးIPv6 ဆိုတဲ့စနစ်အသစ်တစ်ခုလည်းရှိပါသေးတယ်။ ဒီနေရာမှာတော့IPv4နဲ့ပတ်သက်တာတွေကိုပဲပြောသွားမှာပါ။ဒီ IP address တစ်ခုမှာအပိုင်း ၂ ပိုင်းပါဝင်ပါတယ်။ပထမတစ်ပိုင်းကတော့ ချိတ်ဆက်ထားတဲ့ကွန်ယက် (Network)ကိုကိုယ်စားပြုပြီးကျန်တစ်ပိုင်းကတော့ဘယ်စက်လဲဆိုတာကို ကိုယ်စားပြုတာပါ။အမေရိကတို့ ထိုင်းတို့မှာရှိတဲ့ Postal code စနစ်ကိုလေ့လာသိရှိဖူးသူတွေဆိုပိုနားလည်ပါမယ်။ zipcode/ postal code ကိုကြည့်တာနဲ့ဘယ် ပြည်နယ်၊ ဘယ်မြို့ဆိုတာကိုပြောလို့ရပါတယ်။ဒီလိုပါပဲ IPaddress တစ်ခုကိုကြည့်တာနဲ့ဘယ်ကွန်ယက် (Network)ကဆိုတာကိုသိနိုင်ပါတယ်။ ဒီလိုခွဲခြားသိနိုင်ဖို့ကိုsubnet mask လို့ခေါ်တဲ့စနစ်ကလုပ်ဆောင်ပေးပါတယ်။subnet အကြောင်းမပြောခင်IP address အကြောင်းကိုနည်းနည်း အသေးစိတ်ထပ်ပြောပါမယ်။

binary 8 bits ဟာdecimal မှာဆိုရင်0 – 255 အတွင်းပဲဖြစ်ပါတယ်။ဒါကြောင့် IPaddress ဆိုတာ0.0.0.0 – 255.255.255.255 အတွင်းပဲဖြစ်ပါတယ်။binary အနေနဲ့ဖော်ပြရရင်တော့အောက်ပါအတိုင်းဖြစ်မှာပါ-

00000000.00000000.00000000.00000000 –11111111.11111111.11111111.11111111

ဒီ IPaddress က 8bits တစ်တွဲကို1 octet လို့လည်းခေါ်ပါသေးတယ်။ပထမ ဘယ်ဘယ်ဆုံးက အုပ်စုကို1st octet လို့ခေါ်ပြီးကျန်တာတွေကို 2ndoctet, 3rd octet, 4th octet စသဖြင့်အစဉ်အတိုင်း ခေါ်ပါတယ်။ ဒီ 0.0.0.0 – 255.255.255.255အတွင်းကIP address တွေကိုအုပ်စုလေးတွေ ထပ်ခွဲထားပါသေးတယ်။class လို့ခေါ်ပြီးclass 5 ခုရှိပါတယ်၊ A –E သတ်မှတ်ထားပါတယ်။ဒီလို classသတ်မှတ်ရာမှာလည်းစနစ်တစ်ခုရှိပါတယ်။ ဒီစနစ်ဟာဘယ်ဘက်ဆုံး အုပ်စုဖြစ်တဲ့1st octet ကိုအခြေခံတွက်ချက်ပါတယ်။ 1stoctet ကိုhigh-ordered bit အရစီစဉ်ပြီး0 ဆိုclass A၊10 ဆိုclass B၊110 ဆိုclass C 1110 ဆိုclass D 11110 ဆိုclass E စသဖြင့်ခွဲထားပါတယ်။ဒီနေရာမှာ high-orderedbit ဆိုတာဘာလဲမသိဖြစ်နိုင်ပါတယ်။ဒီတိုင်းရှင်းပြတာထက် အောက်မှာကြည့်လိုက်ရင်ရှင်းမယ်ထင်ပါတယ်။

high-ordered bit

00000000 – 01111111 0 – 127

10000000 – 10111111 128 – 191

11000000 – 11011111 192 – 223

11100000 – 11101111 224 – 239

11110000 – 11111111 240 – 255

low-ordered bit

00000001

00000011

00000111

00001111

00011111

00111111

01111111

11111111

ဒီလောက်ဆိုhigh-orderedbit ဆိုတာကိုနားလည်မယ်ထင်ပါတယ်။ဒီနည်းအရစီစဉ်လိုက်တဲ့အခါ

0.0.0.0 – 127.255.255.255 => Class A

128.0.0.0 – 191.255.255.255 => ClassB

192.0.0.0 – 223.255.255.255 => ClassC

224.0.0.0 – 239.255.255.255 => ClassD

240.0.0.0 – 255.255.255.255 => ClassE

ဆိုပြီးခွဲခြားလို့ရသွားပါတယ်။ ဒီdecimal တွေကိုသိပ်မရှင်းသေးရင် binaryပြောင်းကြည့်လိုက်ပါ။ဥပမာ Class A ဆိုရင်

00000000.00000000.00000000.00000000 –01111111.11111111.11111111.11111111 ဆိုတာမျိုးဖြစ်ပါမယ်။ဒီ Class ခွဲနည်းကိုအလွယ်တကူမှတ်မယ်ဆိုရင်ဒီလိုတွက်ပါ။ 1stoctet ကိုbinary ပြောင်း။
0 စရင်Class A

10 စရင်Class B

110 စရင်Class C

1110 စရင်Class D

1111 စရင်Class E
ဒီလောက်ဆိုလွယ်မယ်ထင်ပါတယ်။ ဒီနေရာမှာClass တွေနဲ့ပတ်သက်ပြီးsubnet calculation နဲ့တွဲသုံးဖို့လိုတာက ClassA, B, C တို့ပဲဖြစ်ပြီး။Class D ကတော့Multicasting လို့ခေါ်တဲ့နည်းပညာမှာပဲသုံးပြီး ClassE ကိုတော့အသုံးပြုမှုမရှိဘဲ အနာဂတ်အတွက်သီးသန့်ချန်ထားတာဖြစ်ပါတယ်။

0.0.0.0 – 255.255.255.255 အတွင်းIP address ပေါင်း 4294967296 ရှိပါတယ်။ဒီလောက်များတဲ့လိပ်စာတွေကိုဘယ်လိပ်စာက ဘယ်ကွန်ယက်(Network)ထဲကလဲဆိုတာသိနိုင်ဖို့စနစ်တစ်ခုလိုပါတယ်။ ဒီစနစ်ကိုတော့subnet mask လို့ခေါ်ပြီးIP address တစ်ခုရဲ့ဘယ်အပိုင်းက network ကိုရည်ညွှန်းပြီးဘယ်အပိုင်းကတော့ networkထဲကချိတ်ဆက်ထားတဲ့ စက်ပစ္စည်းတွေကိုရည်ညွှန်းသလဲဆိုတာကိုဖော်ပြပေးပါတယ်။ချိတ်ဆက်ထားတဲ့ စက်ပစ္စည်းတွေကိုhost လို့ခေါ်ပါတယ်။ဘယ်အပိုင်းက networkဘယ်အပိုင်းကhost ခွဲခြားတဲ့စနစ်ဖြစ်ပါတယ်။ဘယ်ဘက်ကနေစပြီး networkbit ထဲမှာပါတဲ့bit တိုင်းကို 1 နဲ့သတ်မှတ်ပြီးကျန်တဲ့ 0တွေကိုမှ host အဖြစ်သတ်မှတ်ပါတယ်။1 တွေဟာတစ်ဆက်တည်း အတန်းလိုက်ဖြစ်ရပါမယ်။အောက်မှာကြည့်ပါ။

00000000 => 0

10000000 => 128

11000000 => 192

11100000 => 224

11110000 => 240

11111000 => 248

11111100 => 252

11111110 => 254

11111111 => 255

ဖော်ပြထားတဲ့အတိုင်းပဲ1 တွေတစ်ဆက်တည်းဖြစ်နိုင်တာက128, 192, 224, 240, 248, 252,254, 255 တွေပဲဖြစ်တာကြောင့် subnet mask အဖြစ်သုံးနိုင်တာလည်းဒီ ဂဏန်းတွေကိုပဲသုံးလို့ဖြစ်နိုင်မှာဖြစ်ပါတယ်။ဒါကြောင့် ဒီဂဏန်းတွေကိုအသေမှတ်ထားပါ။

ထူးထူးခြားခြားသတ်မှတ်ပေးထားတာမျိုးမရှိတဲ့အခါnetwork အပိုင်းနဲ့host အပိုင်းကိုအလွယ်တကူခွဲခြားသိနိုင်ဖို့အတွက်IP class တွေအတွက်မူလသတ်မှတ်ချက်အဖြစ် defaultsubnet mask တွေသတ်မှတ်ထားပါတယ်။

Class A => 255.0.0.0 =>11111111.00000000.00000000.00000000

Class B => 255.255.0.0 =>11111111.11111111.00000000.00000000

Class C => 255.255.255.0 =>11111111.11111111.11111111.00000000

ဆိုလိုတာကClass A အတွက်1st octet ဟာnetwork ကိုကိုယ်စားပြုပြီး။Class B အတွက်1st and 2ndoctet ၊ ClassC အတွက်1st , 2ndand 3rd octet တွေဟာnetwork ကိုကိုယ်စားပြုတယ်ဆိုတဲ့အဓိပၸါယ်ဖြစ်ပါတယ်။ ဥပမာclass A network ip တစ်ခုဖြစ်တဲ့ 12.43.113.200 မှာ12.0.0.0 ဟာnetworkတစ်ခုဖြစ်ပြီး12.0.0.0 – 12.255.255.255 ထိip တွေပါဝင်နိုင်တယ်ဆိုတာဖြစ်ပါတယ်။ဒီ ip တွေအများကြီးထဲကမှ 43.113.200ဟာ hostတစ်လုံးကိုကိုယ်စားပြုပါတယ်။ ဒါဟာdefault subnet maskနဲ့တွက်တာဖြစ်ပြီးတကယ်လို့ ဒီ ipရဲ့ subnetmask ဟာ255.0.0.0 မဟုတ်ဘဲ255.254.0.0သာဖြစ်ခဲ့မယ်ဆိုရင်တော့networkပြောင်းသွားမှာဖြစ်ပါတယ်။ဒီလို network နဲ့hostကိုဘယ်လိုခွဲသလဲဆိုတော့ ipaddress ရဲ့binary နဲ့subnet mask ရဲ့ binary ကိုနှစ်ခုတိုက်ကြည့်ပြီး

1 + 1 = 1
1 + 0 = 0

0 + 0 = 0 စည်းမျဉ်းနဲ့တွက်ထုတ်ပါတယ်။အပေါ်က 12.43.113.200ကိုတွက်ကြည့်မယ်ဆိုရင်

00001100.00101011.01110001.11001000 =>12.43.113.200

11111111.00000000.00000000.00000000 =>255.0.0.0

00001100.00000000.00000000.00000000 =>12.0.0.0

အဲဒီလိုဖြစ်ပါမယ်။တွေ့တဲ့အတိုင်းnetwork က12.0.0.0 ဖြစ်ပါတယ်။

ဒါကို subnetmask 255.254.0.0 နဲ့ပြောင်းပြီးတွက်ကြည့်ရအောင်

00001100.00101011.01110001.11001000 =>12.43.113.200

11111111.11111110.00000000.00000000 =>255.254.0.0

00001100.00101010.00000000.00000000 =>12.42.0.0

network ဟာ12.42.0.0 ဖြစ်သွားတာတွေ့ရပါမယ်။ဒီလိုနည်းနဲ့ networkနဲ့ host ကိုခွဲထုတ်တာဖြစ်ပါတယ်။

ဒီလောက်ဆိုရင်IP address နဲ့ subnet mask အကြောင်းတော့နားလည်လောက်ပြီထင်ပါတယ်။ဆက်လက်ပြီး subnetcalculation အကြောင်းဆက်ပြောသွားမှာဖြစ်ပါတယ်။subnet ဆိုတာip network တစ်ခုကို ပိုသေးတဲ့ network လေးတွေထပ်ခွဲတာကိုပြောတာပါ။ network အသေးလေးတွေကိုပိုကြီးတဲ့ networkဖြစ်အောင်ပြောင်းတာကိုတော့supernet လို့ခေါ်ပါတယ်။

Class A network တစ်ခုမှာIP address ပေါင်း16777216 ထိရှိပြီးClass B ဆို65535 ရှိပါတယ်။Class C မှာတော့ 256 ခုရှိပါတယ်။Class B network တစ်ခုကိုaddress ပေါင်း65535 အစားaddress 500 လောက်ပဲရှိတဲ့networkသေးသေးလေးဖြစ်စေချင်တယ်ဘယ်လိုလုပ်ရမလဲဆိုတာမျိုး တွေ့ရတဲ့အခါsubnet mask ကိုသုံးပြီးလုပ်လို့ရတယ်ဆိုတာသိရမယ်။ နောက်ပြီး ဘယ်လိုsubnet mask ကိုသုံးရမလဲဆိုတာတွက်တတ်ရမယ်။ subnetကိုဘယ်လိုတွက်လဲဆိုတာမပြောခင်ip network နဲ့ပတ်သက်ပြီးသိစရာ ရှိသေးတယ်။ networkid နဲ့broadcast addressတို့ဖြစ်ပါတယ်။network id ဆိုတာကတော့ဘယ် network အတွင်းချိတ်ဆက်ထားလဲဆိုတာသိဖို့ဖြစ်ပြီးbroadcast address ကတော့စက်တစ်လုံးနဲ့တစ်လုံးတိုက်ရိုက်အဆက်အသွယ်မရခင်တစ်လုံးရဲ့ ipတို့ macaddress တို့သိဖို့အတွက် network ထဲကိုလွှင့်ထုတ်ပေးမယ့်အချက်အလက်တွေပေးပို့ရမယ့်ip address တစ်ခုဖြစ်ပါတယ်။(ဒီ၂ ခုအကြောင်းအသေးစိတ်တော့မသိသေးပါဘူး။ကျွန်တော်နားလည်ထားသလောက်ပြောပြတာပါ။)network id အတွက် ip address တစ်ခု၊broadcast address အတွက်ip address တစ်ခုသတ်မှတ်ထားပါတယ်။ip network တစ်ခုရဲ့ပထမဆုံး ipaddress ကိုnetwork id အဖြစ်သတ်မှတ်ပြီး broadcastaddress အတွက်ကိုတော့နောက်ဆုံး ipaddress ကိုသတ်မှတ်ထားပါတယ်။စောစောက ပြောခဲ့တဲ့ဥပမာ ၂ခုမှာ ပထမ ဥပမာအတွက် networkaddress က12.0.0.0 ဖြစ်ပြီး broadcast address ကတော့12.255.255.255 ဖြစ်ပါတယ်။ဒုတိယ ဥပမာအတွက်တော့ networkid က 12.42.0.0ဖြစ်ပြီးbroadcast address ကတော့ 12.43.255.255 ဖြစ်ပါတယ်။host တွေအတွက်သုံးစွဲနိုင်တဲ့ip address ကတောnetwork id နဲ့broadcast address ကိုဖယ်ထားပြီးကျန်တဲ့ ipတွေကိုသုံးစွဲနိုင်ပါတယ်။subnet တစ်ခုရဲ့စုစုပေါင်း ipaddress ထဲက 2ကို နှုတ်ရင်host ipအရေအတွက်ကိုရမှာဖြစ်ပါတယ်။Class C network တစ်ခုမှာip address ပေါင်း256 ခုရှိပြီးချိတ်ဆက်နိုင်တဲ့ host အရေအတွက်ကတော့256 – 2 = 254 ဖြစ်မှာပါ။ဒီမှာကြည့်ရင် ClassC network တစ်ခုမှာhost 254ခုပဲချိတ်ဆက်နိုင်တယ်ဆိုတာတွေ့ရမှာပါ။တကယ်လို့ ClassC network တစ်ခုမှာhost 500 လောက်ချိတ်ဆက်ချင်ရင်ဘယ်လိုလုပ်မလဲ။ host500 ဆိုရင်Class C network ၂ခုပေါင်းမှ ၅၀၀ ပြည့်မှာပါ။ဒီလို network ၂ခုကိုပေါင်းပြီးတစ်ခုတည်းဖြစ်အောင်လုပ်တာကိုsupernetting လို့ခေါ်ပါတယ်။network တစ်ခုမှာhost 50ပဲချိတ်ဆက်လို့ရစေချင်တယ်ဆိုရင်တော့Class C network ကိုပိုသေးတဲ့ networkဖြစ်အောင်လုပ်ရမှာပါ။ဒီလို networkတစ်ခုကိုnetworkအသေးလေးတွေဖြစ်အောင်လုပ်တာကိုတော့subnetting လို့ခေါ်ပါတယ်။subnet ပုဒ်စာတစ်ပုဒ်ဟာပုံစံ ၂ မျိုးဖြစ်နိုင်ပါတယ်။network ဒါမှမဟုတ်host အရေအတွက်ကိုပေးထားပြီးip တစ်ခုရဲ့subnet mask ကိုရှာခိုင်းတဲ့ပုဒ်စာနဲ့ နောက်တစ်မျိုးကတော့ip နဲ့subnet mask/CIDR notation ကိုပေးထားပြီး networkid/brocast address/ip range တို့ကိုရှာခိုင်းတဲ့ပုဒ်စာဆိုပြီး ရှိနိုင်ပါတယ်။

ဒီနေရာမှာsubnet mask နဲ့CIDR( Classless Inter-DomainRouting) နဲ့ဘာကွာလဲဆိုတာပြောဖို့လိုပါမယ်။၂ ခုစလုံးဟာ ipaddress တစ်ခုရဲ့network အပိုင်းနဲ့host အပိုင်းကိုခွဲခြားပြဖို့သုံးတာပါ။မတူတာကတော့ ရေးသားဖော်ပြပုံမတူတာပဲဖြစ်ပါတယ်။subnet mask ကတော့အပေါ်မှာလည်း ပြောခဲ့ဖူးတဲ့အတိုင်း255.255.255.0 စသဖြင့်ip addressတစ်ခုရေးတဲ့ပုံစံအတိုင်းရေးပြီးCIDR notation ကတော့ဒီ subnet mask တစ်ခုရဲ့binary ပုံစံမှာဘယ်ဘက်ကနေစပြီး 1အလုံးအရေအတွက်နဲ့ဖော်ပြပါတယ်။Class C default subnet maskဖြစ်တဲ့255.255.255.0 ကိုbinary ပြောင်းကြည့်11111111.11111111.11111111.00000000ဆိုပြီးရပါမယ်။ဒီ binary ပုံစံမှာ1 တွေကိုဘယ်ဘက်ကနေစ ရေတွက်ကြည့်ပါ။24 လုံးရှိပါတယ်။ဒါကြောင့် classC ip address တစ်ခုကိုCIDR notationနဲ့တွဲပြီးဖော်ပြတဲ့အခါ192.168.137.11/24ဆိုတာမျိုးဖြစ်ပါတယ်။ဒါကြောင့် CIDRက /24ဟာ subnemask မှာ255.255.255.0နဲ့တူတူပဲဖြစ်ပါတယ်။

Class A => 255.0.0.0 =>11111111.00000000.00000000.00000000 => /8

Class B => 255.255.0.0 =>11111111.11111111.00000000.00000000 => /16

Class C => 255.255.255.0 =>11111111.11111111.11111111.00000000 => /24

ဒီလောက်ဆိုရင်သိထားဖို့လိုအပ်တာတွေတော့စုံပြီထင်ပါတယ်။ တွက်တဲ့အပိုင်းကိုဆက်သွားပါမယ်။

ဥပမာ ပုဒ်စာ၁။ ။25.223.223.177/19ဆိုတဲ့လိပ်စာကိုကြည့်ပြီးnetwork/broadcast/firsthost/last host/ip range စတာတွေဘာဖြစ်မလဲတွက်ကြည့်ပါမယ်။ip address တစ်ခုကိုတွေ့တာနဲ့အောက်ကပုံစံအတိုင်း မြင်နိုင်အောင်ကြိုးစားရပါမယ်။

1st octet 2ndoctet 3rd octet 4thoctet

8 16 24 32 ( ဒီအတန်းဟာbits အရေအတွက်ပါ)

25 .223 .224 .177

နောက်တစ်ခါsubnet mask / CIDR notationကိုတွေ့တာနဲ့အောက်ပါအတိုင်းမြင်နိုင်ဖို့ကြိုးစားရပါမယ်။

1st octet    2ndoctet      3rd octet     4thoctet

11111111  .11111111    .11100000  .00000000

255          .255            .224          .0

ဒီနေရာမှာ/19 ဟာ1 အရေအတွက်19 ခုကိုဆိုလိုတယ်ဆိုတာသဘောပေါက်ထားရင် binaryformat နဲ့ဖော်ပြတဲ့ဒုတိယ အတန်းကိုမြင်နိုင်ဖို့လွယ်ပါမယ်။တတိယ အတန်းဖြစ်တဲ့ decimalformat နဲ့subnet maskအတွက်ခက်သလိုလိုထင်ရပါတယ်။အပေါ်မှာလည်းဖော်ပြခဲ့ဖူးတဲ့ဇယားတစ်ခုရှိပါတယ်။

10000000 => 128

11000000 => 192

11100000 => 224

11110000 => 240

11111000 => 248

11111100 => 252

11111110 => 254

11111111 => 255

ဒီပုံစံကိုမှတ်ထားရင် တတိယအတန်းလည်းမခက်တော့ပါဘူး။ ဒီပုံစံ ၂ခုကို မြင်မိပြီဆိုတာနဲ့network bits တွေဟာ3rd octetမှာအဆုံးသတ်တယ်ဆိုတာတွေ့မှာပါ။ဒါကြောင့် networkid ဟာ 3rdoctet ထဲမှာပဲဖြစ်ပါမယ်။25.223.223.177/19 မှာ1st octet နဲ့2nd octet ကိုနဂိုအတိုင်းထားပါ။ networkid ကို ရဖို့ဒီလို တွက်နိုင်ပါတယ်။

x = 3rd octet in ip address =223

y = 3rd octet bits = 24

z = CIDR for ip address = 19

y ထဲကz ကိုနှုတ်ပါ၊ နှုတ်လဒ်ကို 2ရဲ့ထပ်ကိန်းအဖြစ်တင်ပါ။25 = 32 ဖြစ်ပါမယ်။ရလဒ်ကို x နဲ့အနီးစပ်ဆုံးဖြစ်အောင်ဆတိုးသွားပါမယ်။ xထက်ငယ်တာတစ်ခုကြီးတာတစ်ခုရပါမယ်။ ဒီနေရာမှာ x ထက်ငယ်တဲ့32 ရဲ့ဆတိုးကိန်းဟာ 32x 6 = 192 ဖြစ်ပါတယ်။ကြီးတာကတော့ 32x 7 = 224 ဖြစ်ပါတယ်။ဒီလောက်ဆိုရင် အဖြေထွက်ပါပြီ။x ထက်ငယ်တဲ့ဆတိုးကိန်းဟာ NetworkID ဖြစ်ပြီးx ထက်ကြီးတဲ့ဆတိုးကိန်းထဲက 1ကို နှုတ်ရင်broadcast address ကိုရပါတယ်။

ဒါကြောင့်

Network ID = 25.223.192.0

Broadcast = 25.223.224.255

First Host = 25.223.192.1

Last Host = 25.223.224.254

ip range = 25.223.192.1 – 25.223.224.254

ဥပမာ ပုဒ်စာ၂။ ။ 200.10.150.0ဆိုတဲ့Network ID နဲ့Network တစ်ခုရှိမယ်။subnet network အသေးလေးတွေ9 ခုထိထပ်ခွဲချင်တယ်၊ဘယ် subnet maskကိုသုံးမလဲ?

200 နဲ့စတဲ့အတွက်class C address ဆိုတာသိရမယ်၊class C default subnet mask ဟာ255.255.255.0 ( /24 )ဆိုတာသိထားရမယ်။Class C network တစ်ခုမှာip address ပေါင်း256 ခုရှိတယ်။ဒီ 256 ခုကိုတစ်ဝက်စီခွဲပြီး ပိုသေးတဲ့network ၂ခုအဖြစ် subnetmask သုံးပြီးခွဲလို့ရတယ်။တစ်ခုကို ipaddress ပေါင်း128 ခုစီရှိမယ်။ဒီ 128 ခုရှိတဲ့network ကိုလည်းတစ်ဝက်စီထပ်ခွဲလို့ရတယ်။ဒီလိုနဲ့ အဆင့်ဆင့် တစ်ဝက်ခွဲလိုက်တာနောက်ဆုံး networkတစ်ခုမှာip address ၁ခုပဲ ရှိတော့တဲ့ subnetအထိခွဲသွားလို့ရတယ်။ တစ်ဝက်ခွဲတယ်ဆိုတာ2 နဲ့စားတာပဲ။2 နဲ့စားရင်ရလဒ်ဟာ စုံဂဏန်းပဲဖြစ်မယ်။အရင်ဆုံး 256ကို 2နဲ့စားရင်ရနိုင်တဲ့ အဖြေတွေကိုတွက်ကြည့်မယ်။

256/2 = 128

128/2 = 64

64/2 = 32

32/2 = 16

16/2 = 8

8/2 = 4

4/2 = 2

2/2 = 1

စသဖြင့်ရမယ်။ရတာတွေဟာ subnetnetwork အသေးလေးတစ်ခုစီမှာပါဝင်နိုင်တဲ့ ipaddress အရေအတွက်ဖြစ်ပါတယ်။ဒီ ip addressအရေအတွက်ကိုလိုက်ပြီးClass C network တစ်ခုမှာsubnet network ပေါင်းဘယ်လောက်ဆိုတာကို တွက်ချင်တဲ့အခါပြောင်းပြန်ပြန်တွက်ရပါမယ်။Class C network တစ်ခုမှာရှိတဲ့ip address စုစုပေါင်းကိုတည်ပြီးsubnet network တစ်ခုမှာရှိတဲ့ipaddress နဲ့စားရင်ခွဲလို့ရလာမယ့် networkအရေအတွက်ကိုရပါမယ်။ClassC network တစ်ခုမှာipaddress ပေါင်း256ခုရှိတဲ့အတွက်

256/128 =2 networks => 256 – 128 = 128 subnet

256/64 =4 networks => 256 – 64 = 192 subnet

256/32 =8 networks => 256 – 32 = 224 subnet

256/16 =16 networks => 256 – 16 = 240 subnet

256/8 =32 networks => 256 – 8 = 248 subnet

256/4 =64 networks => 256 – 4 = 252 subnet

254/2 =128 networks => 256 – 2 = 254 subnet

256/1 =256 networks => 256 – 1 = 255 subnet

ဆိုတာမျိုးဖြစ်ပါမယ်။ခုတွက်မယ့်ပုဒ်စာမှာ လိုအပ်တာက network၉ ခုဖြစ်တဲ့အတွက် network၁၆ခု ရနိုင်မယ့် subnet240 ဖြစ်မယ်ဆိုတာအလွယ်တကူတွေ့နိုင်မှာပါ။ဒါကြောင့် networkID 200.10.150.0

Subnetmask 255.255.255.240 ဖြစ်ပါမယ်။အပေါ်ကတွက်နည်းကို အခြေခံပြီးတစ်ခြား classB/ Class A တွေအတွက်လည်းတွက်လို့ရပါတယ်၊ စဉ်းစားတဲ့နေရာမှာclassB အတွက်တွက်မယ်ဆိုရင်ipaddress ပေါင်း256ခုလို့မစဉ်းစားပဲnetworkပေါင်း256ခုလို့စဉ်းစားပါ။ဘာလို့လဲဆိုတော့ ClassB network တစ်ခုဆိုတာipaddress 256 ခုပါဝင်တဲ့networkအသေးလေးတွေ256ခုပါဝင်နေပါတယ်။256ip addresses x 256 subnet networks = 1 Class B network ဖြစ်ပါတယ်။ClassB network ရဲ့subnet9 ခုဆိုရင်လည်းပုံစံတူပဲဖြစ်မှာပါ networkbits အတွက်octetနေရာပြောင်းသွားတာပဲထူးပါမယ်။ 255.255.240.0ဆိုတာမျိုးဖြစ်သွားမှာပါ။

Binary Conversion တဲ့လား

binary ဆိုရင်အများစုက ခုမှစတွေ့ဖူးတဲ့အသစ်လို့ထင်ကြတယ်။ တကယ်တော့ဒါဟာ ၁၀ တန်း သင်္ချာထဲမှာပါပြီးသားပဲ။သင်္ချာမှာ အခြေစနစ်ကိုသင်တဲ့အခါတုန်းက အခြေ ၂ (Base2) ဆိုတာအင်္ဂလိပ်လို ခေါ်တော့ binaryဖြစ်သွားတာပေါ့။

အခြေစနစ်ကိုသင်တော့ ကျွန်တော့် ဆရာတစ်ယောက်ကလူနဲ့ ဂြိုလ်သား ကို ဥပမာပေးပြီးသင်ပေးတယ်။ လူတွေမှာ လက် ၁၀ချောင်းရှိလို့ အခြေ ၁၀ ရှိတဲ့(Decimal) သင်္ချာစနစ်ကိုသုံးကြပြီး လက် ၂ချောင်းပဲရှိတဲ့ ဂြိုလ်သားဆိုရင်တော့အခြေ ၂ ရှိတဲ့ (Binary)သင်္ချာစနစ်ကိုသုံးမယ်တဲ့။ ဒီနေ့ခေတ်နည်းပညာလောကမှာတော့ ကွန်ပြူတာဆိုတာလက် ၂ ချောင်းပဲရှိတဲ့ဂြိုလ်သားပေါ့၊ သူ့မှာကtransistor တစ်ခုဖွင့်ထားလား ပိတ်ထားလားဆိုတဲ့ အခြေအနေ ၂ မျိုးကိုပဲအခြေခံပြီး တွက်ချက်မှတ်သားတဲ့အတွက် အခြေ ၂ (Base2) စနစ်ဖြစ်တဲ့binary စနစ်ကိုပဲသုံးပြီး တွက်ချက်မှတ်သားရတာဖြစ်ပါတယ်။နည်းပညာလောကကိုဝင်တော့မယ်နည်းပညာကို လိုက်စားတော့မယ်ဆိုရင်ဒီ ကွန်ပြူတာ သုံးတွက်ချက်စနစ်ဖြစ်တဲ့binary စနစ်နဲ့လူသုံး တွက်ချက်စနစ်ဖြစ်တဲ့Base 10 (decimal) စနစ်၂ ခုကြား အပြန်အလှန်ပြောင်းလဲနိုင်တဲ့ နည်းကိုတော့မဖြစ်မနေသိထားဖို့လိုပါတယ်။ဒီ အခြေစနစ် (Base)စနစ်တွေကြားမှာတူညီတဲ့ အချက်တစ်ခုရှိပါတယ်။decimalမှာ၁၀ ပြည့်ကိန်း လို့ ခေါ်ပြီး binary မှာ၂ ပြည့်ကိန်းလို့ ခေါ်တဲ့လက်ချိုးရေတွက်လို့ရတဲ့အမြင့်ဆုံး ကိန်းကို သင်္ကေတသတ်သတ်တစ်ခု သတ်မှတ်လေ့မရှိပါဘူး။(စကားချပ်။ ။ရောမ သင်္ချာစနစ်မှာတော့ ၁၀ပြည့်ကိန်းအတွက် သင်္ကေတသတ်သတ်ရှိပါတယ်။)

အောက်မှာကြည့်ပါ
Decimal 1 2 3 4 5 6 7 8 9 10
Binary   1 10

ဒီနေရာမှာဆိုရင်၁၀ ပြည့်ကိန်းကို သင်္ကေတသတ်မှတ်တဲ့အခါ ပထမဆုံးရေတွက်တဲ့ဂဏန်းသင်္ကေတဖြစ်တဲ့ ၁ နောက်မှာသုည တစ်လုံးထည့်လိုက်တဲ့နည်းကိုသုံးပါတယ်။ ဘယ်အခြေစနစ်(Base8, Base16) ပဲဖြစ်ဖြစ်ဒီနည်းကိုပဲသုံးပါတယ်။ဒါကြောင့် binaryစနစ်သုံးဂြိုလ်သားတစ်ယောက်မှာ လက်၂ ချောင်းရှိပေမယ့် ၂ ဆိုတဲ့ဂဏန်းသင်္ကေတ မရှိပါဘူး။ 1, 10 ပဲရှိပါတယ်။ decimal စနစ်မှာ၁၀ ထက်ပိုရင် အစကပြန်ရေတွက်ပါတယ်။11, 12 စသဖြည့်ရေတွက်လာပြီးဂဏန်း ၂ နေရာစာပြီးရင် ၃ နေရာ၄နေရာ စသဖြင့် တိုးတိုးသွားပါတယ်။ဒီလိုပါပဲ။ binary မှာလည်း1, 10, 11, 100 စသဖြင့်ဂဏန်းနေရာတွေတိုးပြီရေတွက်ပါတယ်။ ဒါက binaryနဲ့decimal ကြားတူညီတဲ့အချက်တွေကိုပြောတာပါ။ဒီ ၂ ခုကြား အပြန်အလှန် ဘယ်လိုပြောင်းမလဲဆိုတာမပြောခင်၊ကွန်ပြူတာတွက်ချက်မှုစနစ်အကြောင်းနည်းနည်းထပ်ပြောချင်ပါတယ်။ကွန်ပြူတာတွက်ချက်မှုစနစ်မှာအသေးဆုံး ယူနစ်က bitလို့ခေါ်ပါတယ်။ bit ဆိုတာ transistor တစ်ခုဖွင့်ထားလား ပိတ်ထားလားဆိုတာကိုပြတဲ့ အခြေအနေတစ်ခုကိုပြောတာပါပဲ။ ဖွင့်ထားရင် 1 လို့မှတ်သားပြီး ပိတ်ထားရင် 0လို့မှတ်သားပါတယ်။bit ထက်တစ်ဆင့်ကြီးတဲ့ ယူနစ်ကတော့byteဖြစ်ပါတယ်။ byteဆိုတာကbit8 ခုပေါင်းထားတဲ့ယူနစ်ပါ။ 8bits = 1 Byte ပါ။၁၂ လက်မ ၁ ပေ လို့ပြောသလိုမျိုးပါပဲ။ binary ဂဏန်းဂ နေရာစာ နေရာယူပါတယ်။ကွန်ပြူတာ တွက်ချက်မှတ်သားမှုအများစုကဒီ 1Byteကိုအခြေခံပါတယ်။ ဒီတော့ကွန်ပြူတာနဲ့ ပတ်သက်လို့binary နဲ့ decimal ကိုအပြန်အလှန်ပြောင်းဖို့တွက်မယ်ဆိုရင် ဒီ binaryဂဏန်းဂ နေရာစာဖြစ်တဲ့ 8bits ကိုပဲအခြေခံတွက်ကြရမှာပါ။ ဒီ binaryဂဏန်းဂ နေရာစာဟာ decimal မှာဆိုဘယ်လောက်ရှိမယ်ဆိုတာအခြေခံအချက်တစ်ချို့သိဖို့လိုပါတယ်။ဒီအခြေခံအချက်တွေဟာ ၁၀ တန်းသင်္ချာ ကျေခဲ့သူဆိုရင်တော့ပြောစရာလိုမယ်မထင်ပါဘူး။အခြေစနစ် (base)ဆိုတာဘာကိုပြောတာလဲဆိုတာနားလည်ထားဖို့လိုပါတယ်။ကျွန်တော်တို့ အခြေ ၁၀ စနစ်မှာ ဂဏန်း ဂနေရာစာဆိုရင် 99999999 ဆိုတာမျိုးဖြစ်ပါမယ်။ ဒါကို အသေးစိတ်ပြန်ခွဲရင်အောက်ပါအတိုင်း ဖြစ်ပါမယ်။

9x 10000000 + 9 x 1000000 + 9 x 100000 + 9 x 10000 + 9 x 1000 + 9 x100 + 9 x 10 + 9 x 1

9 x 107+ 9 x 106+ 9x 105+ 9x 104+ 9x 103+ 9x 102+ 9x 101+ 9x 10

ဒီသဘောအတိုင်းပါပဲbinaryမှာလည်းဂဏန်း ဂ နေရာစာ 11111111ဆိုရင်

1x 27 +1 x 26 +1 x 25 +1 x 24 +1 x 23 +1 x 22 +1 x 21 +1 x 20

1x 128 + 1 x 64 + 1 x 32 + 1 x 16 + 1 x 8 + 1 x 4 + 1 x 2 + 1 x 1 =255

ကျွန်တော်တို့အခြေ ၁၀ စနစ်မှာ ဂဏန်းနေရာတွေရဲ့တန်ဖိုးကို သိဖို့ အခြေ ၁၀ရဲ့ ဆပွားကိန်းတွေဖြစ်တဲ့10,100, 1000, 10000, 100000 တွေကိုအလွတ်ရ မှတ်သားမိထားဖို့လိုသလိုအခြေ ၂ စနစ်ရဲ့ ဆပွားကိန်းတွေဖြစ်တဲ့2,4, 8, 16, 32, 64, 128 ဆိုတာတွေကိုလည်းအလွတ်ရထားဖို့လိုပါတယ်။ဒီဂဏန်းတွေသက်သက်ကိုအလွတ်ရဖို့လိုသလို ဒီဂဏန်းတွေအချင်းချင်းရဲ့ ပေါင်းလဒ်၊နှုတ်လဒ်တွေကိုလည်းအလွတ်ရထားဖို့လိုပါတယ်။ဥပမာ 128+ 64 = 192 ဆိုတာမျိုးပါ။ဖြစ်နိုင်ရင် ဒီဂဏန်းတွေကိုအခြေတည်တဲ့ အလီတွေ ဂ အလီ ၁၆အလီ စသဖြင့်ရထားရင်ပိုတောင်ကောင်းပါတယ်။ဒီအချက်တွေသာ မှတ်မိထားရင် binary– decimal convertion ကိုcalculator မပါဘဲတွက်နိုင်ပါမယ်။

binary8 bits မှာအကြီးဆုံးက 11111111ဖြစ်ပြီးသူ့ရဲ့ decimal တန်ဖိုးကတော့အပေါ်မှာ ပြထားခဲ့သလို 255ဖြစ်ပါတယ်။ဒါကြောင့် အလွယ်တကူမှတ်နိုင်တာက8bits binary တွေကိုdecimalပြောင်းရင်0– 255 အတွင်းပဲဖြစ်နိုင်တယ်ဆိုတာပါ။ နောက်ထပ်အလွယ်တကူ မှတ်ထားလို့ရနိုင်တာတွေကို အောက်မှာဖော်ပြပေးထားပါတယ်။

binary      decimal

10                   2

100                 4

1000               8

10000            16

100000          32

1000000        64

10000000    128

ဒီအထိကတော့သိထားဖို့လိုတာတွေမှတ်သားထားသင့်တာတွေဖြစ်ပါတယ်။ပထမဆုံး decimalကနေ binaryပြောင်းနည်းကိုပြောပါမယ်။ 128,64, 32, 16, 8, 4, 2, 1တွေရဲ့အချင်းချင်းပေါင်းခြင်းရလဒ်တွေကို သိထားအလွတ်ရထားဖို့တော့လိုပါမယ်၊အလွတ်မရသေးရင်စိတ်တွက်တွက်တဲ့အခါ နည်းနည်းပိုကြာနိုင်ပါတယ်။အလွတ်မကျက်ဘဲ ခဏခဏ တွက်ပေးရင်မှတ်မိသွားမှာပါ။ ပြီးရင်တော့ဂဏန်း ၂ ခုကို ယှဉ်ပြီး ကြီးလားငယ်လားရွေးတတ်ရင် binaryconversion လုပ်လို့ရပါပြီ။
ဥပမာ။၁၃၇ ကို binaryပြောင်းမယ်ဆိုပါတော့။စစခြင်းတော့ စာရွက်တစ်ရွက်နဲ့ခဲတံတစ်ချောင်းနဲ့ စရင်ပိုမြန်ပါမယ်။ နောက်အကျင့်ရသွားရင်တော့စိတ်တွက်တွက်ပေါ့။ 8bits ဖြစ်တဲ့အတွက်သုည ဂ လုံကို အောက်ပါအတိုင်းရေးလိုက်ပါ။

128 64 32  16  8   4   2   1

0   0   0   0   0   0   0   0

တွက်တဲ့အခါတန်ဖိုးအကြီးဆုံးကနေစတွက်ရပါမယ်။ ဂဏန်းရေးတဲ့အခါလည်းဘယ်ဘက်က တန်ဖိုးအကြီးဆုံးဖြစ်ပြီးညာဘက်ရောက်ရင် တန်ဖိုးငယ်သွားပါတယ်။ဆပွားဂဏန်း အုပ်စုမှာအကြီးဆုံးဖြစ်တဲ့ ၁၂၈ နဲ့ပြောင်းချင်တဲ့ ၁၃၇ ကိုယှဉ်ကြည့်ပါ။ ပြောင်းချင်တဲ့ဂဏန်း က ကြီးနေရင် ၁၂၈ အောက်ကသုညကို ကြက်ခြေခတ်ပါ။(ဒီမှာတော့ Underline တားလိုက်ပါမယ်)ပြောင်းချင်တဲ့ဂဏန်းက ငယ်ရင် ဒီတိုင်းထားပါ။ခု ၁၃၇ ဖြစ်တဲ့အတွက်ကြီးပါတယ်ကြက်ခြေခတ်ပါ။ ပြီးရင်နောက်တစ်ဆင့်ထပ်ဆုံးက ၁၂၈ ကိုတည်ပြီးနောက်က ဂဏန်းနဲ့ ပေါင်းပါ၊နောက်က ၆၄ ဆိုတော့ ၁၂၈ +၆၄=၁၉၂ဒီမှာတော့ ၁၃၇ က ငယ်ပါတယ်။ဒါကြောင့် ဒီတိုင်းထားပါ။နောက်တစ်ဆင့်သွားပါ ၁၂၈ကိုတည် ၃၂ နဲ့ပေါင်း ၁၂၈ +၃၂=၁၆၀ဒီမှာလည်း ၁၃၇ ကငယ်ပါတယ်ဒီတိုင်းထားပါ။ ဆက်သွား ၁၂၈+၁၆=၁၄၄ဒီမှာလည်း ၁၃၇ ကငယ်ပါတယ်။ဒီတိုင်းဆက်ထားပါ။ ဆက်သွား၁၂၈ +ဂ=၁၃၆ဒီမှာ ကြီးပါတယ်။ ဒါကြောင့်ကြက်ခြေခတ်ပါ။ ဆက်သွားဒီနေရာမှာတော့ဒီတိုင်းဆက်သွားလို့မရတော့ပါဘူး။၁၂၈ +ဂ=၁၃၆က ၁၃၇ ထက်ငယ်တဲ့အတွက် ၁၂၈ကို မတည်တော့ပဲ ၁၃၆ ကိုတည်နောက်ကဂဏန်းနဲ့ဆက်ပေါင်းရပါမယ်။၁၃၆ +၄=၁၄၀က ၁၃၇ ထက်ကြီးတဲ့အတွက်ဆက်သွားပါမယ်။ ၁၃၆ +၂=၁၃၈ဒါလည်း ၁၃၇ ထက်ကြီးတဲ့အတွက်ဆက်သွားပါမယ်။ ၁၃၆ +၁=၁၃၇ဒီမှာတော့ ၁၃၇ နဲ့ ညီသွားပါပြီဒါကြောင့် ဒါကိုလည်းကြက်ခြေခတ်ပါမယ်။ စောစောကကြက်ခြေခတ်ထားတဲ့ (Underline တားထားတဲ့)သုညတွေကို၁ အဖြစ်ပြောင်းရေးလိုက်မယ်ဆိုရင်တော့binaryပြောင်းပြီးသားဖြစ်သွားပါပြီ။ဒါကြောင့်

128 64 32 16 8 4 2 1

1   0  0   0  1 0 0 1

137ရဲ့binaryvalue ဟာ10001001 ဖြစ်ပါတယ်။ဒါကတော့ decimalကနေ binaryကိုပြောင်းနည်းပါ။
binary ကနေdecimal ပြောင်းနည်းကပိုလွယ်ပါတယ်။ဒါလေး ကျက်ထားပါ။
7,128

6,64

5,32

4,16

3,8

2,4

1,2

0,1

11001011 ကိုdecimalပြောင်းတော့မယ်ဆိုပါတော့ဒီလိုလေး ပြင်ရေးလိုက်ပါ။

7 6 5 4 3 2 1 0

1 1 0 0 1 0 1 1

အပေါ်ကကျက်ထားတဲ့ ဂဏန်းတွဲတွေထဲကကော်မာရှေ့က ဂဏန်းနဲ့ ခုရေးထားတဲ့ထဲက အောက်မှာ 1ရှိတဲ့ဂဏန်းနဲ့တူတာကိုရှာပြီး နောက်ကဂဏန်းတွေကိုပေါင်းလိုက်ရင် decimalတန်ဖိုးရပါတယ်။

7အောက်မှာ1 ရှိတယ်ဆိုတော့ ကျက်ထားတဲ့ထဲမှာက7, 128 ဒီတော့128 ကိုယူ။ ဆက်သွား 6အောက်မှာ1 ရှိ၊6, 64 ဆိုတော့ 64 ကိုပထမ 128 နဲ့ပေါင်း192 ရ၊ဆက်သွား 3အောက်မှာ1 ရှိကျက်ထားတာက 3,8 ဆိုတော့နောက်က 8 ကို192 နဲ့ဆက်ပေါင်း 200ရ၊ 1အောက်မှာ1 ရှိကျက်ထားတာက 1,2 ဆိုတော့2 ကိုယူ200 နဲ့ဆက်ပေါင်း 202ရ။ 0အောက်မှာ1 ရှိကျက်ထားတာက 0,1 ဆိုတော့ကော်မာ နောက်က 1 ကိုယူ202 နဲ့ဆက်ပေါင်း 203

ဒါကြောင့် 11001011 ရဲ့decimal တန်ဖိုးဟာ203 ဖြစ်ပါတယ်။ဒီနည်းတွေသုံးရင် binary conversion ဆိုတာဘာမှ မခက်တော့ပါဘူး။

(သူများတွေနားလည်မလည်တော့ မသိဘူးကြိုးစားပမ်းစားရေးလိုက်တာပဲကျွန်တော့်အတွက်တော့ဒီနည်းတွေဟာအလွယ်ဆုံးပဲ။ဒီနည်းတွေကို အခြေခံတဲ့ subnet calculation ကိုလည်းရေးပါဦးမယ်)

Nothing is impossible for the willing mind