Subnet mask เป็น Parameter อีกตัวหนึ่งที่ต้องระบุควบคู่กับหมายเลข IP Address หน้าทีของ Subnet mask ก้คืิอ การช่วยในการแยกแยะว่าส่วนใดภายในหมายเลข IP Address เป็น Network Address และส่วนใดเป็นหมายเลข Host Address ดังนั้น ท่านจะสังเกตได้ว่า เมื่อเราระบุ IP Address ให้กับเครื่องคอมพิวเตอร์์ เราจำเป็นต้องระบุ Subnet mask ลงไปด้วยทุกครั้ง
บทความการคำนวณ หา Subnet นี้ ไม่ได้ลงรายละเอียด ถึงขนาด Bit น่ะครับ เพราะตัวผมเองไม่เกงเรื่องพวกนี้ ผมคิดว่าถ้า หาตาม internet หรือ หนังสือจะทำให้เข้าใจง่ายกว่าที่อ่านจากบทความนี้ ผมจะเน้นเรื่องของการ คำนวณยังไงให้ไว ให้ถูกต้องแม่นยำเพื่อใช้สำหรับ สอบ หรือ ประโยชน์อื่นๆ น่ะครับ
• Class A จะมี Subnet mask เป็น 255.0.0.0 หรือเลขฐานสองดัง้นี้
11111111.00000000.00000000.00000000
(รวมเลข 1 ให้หมด ก็จะได้เท่ากับ 255)
•
Class B จะมี Subnet mask เป็น 255.255.0.0 หรือเลขฐานสองดัง้นี้11111111.11111111.00000000.00000000
•
Class C จะมี Subnet mask เป็น 255.255.255.0 หรือเลขฐานสองดัง้นี้11111111.11111111.11111111.00000000
“ตำแหน่ง ของ Bit ไหน ในหมายเลข IP Address ที่ถูกกันไว้ให้เป็น Network Address หรือ Subnet Address จะมีค่าของ Bit ตำแหน่งที่ตรงกันใน Subnet mask เป็น 1 เสมอ”
หลักการพื้นฐานของการทำ Subnet
หลัก การทำงานมีอยู่ว่า เราจะต้องยืม bitในตำแหน่งที่แต่เดิมเคยเป็น Host Address มาใช้เป็น Sub-network Address ด้วยการแก้ไขค่า Subnet mask ให้เป็นค่าใหม่ที่เหมาะสม
สูตรการคำนวณ 2 ยกกำลัง n – 2 = ??
ถ้ายืมมาจำนวน x bit แล้ว ถ้านำเอา 2 มายกกำลังด้วย x แล้ว หักลบออกอีก 2 แล้วได้ค่ามากกว่า หรือ เท่ากับจำนวน
Subnet address ที่เราต้องการ
ขั้นต่อมา ก้ต้องนำ bit ที่เหลือจากการยืมมา เข้าสูตรเดิมคือ 2 ยกกำลัง n -2 = ??
4. นำ subnet mask ที่ได้มาคำนวณร่วมกับหมายเลข Network Address เดิมเพื่อหา Subnet Address ทั้งหมดที่เป็นไปได้ เพื่อที่จะนำไปกำหนดให้กับ Network แต่ล่ะ Segment
Network Address 192.168.100.0
Subnetmask 255.255.255.192 (/26)
• ได้ทั้งหมดกี่ subnet
255.255.255.11000000
ดั้งนั้น จำนวน subnet ที่ได้คือ 2 ยกกำลัง 2 – 2 = 2 subnet
• ได้ทั้งหมดกี่ Host
Bit ที่เหลือจากการยืมจากข้างบน คือ 6
ก็นำมาเข้าตามสูตรเหมือนกัน 2 ยกกำลัง 6 – 2 = 62 host << ที่จะนำไปใช้กับเครื่อง ใ 1 วง network
• หมายเลข Subnet ที่ถูกต้องเป็นหมายเลขอะไรบ้าง ??
Subnet สอง 192.168.100. 1 0 000000 192.168.100.128
• หมายเลข Host ในแต่ล่ะ subnet เป็นอย่างไร ?
Subnet สุดท้าย 192.168.100.128
ที่ใช้ได้ 192.168.100.129 – 192.168.100.190
___________________________________
Network Address 192.168.100.0
Subnetmask 255.255.255.224 (/27)
• ได้ทั้งหมดกี่ subnet
255.255.255.1 1 1 00000
ดั้งนั้น จำนวน subnet ที่ได้คือ 2 ยกกำลัง 3 – 2 = 6 subnet
• ได้ทั้งหมดกี่ Host
Bit ที่เหลือจากการยืมจากข้างบน คือ 5
ก็นำมาเข้าตามสูตรเหมือนกัน 2 ยกกำลัง 5 – 2 = 30 host << ที่จะนำไปใช้กับเครื่อง ใ 1 วง network
• หมายเลข Subnet ที่ถูกต้องเป็นหมายเลขอะไรบ้าง ??
Subnet Zero คือ 192.168.100.0 – 192.168.100.31 << ไม่ใช่น่ะครับ วงนี้
Subnet แรก คือ 192.168.100.32 - 192.168.100.63
Subnet สาม คือ 192.168.100.96 - 192.168.100.127
Subnet ห้า คือ 192.168.100.160 - 192.168.100.191
Subnet หก คือ 192.168.100.192 - 192.168.100.223
Broadcast คือ 192.168.100.224 - 192.168.100.255 << อันนี้ก็ไม่ใช่น่ะครับ
จะ เห็นได้ว่า มีแค่เพียง 6 subnet เท่านั้น ที่ใช้ได้ แต่ในทางปฏิบัติ เราสามารถใช้ คำสั่ง subnet zero ได้น่ะครับให้สามารถใช้งานได้ แต่ทีผมแนะนำให้ ลบออกสอง คือในทางทฤษฏี น่ะครับ แต่ก็ควรทำน่ะ
มาถึงจุดนี้ก้ต้องทำได้กัน้บางแล้วน่ะครับ
แต่มันยังไม่จบหรอกน่ะครับ ยังมีความซับซ้อนมากขึ้นไปอีกVariable Length Subnet Masks (VLSM)
เป็นการ แบ่ง Subnet ที่ย่อยลงมาอีก จากการทำ Subnetting เนื่องจากเหตุผลที่ว่า การแบ่ง Subnet ในเมื่อสักครู่นั้น ยังเหลือ IP ทิ้งอีกเป็นจำนวนที่มากเกินไป ดังนั้น จึงมีการ แบ่งย่อยลงมาอีกขั้นหนึ่ง ซึ่งสามารดูตัวอย่างได้ดังนี้
Mechanism of Subnetting
Mechanism of VLSM
ตัวอย่างในการทำ VLSM
IP 172.16.0.0/20
1. 2 Subnets for 500 Hosts
2. 3 Subnets for 200 Hosts
3. 2 Subnets for 100 Hosts
4. 4 Subnets for 50 Hosts
5. 4 Subnets for 2 Hosts
How’s Work
เรารู้ว่า IP Address นี้ โดนทำ Subnetting มาก่อนแล้วครั้งหนึ่ง เนื่องจาก ค่า CIDR (Classless InterDomain Routing) ของ IP 172.16.0.0 นั้น ปกติควรจะเป็น /16 แต่ มันถูกทำเป็น /20 นั่นคือ มีการทำ Subnetting มาแล้วครั้งหนึ่ง
การทำ VLSM จะต้องเริ่มแบ่ง Subnetting ที่ Network วงที่ใหญ่ที่สุด นั่นหมายถึง เราต้องแบ่งจากวงที่มี 500 Hosts ไล่ลงมาเป็น 200, 100, 50 และ 2 Hosts ตามลำดับ
500 Hosts นั้น เราสามารถหา จำนวนบิทที่จะ Assign ได้ จาก การนำ 2 ไปยกกำลัง x เพื่อได้มากกว่า 500 ซึ่งคำตอบก็คือ 9 เนื่องจาก 2 ยกกำลัง 9 จะได้ 512 Hosts และลบออก 2 = 510 Hosts
ขั้นแรก เราต้องนำ IP Address นี้ มากระจาย Binary ก่อน ซึ่งจะได้ดังนี้
172.16.00000000.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /20 นับจากด้านหน้า จะได้ดังนี้
172.16.0000|0000.00000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 9 นับจากด้านหลัง จะได้ดังนี้
172.16.0000|XXX|0.00000000
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
- 172.16.0000|000|0.00000000 – 172.16.0000|000|1.11111111 = 172.16.0.0-172.16.1.255
- 172.16.0000|001|0.00000000 – 172.16.0000|001|1.11111111 = 172.16.2.0-172.16.3.255
- 172.16.0000|010|0.00000000 – 172.16.0000|010|1.11111111 = 172.16.4.0-172.16.5.255
- 172.16.0000|011|0.00000000 – 172.16.0000|011|1.11111111 = 172.16.6.0-172.16.7.255
- 172.16.0000|100|0.00000000 – 172.16.0000|100|1.11111111 = 172.16.8.0-172.16.9.255
- 172.16.0000|101|0.00000000 – 172.16.0000|101|1.11111111 = 172.16.10.0-172.16.11.255
- 172.16.0000|110|0.00000000 – 172.16.0000|110|1.11111111 = 172.16.12.0-172.16.13.255
- 172.16.0000|111|0.00000000 – 172.16.0000|111|1.11111111 = 172.16.14.0-172.16.15.255
Subnet Masks = 20 + 3 (20 คือ /20 และ 3 คือ บิทที่ยืมมา (ตัวหนา) ดังนั้น เมื่อกระจาย Decimal จะได้ Subnet Masks = 255.255.254.0)
เราจะสังเกตได้ว่า เราทำโจทย์ข้อที่ 2 ได้สำเร็จแล้วคือ 2 Subnets for 500 Hosts นั่นก็คือ 172.16.0.0 – 172.16.1.255/23 และ 172.16.2.0 – 172.16.3.255/23 จบข้อที่ 1
นำ IP ในวงที่ 3 (สีแดง) ซึ่งยังไม่ได้ใช้ มาทำ โจทย์ข้อที่ 2 คือ 3 Subnets for 200 Hosts
IP ของเราที่นำมาใช้คือ 172.16.4.0/23 ซึ่ง 200 Hosts นั้น เราสามารถหา จำนวนบิทที่จะ Assign ได้ จาก การนำ 2 ไปยกกำลัง x เพื่อได้มากกว่า 200 ซึ่งคำตอบก็คือ 8 เนื่องจาก 2 ยกกำลัง 8 จะได้ 256 Hosts ลบออก 2 เหลือ 254 Hosts
ขั้นต่อมา เราต้องนำ IP Address นี้ มากระจาย Binary ก่อน ซึ่งจะได้ดังนี้
172.16.00000100.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /23 นับจากด้านหน้า จะได้ดังนี้
172.16.0000010|0.00000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 8 นับจากด้านหลัง จะได้ดังนี้
172.16.0000010|X|.00000000
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
172.16.0000010|0|.00000000 – 172.16.0000010|0|.11111111 = 172.16.4.0-172.16.4.255
172.16.0000010|1|.00000000 – 172.16.0000010|1|.11111111 = 172.16.5.0-172.16.5.255
สังเกตว่า เราสามารถทำได้เพียง 2 Network เท่านั้น IP ที่แบ่งมาก็หมด ดังนั้นเราต้องไปดึงมาจาก IP ที่เราทำการแบ่งไว้ในโจทย์ข้อก่อน (สีเขียว) ดังนี้
IP ของเราที่นำมาใช้คือ 172.16.6.0/23
และทำตามเดิม จะได้
172.16.00000110.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /23 นับจากด้านหน้า จะได้ดังนี้
172.16.0000011|0.00000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 8 นับจากด้านหลัง จะได้ดังนี้
172.16.0000011|X|.00000000
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
172.16.0000011|0|.00000000 – 172.16.0000011|0|.11111111 = 172.16.6.0-172.16.6.255
172.16.0000011|1|.00000000 – 172.16.0000011|1|.11111111 = 172.16.7.0-172.16.7.255
Subnet Masks = 23 + 1 (23 คือ /23 และ 1 คือ บิทที่ยืมมา (ตัวหนา) ดังนั้น เมื่อกระจาย Decimal จะได้ Subnet Masks = 255.255.255.0)
เราจะได้คำตอบในโจทย์ข้อ 2 คือ 172.16.4.0-172.16.4.255/24, 172.168.5.0 -172.16.5.255/24 และ 172.16.6.0-172.16.6.255/24
สังเกตว่า เรายังเหลือ IP 172.16.7.0/24 อยู่ ให้นำมาทำโจทย์ข้อที่ 3 ต่อได้ คือ 2 Subnets for 100 Hosts
IP ของเราที่นำมาใช้คือ 172.16.7.0/24
100 Hosts นั้น เราสามารถหา จำนวนบิทที่จะ Assign ได้ จาก การนำ 2 ไปยกกำลัง x เพื่อได้มากกว่า 100 ซึ่งคำตอบก็คือ 7 เนื่องจาก 2 ยกกำลัง 7 จะได้ 128 Hosts
ขั้นต่อมา เราต้องนำ IP Address นี้ มากระจาย Binary ก่อน ซึ่งจะได้ดังนี้
172.16.00000111.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /24 นับจากด้านหน้า จะได้ดังนี้
172.16.00000111.|00000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 7 นับจากด้านหลัง จะได้ดังนี้
172.16.00000111.|X|0000000
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
- 172.16.00000111.|0|0000000 – 172.16.00000111.|0|1111111 = 172.16.7.0-172.16.7.127
- 172.16.00000111.|1|0000000 – 172.16.00000111.|1|1111111 = 172.16.7.128-172.16.7.255
Subnet Masks = 24 + 1 (24 คือ /24 และ 1 คือ บิทที่ยืมมา (ตัวหนา) ดังนั้น เมื่อกระจาย Decimal จะได้ Subnet Masks = 255.255.255.128)
เราจะได้คำตอบในโจทย์ข้อที่ 3 คือ 172.16.17.0-172.16.7.127/25 และ 172.16.7.128-172.16.7.255/25
เราต้องการ IP ในการทำโจทย์ข้อที่ 4 คือ 4 Subnets for 50 Hosts ดังนั้น เราต้องไปดึงมาจาก IP ที่เราทำการแบ่งไว้ในโจทย์ข้อก่อน (สีส้ม) ดังนี้
IP ของเราที่นำมาใช้คือ 172.16.8.0/23
50 Hosts นั้น เราสามารถหา จำนวนบิทที่จะ Assign ได้ จาก การนำ 2 ไปยกกำลัง x เพื่อได้มากกว่า 50 ซึ่งคำตอบก็คือ 6 เนื่องจาก 2 ยกกำลัง 6 จะได้ 64 Hosts
ขั้นต่อมา เราต้องนำ IP Address นี้ มากระจาย Binary ก่อน ซึ่งจะได้ดังนี้
172.16.00001000.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /23 นับจากด้านหน้า จะได้ดังนี้
172.16.0000100|0.00000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 6 นับจากด้านหลัง จะได้ดังนี้
172.16.0000100|X.XX|000000
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
- 172.16.0000100|0.00|000000 – 172.16.0000100|0.00|111111= 172.16.8.0-172.16.8.63
- 172.16.0000100|0.01|000000 – 172.16.0000100|0.01|111111= 172.16.8.64-172.16.8.127
- 172.16.0000100|0.10|000000 – 172.16.0000100|0.10|111111=172.16.8.128-172.16.8.191
- 172.16.0000100|0.11|000000 – 172.16.0000100|0.11|111111=172.16.8.192-172.16.8.255
- 172.16.0000100|1.00|000000 – 172.16.0000100|1.00|111111=172.16.9.0-172.16.9.63
- 172.16.0000100|1.01|000000 – 172.16.0000100|1.01|111111=172.16.9.64-172.16.9.127
- 172.16.0000100|1.10|000000 – 172.16.0000100|1.10|111111=172.16.9.128-172.16.9.191
- 172.16.0000100|1.11|000000 – 172.16.0000100|1.11|111111=172.16.9.192-172.16.9.255
Subnet Masks = 23 + 3 (23 คือ /23 และ 3 คือ บิทที่ยืมมา (ตัวหนา) ดังนั้น เมื่อกระจาย Decimal จะได้Subnet Masks = 255.255.255.192)
เราจะได้คำตอบในโจทย์ข้อที่ 4 คือ 172.16.8.0-172.16.8.63/26, 172.16.8.64-172.16.8.127/26,172.16.8.128-172.16.8.191/26 และ 172.16.8.192-172.16.8.255/26
เราต้องการ IP ในการทำโจทย์ข้อที่ 5 คือ 4 Subnets for 2 Hosts ดังนั้น เราต้องไปดึงมาจาก IP ที่เราทำการแบ่งไว้ในโจทย์ข้อก่อน (สีน้ำตาล) ดังนี้
IP ของเราที่นำมาใช้คือ 172.16.9.0/26
2 Hosts นั้น เราสามารถหา จำนวนบิทที่จะ Assign ได้ จาก การนำ 2 ไปยกกำลัง x เพื่อได้มากกว่า 2 ซึ่งคำตอบก็คือ 1 เนื่องจาก 2 ยกกำลัง 1 จะได้ 2 Hosts แต่ เนื่องจาก เราต้องสงวนไว้ 2 Hosts สำหรับ Network ID และBroadcast ID ดังนั้น จึงต้อง บวกเพิ่มอีก 2 Hosts เป็น 4 Hosts ดังนั้นจึงต้องยืม 2 บิท
ขั้นต่อมา เราต้องนำ IP Address นี้ มากระจาย Binary ก่อน ซึ่งจะได้ดังนี้
172.16.00001001.00000000
เราจะใส่เครื่องหมายคั่นที่ ตำแหน่งที่ /26 นับจากด้านหน้า จะได้ดังนี้
172.16.00001001.00|000000
และเราจะใส่เครื่องหมายคั่นที่ตำแหน่งที่ 2 นับจากด้านหลัง จะได้ดังนี้
172.16.00001001.00|XXXX|00
ตำแหน่งตรงกลางคือ Binary ที่สามารถทำ VLSM ได้ ซึ่ง แสดงได้ดังนี้
- 172.16.00001001.00|0000|00 – 172.16.00001001.00|0000|11=172.16.9.0-172.16.9.3
- 172.16.00001001.00|0001|00 – 172.16.00001001.00|0001|11=172.16.9.4-172.16.9.7
- 172.16.00001001.00|0010|00 – 172.16.00001001.00|0010|11=172.16.9.8-172.16.9.11
- 172.16.00001001.00|0011|00 – 172.16.00001001.00|0011|11=172.16.9.12-172.16.9.15
Subnet Masks = 26 + 4 (26 คือ /26 และ 4 คือ บิทที่ยืมมา (ตัวหนา) ดังนั้น เมื่อกระจาย Decimal จะได้ Subnet Masks = 255.255.255.252)
เราจะได้ คำตอบในโจทย์ข้อที่ 5 คือ 172.16.9.0-172.16.9.3/30, 172.16.9.4-172.16.9.7/30,
172.16.9.8-172.16.9.11/30 และ 172.16.9.12-172.16.9.15/30