วันจันทร์ที่ 16 กรกฎาคม พ.ศ. 2555

คำนวณ IP Address และ subnet mask

IP Address หรือ Internet Protocol Address มีความสำคัญอย่างไร และเกี่ยวข้องอะไรกับ
เราบ้าง ปัจจุบันคงไม่ต้องกล่าวถึงแล้ว IP Address เป็นหมายเลขที่ใช้กำหนดให้กับเครื่องคอมพิวเตอร์ หรือ
อุปกรณ์ Network ต่างๆ เช่น Router, Switch , Firewall , IP Camera , IP Phone , Access
point , เป็นต้น และอีกไม่นานอุปกรณ์ไฟฟ้าหรืออุปกรณ์สื่อสารทุกประเภทที่จะออกวางจำหน่ายจะมีIP
Address ติดมาด้วยจากโรงงานเลยทีเดียว IP Address ที่ใช้ในปัจจุบันนั้นจะเป็นชนิดที่เรียกว่า IPv4
(IP version 4) ซึ่งไม่เพียงพอต่อการใช้งาน จึงมีการพัฒนาเป็น IPv6 (IP version 6) เพื่อรองรับ
อุปกรณ์และเทคโนโลยีใหม่ๆที่ต้องใช้IP Address ในการติดต่อสื่อสาร และในเมืองไทยเองก็มีการใช้IPv6
ในหลายหน่วยงานแล้ว หน่วยงานที่จัดสรร IP Address ให้ในแถบ Asia Pacific คือAPNIC ผู้
ให้บริการ Internet หรือ ISP จะขอ IP จาก APNIC แล้วนำมาแจกจ่ายให้แก่ลูกค้าของ ISP นั้นๆอีกต่อไป
สำหรับผู้ที่จะสอบใบ Certificate ค่ายต่างๆ เช่น CCNA , CCNP , LPI , Security + , CWNA
เป็นต้น ล้วนแล้วแต่จะต้องมีความรเู้ กี่ยวกับ IP Address ทั้งสิ้น โดยเฉพาะ IPv4 จะต้องคำนวณได้อย่าง
แม่นยำและรวดเร็ว

IPv4
IPv4 ประกอบด้วยเลขฐานสอง 32 bits (4 bytes ,( 8bits=1byte)) แบ่งเป็น 4 กลุ่ม กลุ่มละ 8 bits แต่
ละกลุ่มนั้นจะคั่นด้วย . ( Dot )
กรณีตัวเลขน้อยสุดหรือเป็น เลข 0 ทั้งหมด  00000000 . 00000000 . 00000000 . 00000000
กรณีตัวเลขมากสุดหรือเป็น เลข 1 ทั้งหมด  11111111 . 11111111 . 11111111 . 11111111
เมื่อแปลงเป็นเลขฐาน 10 จะได้
กรณีตัวเลขน้อยสุดหรือเป็น เลข 0 ทั้งหมด  0.0.0.0
กรณีตัวเลขมากสุดหรือเป็น เลข 1 ทั้งหมด  255.255.255.255
ดังนั้น IPv4 จะมีตัวเลขที่เป็นไปได้ ตั้งแต่ 0.0.0.0 – 255.255.255.255

ก่อนการคำนวณเรื่อง IP เพื่อความรวดเร็ว ให้เขียนตามด้านล่างนี้
IPv4 จะมีตัวเลขที่เป็นไปได้ทั้งหมดคือตั้งแต่ 0.0.0.0 - 255.255.555.555
สามารถแบ่ง IPv4 ได้เป็น 5 แบบ หรือ 5 Class ตามด้านล่าง โดยวิธีการแบ่งจะอ้างอิงจาก byte ที่1 ดังนี้
class A  byte ที่1 ตัวเลขบิตแรก จะเป็น 0
class B  byte ที่1 ตัวเลขบิตแรกจะเป็น 1 บิตที่2 จะเป็น 0
class C  byte ที่1 ตัวเลข 2 บิตแรก จะเป็น 1 บิตที่3 จะเป็น 0
class D  byte ที่1ตัวเลข 3 บิตแรก จะเป็น 1 บิตที่4 จะเป็น 0
class E  byte ที่1 ตัวเลข 4 บิตแรกจะเป็น 1
ดังนั้นจะได้ผลตามรูปด้านล่าง
จะได้IP ในแต่ละ Class ดังนี้
Class A จะเริ่มต้นตั้งแต่ 0.0.0.0 ถึง 127.255.255.255
Class B จะเริ่มต้นตั้งแต่ 128.0.0.0 ถึง 191.255.255.255
Class C จะเริ่มต้นตั้งแต่ 192.0.0.0 ถึง 223.255.255.255
Class D จะเริ่มต้นตั้งแต่ 224.0.0.0 ถึง 239.255.255.255
Class E จะเริ่มต้นตั้งแต่ 240.0.0.0 ถึง 255.255.255.255
IP ที่สามารถนำไป Set ให้อุปกรณ์หรือ Host ได้จะมีอยู่3 Class คือ Class A, B และ C ส่วน IP Class
D จะสงวนไว้ใช้สำหรับงาน multicast applications และ IP Class E จะสงวนไว้สำหรับงานวิจัย หรือ
ไว้ใช้ในอนาคต
IPv4 ยังแบ่งเป็น 2 ประเภท คือ Public IP ( IP จริง ) และ Private IP ( IP ปลอม )
Public IP ( IP จริง ) คือ IP ที่สามารถ set ให้อุปกรณ์network เช่น Server หรือ Router แล้ว
สามารถติดต่อสื่อสารกับ Public IP ( IP จริง ) ด้วยกัน หรือออกสู่Network Internet ได้ทันที
Private IP ( IP ปลอม ) สามารถนำมา ใช้set ให้กับ PC หรืออุปกรณ์ในออฟฟิตได้แต่ไม่สามารถออกสู่
Public IP หรือออก Internet ได้ ต้องมีอุปกรณ์ Gateway เช่น Router ,Server หรือModem
DSL เปิด Service NAT ( Network Address Translation ) ไว้ จึงจะสามารถออกสู่Internet ได้
Private IP จะมีเฉพาะ Class A,B และ C ดังนี้
Class A : 10.x.x.x ( 10.0.0.0 - 10.255.255.255 )
Class B : 172.16.x.x - 172.31.x.x ( 172.16.0.0 - 172.31.255.255 )
Class C : 192.168.x.x ( 192.168.0.0 - 192.168.255.255 )
การคำนวณ IPv4
เมื่อเราได้IP Address มา 1 ชุด สิ่งที่จะต้องบอกได้จาก IP Address ที่ได้มาคือ
Subnet Mask คือ IP Address อะไร
Network IP คือ IP Address อะไร
Broadcast IP คือ IP Address อะไร
Range host IP ที่สามารถนำมาใช้งานได้ มีIP อะไรบ้าง
จำนวน Subnets , จำนวน hosts / Subnet
Subnet Mask ทำหน้าที่แบ่ง network ออกเป็นส่วนย่อยๆ ลักษณะคล้ายกับ IP Address คือ
ประกอบด้วยตัวเลข 4 ตัวคั่นด้วยจุด เช่น 255.255.255.0 วิธีการที่จะบอกว่า computer แต่ละเครื่องจะอยู่
ใน network วงเดียวกัน (หรืออยู่ใน subnet เดียวกัน) หรือไม่นั้นบอกได้ด้วยค่า Subnet Mask

วิธีการหา Subnet Mask
/30 หมายถึง mask 30 bits แรก
/27 หมายถึง mask 27 bits แรก
/20 หมายถึง mask 20 bits แรก
ให้ทำการแปลง mask bit ที่กำหนดให้ เป็นค่า Subnet Mask
วิธีการคือ bits ที่อยู่หน้าตัวmask ให้แทนด้วยเลข 1 bits ที่อยู่หลังให้แทนด้วยเลข 0
Ex /30
/30  11111111 . 11111111 . 11111111 . 111111/00
จะได้ค่า Subnet Mask
/30  255.255.255.252
11111111 . 11111111 . 11111111 . 111111/00
ให้ใช้ตารางช่วยจะทำให้เร็วขึ้น โดย ถ้าเป็น 1 จำนวน 8 ตัวจะได้255
ถ้าเป็น 1 จำนวน 6 ตัวจะคือ 252 หรือจะใช้วิธีนับจาก 24 bits แรกซึ่งเป็น 1 ทั้งหมดอยู่แล้ว นับต่อมาจะได้
bits ที่30 เป็น 252 พอดี
Ex /27
/27  11111111 . 11111111 . 11111111 . 111/00000
จะได้ค่า Subnet Mask
/27  255.255.255.224

Ex /20
/20  11111111 . 11111111 . 1111/0000 . 00000000
จะได้ค่า Subnet Mask
/20  255.255.240.0
ตัวอย่าง Subnet Mask ต่างๆ มีดังนี้
Mask ที่เป็นค่า default ของ IP Class ต่างๆมีดังนี้
Class A = Mask 8 bits = 255 . 0 . 0 . 0
Class B = Mask 16 bits = 255 . 255 . 0 . 0
Class C = Mask 24 bits = 255 . 255 . 255 . 0
Subnet mask ทั่วไป
Mask 10 = 255 . 192 . 0 . 0 Mask 21 = 255 . 255 . 248 . 0
Mask 11 = 255 . 224 . 0 . 0 Mask 22 = 255 . 255 . 252 . 0
Mask 12 = 255 . 240 . 0 . 0 Mask 23 = 255 . 255 . 254 . 0
Mask 13 = 255 . 248 . 0 . 0 Mask 25 = 255 . 255 . 255 . 128
Mask 14 = 255 . 252 . 0 . 0 Mask 26 = 255 . 255 . 255 . 192
Mask 15 = 255 . 254 . 0 . 0 Mask 27 = 255 . 255 . 255 . 224
Mask 17 = 255 . 255 . 128 . 0 Mask 28 = 255 . 255 . 255 . 240
Mask 18 = 255 . 255 . 192 . 0 Mask 29 = 255 . 255 . 255 . 248
Mask 19 = 255 . 255 . 224 . 0 Mask 30 = 255 . 255 . 255 . 252
Mask 20 = 255 . 255 . 240 . 0 Mask 31 = 255 . 255 . 255 . 254

หมายเหตุ เพื่อให้การแปลงตัวเลขจากเลขฐานสอง เป็นฐานสิบเร็วขึ้นให้ดูจากด้านล่าง เช่นถ้าเป็น เลข 1
ทั้งหมดจะได้เลข ฐานสิบคือ 255 ถ้าเป็นเลข 1 จำนวน 4 ตัวจะคือ 240 ถ้าเป็นเลข 0 ทั้งหมด จะได้เลข 0


หลังจากได้Subnet Mask แล้ว ขั้นตอนต่อไปคือการหา Network IP และ Broadcast IP
Network IP คือ IP ตัวแรกของ Subnet ปกติจะเอาไว้ประกาศเรื่องของ Routing จะไม่สามารถนำมา
Set ให้แก่อุปกรณ์หรือเครื่อง PC ได้

ให้แก่อุปกรณ์หรือเครื่อง PC ได้เช่นกัน
Ex.1 192.168.22.50/30
จากโจทย์ /30 เมื่อแปลงเป็น Subnet Mask จะได้255.255.255.252
ให้ดูจากที่เขียนไว้ด้านบนนะครับ ถ้าเป็น 1 หมดทั้ง 8 ตัวจะได้255 ( แปลงจากฐานสองเป็นฐานสิบ )
เป็น 1 ทั้งหมด 6 ตัวจะได้252 ดังนั้นจึงได้subnet mask เป็น 255.255.255.252
ต่อไป หาว่า จำนวน IP ต่อ Subnet มีจำนวนเท่าไหร่ จากค่า Subnet Mask ที่ให้มา
ดูที่2 bit ที่เหลือ ที่เป็นอะไรก็ได้นั้น ตัวเลขที่เป็นไปได้หมดคือ 00 , 01 , 10 , 11 มี4 ตัว
และเมื่อนำ00 , 01 , 10 , 11 แปลงเป็นฐานสิบจะได้
00 แปลงเป็นฐานสิบจะได้ 0
01 แปลงเป็นฐานสิบจะได้ 1
10 แปลงเป็นฐานสิบจะได้ 2
11 แปลงเป็นฐานสิบจะได้ 3
สรุปคือ จำนวน IP ต่อ Subnet เมื่อ Subnet Mask คือ 255.255.255.252 คือ 4 ตัว นั่นเอง
หรือใช้วิธีลัดดูจากที่เขียนไว้ ตัวเลขที่อยู่บน 252 คือ 4 ตามด้านล่างครับ

ดังนั้นถ้า /30 จำนวน IP ในแต่ละ subnet ที่จะเป็นไปได้ดูเฉพาะกลุ่มสุดท้าย
คือ 0-3 , 4-7 , 8-11 , _ _ _ , 252-255 หรือเขียนในรูป IPv4 จะได้
192.168.22.0 - 192.168.22.3
192.168.22.4 - 192.168.22.7
192.168.22.8 - 192.168.22.11
-----------
192.168.22.48 - 192.168.22.51
---------
192.168.22.252 - 192.168.22.255

หมายเหตุ 3 กลุ่มแรกเหมือนเดิมเนื่องจากผลของการ and ระหว่าง bit เนื่องจาก 3 กลุ่มแรกเป็น bit 1
ทั้งหมดทำการ add กับเลขใดก็จะได้ตัวเดิม 3 กลุ่มแรกจึงได้เลขฐาน 10 ตัวเดิม
โดย IP Address ตัวแรกของแต่ละ subnet จะเรียกว่า Network IP และ IP Address ตัวสุดท้ายของแต่
ละ subnet จะเรียกว่า Broadcast IP ดังนั้น
จากโจทย์192.168.22.50/30
1. Network IP คือ IP Address อะไร
ตอบ 192.168.22.48
2. Broadcast IP คือ IP Address อะไร
ตอบ 192.168.22.51
3. Range hosts IP ที่สามารถนำมาใช้งานได้ หรือ จำนวน hosts Per Subnet
ตอบ 192.168.22.49 - 192.168.22.50 นำIP มา set เป็น host ได้2 IP
วิธีการหา Network IP นอกเหนือจากการเขียนตามด้านบนแล้วยังหาได้โดย
วิธีการปกติทำได้โดยการนำเอา Subnet Mask มา AND กับ IP Address ที่ให้มา ผลที่ได้จะเป็น
Network IP วิธีนี้หนังสือหลายเล่มมีอธิบายแล้ว
วิธีการหาร นำIP จากโจทย์ที่ให้มา ตั้งหารด้วยจำนวน IP ที่มีได้ใน Subnet เช่น
192.168.22.50/30 ให้นำเอาตัวเลข 50 หารด้วย 4 ดังด้านล่าง
เมื่อได้Netwok IP แล้ว ก็จะได้คำตอบเช่นเดียวกับด้านบน เนื่องจากเรารู้อยู่แล้วว่า /30 ใน 1 subnet จะมี
จำนวน IP ทั้งหมด 4 ตัวจากตาราง ดังที่ได้กล่าวมาแล้ว

Ex.2 192 .168.5.33/27 which IP address should be assigned to the PC host ?
A.192.168.5.5
B.192.168.5.32
C. 192.168.5.40
D. 192.168.5.63
E. 192.168.5.75
จากโจทย์/27 จะหมายถึง
11111111 . 11111111 . 11111111 . 111/XXXX X = mask 27 bit แรก ต้องเป็นเลข 1 ส่วน 5
bit หลัง เป็นอะไรก็ได้
/27 เมื่อแปลงเป็นเลขฐานสิบจะได้255 . 255 . 255 . 224

หรือจะคิดแบบลัด ตามตาราง ดูบรรทัดที่4 จะหมายถึงผลบวกของ bit ใน 8 bit สุดท้ายครับ 111 ก็คือ
128+64+32 = 224
เมื่อ ได้Subnet Mask แล้ว เราก็จะรู้ว่ามีจำนวน IP ต่อ Subnet เท่ากับ 32 หรือจะดูจากที่เขียนไว้ด้านบน
ของ 224 ก็คือ 32 นั่นเอง
จากโจทย์192 .168.5.33/27 จะใช้วิธีไหนก็ได้หาตัว Network มาให้ได้ก่อน
192.168.5.33/27 หมายถึง 192.168.5.32 - 192.168.5.63
โดย IP ตัวแรกจะเป็น Network IP ( 192.168.5.32 ) และ IP ตัวสุดท้ายจะเป็น Broadcast IP (
192.168.5.63 ) ซึ่งไม่สามารถใช้set ให้แก่PC ได้ ดังนั้นจะเหลือ IP ที่สามารถ Set ให้แก่PC ได้คือ
192.168.5.33 - 192.168.5.62
คำตอบจึงเป็นข้อ C. 192.168.5.40
Ex.3 IP 10.10.10.0/13 เป็น IP ที่นำไป set ให้host ได้หรือไม่
IP ที่สามารถนำไป set ให้host ได้หรือนำไปใช้งานได้ จะต้องไม่ตรงกับ Network IP หรือ
Broadcast IP
วิธีการคิดก่อนอื่นเราต้องทำการแปลง /13 หรือmask 13 bit ให้เป็น subnet mask

11111111 . 11111/XXX . XXXXXXXX . XXXXXXXX = mask 13 bit
แรก ต้องเป็นเลข 1 ส่วน bit ที่เหลือเป็นอะไรก็ได้
/13 เมื่อแปลงเป็นเลขฐานสิบจะได้ 255 . 248 . 0 . 0
จากโจทย์ เขียนใหม่ได้ดังนี้IP 10.10.10.0 subnet mask 255.248.0.0
ขั้น ต่อไปเราจะมาหาช่วง IP จาก subnet mask ที่หามาได้255.248.0.0
หลักที่1 จะมีค่าคงที่คือเลข 10 หลักที่3 และหลักที่4 นั้น ตัวเลขที่เป็นไปได้คือ 0 - 255
ส่วนหลักที่2 นั้น เราต้องมาคำนวณ โดยเว้นไว้ก่อน เขียนช่วง IP จะได้ดังนี้คือ
10 . X . 0 . 0 - 10 . X . 255 . 255

ถ้า เราพิจารณาเฉพาะ 248 (ดูเฉพาะตัวเลขกลุ่มที่2 ) ถ้าดูจากรูปด้านบน บรรทัดที่3 ซึ่งจะหมายถึง IP ที่มี
ได้ทั้งหมด ก็คือ 8 ตัว คือ 0-7 , 8-15 , 16- 23 , _ _ _ , 248-255 หรือเขียนเต็มๆจะได้
10 . 0 . 0 . 0 - 10 . 7 . 255 . 255
10 . 8 . 0 . 0 - 10 . 15 . 255 . 255 ------------> จากโจทย์10.10.10.0 จะอยู่ในช่วงนี้
10 . 16 . 0 . 0 - 10 . 23 . 255 . 255
------------
10 . 248 . 0 . 0 - 10 . 255 . 255 . 255
จากโจทย  10.10.10.0/13 ก็จะคือ IP ในช่วง 10 .8 . 0 . 0 - 10 . 15 . 255 . 255
1. Network IP คือ IP Address อะไร
ตอบ 10 . 8 . 0 . 0
2. Broadcast IP คือ IP Address อะไร
ตอบ 10 . 15 . 255 . 255
3. Range host IP ที่สามารถนำมาใช้งานได้
ตอบ 10 . 8 . 0 . 1 - 10 . 15 . 255 . 254 ดังนั้น IP 10.10.10.0/13 จึงนำมาใช้งานได้ถือว่า
เป็นHost ตัวนึง

การหาจำนวน Subnet และ จำนวน hosts / Subnet
การหาจำนวน hosts ต่อ Subnet จากค่า Subnet Mask ที่ให้มา จะใช้ สูตร
2n - 2
โดย n คือจำนวน bits ที่อยู่หลังตัวMask ส่วนเลข 2 ที่ลบออกไปคือ Network IP และ Broadcast IP

Ex.1 /30 11111111 . 11111111 . 11111111 . 111111/00
หรือ 255.255.255.252 จะได้
จำนวน hosts/Subnet = 2n - 2 = 22 - 2 = 4 - 2 = 2

Ex.2 /20 11111111 . 11111111 . 1111/0000 . 00000000
หรือ 255.255.240.0
จำนวน hosts/Subnet = 2n - 2 = 212- 2 = 4096 - 2 = 4094

การหาจำนวน Subnet จากค่า Subnet Mask ที่ให้มา ปัจจุบันใช้สูตร
2n ไม่ต้องลบ 2 เนื่องจากว่า ปัจจุบันทุก Subnet สามารถใช้ได้ทั้งหมด และใน router cisco เองมีการ
เพิ่ม IP Subnet Zero ไว้อยู่แล้ว
โดย n คือจำนวน bits ที่อยู่หน้าตัวMask ถึงตำแน่ง . (dot) ที่ใกล้ที่สุดหรือตำแหน่งที่ระบุไว้

Ex.3 /30 11111111 . 11111111 . 11111111 . 111111/00
หรือ 255.255.255.252 จะได้
จำนวน Subnet = 2n = 26 = 64

Ex.4 /20 11111111 . 11111111 . 1111/0000 . 00000000
หรือ 255.255.240.0
จำนวน Subnet = 2n = 24 = 16

Ex.5 จากเดิม /20 แบ่งเป็น /27 จะได้กี่Subnet อันนี้ระบุMask ต้นทางมาจะได้
11111111 . 11111111 . 1111/1111 . 111/00000
จำนวน Subnet = 2n = 27 = 128

คำศัพท์ที่ควรรู้
Classful และClassless
Classful จะสนใจ Class ของ IP เป็นหลักจะไม่สนใจตัวMask ดูตัวเลข IP ว่าอยู่Class ไหน เช่น อยู่
Class A ,B หรือ C ตามนี้
Class A ( 0.0.0.0 - 127.255.255.255 )
Class B ( 128.0.0.0 - 191.255.255.255 )
Class C (192.0.0.0 - 223.255.255.255 )
ในการใช้IP Address ช่วงแรกๆจะเป็นแบบ Classful ซึ่ง Classful จะ มีค่า default subnet mask
ดังนี้
A /8 255.0.0.0
B /16 255.255.0.0
C /24 255.255.255.0
ดังนั้นถ้าเราใช้หลักการของ Classful ก็ไม่สามารถแบ่ง Subnet ได้แตกต่างจากค่า Default Subnet Mask
ตัวอย่าง routing protocols : ที่เป็นแบบClassful
• RIP Version 1 (RIPv1)
• IGRP
ส่วน Classless จะตรงข้ามกับ Classful คือจะไม่สนใจ Class ของ IP แต่จะสนใจตัวMask เป็น
หลัก อย่างเช่นที่คำนวณตามตัวอย่างที่ผ่านมา โดยจะเป็นไปตามหลักการของ Classless Inter-
Domain Routing (CIDR) ดังนั้น ตัวMask จะเป็นอะไรก็ได้ไม่สนใจว่า IP อยู่Class ไหน
ตัวอย่าง routing protocols : ที่เป็นแบบClassless ได้แก่
• RIP Version 2 (RIPv2)
• EIGRP
• OSPF
• IS-IS
Variable Length Subnet Masks ( VLSM )
จากหลักการ เครือข่ายที่เราใช้งานกันอยู่ ไม่จำเป็นจะต้องมีขนาดเท่ากันเสมอไป (ไม่จำเป็นต้องมี ตัวMask
เท่ากัน ) เช่น การเชื่อมต่อแบบจุดต่อจุด (Point-to-Point) ต้องการแค่2 IP ก็เพียงพอ ดังนั้นก็ควร
Mask 30 bit ( /30 ) หรือใช้subnet mask เป็น 255.255.255.252 หรือการเชื่อต่อใน
LAN ที่มีเครื่องเพียง 20 เครื่อง ก็ควรmask 27 bit ( /27 ) หรือ ใช้subnet mask เป็น
255.255.255.224 เป็นต้น ดังตัวอย่างในรูปด้านล่าง ใช้หลักการของVLSM จะเห็นว่าแต่ละ
subnet จะมีตัวmask ต่างกันและmask bit ตามความเหมาะสมทำให้ประหยัด IP หรือใช้IP ได้
อย่างมีประสิทธิภาพ


Credit: http://forums.dp-server.com/topics/%7Bdp-server%7D-67-1-1.html