The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by zigbeenetworks, 2021-07-22 22:30:12

Computer Network

142 บทที่ 19. NETWORK LAYER






















รูปที่ 19.10: แสดงค่า flag เมื่อมีการกำหนดห้ามการแบ่งดาต้าแกรม



book)







(partial









only





KKU รูปที่ 19.11: การแบ่งแพกเกตออกเป็นส่วนๆใน IPv4




เพื่อแสดงว่ายังมีดาต้าแกรมที่มีหมายเลขเดียวกันอีก จนกระทั่งถึงดาต้าแกรมสุดท้าย ค่าของ Flags นี้จะถูกกำหนด
ให้เป็น 0 (More fragment = 0)

สุดท้าย Fragment offset เพื่อใช้ลำดับของข้อมูลที่ถูกแบ่ง Fragment offset จะถูกใช้เพื่อบอกลำดับของ
ดาต้าแกรมที่ภาครับต้องใช้เพื่อเรียงลำดับข้อมูลให้ถูกต้อง เนื่องจากส่วนของ Fragment offset นี้มีขนาดเพียง 13
บิต ดังนั้นลำดับของข้อมูลจะถูกกำหนดเป็นค่าจำนวนเท่าตัวของ 8 ไบต์ ยกเว้นดาต้าแกรมสุดท้าย เช่น สมมุติให้
เน็ตเวิร์คหนึ่งสามารถรองรับดาต้าแกรมได้ไม่เกิน 1200 ไบต์ (รวมเฮดเดอร์) ดังนั้นเราสามารถให้แต่ละดาต้าแกรม
มีขนาดไม่เกิน 1180 ของข้อมูล เนื่องจากอีก 20 ไบต์ต้องใช้กับเฮดเดอร์ของ IP ดังนั้นหากขนาดของดาต้าแกรม

ทั้งหมดเป็น 3000 ไบต์ (ข้อมูล 2980 ไบต์ + เฮดเดอร์ 20 ไบต์) ดังนั้นข้อมูลจะถูกแบ่งออกเป็น 3 ส่วนคือไบต์ที่ 0
ถึง 1179 ไบต์ที่ 1180 ถึง 2359 และสุดท้ายไบต์ที่ 2360 ถึง 2979 จะทำใด้มีค่า Fragment offset เป็น 0, 147
และ 295 ตามลำดับ



19.2.3 แอดเดรสของ IPv4

IPv4 address เป็นหมายเลขขนาด 32 บิต โดยอุปกรณ์ต่างๆที่อยู่บนเน็ตเวิร์คจะได้รับการกำหนดแอดเดรสโดยไม่

ซํ้ากัน ทั้งนี้ IP address ถูกแบ่งออกเป็นคลาส โดยที่ 4 บิตแรกของแอดเดรสเป็นบิตในการบอกคลาสของ IP ซึ่ง

19.2. INTERNET PROTOCOL (IP) 143



ได้แบ่งออกเป็นด้วยกัน 5 คลาส ได้แก่ คลาส A, B, C, D และ E รูปที่ 19.12 แสดงถึงคลาสต่างๆของ IP Address
สังเกตว่าในแต่ละคลาสจะกำหนดจำนวนบิตที่เป็นลอจิก 1 ในไบต์แรกแตกต่างกัน เช่น ในคลาส A จะเริ่มต้นด้วยบิต
แรกเป็นลอจิกศูนย์ในไบต์แรก (0XXXXXXX) และในคลาส B จะเริ่มต้นด้วย (10XXXXXX) เป็นต้น นอกจากนี้ ใน
32 บิตนี้จะถูกแบ่งออกเป็น 4 ชุดๆ ละ 8 บิต เรียกว่า Octect และภายหลังเรียกเป็นไบต์แทนเพื่อไม่ให้เกิดความ

สับสน จากนั้นจึงแทนตัวเลขไบนารีด้วยเลขฐาน 10 เพื่อให้สามารถจดจำได้ง่ายขึ้น ทำให้คลาส A อยู่ในช่วงจาก
แอดเดรส 0 ถึง 127 และคลาส B อยู่ในช่วงจากแอดเดรส128 ถึง 191 เป็นต้น นอกจากนี้ เนื่องด้วยการแบ่งเป็น
คลาส ทำให้การแจกจ่ายของแต่ละคลาสมีจำนวนแอดเดรสที่แตกต่างกัน ได้แก่









book)





รูปที่ 19.12: คลาสของ IP ในรูปของเลขฐานสองและฐานสิบ
(partial


คลาส A: เหมาะกับองค์กรขนาดใหญ่ที่มีโฮสต์จำนวนมาก แต่ละแอดเดรสสามารถมีจำนวนโฮสต์ได้มากถึง 2 24


คลาส B: เหมาะกับองค์กรขนาดกลางที่มีโฮสต์ไม่สูงมาก เนื่องจากแต่ละแอดเดรสสามารถมีจำนวนโฮสต์ได้ 2 16

only
คลาส C: เหมาะกับองค์กรที่มีขนาดเล็ก มีจำนวนโฮสต์ไม่เกิน 254 โฮสต์

คลาส D: ไม่ได้แจกจ่ายให้องค์กรใดโดยเฉพาะ แต่ถูกใช้สำหรับการสื่อสารแบบมัลติคาสท์ (one-to-many)

KKU
คลาส E: สำรองไว้ใช้ในอนาคต

โดยทั่วไปแล้ว หากนำแต่ละคลาสมาพิจารณา เราสามารถแบ่งตามคลาสได้อีกสองส่วนคือ ส่วนที่แสดงถึง

หมายเลขของเน็ตเวิร์ค (network address) และหมายเลขของโฮสต์ (host address) รูปที่ 19.13 แสดงถึงจำนวน
เน็ตเวิร์คและโฮสต์ที่สามารถกำหนดได้ในแต่ละคลาส

























รูปที่ 19.13: หมายเลขของเน็ตเวิร์คและโฮสต์ของคลาส A คลาส B และ คลาส C

144 บทที่ 19. NETWORK LAYER



เมื่ออ้างถึง IP address หนึ่งๆ ในการที่จะอ้างว่า IP address ที่อ้างถึงนั้นส่วนใดเป็นส่วนของเน็ตเวิร์ค
แอดเดรส และส่วนใดบ่งบอกถึงโฮสต์แอดเดรส สามารถทำได้โดยการกำหนด subnet mask ในแต่ละคลาสของ IP
address มีการใช้กำหนด subnet mask ไว้ดังนี้

คลาส A กำหนด subnet mask เป็น 255.0.0.0 เพื่อระบุว่าใน 8 บิตแรกหมายถึงส่วนของเน็ตเวิร์ค และใน 24

บิตที่เหลือจะสามารถใช้เพื่อกำหนดแอดเดรสของโฮสต์ ทำให้สามารถรองรับโฮสต์ได้ 2 -2
24
คลาส B กำหนด subnet mask เป็น 255.255.0.0 เพื่อระบุว่าใน 16 บิตแรกหมายถึงส่วนของเน็ตเวิร์ค และใน
16 บิตที่เหลือจะสามารถใช้เพื่อกำหนดแอดเดรสของโฮสต์ ทำให้สามารถรองรับโฮสต์ได้ 2 -2
16

คลาส C กำหนด subnet mask เป็น 255.255.255.0 เพื่อระบุว่าใน 24 บิตแรกหมายถึงส่วนของเน็ตเวิร์ค และ
ใน 8 บิตที่เหลือจะสามารถใช้เพื่อกำหนดแอดเดรสของโฮสต์ ทำให้สามารถรองรับโฮสต์ได้ 2 -2
8
สังเกตว่า ในแต่ละคลาสจะลบออกสองแอดเดรสเพื่อใช้เป็นเน็ตเวิร์คแอดเดรสและ บรอดคาสท์แอดเดรสเช่น IP
address: 202.28.93.X จะได้ว่า 202.28.93.0 เป็นเน็ตเวิร์คแอดเดรส 202.28.93.255 เป็นบรอดคาสท์แอดเดรส
และที่เหลือจาก 202.28.93.1 ถึง 202.28.93.254 เป็นแอดเดรสที่สามารถกำหนดให้กับโฮสต์ที่ต้องการได้ โดยมี
subnet mask เป็น 255.255.255.0 book)

ในช่วงแรก องค์กรต่างๆจะขอ IP Address จาก The Internet Assigned Number Authority (IANA) โดยที่
(partial
IANA จะแจกจ่าย IP Address ให้ตามจำนวนคลาสที่แต่ละหน่วยงานต้องการ ที่ซึ่งแต่ละหน่วยงานจะมีหน้าที่ใน
การกำหนดโฮสต์แอดเดรสของภายในเครือข่ายของตนเองตามช่วงของคลาสที่ได้รับ
อย่างไรก็ตาม การกำหนดแอดเดรสให้กับหน่วยงานต่างๆไม่มีความเหมาะสมเท่าใดนัก จะเห็นว่าคลาส A และ
คลาส B มีจำนวนไม่มากนัก ซึ่งการกำหนดให้กับหน่วยงานใด หน่วยงานนั้นอาจไม่ได้มีการใช้ทั้งหมด ในขณะ
เดียวกัน การแจกคลาส C ให้กับองค์กรหนึ่งอาจไม่เพียงพอ ทำให้ต้องแจกจ่ายมากกว่าหนึ่งคลาส แต่ไม่ถึงกับต้อง
only
ให้เป็นหนึ่งคลาส B ในขณะเดียวกันก็ไม่สามารถนำคลาส A หรือคลาส B ที่กำหนดให้องค์กรใดไปแล้วมาใช้อีกได้
ซึ่งทำให้การกำหนดแอดเดรสเป็นไปอย่างไม่เหมาะสม ดังนั้นจึงต้องหาวิธีการในการกำหนดแอดเดรสใหม่ เพื่อให้มี
ความเหมาะสมยิ่งขึ้น การแก้ปัญหาทำได้โดยการใช้ซับเน็ต (Subnet) ในลักษณะที่สามารถปรับเปลี่ยนความยาวได้
KKU
(variable-lenght) ดังจะได้กล่าวต่อไป



19.2.4 Reserved IP addresses

ในการกำหนด IP address หากบิตเป็น 0 ทั้งหมด หรือเป็น 1 ทั้งหมด จะมีความหมายที่แตกต่างจาก IP address

ปกติดังนี้

• ทุกบิตเป็น 0 หากในส่วนของเน็ตเวิร์คแอดเดรสทุกบิตเป็น 0 จะเป็นการระบุถึงเน็ตเวิร์คที่ทำงานอยู่ใน
ขณะนี้ หากส่วนโฮสต์แอดเดรสทุกบิตมีค่าเป็น 0 จะสื่อถึงโฮสต์ที่ส่งนี้ ดังนั้นหากโฮสต์ต้องการสื่อสารบน
เน็ตเวิร์คโดยที่ยังไม่ทราบเน็ตเวิร์คแอดเดรส สามารถทำได้โดยการส่งแพกเกตโดยการกำหนดให้เน็ตเวิร์ค
แอดเดรสเป็น 0 ทุกบิต โฮสต์ต่างๆบนเน็ตเวิร์คทราบว่าหมายถึงเน็ตเวิร์คที่ทำงานอยู่นี้ ทำให้สามารถตอบ
กลับด้วยเน็ตเวิร์คแอดเดรสที่ถูกต้อง เพื่อให้โฮสต์ที่ส่งสามารถนำไปใช้ต่อไป


• ทุกบิตเป็น 1หากแอดเดรสที่ทุกบิตเป็น1จะสื่อถึงทุกเน็ตเวิร์คหรือทุกโฮสต์ ตัวอย่างเช่น130.18.255.255
จะหมายถึงทุกโฮสต์บนเน็ตเวิร์ค หรือกล่าวว่าเป็นการบรอดคาสท์

• Loopback ใน Class A เน็ตเวิร์ค 127.0.0.0 ถูกกำหนดเพื่อประโยชน์ในการเขียนโปรแกรมที่เกี่ยวข้องกับ
การทำงานของเน็ตเวิร์ค การใช้ loopback นี้จะทำให้การสื่อสารที่เกิดขึ้น เป็นการทำงานภายในโฮสต์

เท่านั้น ไม่มีการส่งผ่านลงไปยังส่วนของ Physical Layer

19.2. INTERNET PROTOCOL (IP) 145



IP address ที่ถูกใช้ในกรณีพิเศษ

นอกจาก IP address ที่ถูก reserved ไว้ ใน RFC 3330 ได้กำหนด IP address เพื่อในกรณีอื่นในตาราง 19.1


แอดเดรส subnet mask การใช้งาน
0.0.0.0 255.0.0.0 ใช้ในการระบุถึงเน็ตเวิร์คนี้ ("This" network)
14.0.0.0 255.0.0.0 Public-data networks
39.0.0.0 255.0.0.0 จองไว้เพื่อจะกำหนดต่อไป
128.0.0.0 255.255.0.0 จองไว้เพื่อจะกำหนดต่อไป
169.254.0.0 255.255.0.0 Link local
224.0.0.0 255.0.0.0 มัลติคาสท์



ตารางที่ 19.1: IP address พิเศษเพื่อการใช้งานเฉพาะ
book)





19.2.5 ซับเน็ตติง (Subnetting)
(partial

จากปัญหาในการกำหนดแอดเดรสที่ได้กล่าวไปแล้วการทำซับเน็ตติง(RFC950)เป็นการใช้ส่วนของโฮสต์แอดเดรสเพื่อ
ใช้กำหนดส่วนของเน็ตเวิร์คแอดเดรสเรียกว่า ซับเน็ต (subnet) สิ่งที่เกิดขึ้นคือการยืมบิตจากส่วนโฮสต์แอดเดรส
เพื่อใช้ในการแบ่งเน็ตเวิร์คออกเป็นซับเน็ตหรือก็คือ การเพิ่มจำนวนบิตในส่วนของเน็ตเวิร์คแอดเดรสและลดจำนวน
บิตของโฮสต์แอดเดรสนั่นเอง
only
การทำซับเน็ตติงนี้ สามารถทำได้ใน Class A Class B หรือ Class C สามารถเขียนอยู่ในรูปทั่วไป โดย
การแบ่งส่วนของโฮสต์แอดเดรสเดิมเป็นสองส่วน [35] ได้เป็น <network address><บิตที่ถูกยืมจากโฮสต์
แอดเดรส><ส่วนที่เหลืออยู่ของส่วนโฮสต์แอดเดรส> การแบ่งนี้จะทำโดยผู้ดูแลระบบ โดยอาศัย subnet mask
หากบิตมีค่าเป็นศูนย์ (0) หมายถึงบิตนั้นใช้ในการกำหนดโฮสต์แอดเดรส แต่หากมีค่าเป็นหนึ่ง (1) บิตนั้นใช้ใน
KKU IP Address 192.202.18.0 มี subnet mask เป็น 255.255.255.0 เนื่องจาก
การกำหนดซับเน็ตเช่น สมมุติให้
IP Address ดังกล่าวเป็น Class C ทำให้มีโฮสต์แอดเดรสตั้งแต่ 192.202.18.1 ถึง 192.202.18.254 และมีบรอด

คาสท์แอดเดรสที่ 192.202.18.255 จากแอดเดรสดังกล่าวหากเราต้องการทำการแบ่ง subnet ใหม่โดยการยืมหนึ่ง
บิตจากส่วนของโฮสต์แอดเดรสจะได้ <192.202.18.><1 2><0000000 2> จะทำให้เราได้ subnet mask ใหม่เป็น
255.255.255.128




255 255 255 128

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0




ดังนั้นในกรณีนี้ เราจะได้สองซับเน็ตคือ ซับเน็ต 0 และซับเน็ต 1 ซึ่งเราสามารถเขียนในรูปฐานสองได้เป็น




192 202 18 0 -127

1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 X X X X X X X

146 บทที่ 19. NETWORK LAYER





192 202 18 128 -255

1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 X X X X X X X



ดังนั้นในกรณีนี้เราจะได้

ซับเน็ต 1 ซับเน็ต 2
Network Address 192.202.18.0 192.202.18.128
Host ID 192.202.18.1 ถึง 192.202.18.126 192.202.18.129 - 192.202.18.254
บรอดคาสท์แอดเดรส 192.202.18.127 192.202.18.255




ตัวอย่าง 19.1 สมมุติว่าเราต้องการแบ่งซับเน็ต 130.12.0.0 ออกเป็น 6 ซับเน็ต จาก IP address 130.12.0.0
book)
ทราบว่าอยู่ใน Class B มี subnet mask เป็น 255.255.0.0 เพื่อให้ได้จำนวนซับเน็ตที่ต้องการ เราสามารถทำใด้
โดยการใช้โฮสต์แอดเดรสจำนวน 3 บิต (Octect ที่ 3) ทำให้เราได้ subnet mask ใหม่เป็น 255.255.224.0



255 255 224 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1



โดยที่แต่ละซับเน็ตมีรายละเอียดดังนี้ (partial 0 0 0 0 0 0 0 0 0 0 0 0 0
ซับเน็ต ซับเน็ตแอดเดรส แอดเดรสแรก แอดเดรสสุดท้าย บรอดคาสท์แอดเดรส
only
ซับเน็ต 0 130.12.0.0 132.12.0.1 132.12.31.254 132.12.31.255
ซับเน็ต 1 130.12.32.0 132.12.32.1 132.12.63.254 132.12.63.255
ซับเน็ต 2 130.12.64.0 132.12.64.1 132.12.95.254 132.12.95.255
ซับเน็ต 3 130.12.96.0 132.12.96.1 132.12.127.254 132.12.127.255
ซับเน็ต 4 KKU 130.12.128.0 132.12.128.1 132.12.159.254 132.12.159.255
ซับเน็ต 5 130.12.160.0 132.12.160.1 132.12.191.254 132.12.191.255

ซับเน็ต 6 130.12.192.0 132.12.192.1 132.12.223.254 132.12.223.255
ซับเน็ต 7 130.12.224.0 132.12.224.1 132.12.255.254 132.12.255.255

จากการทำซับเน็ตข้างต้น เราจะพบว่าในซับเน็ต 0 หากเขียนอยู่ในเลขฐานสองจะได้เป็น



130 12 0 X

1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 X X X X X X X X X X X X X



จากเลขฐานสองข้างบนจะเห็นว่าสามบิตแรก บิต 17, 18 และ 19 ที่ใช้ในการทำซับเน็ตติงเป็นศูนย์ (0) ทั้งหมด
เรียกว่า all­zeros subnet หรือซับเน็ตแอดเดรส130.12.0.0 สำหรับซับเน็ตนี้ ซึ่งเป็นค่าเดียวกันกับเน็ตเวิร์ค
แอดเดรส (130.12.0.0) ดังนั้นกรณีนี้จึงไม่สามารถแยกระหว่างเน็ตเวิร์คแอดเดรสเดิม กับซับเน็ตแอดเดรสของ
all-zeros subnet ที่เกิดขึ้น ทำให้ไม่นิยมนำมาใช้งานเพื่อหลีกเลี่ยงความสับสน
ในทำนองเดียวกัน หากพิจารณาในซับเน็ตสุดท้าย (ซับเน็ต 7 ในกรณีนี้) จะเห็นว่า บิต 17, 18 และ 19 ที่ใช้ใน

การทำซับเน็ตติงเป็นหนึ่ง (1) ทั้งหมด เรียกว่า all­ones subnet

19.2. INTERNET PROTOCOL (IP) 147





130 12 224 X

1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 X X X X X X X X X X X X X



ในกรณีนี้ broadcast address ของซับเน็ตสุดท้าย (130.12.255.255) และ broadcast address ของเน็ตเวิร์ค
แอดเดรส 130.12.0.0 จะมีค่าเดียวกัน แม้ว่าในกรณีผู้ดูระบบสามารถที่จะกำหนดซับเน็ตสุดท้ายนี้ได้ในเร้าเตอร์ที่
จะใช้ แต่เราไม่สามารถจะแยกความแตกต่างระหว่าง broadcast address ของซับเน็ตและของบรอดคาสท์ ใน
Class B เอง
จากกรณีดังกล่าวทำให้การใช้งานของ all-zeros subnet และ all-ones subnet ไม่ถูกนำมาใช้งาน เนื่องจาก

อาจทำให้เกิดปัญหาขึ้นภายหลัง อย่างไรก็ตาม ปัจจุบันการใช้งานทั้งสองกรณีได้ถูกแก้ไขและยอมรับ เช่น เร้าเตอร์
ของ Cisco ตั้งแต่ IOS Software Release 12.0 เป็นต้นมา รวมไปถึงเร้าเตอร์จากผู้ผลิตรายอื่นๆ ยกเว้นเน็ตเวิร์ค
ที่ยังคงใช้ซอฟต์แวร์เวอร์ชันเก่าอยู่เท่านั้น[50] ดังนั้นในที่นี้จะไม่หักซับเน็ตทั้งสองออกทำให้ได้ ในตัวอย่างที่ 19.1 มี
จำนวนซับเน็ตทั้งหมด 8 ซับเน็ต แต่ละซับเน็ตมีจำนวนโฮสต์ทั้งหมด 2 - 2 หรือ 8190 โฮสต์ จำนวนสองแอดเดรส
13
ที่ลบออกเป็นซับเน็ตแอดเดรสและซับเน็ตบรอดคาสท์แอดเดรส book)


(partial
19.2.6 Variable-Length Subnetting


จากการกำหนดที่ได้กล่าวไปแล้ว แม้ว่าจะดูเหมือนว่าจะทำให้เราแบ่งออกกลุ่มของ IP address เป็นซับเน็ตย่อยได้
แต่การแบ่งเป็นซับเน็ตที่มีขนาดเท่ากันดูจะยังไม่มีประสิทธิภาพมากนัก สมมุติเราต้องการแบ่งซับเน็ตเพื่อสนับสนุน
หน่วยงานหนึ่ง โดยมีความต้องการใช้เน็ตเวิร์คดังนี้
only
• ฝ่ายงานบริการทั่วไปต้องการ 1 ชุดของ IP address เป็นจำนวน 2000 แอดเดรส


• ฝ่ายวิศวกรรมต้องการ 1 ชุดของ IP address เป็นจำนวน 500 แอดเดรส
KKU
• ฝ่ายขายต้องการ 14 ชุดของ IP address เป็นจำนวน 50 แอดเดรสในแต่ละชุด

• ฝ่ายวิจัยต้องการ 1 ชุดของ IP address เป็นจำนวน 300 แอดเดรส


• ฝ่ายสนับสนุนต้องการ 10 ชุดของ IP address เป็นจำนวน 40 แอดเดรสในแต่ละชุด

สมมุติว่าหน่วยงานดังกล่าวได้รับการกำหนด1ClassBแอดเดรส130.12.0.0และsubnetmask255.255.0.0
ในกรณีนี้จะทำให้เราสามารถรองรับจำนวนโฮสต์ทั้งหมด 65,534 โฮสต์ หากพิจารณาการทำซับเน็ตติงตามวิธีการ

ที่กล่าวไปแล้ว จะทำให้เราได้จำนวนซับเน็ตและจำนวนโฮสต์ของแต่ละซับเน็ตตามตารางที่ 19.2

จำนวนบิต Subnet Mask จำนวนซับเน็ตที่ได้ จำนวนโฮสต์ในแต่ละซับเน็ต
2 255.255.192.0 4 16382
3 255.255.224.0 8 8190
4 255.255.240.0 16 4094
5 255.255.248.0 32 2046
6 255.255.252.0 64 1022
7 255.255.254.0 128 510
8 255.255.255.0 256 254

ตารางที่ 19.2: จำนวนซับเน็ตและจำนวนโฮสต์ของ Class B จากการทำซับเน็ตติง

148 บทที่ 19. NETWORK LAYER



หากพิจารณาจากตาราง 19.2 ข้างต้นพบว่า เพื่อให้สามารถรองรับการใช้งาน 2000 แอดเดรสตามที่ร้องขอจาก
ฝ่ายงานบริการทั่วไปได้ จะต้องใช้ 5 บิตหรือน้อยกว่า หากใช้จำนวน 5 บิตจะทำให้เราได้จำนวนซับเน็ตเป็น 32 ซับ
เน็ตและรองรับ 2046 โฮสต์ต่อหนึ่งซับเน็ต อย่างไรก็ตามการใช้ในกรณีดังกล่าวทำให้ไม่มีจำนวนซับเน็ตเพียงพอต่อ
การใช้งานทั้งหมด เนื่องจากทั้งหมดต้องใช้ 38 ซับเน็ต(1 ชุดที่ร้องขอต่อ 1 ซับเน็ต) เพื่อให้สามารถรองรับจำนวนดัง

กล่าวเราจึงจำเป็นต้องใช้ 6 บิตในการแบ่งซับเน็ต แต่การทำเช่นนี้จะทำให้ไม่สามารถรองรับความต้องการของฝ่าย
งานบริการทั่วไปได้ ดังนั้นจึงจำเป็นต้องใช้การกำหนดซับเน็ตติงแบบปรับเปลี่ยนได้ (variable-lenght subnetting)
เพื่อแก้ปัญหาข้างต้น
ในกรณีนี้เราเลือกใช้ 4 บิตและ 8 บิตจะทำให้เราได้จำนวนซับเน็ตและโฮสต์ดังแสดงในตารางที่ 19.2 ในกรณี 4
บิต เราจะได้ซับเน็ตดังต่อไปนี้

130.12.0.0 130.12.16.0 130.12.32.0 130.12.48.0
130.12.64.0 130.12.80.0 130.12.96.0 130.12.112.0
book)
130.12.128.0 130.12.144.0 130.12.160.0 130.12.176.0
130.12.192.0 130.12.208.0 130.12.224.0 130.12.240.0

เนื่องจากมีจำนวนซับเน็ตเพียงพอต่อความต้องการเราอาจเลือกใช้เท่าที่จำเป็น และอาจหลีกเลี่ยงการใช้ all-zeros
subnet จึงใช้ 130.12.16.0 130.12.32.0 และ 130.12.48.0 ให้แก่ ฝ่ายงานบริการทั่วไป ฝ่ายวิศวกรรม และฝ่าย
(partial
วิจัย ตามลำดับ
จากนั้นเพื่อรองรับฝ่ายขายต้องการ14ชุดๆละ50แอดเดรสเราจะนำกรณีของ4บิตมาแบ่งเป็นแบบ8บิตอีก

ครั้ง สามารถรองรับได้ 254 แอดเดรส ในที่นี้เลือก 130.12.64.0 มาแบ่ง จะได้ subnet mask เป็น 255.255.255.0
มี subnet ดังต่อไปนี้

130.12.64.0 130.12.65.0 130.12.66.0 130.12.67.0
only
130.12.68.0 130.12.69.0 130.12.70.0 130.12.71.0
130.12.72.0 130.12.73.0 130.12.74.0 130.12.75.0
130.12.76.0 130.12.77.0 130.12.78.0 130.12.79.0
KKU

จากการแบ่งดังกล่าว เนื่องจากฝ่ายขายต้องการ 14 ชุด เราจึงเลือกจาก 130.12.65.0 ไปถึง 130.12.78.0 เพื่อ
กำหนดให้แต่ละชุดที่ร้องขอ ในกรณีของฝ่ายสนับสนุน เนื่องจากเหลือจากฝ่ายขายเพียง 2 ซับเน็ตเท่านั้น ฝ่าย
สนับสนุนต้องการ 10 ซับเน็ตเราจึงนำ 130.12.80.0 มาทำในลักษณะเดียวกันกับของฝ่ายขาย จะได้ subnet ดังต่อ
ไปนี้

130.12.80.0 130.12.81.0 130.12.82.0 130.12.83.0
130.12.84.0 130.12.85.0 130.12.86.0 130.12.87.0
130.12.88.0 130.12.89.0 130.12.90.0 130.12.91.0
130.12.92.0 130.12.93.0 130.12.94.0 130.12.95.0


การกำหนดซับเน็ตให้แต่ละชุดเป็น 130.12.81.0 ไปถึง 130.12.90.0 จะเห็นว่าจากการกำหนดทั้งหมดยังคงมี
ซับเน็ตทั้งจากการใช้แบบ 4 บิตและ 8 บิตเหลือเป็นจำนวนมาก เพื่อรองรับการใช้งานในอนาคตต่อไป



19.2.7 Classless Inter-Domain Routing (CIDR)

การทำงานของ IP address เริ่มต้นได้รับการออกแบบในลักษณะที่เป็นคลาส แต่ละคลาสมีการระบุเป็นช่วง และใช้
subnet mask เพื่อระบุถึงส่วนที่เป็นเน็ตเวิร์คแอดเดรสและส่วนที่เป็นโฮสต์แอดเดรส การทำซับเน็ตติงช่วยทำให้

การกำหนด IP address มีประสิทธิภาพดีขึ้น ทำให้เราสามารถกำหนดมากกว่าหนึ่งคลาสของ Class A ให้กับหน่วย

19.2. INTERNET PROTOCOL (IP) 149



งานหนึ่งๆ แทนการใช้งาน Class B หรือ Class A ปัญหาที่ตามมาคือยังไม่มีวิธีการที่แสดงถึงแต่ละ Class C ที่เรา
กำหนดนั้นเป็นกลุ่มเดียวกัน ทำให้เกิดปัญหาของ routing table explosion
สมมุติให้หน่วยงานหนึ่งได้รับ Class C จำนวน 20 ซับเน็ต สิ่งที่เกิดขึ้นในที่นี้คือแต่ละซับเน็ตต้องถูกแจ้งออกไป
(advertise) ในอินเทอร์เน็ต แทนที่จะส่งไปในลักษณะที่เป็นเพียงหนึ่งแอดเดรสเท่านั้นหากเป็นการใช้ Class B ในที่

นี้เราต้องแจ้งไปถึง 20 แอดเดรส หากมองในแง่ของอินเทอร์เน็ตประกอบด้วยเร้าเตอร์จำนวนมากเพื่อรองรับแต่ละ
ซับเน็ต กรณีเช่นนี้จะทำให้สิ้นเปลืองทั้งหน่วยความจำที่ต้องใช้และความต้องการในการประมวลผลของเร้าเตอร์
Classless Inter-Domain Routing (CIDR) ถูกออกแบบมาเพื่อใช้แก้ไขในกรณีดังกล่าว การทำงานของ CIDR
จะไม่จัดการกับ IP address ในลักษณะที่เป็นคลาสอีกต่อไป จะทำงานโดยอาศัยส่วนหน้าของ IP address (IP
prefix) เพื่อใช้ในการรวมหลายๆเน็ตเวิร์คเข้าด้วยกันให้เหลือเพียงหนึ่งเอ็นทรี (entry) เรียกว่า supernetting ดัง
นั้น supernetting เป็นการรวบเน็ตเวิร์คแอดเดรสเข้าด้วยกัน โดยการลดจำนวนบิตที่ใช้ในการระบุถึงเน็ตเวิร์ค

แอดเดรส(network mask) ลง ตรงข้ามกับการทำซับเน็ตติง ซึ่งจะทำให้จำนวนบิตเพื่อระบุเน็ตเวิร์คยาวขึ้น
book)
ตัวอย่าง 19.2 สมมุติในหน่วยงานหนึ่งได้รับการกำหนด IP address เป็น 192.12.240.0 ถึง 192.12.255.0 มี
subnet mask เป็น 255.255.255.0 เมื่อพิจารณาในลักษณะเลขฐาน 2 เราจะได้



(partial
192 12 xxxxxxxx 0
1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0


1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0

only
. . . . . . . . . . . .


1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
KKU




จะเห็นว่าในส่วนของ octet ที่ 1 2 และ สุดท้ายไม่มีการเปลี่ยนแปลงใดๆ ยกเว้นใน octet ที่ 3 ใน 4-บิต
แรกคงที่ และใน 4-บิตหลังมีการเปลี่ยนแปลงไปตามหมายเลขของซับเน็ต จาก CIDR เราสามารถที่จะแทนรูปแบบ
ของ X.X.X.X ของ network mask ด้วยความยาวของบิตที่ใช้ในการระบุช่วงของเน็ตเวิร์คแอดเดรสในที่นี้เรียก
ว่า supernet mask เช่น 255.255.240.0 ซึ่งใช้ 20 บิตแรกในการระบุช่วงของเน็ตเวิร์คแอดเดรส ทำให้เราเขียน

ในลักษณะของ CIDR block เป็น 192.12.240.0/20 เพื่อใช้ในการแจ้งไป (advertise) ยังเร้าเตอร์อื่น ในทำนอง
เดียวกันในหนึ่ง Class C ใช้ subnet mask เป็น 255.255.255.0 เพราะฉะนั้น เพื่อระบุถึง 24 บิตแรกหมายถึง
เน็ตเวิร์คแอดเดรสจะเขียนอยู่ในรูป X.X.X.X/24 และ Class B เป็น X.X.X.X/16 ปัจจุบันการเขียนในรูปแบบนี้
ถือว่าเป็นที่ยอมรับอย่างแผ่หลายในอินเทอร์เน็ต



จากตัวอย่างข้างต้นจะเห็นว่า IP address ที่ใช้เป็นช่วงของ Class C ที่ต่อเนื่องกัน คำถามที่อาจเกิดขึ้นคือ
หากมี IP address หนึ่งได้ถูกกำหนดให้หน่วยงานอื่นไปแล้ว จะยังสามารถทำงานในลักษณะดังกล่าวได้หรือไม่ จาก
ตัวอย่างข้างต้น สมมติให้ 192.12.250.0/24 ถูกใช้โดยหน่วยงานอื่น หากมีแพกเกตที่ต้องการส่งไปยังเน็ตเวิร์คดัง
กล่าว (เช่น 192.12.250.8) เร้าเตอร์จะสามารถตรวจสอบและพบว่าจำนวนบิตที่เหมือนกับเน็ตเวิร์คแอดเดรสของ
192.12.250.0/24 มากกว่าจำนวนบิตของ 192.12.240.0/20 ดังนั้น แพกเกตจะถูกส่งไปยังเน็ตเวิร์ค 192.12.250.0

ได้อย่างถูกต้อง

150 บทที่ 19. NETWORK LAYER



19.2.8 IPv6

จากความต้องการของจำนวนแอดเดรสในการสนับสนุนอุปกรณ์ในระบบเน็ตเวิร์คทำให้มีความจำเป็นต้องมี IP

เวอร์ชันใหม่เพื่อให้สามารถสนับสนุนอุปกรณ์ต่างๆให้หลากหลายขึ้น ดังจะได้กล่าวรายละเอียดต่อไปในบทของ
IPv6 โดยเฉพาะ อย่างไรก็ตามหากกล่าวโดยสรุป IPv6 มีข้อดีต่างๆที่เหนือกว่า IPv4 ดังนี้


• หมายเลขมากขึ้น: ความสามารถในการสนับสนุน IP address ที่มากขึ้น IPv6 ได้ปรับเปลี่ยนแอดเดรสจาก
เดิมที่มีเพียง 32 บิตเป็น 128 บิต ทำให้สามารถมีช่วงของแอดเดรสได้ถึง 2 128


• การเปลี่ยนแปลง IP address (Renumbering): การเปลี่ยนแปลงของ IP address สามารถทำได้ง่ายขึ้น
เมื่อเร้าเตอร์มีความจำเป็นในการหยุดการให้แอดเดรสเดิมและเริ่มต้นการให้แอดเดรสใหม่ โฮสต์จะสร้าง
แอดเดรสใหม่ขึ้นโดยอัตโนมัติ และสังเกตว่าแอดเดรสจะไม่มีการ "refresh" เพื่อหลีกเลี่ยงการขาดช่วงของ
การทำงานเนื่องจากการที่ต้องเปลี่ยนแปลงอย่างทันทีทันใด แอดเดรสเดิมจะถูกทำให้เป็น "deprecated"
book)
และใช้ไปจนกระทั่งสิ้นสุดการทำงานในเซสชันและเริ่มใช้แอดเดรสใหม่


• ประสิทธิภาพ (Efficiency): แม้ว่าขนาดของแอดเดรสของ IPv6 จะใหญ่กว่า IPv4 ถึง 4 เท่า แต่ความยาว
ของแพกเกตโดยรวมมีขนาดเป็น 40 ไบต์เท่านั้น นอกจากนั้นยังมีประสิทธิภาพที่ดีขึ้น โดย
(partial

– เฮดเดอร์ของ IPv6 มีขนาดคงที่

– เฮดเดอร์ของ IPv6 สามารถประมวลผลที่ 64 บิต
– ไม่มี checksum ที่ IP เฮดเดอร์ทำให้ลดความจำเป็นในการประมวลผลเมื่อเทียบกับ IPv4

only
– เร้าเตอร์จะไม่แบ่งแพกเกตที่มีขนาดใหญ่เกินไปอีก แต่จะแจ้งให้ผู้ส่งจัดการแบ่งให้มีขนาดให้เหมาะ
สม
– ทดแทนการทำบรอดคาสท์ด้วย มัลติคาสท์ในการค้นหา (discovery) โดยโฮสต์ที่อยู่ในมัลติคาสท์
KKU
เท่านั้นที่จะถูกอินเตอร์รัปท์ ต่างจากกรณีของบรอดคาสท์ที่ทุกโฮสต์จะถูกอินเตอร์รัปท์



19.3 Internet Control Message Protocol (ICMP)


เนื่องจากการทำงานของ IP เป็นแบบ Best-effort แพกเกตอาจสูญหายระหว่างการส่ง ซึ่งสาเหตุอาจเกิดจากความ

ผิดพลาดระหว่างการส่ง แต่ที่แพกเกตไม่ได้รับการส่งอาจมาจากหลายสาเหตุซึ่งหากเกิดจากโฮสต์หรือจากเกตเวย์
หากไม่มีข้อมูลเพื่อแจ้งสาเหตุที่เกิดขึ้น ทำให้โฮสต์ไม่สามารถที่จะทราบว่าข้อมูลที่ส่งไปนั้นเกิดจากความผิดพลาด
ของช่องสัญญาณ หรือเกิดจากการจากภาครับไม่พร้อมที่จะรับข้อมูลดังกล่าว (เครื่องปิด) จึงควรมีการแจ้งเตือน
เพื่อให้ทราบถึงสาเหตุของเหตการณ์ดังกล่าว เช่น การแจ้งเตือนสาเหตุที่แพกเกตไม่สามารถส่งได้ เพื่อให้โฮสต์หรือ
เกตเวย์ที่รับผิดชอบแพกเกตดังกล่าว สามารถแจ้ง destination unreachable ไปยังต้นทาง โดยระบุถึงสาเหตุที่

ไม่สามารถส่งได้ เช่น ไม่พบเส้นทางเพื่อไปยังเน็ตเวิร์คปลายทาง (destination network unreachable) หรือ ไม่
พบโฮสต์ที่ระบุได้ (destination host unreachable)
Internet Control Message Protocol หรือ ICMP เป็นโพรโตคอลที่เกิดขึ้นเพื่อระบุถึงสาเหตุความผิดพลาด
ที่เกิดขึ้นใน Network Layer เพื่อให้สามารถหาแนวทางแก้ไขปัญหา ซึ่งมิใช่การใช้เพื่อแจ้งให้ทราบถึงปัญหาเท่านั้น
ICMP ยังสามารถใช้เพื่อส่งข้อความหรือสัญญาณควบคุม (information and control messages) ไปยังโฮสต์ที่
ต้องการได้ ในรูปแบบดาต้าแกรมใน IP รูปที่ 19.14 แสดงรูปแบบเมสเสจของ ICMP โดยสามารถแบ่งออกเป็นกลุ่ม

ใหญ่ๆได้ ดังในตารางที่ 19.3[19]

19.4. คำถามท้ายบท 151


0 7 15 31
Type Code Checksum


Contents depend on the type and code


รูปที่ 19.14: เฮดเดอร์ของโพรโตคอลICMP


ฟังก์ชัน ICMP message การใช้งาน
รายงานข้อผิดพลาด Desination แจ้งข้อมูลเกี่ยวกับปลายทางที่โนดพยายามส่งถึง
(Error reporting) unreachable เช่น การที่เร้าเตอร์ไม่สามารถหาเส้นทางไปยังปลายทางได้
Time exceeded แจ้งข้อมูลเมื่อแพกเกตที่ส่งไป มีค่า TTL
ที่ลดลงจนกระทั่งเป็นศูนย์และแพกเกตถูกทิ้งไป
Parameter error พารามิเตอร์ที่เฮดเดอร์ของดาต้าแกรมไม่สามารถระบุได้
book)
การเชื่อมต่อของเน็ตเวิร์ค Echo request/ ตรวจสอบการเข้าถึงโฮสต์หนึ่งๆ
(Reachability testing) reply
การควบคุมการคับคั่ง Source quench ร้องขอให้โฮสต์ลดความเร็วของดาต้าแกรมที่ส่ง
(Congestion Control)
การแจ้งการเปลี่ยนแปลงเส้นทาง Redirect แจ้งโดย gateway ให้เปลี่ยนเส้นทางไปยัง
(partial
(Route-change notification) gateway อื่น เพื่อส่งข้อมูลไปยังปลายทาง
การวัดประสิทธิภาพ Timestamp ตรวจสอบเวลาในการส่งระหว่างโฮสต์
(Performance measuring) request/reply
การตรวจสอบแอดเดรสซับเน็ต Address Mask ทำโดยโฮสต์เพื่อตรวจสอบ address mask
(Submit addressing) request/reply ของซับเน็ต
only
ตารางที่ 19.3: ฟังก์ชันหลักของการทำงานของ ICMP



จะเห็นว่า เฮดเดอร์ของ ICMP จะประกอบไปด้วยสองส่วนสำคัญคือ Type และ Code ซึ่ง Type จะเสมือน
KKU
เป็นหมวดหลัก เช่น Type = 3 จะหมายถึงเมสเสจที่เกี่ยวข้องกับความผิดพลาดที่ไม่สามารถไปยังปลายทางได้
(Distination unreachable) หรือ Type = 11 จะหมายถึงแพกเกตนั้นหมดเวลา ก่อนที่จะสามารถส่งถึงปลายทาง
(Time exceeded) เป็นต้น ในส่วนของ Code จะบอกถึงรายละเอียดที่เกิดขึ้นใน Type นั้นๆ นอกเหนือจากนี้
ICMP ยังมี checksum ขนาด 16 บิต เพื่อใช้ในการป้องกันข้อผิดพลาดที่อาจเกิดขึ้น และส่วนรายละเอียดเพิ่มเติม

โดยขึ้นอยู่กับ Type และ Code ที่ใช้งาน ตารางที่ 19.4 แสดงตัวอย่างของ Type และ Code ที่นิยมใช้งาน

ตัวอย่าง 19.3 ทดสอบการใช้เมสเสจของ ICMP เพื่อทดสอบการเชื่อมต่อจากโฮสต์ IP address 10.0.22.2 ไปยัง
ปลายทางที่ IP address 10.0.20.2 ซึ่งโดยทั่วไปสามารถทำได้ด้วยคำสั่ง ping ซึ่งมีค่า Type = 8 และ Code = 0
ดังแสดงในรูปที่ 19.15



19.4 คำถามท้ายบท



1. จงอธิบายการทำงานของเน็ตเวิร์คแบบ Connectionless และ Connection-Oreinted

2. อะไรคือ Virtual circuit มึข้อดี อย่างไร

3. จงยกตัวอย่างแอพพลิเคชันที่เหมาะสมกับการทำงานของ Virtual Circuit พร้อมทั้งเหตุผล


4. แอดเดรส แบบ Loopback มีประโยชน์อะไร

152 บทที่ 19. NETWORK LAYER



Type Code รายละเอียด
0 0 echo reply (ping)
3 0 destination network unreachable
1 destination host unreachable
2 destination protocol unreachable
3 destination port unreachable
6 destination network unknown
7 destination host unknown
4 0 source quench (congestion control - not used)
8 0 echo request (ping)
9 0 route advertisement
10 0 router discovery
11 0 TTL expired
12 0 bad IP header
book)

ตารางที่ 19.4: ตัวอย่าง ICMP types และ codes ที่นิยมใช้




(partial









only



รูปที่ 19.15: เมสเสจของ ICMP จาก IP address 10.0.22.2 ไปยัง 10.0.20.2
KKU

5. สมมติให้เน็ตเวิร์คหนึ่งมีคลาส C subnet mask เป็น 255.255.240.0 สามารถรองรับโฮสต์ได้สูงสุดเท่าใด
ไม่รวม broadcast และ network แอดเดรส

6. count-to-infinity เกิดขึ้นได้อย่างไร สามารถป้องกันได้อย่างไร


7. จากรูปที่ 21.4 หากมีการติดตั้งการทำงานของ Split-horizon ตารางการเปลี่ยนแปลงของเร้าติ้งเทเบิลใน
21.7 เป็นอย่างไร

8. การทำงานของ OSPF มีการแบ่งออกส่วนย่อยเรียกว่า Area เพื่ออะไร

9. จงเปรียบเทียบข้อดีและข้อเสียของโพรโตคอล RIP และ OSPF


10. จงอธิบายการทำงานของReversePathForwardingเทียบกับการทำงานของReversePathMulticasting

11. การทำงานของมัลติคาสท์แบบ Source-based tree กับ Group-shared Tree ต่างกันอย่างไร

บทที่ 20





DHCP & NAT






book)
20.1 Dynamic Host Configuration Protocol (DHCP)



ในการติดตั้งระบบเครือข่ายปัญหาหนึ่งที่มักเป็นคำถามคือ IP address ของโฮสต์ที่ใช้ควรมีแอดเดรสเป็นอะไร
กำหนดขึ้นได้อย่างไร หนึ่งในวิธีการที่สามารถทำได้ คือการกำหนดขึ้นเองโดยผู้ใช้ เช่น ใน windows สามารถทำได้
(partial
โดยการเข้าไปยังส่วนของ Control panel ไปยัง Network and Internet เลือก Network Adapter ที่ต้องการ จาก

นั้นไปยัง Properties และเลือก TCP/IP ซึ่งทำให้เราสามารถกำหนดค่าของ IP address ที่ต้องการได้ อย่างไรก็ตาม
การทำโดยวิธีนี้อาจทำให้เกิดข้อผิดพลาดขึ้นได้ เช่น การกำหนด IP address ที่ซํ้ากัน เนื่องจากไม่ทราบว่ามีการใช้
แอดเดรสใดบ้างแล้ว การแก้ปัญหานี้ทำให้เกิดโพรโตคอลเรียกว่า Dynamic Host Configuration Protocol หรือ
DHCP โดยการกำหนด IP address จะทำโดยเครื่องเซิร์ฟเวอร์เรียกว่า DHCP server วิธีนี้สามารถลดปัญหาการ
only
ซํ้ากันของ IP address รวมถึงอำนวยความสะดวกให้แก่ผู้ดูแลระบบ อย่างไรก็ตามเนื่องจากโฮสต์ที่ใช้งานแอดเดรส
หนึ่งๆอาจอยู่ในระบบในช่วงเวลาหนึ่งเท่านั้น เพื่อให้หมายเลขที่กำหนดไปแล้วสามารถนำกลับมาใช้ใหม่ได้ ดังนั้น

โฮสต์เมื่อได้รับการกำหนด IP address หนึ่งจะถูกกำหนดเวลาที่สามารถใช้งานได้ หรือเรียกว่า lease time หาก
KKU
เวลานี้หมดลงโดยที่โฮสต์ไม่มีการต่ออายุ (renew) จะทำให้ IP address นั้นถูกนำกลับเข้าสู่ส่วนกลางเพื่อกำหนดให้
กับโฮสต์อื่นที่ร้องขอต่อไป
จากข้อจำกัดของ RARP (หัวข้อที่ 18.2) ทำให้มีการพัฒนาของ BOOTP เป็นการทำงานใน Network Layer
ทำให้สามารถที่จะส่งผ่านในเน็ตเวิร์คได้ และภายหลังพัฒนาเป็น DHCP ในที่นี้ เราจะไม่กล่าวถึง BOOTP เนื่องจาก

ถูกมองว่าเป็นโพรโตคอลเดียวกัน โดยดูได้จากการใช้พอร์ตหมายเลขเดียวกัน (เซิร์ฟเวอร์พอร์ต67 และไคลเอนต์
พอร์ต68) แม้ว่าจะมีบางส่วนต่างกันเล็กน้อย และการใช้งาน DHCP ได้รับความนิยมในการใช้งานอินเทอร์เน็ตเป็น
อย่างมาก รูปที่ 20.1 แสดงรูปแบบของ DHCP เมสเสจเพื่อใช้ในขบวนการกำหนดแอดเดรสของ DHCP


• Opcode: การทำงานเป็นการ Request (1) หรือ Reply (2)


• Htype หรือ Hardware type: กำหนดชนิดของฮาร์ดแวร์เช่น อีเทอร์เน็ต= 1


• Hlen: กำหนดความยาวของฮาร์ดแวร์แอดเดรสเช่นอีเทอร์เน็ต= 6

• HCount: กำหนดจำนวนฮอปที่แพกเกตสามารถส่งผ่าน


• Transaction ID: ใช้ในการสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์ client จะเป็นผู้กำหนด


• Time elapsed: เวลาที่เป็นวินาที ตั้งแต่ไคลเอนต์เริ่มทำงาน (Boot)

153

154 บทที่ 20. DHCP & NAT


0 7 15 23 31
Opcode Htype HLen Hcount


Transaction ID


Client IP Address


Your IP Address


Server IP Address


Gateway IP Address


Client Hardware Address

Server name book)


Boot file name
(partial

Options


รูปที่ 20.1: DHCP Message Format


only
• Flags: มีขนาด 16 บิตแต่ใช้เพียงบิตแรกเท่านั้น ไคลเอนต์เป็นผู้กำหนดว่าต้องการให้ตอบกลับเป็นแบบ
ยูนิคาสท์ (flags = 0) หรือเป็นแบบมัลติคาสท์ (flags = 1) ในกรณีที่ไคลเอนต์ไม่รองรับแอดเดรสใดแอดเดรส
หนึ่งเฉพาะ จนกระทั่งรู้ IP address ของตนเอง
KKU
• Client IP address และ Your IP address: Client IP address และ Your IP address เป็นหมายเลข
เดียวกัน จะใช้ที่ละแอดเดรสเท่านั้น หากไคลเอนต์รู้ IP address ตนเอง จะกำหนด IP address ลงใน
Client IP address หากไม่ทราบจะกำหนดให้เป็น 0 และเซิร์ฟเวอร์จะตอบกลับด้วย IP address โดย
กำหนดลงใน Your IP address


• Your IP address: ดูรายละเอียดใน Client IP address

• Server IP address: กำหนดให้เป็นบรอดคาสท์แอดเดรสหากไคลเอนต์ไม่ทราบ

• Gateway IP address: หมายเลข IP address ของเร้าเตอร์แบบปริยาย (default router)


• Client hardware address: แอดเดรสของฮาร์ดแวร์

• Server name และ Boot file name: ใช้ระบุเครื่อง และไฟล์ที่จะดาวน์โหลด boot image

• Options: DHCP เซิร์ฟเวอร์ใช้ฟิลด์นี้เพื่อเป็นการสื่อสารกับไคลเอนต์(RFC 2132) ในส่วนของการกับ DHCP

Message Type จะใช้หมายเลข 53 ตารางที่ 20.1 แสดงตัวอย่าง DHCP Options และค่าของ DHCP
Message Type


การทำงานของ DHCP สามารถแสดงเป็นขั้นตอนได้ ดังแสดงในรูปที่ 20.2

20.1. DYNAMIC HOST CONFIGURATION PROTOCOL (DHCP) 155





Option Name Opt No. รายละเอียด
Subnet Mask 1 เพื่อใช้กำหนดซับเน็ต mask ของไคลเอนต์
Default Router 3 เพื่อใช้ในการกำหนดรายการ IP address ของเร้าเตอร์
ที่อยู่บน subnet เร้าเตอร์ควรเรียงตามความสำคัญ
DHCP Message Type 53 ระบุถึงประเภทของเมสเสจของ DHCP
พร้อมฟิลด์ Length = 1 และ Value 1 - 8
Value Message Type
1 DHCPDISCOVER
2 DHCPOFFER
3 DHCPREQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNAK
book)
7 DHCPRELEASE
8 DHCPINFORM

ตารางที่ 20.1: DHCP Options
(partial









only





KKU
































รูปที่ 20.2: การทำงานของ DHCP

156 บทที่ 20. DHCP & NAT



1. โฮสต์ทำการบรอดคาสท์ DHCPDISCOVER เมสเสจ เนื่องจากโฮสต์ยังไม่มี IP address ใดๆ จึงกำหนดให้
IP address 0.0.0.0 และส่งไปยังปลายทาง 255.255.255.255

2. DHCP server ตอบกลับด้วย DHCPOFFER เมสเสจพร้อมทั้ง IP address ที่นำเสนอใน Your IP address
ในที่นี้คือ 223.93.168.18


3. โฮสต์ร้องขอ IP address ด้วย DHCPREQUEST เมสเสจด้วย IP address ที่ได้รับ โดยระบุ Client IP
address เป็น 223.93.168.18 คือหมายเลขที่ร้องขอ

4. DHCP server ตอบกลับด้วย DHCPACK เมสเสจ พร้อมทั้ง IP address หากเซิร์ฟเวอร์สามารถกำหนด
หมายเลขที่ร้องขอได้ มิฉะนั้นจะตอบกลับ DHCPNAK หากไม่สามารถกำหนดหมายเลขนั้นได้ และเริ่ม
ขบวนการใหม่อีกครั้ง นอกจากนี้เมสเสจนี้จะถูกส่งออกไปเพื่อให้เซิร์ฟเวอร์อื่นรู้ว่าการร้องขอนี้ได้ถูกยอมรับ
หรือปฏิเสธ



20.2 Network Address Translation (NAT) book)



จากความต้องการใช้เครือข่ายที่สูงขึ้น ทำให้ความต้องการในการใช้ IP Address มีมากขึ้น จนปัจจุบัน IP Address
(partial
ที่กำหนดให้แก่หน่วยงานต่างๆเริ่มลดลง หนึ่งในแนวทางแก้ปัญหาคือการสร้าง IPv6 ขึ้น เพื่อให้มีจำนวนหมายเลขที่
มากขึ้น อย่างไรก็ตามวิธีการดังกล่าวไม่สามารถทำได้โดยทันที เนื่องจากการที่จำเป็นต้องแก้ไขหรือปรับปรุงเร้าเตอร์
ที่ใช้อยู่ทั้งหมดมากกว่า 10 ล้านเครื่องในปัจจุบัน ให้สามารถสนับสนุนการทำงานได้

อีกหนึ่งแนวทางในการแก้ปัญหาคือ การใช้ Network Address Translation หรือ NAT เข้ามาช่วยในการ
จัดการ การใช้งานของ NAT ถือว่าเป็นวิธีการที่แยกส่วนของเครือข่ายทั้งหมดในอินเทอร์เน็ตกับเครือข่ายย่อยใน
only
แต่ละหน่วยงานออกจากกัน โดยมีข้อดีดังนี้

• เราสามารถใช้ IP address เพียงหมายเลขเดียว เพื่อสนับสนุนการทำงานทั้งหมดในเครือข่ายย่อยได้ โดยไม่
จำเป็นต้องกำหนดให้เป็นช่วงตามจำนวนเครื่องที่ต้องการ

• สามารถเปลี่ยนแปลงหมายเลขของ IP address ในเครือข่ายย่อย โดยไม่มีผลต่อการทำงานในภาพรวม
ทั้งหมด KKU


• ผู้ใช้สามารถเปลี่ยนผู้ให้บริการ โดยไม่มีผลใดๆกับเครือข่ายภายใน

• เครื่องที่อยู่ในเครือข่ายย่อยไม่จำเป็นต้องมี IP address ที่ตายตัว เพื่อให้สามารถติดต่อกับเครือข่ายอื่นได้

การทำงานของ NAT อาศัยตารางในการจับคู่ระหว่างโนดที่อยู่ในเครือข่ายกับหมายเลขที่ถูกกำหนดขึ้นจาก
NAT IP Address และ หมายเลขพอร์ตจะถูกจับคู่และบันทึกในตาราง กับ NAT IP address และหมายเลขพอร์ตเมื่อ
ต้นทางต้องการส่งข้อมูล IP Address และ พอร์ตของต้นทางจะถูกแทนที่ด้วย NAT IP address และ หมายเลขพอร์ต
ใหม่ในดาต้าแกรมหลังจากนั้นการสื่อสารของโนดปลายทางจะตอบกลับมายัง NAT IP address และหมายเลขของ

พอร์ตเสมือนเป็นโนดปลายทาง และเมื่อได้ดาต้าแกรมที่ตอบกลับจากปลายทาง NAT IP address และหมายเลข
ของพอร์ตจะถูกตรวจสอบจากที่บันทึกไว้ในตารางเพื่อส่งต่อไปยังโนดที่สื่อสารนั้น
รูปที่ 20.3 แสดงขั้นตอนการทำงานของ NAT เมื่อโนด IP address 192.168.0.1 เป็นเครื่อง PC ของผู้ใช้
ต้องการสื่อสารกับเซิร์ฟเวอร์ ซึ่งสมมติให้มี IP address เป็น 12.119.40.186 สามารถอธิบายได้ดังนี้

1. โฮสต์ 192.168.0.1 ส่งดาต้าแกรมเพื่อสื่อสารกับโนด 12.119.40.186 โนด 192.168.0.1 สร้างดาต้าแกรม
โดยมีแอดเดรสต้นทางเป็น 192.168.0.1 และพอร์ต 3345 (192.168.0.1:3345) และให้โนดปลายทางเป็น

12.119.40.186

20.2. NETWORK ADDRESS TRANSLATION (NAT) 157



























book)







(partial
รูปที่ 20.3: ขั้นตอนการสื่อสารผ่านการทำงานของ NAT (วาดใหม่จาก [28])


2. เมื่อดาต้าแกรมส่งผ่านไปยังเร้าเตอร์ เร้าเตอร์จะเปลี่ยนจากแอดเดรสที่ส่งเป็น 202.76.29.7:8001 พร้อมทั้ง
บันทึกค่านี้ไว้ ดังนั้นในที่นี้โนดต้นทางจะเป็น 202.76.29.7:8001 โดยที่โนดปลายทางเป็นแอดเดรสเดิม


3. เมื่อด้านรับได้รับดาต้าแกรมที่ส่งไป ด้านรับจะตอบกลับมายังแอดเดรสที่ร้องขอ โดยให้แอดเดรสปลาย
only
ทางในที่นี้คือ 202.76.29.7:8001

4. เมื่อส่งผ่านเร้าเตอร์ เร้าเตอร์จะเปลี่ยนแอดเดรสของดาต้าแกรมอีกครั้ง จาก 202.76.29.7:8001 ไปเป็น
KKU
192.168.0.1:3345 ซึ่งเป็นโนดที่ร้องขอ

book)







(partial









only





KKU

บทที่ 21





Routing Algorithms







เร้าติ้งอัลกอริทึมถือว่าเป็นส่วนที่สำคัญที่สุดส่วนหนึ่งที่ทำให้เครือข่ายสามารถที่จะสื่อสารกันได้ และเป็นไปได้อย่าง
book) algorithm ที่ทำหน้าที่ใน
มีประสิทธิภาพมากที่สุด โดยเร้าติ้งอัลกอริทึมส่วนใหญ่ถูกพัฒนาอยู่บน shortest-path
การประมวลผลในการหาเส้นทางที่สั้นที่สุดจากต้นทางไปยังปลายทางอาศัยค่า Cost หรือ Metric ต่างๆ เช่น

• Cost ∼ 1/capacity ที่ซึ่งค่า cost เป็นสัดส่วนแปรผันกับค่าของ link capacity หากค่า capacity ของ
(partial
link มีมากก็จะทำให้ค่า cost ตํ่าลง

• Cost ∼ packet delay ค่า cost เป็นสัดส่วนแปรผันกับค่าของ average packet delay ที่ซึ่งรวมถึงค่า
queue delay ในบัฟเฟอร์ของสวิตซ์และค่าของเวลาหน่วง (delay) ใน link

• Cost ∼ congestion ค่า cost เป็นสัดส่วนแปรผันกับค่าของการเกิด congestion
only

หากเราจะจัดหมวดหมู่ของเร้าติ้งอัลกอริทึมแล้ว เราอาจแบ่งได้เป็นสองแบบหลักคือ 1.โดยการอาศัยการกระจาย
ของข้อมูล ที่เป็นแบบรวมศูนย์ (Centralize, Global) หรือเป็นแบบกระจาย (Distributed) และ 2.การแบ่งการ
KKU
ทำงานของระบบที่เป็นแบบสแตติก (Static) หรือไดนามิก (Dynamic) ซึ่งแต่ละวิธีสามารถอธิบายได้ดังนี้

• Centralize (Global) คือการทำงานของเร้าติ้งโพรโตคอลที่ต้องอาศัยข้อมูลของการเชื่อมโยงทุกโนด เพื่อใช้
ในการคำนวณหาเส้นทางที่ดีที่สุดหรือใกล้ที่สุด อัลกอริทึมที่ใช้หลักการทำงานนี้ได้แก่ Link State

• Decentralized คือการที่เร้าเตอร์รู้เฉพาะข้อมูลจากโนดที่อยู่ติดกับตนเองเท่านั้น โดยข้อมูลที่ใช้ในการ
คำนวณหาเส้นทางต่างๆ อาศัยข้อมูลจากการแลกเปลี่ยนกับโนดที่อยู่ข้างเคียง อัลกอริทึมที่ใช้หลักการ
ทำงานนี้ได้แก่ Distance Vector


• สแตติก (static) คือการติดตั้ง เร้าติ้งโพรโตคอลที่มีการเปลี่ยนการเชื่อมต่อของโนดค่อนข้างตํ่า หรือในหน่วย
งานที่มีจำนวนโนดในเครือข่ายค่อนข้างน้อย


• ไดนามิก (dynamic) เหมาะสมกับการใช้งานเมื่อมีจำนวนโนดอยู่ในเครือข่ายจำนวนมาก หรือมีอัตราการ
เปลี่ยนแปลงของเครือข่ายค่อนข้างสูง



21.1 Static Routing


จากที่กล่าวมาแล้ว Static Routing เหมาะสำหรับเน็ตเวิร์คที่มีขนาดเล็ก ดังนั้นจึงเป็นหน้าที่ของผู้ดูแลระบบในการ

ป้อน routing table การเปลี่ยนแปลงใดๆหลังจากนั้นจำเป็นต้องอาศัยผู้ดูแลระบบในการเข้าไปจัดการ

159

160 บทที่ 21. ROUTING ALGORITHMS



21.1.1 Fixed Routing


การใช้งานของ Fixed Routiing เหมาะกับเน็ตเวิร์คที่มีขนาดเล็ก ทำได้โดยง่าย การติดตั้งค่าให้กับระบบ อาจทำ
แบบถาวร โดยไม่จำเป็นต้องอาศัยข้อมูลที่เกี่ยวกับ เช่น ข้อมูลของทราฟฟิกหรืออื่นๆ การเปลี่ยนแปลงที่เกิดขึ้น อาจ
เกิดจากการเปลี่ยนแปลงของโทโพโลยีของเน็ตเวิร์ค



21.1.2 Source Routing

การทำ Source routing เป็นวิธีที่ค่อนข้างง่าย จากการที่แพกเกตมายังขาเข้าของเร้าเตอร์ จากนั้นเร้าเตอร์จะอ่าน

ค่าของเฮดเดอร์และส่งแพกเกตไปยังขาออก สิ่งที่ควรทราบในการทำงานของ Source routing คือ

• การคาดการณ์ว่าเฮดเดอร์ควรจะมีขนาดเท่าไรค่อนข้างเป็นไปได้ยาก เนื่องจากไม่สามารถทราบขนาดที่
book)
แน่นอนว่าแพกเกตจะถูกส่งผ่านกี่โนด ก่อนจะถึงโนดปัจจุบัน

• การที่การใช้งานของ Source routing ไม่ได้รับความนิยม เนื่องจากปัญหาการใช้งานในเครือข่ายที่มีขนาด
ใหญ่ (Scalability) เนื่องจาก ในเครือข่ายที่มีขนาดใหญ่การจะใช้เฮดเดอร์เพื่อบันทึกข้อมูลที่โนดผ่านค่อน
ข้างเป็นไปได้ยาก
(partial


21.1.3 Flooding


การทำงานของ flooding ค่อนข้างง่ายเช่นกัน โดยการส่งต่อแพกเกตที่ได้รับออกไปยังทุกทิศทางที่มีการเชื่อมต่อ
ยกเว้นเส้นทางที่เป็นขาเข้าของข้อมูลนั้นๆ การทำเช่นนี้ทำให้เกิดข้อมูลจำนวนมากในเครือข่าย แต่ก็มีข้อดีดังนี้คือ
only
• ข้อมูลที่ส่งไปมีโอกาสที่จะถึงปลายทางค่อนข้างสูง แม้ว่าจะเกิดการล่มหรือขัดข้องของเร้าเตอร์


• ไม่จำเป็นต้องมีเร้าติ้งเทเบิลในแต่ละโนด
KKU
• เส้นทางที่สั้นที่สุดถูกเลือกโดยอัตโนมัติ เนื่องจากการทำเส้นทางจะถูกส่งต่อไปพร้อมๆกัน


• การพัฒนาอัลกอริทึมค่อนข้างง่าย และมี overhead ที่ไม่สูง

เพื่อที่จะลดจำนวนแพกเกตที่ถูกส่งต่อกันไปโดยการใช้ flooding การใช้การนับจำนวนของโนด (number of
hops) ที่ถูกส่งผ่านเป็นวิธีหนึ่งในการลดจำนวนของโนดลง เมื่อไรก็ตามหากจำนวนโนดเป็นศูนย์ แพกเกตนั้นจะถูก
ทำลายไป หรือการที่บันทึกหมายเลขของ แพกเกตที่ถูก flood เพื่อป้องกันการถูกส่งซํ้าอีก



21.2 Adaptive Routing



เนื่องจากความไม่ยืดหยุ่นในการใช้เร้าติ้งโพรโตคอลที่เป็นแบบสแตติก จึงมีความจำเป็นในการที่จะพัฒนาเร้าติ้ง
โพรโตคอลที่สามารถปรับเปลี่ยนเนื่องจากปัจจัยที่เกิดขึ้นในเครือข่าย ประกอบด้วยสองปัจจัยหลักคือ


• การขัดข้องของอุปกรณ์ (Failure): เกิดจากการที่อุปกรณ์ในเน็ตเวิร์คเช่นเร้าเตอร์ขัดข้อง หรือเส้นทางการ
เชื่อมต่อเกิดความเสียหาย ทำให้จำเป็นต้องคำนวณหาเส้นทางใหม่ เพื่อทดแทนเส้นทางเดิม

• ความคับคั่งของเน็ตเวิร์ค (Congestion): เกิดจากการที่มีทราฟฟิกแน่นหนาในบางเส้นทาง ทำให้มีการ

ปรับเปลี่ยนของเร้าติ้งเพื่อช่วยให้การส่งข้อมูลมีประสิทธิภาพมากขึ้น

21.2. ADAPTIVE ROUTING 161



อย่างไรก็ตามการทำงานของ adaptive routing มีข้อเสียดังเช่น


• การทำงานในส่วนของการหาเส้นทางค่อนข้างซับซ้อน ทำให้มีความจำเป็นในการใช้การประมวลผลค่อนข้าง
มาก

• การคำนวณเพื่อตัดสินใจหาเส้นทาง โดยมากจะได้รับจากโนดข้างเคียง เนื่องจากหากต้องการข้อมูลจำนวน

ที่มาก เพื่อให้ได้การตัดสินใจที่ถูกต้องก็ต้องแลกมาด้วย overhead บนระบบ ในทางตรงกันข้ามการส่ง
ข้อมูลจำนวนมาก จะทำให้ประสิทธิภาพของระบบเครือข่ายลดลง


• การปรับเปลี่ยนโทโพโลยีของเน็ตเวิร์คที่เร็วเกินไป (Oscillation) หรือช้าเกินไป ทำให้เกิดผลเสียกับระบบ
หรือในบางครั้งอาจทำให้เกิดการไหลวนของข้อมูล (loop) ได้


แม้ว่าการใช้ adaptive routing อาจทำให้เกิดปัญหาต่างๆที่ได้กล่าวมาแล้ว การใช้เร้าติ้งโพรโตคอลทำให้
ประสิทธิภาพในเน็ตเวิร์คดีขึ้น ช่วยในกรณีของความคับคั่งของข้อมูล และลดภาระของผู้ดูแลระบบได้อีกด้วย



21.2.1 The Bellman-Ford-Moore Algorithm book)
(partial
หลักการทำงานของ Bellman-Ford-Moore ค่อนข้างเข้าใจได้ง่าย โดยที่กล่าวว่า หากเรามีปัญหาที่ต้องการแก้หนึ่ง
ปัญหา โดยหากเริ่มต้นจากการแก้ไขเป็นขั้นๆ โดยที่แต่ละครั้งหากมีการแก้ไขปัญหาอย่างดีที่สุด การแก้ไขจนกระทั่ง
ถึงจุดสิ้นสุดก็เป็นวิธีการที่ดีที่สุดของการแก้ปัญหา ตัวอย่างเช่น หากเร้าเตอร์ J อยู่บนเส้นทางที่ดีที่สุดจากเร้าเตอร์ I
ไปยัง เร้าเตอร์ K ดังนั้นเส้นทางที่ดีที่สุด r1 จากเร้าเตอร์ J ไปยังเร้าเตอร์ K จะอยู่บนเส้นทางเดียวกันด้วยเช่นกัน
ถ้าหากมีเส้นทาง r2 จากเร้าเตอร์ J ไปยังเร้าเตอร์ K ที่ดีกว่า r1 (สมมติให้ r2 สั้นกว่า r1) ดังนั้น r2 ต้องเป็นเส้น
ทางที่ดีที่สุด จากเร้าเตอร์ I ไปยัง เร้าเตอร์ K ซึ่งขัดแย้งกับการที่ว่า เส้นทาง r2 เป็นเส้นทางที่ดีที่สุดจากเร้าเตอร์ I
ไปยัง เร้าเตอร์ K only

ในการพิจารณาเส้นทางที่สั้นที่สุด โดยใช้ Bellman-Ford-Moore สมมติให้
KKU

D j เป็นเส้นทางที่สั้นที่สุด จากโนด j เพื่อไปยังโนดปลายทาง

C ij เป็นค่าของเส้นทางระหว่าง โนด i ไปยัง โนด j เพื่อควาามสะดวกในการคำนวณในที่นี้ เราสมมติให้ Cost ของ
ทุกเส้นทางมีความสมมาตรกัน (C ij = C ji) และ C ii มีค่า Cost เป็น 0 และให้ค่าระหว่างโนด i และ k มีค่า

เป็นอนันต์ (∞) หากเส้นทางดังกล่าวไม่ได้ต่อกันโดยตรง

โดยการทำงานของ Bellman-Ford-Moore จะสามารถสรุปได้ดังนี้


1. เริ่มต้น



D i = ∞, ∀i ̸= d (21.1)
D d = 0



2. Updating: ทำที่ทุก i ̸= d

D i = min[c ij + D j ], ∀j ̸= i (21.2)
j

3. ทำข้อ 2 จนกระทั่งไม่มีการเปลี่ยนแปลง

162 บทที่ 21. ROUTING ALGORITHMS



5
1 3
2
2 2
6
3 4
3 3
1
2 5
4

รูปที่ 21.1: เน็ตเวิร์คเพื่อประกอบการทำงานของอัลกอริทึม Bellman-Ford-Moore




จากรูป 21.1 ในที่นี้ หากสมมติว่า เราทราบค่า Cost ของทุกเส้นทางเพื่อไปยังโนด 6 จะทำให้เราได้เส้นทางที่
book)
สั้นที่สุดเป็น





D 1 = min{C 12 + D 2 , C 14 + D 4 , C 13 + D 3 } (21.3)
(partial
= min{3 + 4, 2 + 4, 5 + 2}

= 6
D 2 = min{C 21 + D 1 , C 24 + D 4 , C 25 + D 5 }

= min{3 + 6, 1 + 4, 4 + 3}

= 5
D 3 = only
min{C 36 }
= 2
KKU = min{2 + 6, 1 + 5, 2 + 2, 3 + 3}
D 4 =
min{C 41 + D 1 , C 42 + D 2 , C 43 + D 3 , D 45 + D 5 }


=
4
D 5 =
= min{C 56 }
3




หากพิจารณาการทำงานของ Bellman-Ford-Moore เพื่อหาเส้นทางที่สั้นที่สุดจากทุกโนดไปยังโนด 6 ที่ละ
ขั้นตอน เราจะได้ค่าเริ่มต้นตามตารางที่ 21.1


Iteration โนด 1 โนด 2 โนด 3 โนด 4 โนด 5
ค่าเริ่มต้น (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)

ตารางที่ 21.1: การกำหนดค่าเริ่มต้น



โดย (n, D i) หมายถึง ให้ n เป็นโนดถัดไปเพื่อไปยังโนดปลายทาง ที่มีค่าของ Cost เป็น D i เพื่อไปยังปลายทาง


ที่ n นั้น ในที่นี้ -1 หมายถึงยังไม่มีข้อมูลใด หรือไม่เชื่อมต่อ ทำให้ได้ค่า cost เป็น ∞

21.2. ADAPTIVE ROUTING 163



เนื่องจากมีโนด 3 และ 5 เท่านั้นที่อยู่ติดกับโนด 6 ดังนั้นการทำงานของรอบที่ 1 จะได้ค่าตามตาราง 21.2 ซึ่ง
หมายถึง ที่โนด 3 โนดถัดไปคือ โนด 6 มีค่า cost เท่ากับ 2 และที่โนด 5 โนดถัดไปคือ โนด 6 มีค่า cost เป็น 3 เพื่อ
ไปหาโนดปลายทาง โดยที่โนดปลายทางในที่นี้ก็เป็นโนด 6 นั่นเอง




Iteration โนด 1 โนด 2 โนด 3 โนด 4 โนด 5
ค่าเริ่มต้น (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)
1 (-1, ∞) (-1, ∞) (6,2) (-1, ∞) (6,3)

ตารางที่ 21.2: การกำหนดค่าเริ่มต้น






ในรอบถัดมา พบว่าโนด 1, 2 และ 4 มีเส้นทางเชื่อมต่อกับ โนด 3 และ 5 ทำให้ได้เราการอัพเดตเส้นทางเพื่อไป
ยังโนด 6 ทำให้สามารถคำนวณเส้นทางจาดโนด 4 ไปยังโนด 6 ได้ดังนี้ book)




(partial


D 1 = min{C 12 + D 2 , C 13 + D 3 , C 14 + D 4 } (21.4)
= min{3 + ∞, 5 + 2, 2 + ∞}

= 7
D 2 = min{C 21 + D 1 , C 24 + D 4 , C 25 + D 5 }

= min{3 + ∞, 1 + ∞, 4 + 3}
= only 7
KKU = min{5 + ∞, 1 + ∞, 2 + 2, 3 + 3}
D 4 =
min{C 41 + D 1 , C 42 + D 2 , C 43 + D 3 , C 45 + D 5 }


=
4





สังเกตว่า เนื่องจากในการทำงานรอบที่ 2 นี้ โนด 1, 2 และ 4 ยังไม่ทราบเส้นทางเพื่อไปยัง โนด 6 เนื่องจากได้รับ
การอัพเดตพร้อมๆกัน ทำให้เราได้ค่าในรอบนี้ตามตารางที่ 21.3 ถัดมาเมื่อค่า Cost ของโนด 1, 2 และ 4 มีการ




Iteration โนด 1 โนด 2 โนด 3 โนด 4 โนด 5
ค่าเริ่มต้น (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)
1 (-1, ∞) (-1, ∞) (6,2) (-1, ∞) (6,3)
2 (3, 7) (5, 7) (6,2) (3,4) (6,3)

ตารางที่ 21.3: แสดงการเชื่อมต่อของเน็ตเวิร์คโดยการใช้ Bellman-Ford-Moore

164 บทที่ 21. ROUTING ALGORITHMS



เปลี่ยนแปลง ทำให้เกิดการอัพเดตอีกครั้งจากโนดทั้ง 3 จะทำให้เราได้



D 1 = min{C 12 + D 2 , C 13 + D 3 , C 14 + D 4 } (21.5)
= min{3 + 7, 5 + 2, 2 + 4}
= 6

D 2 = min{C 21 + D 1 , C 24 + D 4 , C 25 + D 5 }

= min{3 + 7, 1 + 4, 4 + 3}
= 5

D 4 = min{C 41 + D 1 , C 42 + D 2 , C 43 + D 3 , C 45 + D 5 }
= min{5 + 7, 1 + 7, 2 + 2, 3 + 3}
book)
= 4





Iteration โนด 1 โนด 2 โนด 3 โนด 4 โนด 5
ค่าเริ่มต้น (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)
1 (-1, ∞) (-1, ∞) (6,2) (-1, ∞) (6,3)
2 (3, 7) (5, 7) (6,2) (3,4) (6,3)
3 (4, 6) (partial (6,2) (3,4) (6,3)
(4, 5)
ตารางที่ 21.4: แสดงการเชื่อมต่อของเน็ตเวิร์คโดยการใช้ Bellman-Ford-Moore
only


จะเห็นว่าการทำ Iteration เสร็จสิ้นเมื่อทำครบ 3 รอบหลังจากไม่มีโนดที่ต้องหาอีก หรือไม่มีการเปลี่ยนแปลง
ของตารางเกิดขึ้น การทำงานของ Bellman-Ford จะค่อยๆเพิ่มจำนวนของฮอปขึ้นไปเรื่อยๆ จนกระทั่งครบทุกโนด
KKU
ซึ่งในกรณีนี้ เนื่องจากเน็ตเวิร์คมีขนาดเล็ก ทำให้สามารถทำได้รวดเร็วเพียง 3 รอบเท่านั้น
ข้อดีในการใช้ Bellman-Ford-Moore คือเป็นการทำงานแบบกระจาย (distributed) โดยแต่ละโนดจะคำนวณ
หาค่าของเส้นทางที่สั้นที่สุดอิสระต่อกัน และบรอดคาสท์ออกไปยังทุกโนดที่อยู่ติดกับตนเอง การบรอดคาสท์ค่าของ
Cost ตํ่าสุดออกไปจะทำให้การหาค่าเร้าติ้งเทเบิลทำได้เร็วขึ้น ซึ่งในที่นี้เป็นการทำ Triggered updates หลังจาก
การทำงานเสร็จสิ้น จะทำให้โนดทุกโนดมีค่า cost ที่ตํ่าที่สุดไปยังโนดปลายทาง พร้อมทั้งโนดที่อยู่ถัดไป จะเห็น

ว่าการทำงานของอัลกอริทึม Bellman-Ford อาศัยค่าของระยะทางเป็นหลัก (จำนวนฮอบ) ทำให้บางครั้งเราเรียก
ว่า
อัลกอริทึม Bellman-Ford ว่าอัลกอริทึม Distance Vector



Link Failure


สมมติว่าหลังจากการทำงานของอัลกอริทึมเสร็จสิ้น การเชื่อมต่อระหว่างโนด 3 และ โนด 6 มีปัญหาคือการเชื่อม
ต่อขาด สมมติให้โนดทุกโนดคำนวณหาเส้นทางใหม่ทันทีที่ได้รับการเปลี่ยนของเน็ตเวิร์คเกิดขึ้น โดยโทโพโลยีของ
เน็ตเวิร์คหลังจากการเชื่อมต่อขาดลง แสดงได้ในรูปที่ 21.2
โดยเมื่อโนด 3 พบว่าการเชื่อมต่อระหว่าง (3,6) ขาดลง โนด 3 คำนวณหาเส้นทางไปยังโนด 6 ใหม่ ทำให้ได้
เส้นทางใหม่คือไปยังโนด 4 โดยจะมีค่าเป็น 5 ดังแสดงในการ Iteration ครั้งแรกหลังจากพบว่าการเชื่อมโยงขาดลง

และส่งค่าเส้นทางที่ได้ใหม่นี้ไปยังโนดอื่นๆ โดยสามารถแสดงการทำงาน จนเสร็จสิ้นได้ดังในตารางที่ 21.2

21.2. ADAPTIVE ROUTING 165



5
1 3
2 2
6
3 4
3 3
1
2 5
4

รูปที่ 21.2: การเชื่อมต่อระหว่างโนด 3 และ 6 ขาดลง


Iteration โนด 1 โนด 2 โนด 3 โนด 4 โนด 5
ค่าก่อนการเชื่อมขาด (3, 3) (4, 4) (6,1) (3,3) (6,2)
1 (3, 3) (4, 4) (4,5) (3,3) (6,2)
2 (3, 7) (4, 4) (4,5) (2,5)
3 (3, 7) (4, 6) (4,7) (2,5) (6,2)
(5,5)
(6,2)
4 (2, 9) (4, 6) (4,7) book) (6,2)
5 (2, 9) (4, 6) (4,7) (5,5) (6,2)
ตารางที่ 21.5: แสดงการเปลี่ยนแปลงหลังจากการเชื่อมต่อระหว่างโนด 3 และ โนด 6 ขาดลง



Count-to-infinity (partial

ปัญหาหนึ่งของการใช้อัลกอริทึม Bellman-Ford หรือ Distance Vector คือปัญหาของ Count-to-Infinity ซึ่งเป็น
only
ความล่าช้าของการทำงานของการใช้อัลกอริทึมนี้ เมื่อพบว่ามีโนดใดโนดหนึ่งขาดลด


ตัวอย่าง 21.1 สมมติให้เน็ตเวิร์คมีโทโพโลยีดังรูปที่ 21.3 สมมติมีการเชื่อมต่อจากโนด 1 เข้ามายังเน็ตเวิร์ค จะ
KKU รูปที่ 21.3: เมื่อมีการเชื่อมต่อจากโนด 1
ทำให้มีการอัพเดตของเร้าติ้งเทเบิลดังตารางที่ 21.6










Iteration โนด 2 โนด 3 โนด 4 โนด 5
ค่าเริ่มต้น (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)
1 (1,1 ) (-1, ∞) (-1, ∞) (-1, ∞)
2 (1, 1) (2, 2) (-1, ∞) (-1, ∞)
3 (1, 1) (2, 2) (3, 3) (-1, ∞)
4 (1, 1) (2, 2) (3, 3) (4, 4)


ตารางที่ 21.6: การอัพเดตของเร้าติ้งเทเบิลเมื่อมีการเชื่อมต่อจากโนด 1


จากนั้นสมมติให้เส้นทางระหว่างโนด 1 และ 2 ขาดลง ดังรูปที่ 21.4 การอัพเดตของเร้าติ้งเทเบิลจะเกิดขึ้น
ตารางที่
จากตาราง 21.7 จะเห็นว่าแต่ละโนดจะเปลี่ยนแปลงค่าของตนเอง โดยที่โนด 2 เข้าใจว่าเส้นทางที่จะไปยังโนด

1 สามารถทำได้โดยผ่านทางโนด 3 และจึงทำการเปลี่ยนแปลงค่าในตารางในรอบที่ 1

166 บทที่ 21. ROUTING ALGORITHMS







รูปที่ 21.4: เมื่อเส้นทางระหว่างโนด 1 และ 2 ขาดลง

Iteration โนด 2 โนด 3 โนด 4 โนด 5
ก่อนขาด (1, 1) (2, 2) (3, 3) (4, 4)
1 (3,3) (2, 2) (3, 3) (4, 4)
2 (3,3) (2, 4) (3, 3) (4, 4)
3 (3,5) (2, 4) (3, 5) (4, 4)
4 (3,5) (2, 6) (3, 5) (4, 6)
5 (3,7) (2, 6) (3, 7) (4, 6)
... ... ... ... ...
n (-1, ∞) (-1, ∞) (-1, ∞) (-1, ∞)
book)
ตารางที่ 21.7: การเปลี่ยนแปลงเร้าติ้งเทเบิล เนื่องจากการเชื่อมต่อระหว่างโนด 1 และ 2 ขาดลง


เมื่อมีการเปลี่ยนแปลงค่าเกิดขึ้น โนด 2 ส่งค่าที่มีการเปลี่ยนแปลงไปยังโนดข้างเคียง ทำให้โนด 3 ต้องคำนวณ
ใหม่เพื่อไปยังโนด 1 ทำให้มีการเปลี่ยนแปลงในการทำงานรอบที่ 2 จากการเปลี่ยนแปลงนี้ โนด 3 จะส่งค่าที่ได้

ใหม่ไปยังโนดข้างเคียง ในกรณีนี้คือโนด 2 และโนด 4 ทำให้ทั้งสองโนดคำนวณค่าเพื่อไปยังโนด 1 ใหม่ มีผลทำให้
เกิดการเปลี่ยนแปลงข้อมูลในรอบที่ 3 โดยการเปลี่ยนแปลงนี้จะดำเนินไปอย่างช้าๆ และไม่สิ้นสุด ทำให้เป็นที่มีของ
ปัญหาที่เรียกว่า Count­to­infinity (partial


Split-Horizon
only
เพื่อหลีกเลี่ยงปัญหานับถึงอนันต์ หรือ Count-to-infinity จึงได้มีการใช้งานของ Split-Horizon เพื่อแก้ปัญหาที่

เกิดขึ้น โดยหลักการที่ใช้คือ การที่ไม่ส่งเส้นทางที่สั้นที่สุดไปยังโนดที่อยู่ติดกัน ถ้าหากโนดนั้นเป็นโนดถัดไปบนเส้น
ทางที่สั้นที่สุดเพื่อไปยังโนดปลายทาง หมายความว่าจากรูปที่ 21.3 โนด 2 จะไม่ส่งเส้นทางไปยังโนด 1 ไปกลับไป
KKU
ให้โนด 1 โดยเด็ดขาด และโนด 3 จะไม่ส่งเส้นทางไปยังโนด 1 ไปให้โนด 2 เช่นกัน


Split-Horizon with Poison Reverse


จากการทำงานของ Split-Horizon ที่จะไม่ส่งข้อมูลไปให้โนดที่อยู่บนเส้นทางที่สั้นที่สุดแล้ว ยังมีการเพิ่มเติม โดยจะ
ส่งค่าที่เป็นอนันต์ (∞) ไปให้อีกด้วย ซึ่งในที่นี้เสมือนการส่งยาพิษไปให้ ทำให้เรียกว่า Split­Horizon with Poison
Reverse


21.2.2 Dijkstra's Algorithm


อัลกอริทึม Dijkstra เป็นอีกหนึ่งอัลกอริทึมที่นิยมใช้เพื่อหาระยะทางที่สั้นที่สุด แนวคิดพื้นฐานของอัลกอริทึมนี้
จะค่อนข้างแตกต่างจากของอัลกอริทึม Bellman-Ford ซึ่งแทนที่การทำงานของอัลกอริทึมจะบอกถึงโนดถัดไป

เหมือนในของอัลกอริทึม Bellman-Ford การทำงานของอัลกอริทึม Dijkstra จะคำนวณหาเส้นทางเพื่อไปยังปลาย
ทางโดยตรงด้วยตนเอง จากข้อมูลที่ได้จากโนดที่อยู่ติดกันทั้งหมด ทำให้ทราบเส้นทางที่ใกล้ที่สุดจากตนเองไปยังทุก
โนดที่อยู่บนเน็ตเวิร์ค[33]
สมมติให้


• N c เป็นเซ็ตของโนดที่ต่อไปยังปลายทาง

21.2. ADAPTIVE ROUTING 167



• D j เป็นระยะทางโดยประมาณจากของโนด j จากปลายทาง

เริ่มต้นให้ N c = 1, D 1 = 0, D j = ∞ โดยที่ j ̸= 1 โดยการทำงานเป็นสองขั้นตอนดังนี้


ขั้นตอนที่ 1 :(หาโนดที่อยู่ใกล้ที่สุด) โดยที่ j /∈ N c ดังนั้น


D i = min[D j , D i + c ij ]
j∈N

ถ้าค่าที่น้อยที่สุดมีค่าเท่ากับ D j ในรอบที่แล้ว ไม่ต้องแก้ไขโนดที่คำนวณผ่านมาแล้ว แต่หากพบโนด i ที่มีค่า
cost ที่ตํ่ากว่าให้แก้ไขโนดก่อนหน้าใหม่

ขั้นตอนที่ 2 :(ทำการปรับปรุงค่า.) หา i /∈ N c ให้


D i = min[D j ]
book)
i/∈N c

ให้ N c เป็น N c ∪ i ถ้า N c ครอบคลุมโนดทั้งหมดแล้วให้หยุด ถือว่าการทำงานสมบูรณ์แล้ว มิฉะนั้นให้ ไปที่
ขั้นตอนที่ 1

ตัวอย่าง 21.2 สมมติว่าเรามีเน็ตเวิร์คดังแสดงในรูปที่ 21.5 โดยในที่นี้สมมติให้โนด 1 ต้องการหาเส้นทางไปยังทุก

โนดในเน็ตเวิร์ค ดังนั้น เราจะได้ค่า N c = 1 เมื่อพิจารณาโนดที่อยู่ติดกับโนด 1 จะทำให้เราได้ D 12 = 1, D 14 = 1 และ
D 13 = D 15 = D 16 = ∞ (partial


2 2 3 1
only 1
1


1 1 1 1 1 6
KKU 4 2 5 10






รูปที่ 21.5: เน็ตเวิร์คในการคำนวณโดยใช้อัลกอริทึม Dijkstra



เนื่องจาก D 12 = 1 และ D 14 = 1 เท่ากัน เราสามารถเลือกโนดใดโนดหนึ่งก็ได้ ในที่นี้เราเลือกโนด 2 จะทำให้เรา
ได้ N c = 1, 2 หลังจากนั้นหาโนดที่อยู่ติดกับโนด 2 ที่ยังไม่อยู่ในเซ็ตของ N c = 1 จะได้



D 13 = min[D 13 , D 12 + d 23 ] = min[∞, 1 + 2] = 3

D 14 = min[D 14 , D 12 + d 24 ] = min[1, 1 + 1] = 1
จะเห็นว่าโนด 4 มีค่าตํ่าสุด ดังนั้นเราจะได้ N c = 1, 2, 4 โดยเราสามารถสรุปขั้นตอนการทำงานได้ดังแสดงใน
ตารางที่ 21.8

168 บทที่ 21. ROUTING ALGORITHMS













S = {1} 2 S = {1,2} 2 3

1 1


4 4
(a) (b)


S = {1,2,4} S = {1,2,4,3}
2 3 2 3
6
1 book) 6
1

(partial
4 5 4 5
(c) (d)

รูปที่ 21.6: ขั้นตอนการหาเส้นทางที่สั้นที่สุดโดยใช้อัลกอริทึม Dijkstra



only





KKU










Iteration N c N 12 path N 13 path N 14 path N 15 path N 16 path
1 {1} 1 1-2 ∞ - 1 1-4 ∞ - ∞ -
2 {1,2} 1 1-2 3 1-2-3 1 1-4 ∞ - ∞ -
3 {1,2,4} 1 1-2 2 1-4-3 1 1-4 3 1-4-5 16 1-4-6
4 {1,2,4,3} 1 1-2 2 1-4-3 1 1-4 3 1-4-5 3 1-4-3-6
5 {1,2,4,3,5} 1 1-2 2 1-4-3 1 1-4 3 1-4-5 3 1-4-3-6
6 {1,2,4,3,5,6} 1 1-2 2 1-4-3 1 1-4 3 1-4-5 3 1-4-3-6

ตารางที่ 21.8: การทำงานของอัลกอริทึม Dijkstra

บทที่ 22





Interior Routing Protocol






book)
การทำงานของอัลกอริทึม Bellman-Ford-Moore และ Dijkstra เป็นพี้นฐานที่สำคัญในการพัฒนาโพรโตคอลเพื่อ
ใช้ในทางปฏิบัติ นอกเหนือความเข้าใจของอัลกอริทึมที่ใช้ การพัฒนาของโพรโตคอลจำเป็นต้องมีข้อกำหนดเพิ่มเติม
ตั้งแต่รูปแบบของโพรโตคอล การแลกเปลี่ยนข้อมูลระหว่างโนด หรืออื่นๆที่อาจเกี่ยวข้อง ในที่นี้เราจะได้กล่าวถึง 2
โพรโตคอลหลักที่ถูกใช้งานในอินเทอร์เน็ตได้แก่ Routing Information Protocol (RIP) ทำงานอยู่บนพื้นฐานขอ
(partial
งอัลกอริทึม distance-vector และ Open Shortest Path First (OSPF) บนพื้นฐานของอัลกอริทึม Link-State


22.0.1 Routing Information Protocol (RIP)

RIP ได้รับการพัฒนาโดย Xerox Network System (XNS) และถูกใช้งานอย่างแพร่หลาย เนื่องจากเป็นส่วนหนึ่ง
ของ Berkeley Software Distribution (BSD) บน UNIX เพื่อใช้งานกับ TCP/IP การทำงานของ RIP แตกต่างจาก
only
ของ OSPF โดยสิ้นเชิง โดยที่ใน OSPF จะกระจาย (flood) ข้อมูลของ neighbor ไปในเน็ตเวิร์คดังจะได้กล่าวต่อ
ไป แต่ในการทำงานของ RIP จะทำงานในลักษณะตรงข้ามคือ จะส่งข้อมูลของเน็ตเวิร์คทั้งหมดไปให้กับ neighbor
เท่านั้น
KKU
การทำงานของ RIP ถูกพัฒนาในลักษณะที่เป็น background โปรเซสบน UDP ที่พอร์ต 520 เรียกว่า routed
ใน BSD แม้ว่าการทำงานของ RIP จะเป็นโพรโตคอลที่ใช้เพื่อสนับสนุนการส่งผ่านแพกเกต แต่ RIP จะถูกห่อหุ้ม

(encapsulated) ใน UDP datagram และใส่เข้าไปใน IP แพกเกต ดังนั้น การทำงานของ RIP จะอยู่ใน Application
Layer แต่ใช้เพื่อสร้างตารางในการส่งข้อมูลใน Network Layer อย่างไรก็ตาม เนื่องจาก RIP ทำงานบน UDP ทำให้
ไม่สามารถบอกได้ว่า Routing Information message ที่ถูกส่งออกไปถึงผู้รับหรือไม่
ปัจจุบัน RIP ถือว่าเป็นโพรโตคอลที่ได้รับความนิยมสำหรับเน็ตเวิร์คขนาดเล็ก จะเห็นได้จากใน DSL หรือเคเบิล
โมเด็มทั่วไป สนับสนุนการการทำงานของ RIP ทำให้หากเราต้องการที่จะสร้างเน็ตเวิร์คภายในบ้านหรือสำนักงาน
เราสามารถใช้เร้าเตอร์จำนวนหลายตัวและใช้ RIP เป็นเร้าติ้งโพรโตคอลได้
RIPมีด้วยกันสองเวอร์ชันคือRIPv1และRIPv2โดยRIPv2 เพิ่มเติมการทำงานของRIPv1ที่สำคัญคือทำให้RIP

สามารถรองรับการทำงานของ VLSM และ CIDR ได้ การเพิ่มเติมส่วนของ การพิสูจน์ทราบตัวตน (authentication)
การเพิ่มเติมในส่วนนี้เพื่อให้เร้าเตอร์สามารถตรวจสอบความน่าเชื่อถือของเมสเสจ (message) ที่ได้รับ


RIP Message

RIPv2ถูกพัฒนาเพื่อต่อยอดการทำงานของRIPv1เพื่อให้สามารถรองรับการทำงานของVLSMและการเปลี่ยนแปลง
RIP message เพื่อให้รองรับการทำการพิสูจน์ทราบตัวตน (authentication) และการทำมัลติคาสท์อย่างไรก็ตาม
ปัจจุบันเร้าเตอร์ส่วนใหญ่จะรองรับการทำงานของ RIPv2 แล้ว แต่ยังคงรองรับการติดตั้งค่าให้ทำงานแบบ RIPv1

ได้เช่นกัน รูปที่ 22.1 แสดงรูปแบบของ RIPv2 message

169

170 บทที่ 22. INTERIOR ROUTING PROTOCOL


0 7 13 15 31
Command Version Unused


Address Family of net 1 Route Tag 







IP address of net 1 







Subnet mask of net 1 20 ไบต์




Next Hop 







Hop Distance Matric to net 1 



. . .
book)
Address Family of net N Route Tag
IP address of net N
(partial
Subnet mask of net N
Next Hop
only
Hop Distance Matric to net N

รูปที่ 22.1: รูปแบบของ RIPv2 เมสเสจ
KKU
• Command: เพื่อระบุว่าเมสเสจที่ส่งเป็น request(1) หรือ response (2) การอัพเดทใน RIP ทั่วไปจะ
เป็นการส่งเหมือนเป็นเมสเสจ response ในกรณีของ request จะใช้กรณีที่เร้าเตอร์ต้องการสอบถามเส้น

ทางจาก neighbor

• Version: ประกอบด้วยสองเวอร์ชันใน IPv4 ใน IPv6 จะเป็น RIPng


• Unused: ใน RIPv2 ไม่ได้ใช้งานใดๆ แต่ใน RIPv1 จะต้องเป็นศูนย์หมดเท่านั้น (must-be-zero)


• Route Tag (RIPv2): เพื่อใช้แยกระหว่างเส้นทางภายในเน็ตเวิร์ค RIP เป็นแบบ internal route หรือ
external route แบบ internal route จะเกิดขึ้นจากการเรียนรู้ของ RIP เอง หากเป็น external route
เป็นการเรียนรู้จาก OSPF หรือ BGP


• Address Family Identifier (AFI): กำหนดรูปแบบของแอดเดรสที่ใช้ หากเป็น IP address จะถูกกำหนด
เป็น 2 ในช่วงเริ่มต้น การออกแบบเพื่อใช้กับรูปแบบแอดเดรสแบบอื่นๆด้วย แต่ไม่ได้ถูกนำไปใช้


• IPaddress: จากฟิลด์นี้ไปจนกระทั่งMetricสามารถจะถูกใส่ซํ้าได้25ครั้ง(ถ้าไม่มีการทำauthentication)
ในฟิลด์นี้จะคล้ายกับของRIPv1ซึ่งIPaddressนี้อาจเป็นโฮสต์ (hostroute) เน็ตเวิร์คแอดเดรส(network

address) หรือ default router

171



• Subnet Mask (RIPv2): เพื่อใช้กำหนด subnet mask ที่ใช้กับ IP address ทำให้สามารถรองรับการทำงาน
ของ VLSM ได้ หากไม่ได้ใช้ subnet mask ที่แตกต่างจากแบบที่เป็นคลาสมาตรฐาน (A, B และ C) สามารถ
กำหนดให้เป็นศูนย์ทั้งหมดเสมือนเป็น RIPv1 (RIPv1 กำหนดฟิลด์นี้เป็น must-be-zero)


• NextHop(RIPv2): ฮอปถัดไปเพื่อที่จะไปIPaddressที่ระบุไว้ในRIPv1กำหนดฟิลด์นี้เป็นmust-be-zero
เช่นกัน

• Metric: จำนวนฮอป มีค่าระหว่าง 1 ถึง 16 หากมีค่าเป็น 16 แสดงว่าไม่มีทางไป (unreachable) หรือมีค่า

เป็นอนันต์ (infinity)


การทำงานทั่วไป

โดยทั่วไปการทำงานของโพรโตคอล RIP จะเป็นดังนี้ [33]
book)

• การทำงานทั่วไปเมื่อได้รับแพกเกต: หากฟิลด์ใดฟิลด์หนึ่งของ RIP ที่ต้องเป็นศูนย์ (must-be-zero) แต่ไม่
เป็นศูนย์ หรือฟิลด์ของเวอร์ชันเป็นศูนย์ แพกเกตนั้นจะถูกกำจัดทิ้งไป


• การทำงานเริ่มต้น: เร้าเตอร์จะบรอดคาสท์ request message ออกไปยังทุกอินเตอร์เฟซที่ใช้ neighbor
(partial
ของเร้าเตอร์ดังกล่าวจะตอบกลับ โดยใช้พื้นฐานของ split horizon โดยข้อมูลของเร้าติ้งเทเบิลที่ได้จะถูก
เรียนรู้ และอัพเดทในเร้าเตอร์


• การอัพเดทข้อมูล: ปกติการอัพเดทของเร้าติ้งเทเบิลจะทำที่ประมาณทุก 30 วินาที เรียกว่า autoupdate
timer เมสเสจจะถูกส่งออกไปในresponsemodeเร้าติ้งเทเบิลจะถูกอัพเดทโดยใช้อัลกอริทึมdistributed
only
Bellman-Ford และมีเส้นทางที่ดีที่สุดเพียงเส้นทางเดียวที่ถูกจัดเก็บสำหรับแต่ละปลายทาง


• Triggered update: หากมีเปลี่ยนแปลงของ metric เกิดขึ้น เมสเสจ (RIP messge) จะถูกส่งออกไปเฉพาะ
KKU
เน็ตเวิร์คที่มีการเปลี่ยนแปลงเท่านั้น

• การกำจัดเส้นทางที่หมดอายุ (route expiration): โดยทั่วไป route expiration จะถูกตั้งค่าอยู่ที่ 180
วินาที หากเส้นทางใดไม่ได้รับการอัพเดทในช่วงเวลาดังกล่าว จะถูกปรับเป็นค่าอนันต์ (infinity) เพื่อถูก
กำจัดทิ้งไป อย่างไรก็ตาม เส้นทางดังกล่าวจะถูกเก็บไว้อีก 60 วินาทีก่อนที่จะกำจัดทิ้งไป เรียกช่วงเวลาดัง
กล่าวว่า garbage collection timer หรือ flush timer


ในการทำงานข้างต้นอยู่บนพื้นฐานของ RIPv1 โดยที่ RIPv2 จะส่ง RIP message ออกไปในลักษณะที่เป็นแบบมัลติ
คาสท์ ที่ multicast address 224.0.0.9 แทนที่จะเป็นการส่งแบบบรอดคาสท์รูปที่ 22.2 และ 22.3 แสดง RIP
message ของเวอร์ชัน 1 และเวอร์ชัน 2 ตามลำดับ














รูปที่ 22.2: RIPv1 Request message

172 บทที่ 22. INTERIOR ROUTING PROTOCOL


















รูปที่ 22.3: RIPv2 Request message



สมมติให้เน็ตเวิร์คมีโทโพโลยีดังแสดงในรูปที่ 22.4 โดยการใช้งาน RIPv1 เราจะได้ Reponse message ดัง

แสดงในรูปที่ 22.5 จาก IP address 10.0.41.2 ไปยัง IP address 10.0.41.1 เพื่อตอบกลับ Resquest message
book)
ในรูปที่ 22.2






(partial





รูปที่ 22.4: เน็ตเวิร์คโทโพโลยีสำหรับการทดสอบ RIP


only





KKU



















รูปที่ 22.5: RIPv1 Response message






การพิสูจน์ทราบตัวตน (Authentication)

จากที่ได้กล่าวมาแล้วส่วนสำคัญที่เพิ่มเติมใน RIPv2 คือการทำการพิสูจน์ทราบตัวตน (authentication) ทำให้
สามารถลดความเสี่ยงของการอัพเดทที่อาจผิดพลาดหรือการถูกโจมตี โดย RIP จะใช้คีย์ขนาด 128 บิต เพื่อเข้ารหัส

อัพเดทเทเบิล ทำให้ในการอัพเดทแต่ละครั้งจะสามารถรองรับได้สูงสุด 24 ชุดเท่านั้น

173



22.0.2 Open Shortest Path First (OSPF)


การทำงานของ OSPF จะแตกต่างจาก RIP โดยสิ้นเชิง พื้นฐานการทำงานของ OSPF อาศัย link state โพรโตคอล
เพื่อสื่อถึงสภาวะของเน็ตเวิร์คในการคำนวณหาเส้นทางที่สั้นที่สุดไปยังปลายทาง สภาวะของเน็ตเวิร์คเช่น เส้นทางที่
มีทรูพุตสูงสุด เวลาหน่วงตํ่าสุด ค่าใช้จ่ายตํ่าสุด เส้นทางที่มีความน่าเชื่อถือสูงสุดเป็นต้น ถือว่าเป็นการพัฒนาที่มิใช่
สามารถเพียงจำนวนฮอปเท่านั้น

การทำงานของโพรโตคอล link state นี้มีการทำงานโดยสรุปอย่างง่าย 3 ขั้นตอนคือ


ขั้นที 1 เรียนรู้ข้อมูลจาก neighbor ในที่นี้เร้าเตอร์จะรวบรวมข้อมูลจาก neighbor ที่อยู่ติดกันเท่านั้น โดยการส่ง
แพกเกตออกไปในทุกอินเตอร์เฟซ แพกเกตที่ส่งไปนี้เรียกว่า hello packet


ขั้นที่ 2 เมื่อทราบถึง neighbor ของตน เร้าเตอร์กระจาย (flood) ข้อมูลที่ทราบออกไปให้กับเร้าเตอร์อื่นที่อยู่
book)
ในเน็ตเวิร์ค ข้อมูลที่ส่งไปจะอยู่ในรูปแพกเกตเรียกว่า link state advertisements หรือ LSA ในทำนอง
เดียวกันเร้าเตอร์ทุกตัวจะส่ง (flood) แพกเกตนี้ออกไป สุดท้ายทุกโนดทราบข้อมูล neighbor ของเร้า
เตอร์อื่นรวมถึงของตนเพื่อใช้คำนวณโทโพโลยีของเน็ตเวิร์ค ข้อมูลที่ได้นี้จะถูกใช้ในการสร้าง link state

database ของเน็ตเวิร์ค


(partial เพื่อใช้ในการคำนวณหาเส้นทางไปยังเร้าเตอร์
ขั้นตอนสุดท้าย เร้าเตอร์อาศัยข้อมูลของ link state database
ทั้งหมด อัลกอริทึมที่ใช้ในการคำนวณในที่นี้คือ Dijkstra's algorithm


เพื่อเรียนรู้เส้นทางทั้งหมดในเน็ตเวิร์ค OSPF กระจายข้อมูลทั้งหมดไปยังเน็ตเวิร์ค ปัจจุบันกล่าวได้ว่าเน็ตเวิร์ค
มีขนาดใหญ่มาก หากมีการทำงานเช่นนั้นจริง เร้าเตอร์ต้องใช้หน่วยความจำมหาศาลเพื่อจัดเก็บ และการประมวล
ผลที่เร็วมาก ดังนั้น เพื่อแก้ปัญหาดังกล่าว
only OSPF จึงถูกออกแบบให้มีการทำงานแบบลำดับขั้น (hierarchies) เป็น
Autonomous System (AS) และ Area ต่างๆ ดังแสดงในรูปที่ 22.6
KKU
































รูปที่ 22.6: เน็ตเวิร์ค ของ OSPF

174 บทที่ 22. INTERIOR ROUTING PROTOCOL



Autonomous Systems

AutonomousSystem(AS)หรือระบบในภาครวมที่อยู่ภายใต้การบริหารจัดการร่วมกันเช่นมหาวิทยาลัยขอนแก่น
ถือได้ว่าเป็นหนี่ง AS โดยที่ระบบดังกล่าวประกอบไปด้วยเครื่องคอมพิวเตอร์หรือโฮสต์ เร้าเตอร์ และอุปกรณ์เน็ต
เวิร์คอื่นๆ เร้าเตอร์ที่อยู่ใน AS จะแลกเปลี่ยนข้อมูลกัน ผ่าน Link State Advertisements (LSA)


Area


เพื่อเพิ่มประสิทธิภาพในการประมวลผล และแบนด์วิดท์ที่ต้องใช้ในการแลกเปลี่ยนข้อมูล ซึ่งใน AS หนึ่งๆยังอาจมี
ขนาดที่ใหญ่เกินไป OSPF แบ่งแต่ละ AS ย่อยลงไปเรียกว่า Area แต่ละ Area ประกอบไปด้วยเครื่องคอมพิวเตอร์
เร้าเตอร์ และอุปกรณ์เน็ตเวิร์ค เร้าเตอร์ที่อยู่ใน Area จะส่ง (flood) ข้อมูลของเร้าติ้งใน LSA แพกเกตไปยังเร้าเต
อร์อื่นๆ ในแต่ละ Area จะมีเร้าเตอร์พิเศษเรียกว่า Area Border Router (ABR) ทำหน้าที่ในการสรุปข้อมูลภายใน
Area และส่งไปให้ Area อื่นๆด้วย LSA พิเศษ แต่ Area จะถูกระบุด้วยหมายเลขขนาด 32 บิต (Area ID) เช่น
book)
0.0.0.1(Area 1) 0.0.0.2 (Area 2) ไปเรื่อยๆ ยกเว้น Backbone area จะถูกกำหนดค่าเป็น Area 0 หรือ Area ID

เป็น 0.0.0.0 ใน OSPF สามารถแบ่งออกเป็น 5 Area

Backbone area เป็น Area พิเศษที่ทำหน้าที่เสมือนฮับใน AS โดยที่ทุก Area ที่อยู่ใน AS จะต้องต่อเข้ากับ
Backbone area และเร้าเตอร์ที่อยู่ใน Backbone area จะเรียกว่า Backbone router ซึ่ง Backbone
router และ ABR อาจเป็นตัวเดียวกันก็ได้ โดยที่ Backbone
(partial area จะมีค่าของ Area ID เป็น 0.0.0.0
ในแต่ละ AS สามารถที่จะประกอบด้วยเพียงหนึ่ง Backbone area เท่านั้น Backbone area จะทำหน้าที่
ในการสรุปข้อมูลของเร้าติ้งโทโพโลยีเพื่อส่งให้กับ Area อื่นๆ เป็นเหตุผลว่าทำไมทุก Area ต้องเชื่อมไปยัง
Backbone area หากเกิดปัญหาขึ้นในระบบไม่ว่ากรณีใด ที่ทำให้ไม่สามารถเชื่อมโยงระหว่าง Backbone
only
area กับ Area อื่นได้ ผู้ดูแลเน็ตเวิร์คต้องสร้าง virtual link เพื่อเชื่อมต่อระหว่างเร้าเตอร์ เพื่อให้การทำงาน
ของเน็ตเวิร์คทำงานต่อไปได้
ใน Area อื่นๆที่ไม่ได้เป็น Backbone area จะเป็นหนึ่งใน Area ที่เหลือจะต่อกับ Backbone area ผ่าน
KKU
ทาง ABR ใน OSPF แต่ละ Area จะมีเชื่อมต่อกันด้วยเร้าเตอร์ เร้าเตอร์ต่อไปภายนอก AS จะถูกเรียกว่า
autonomous system boundary router (ASBR) ASBR ทำหน้าที่ในการจัดการข้อมูลของเส้นทางที่มิใช่
จาก OSPF เช่นกรณีของ RIP เพื่อเชื่อมต่อไปยังภายนอก OSPF โดเมน

Stub Area เป็น OSPF area พิเศษที่อนุญาตให้มี ABR เพียงโนดเดียว ทำให้มีเพียงเส้นทางเข้าออกทางเดียว
เท่านั้น เร้าเตอร์ที่อยู่ภายใน Stub area จะเรียนรู้เพียงเส้นทางที่จะส่งแพกเกตจาก ABR หากมีแพกเกตใด
ต้องการที่จะส่งไปยังภายนอก area จะถูกส่งไปยัง ABR เสมือนเป็น default router ของแพกเกต


Not So Stubby Areas จากการกำหนด stub area ทำให้เร้าเตอร์เรียนรู้เพื่อที่จะส่งแพกเกตไปยัง border
router เท่านั้น ทำให้เร้าเตอร์ไม่สามารถแลกเปลี่ยนข้อมูลจากแหล่งอื่นได้นอกจาก OSPF การทำเช่นนี้
ทำให้การทำงานร่วมกับโพรโตคอลอื่นค่อนข้างลำบากเช่น การทำงานร่วมกับโพรโตคอล RIP
Not So Stubby Area (NSSA) ทำให้การทำงานของ stub area มีความยืดหยุ่นขึ้น NSSA ทำให้เร้าเตอร์

สามารถที่จะแลกเปลี่ยนข้อมูลของเส้นทางกับโพรโตคอลอื่นได้ โดยไม่มีผลต่อ OSPF area ทั้งหมด การ
ทำงานของ NSSA จะกระจาย (advertise) LSA พิเศษเรียกว่า NSSA link state advertisement (NSSA
LSA) NSSA นี้จะคล้ายกับ LSA จะต่างกันเพียง NSSA LSA นี้จะถูกส่ง (flood) ภายใน NSSA เท่านั้น ใน
ขณะที่ LSA ปกติจากภายนอกจะไม่ถูกส่งใน NSSA

Non­backbone, Non­stub Areas ถือว่าเป็นส่วนหน่วยย่อยของ Backbone area สามารถมี ASBR เพื่อเชื่อม

ไปยังภายนอก OSPF โดเมนได้ ข้อจำกัดคือไม่สามารถเป็น Area 0 ได้

175



Total Stub Area จะทราบเพียงจะไปหา ABR ได้อย่างไร หากเส้นทางที่ต้องการไปนั้นไม่อยู่ใน Area ของตน


OSPF Packets

ในการทำงานของ RIP การอัพเดทเร้าติ้งเทเบิลจะใช้ UDP เพื่อบรอดคาสท์ (RIPv1) หรือมัลติคาสท์ (RIPv2) ก่อนที่
จะถูกส่งไปในแพกเกต IP แต่ใน OSPF จะส่งในแพกเกต ของ IP โดยตรงทั้งหมด 5 ประเภท ทั้งหมดจะใช้รูปแบบ

ของเฮดเดอร์เดียวกัน ในรูปที่ 22.7
0 7 15 31

Version Type Packet Length


Router ID

book)
Area ID


Checksum Authentication Type

Authentication
(partial

Authentication


รูปที่ 22.7: รูปแบบของแพกเกต OSPF


only
• Version: มีค่าเป็น 2 สำหรับเวอร์ชันปัจจุบัน

• Type: ประเภทของแพกเกต มี 5 ประเภทจะได้กล่าวต่อไป
KKU
• Packet Length: ความยาวของแพกเกต OSPF รวมส่วนเฮดเดอร์เป็น octet

• Router ID: IP address ของเร้าเตอร์ต้นทางที่ส่งแพกเกต

• Area ID: ระบุหมายเลขของ Area ของเร้าเตอร์ที่ส่งแพกเกต


• Checksum: ค่า checksum เหมือนกับที่ใช้กับแพกเกต IP

• Authentication Type: เพื่อใช้ระบุการทำ authentication ที่จะใช้ เป็น 0 สำหรับไม่มี เป็น 1 กรณีใช้การ
กำหนดแบบรหัสผ่าน และเป็น 2 สำหรับการใช้ cryptographic authentication


จากแพกเกตเฮดเดอร์ของ OSPF ข้างต้น จะตามด้วยข้อมูลที่ขึ้นกับชนิดของแพกเกตได้แก่ Hello (รูปที่ 22.8)
เพื่อใช้ในกรณีค้นหา neighbor Database description เพื่อใช้ในการแลกเปลี่ยนฐานข้อมูลกับ neighbor เร้า
เตอร์ Link­state request ใช้ในการร้องขอข้อมูลจากเร้าเตอร์ neighbor Link­state update (รูปที่ 22.9) ใช้ใน

การส่ง LSA ไปให้โนด neighbor Link­state acknowledgment แจ้งเมื่อได้รับข้อมูลอัพเดทเรียบร้อย

176 บทที่ 22. INTERIOR ROUTING PROTOCOL



























book)







(partial
รูปที่ 22.8: ตัวอย่าง OSPF Hello message







only





KKU






























รูปที่ 22.9: ตัวอย่าง OSPF Update message

177



























book)







รูปที่ 22.10: routing protocol
(partial








only





KKU

book)







(partial









only





KKU

บทที่ 23





เร้าติ้งแบบบรอดคาสท์ (Broadcast) และมัลติคาส


ท์ (Multicast)


book)



ปัจจุบันการสื่อสารของแอพพลิเคชันของมัลติมีเดียถือว่าได้รับความนิยมอย่างมาก ไม่ว่าจะเป็นการประชุมออนไลน์
(video conference) การเรียนทางไกล (distance learning) และ เกมส์ออนไลน์ (distributed games) การ
(partial
สื่อสารลักษณะนี้มีความจำเป็นในการสนับสนุนจากการใช้งานของการทำงานของมัลติคาสท์เพื่อที่จะส่งข้อมูลหรือ
แพกเกตไปให้ทุกคนพร้อมกัน แม้ว่าการสื่อสารลักษณะดังกล่าวสามารถทำได้โดยการสื่อสารแบบยูนิคาสท์ แต่การ
ใช้ประโยชน์จากการทำงานของมัลติคาสท์สามารถที่จะลดการใช้งานทรัพยากรลงอย่างมาก
นอกเหนือจากการส่งข้อมูลแบบมัลติคาสท์แล้ว บรอดคาสท์เป็นอีกหนึ่งวิธีหนึ่งที่เพื่อใช้ในการกระจายข้อมูลไป
ให้ไปผู้ใช้พร้อมกันในการส่งครั้งเดียว โดยความสัมพันธ์ของการสื่อสารในแต่ละรูปแบบสามารถกล่าวได้ดังนี้
only
• ยูนิคาสท์ (unicast): เป็นการสื่อสารที่ถือว่ามีภาคส่งเพียงหนึ่งเดียว เพื่อส่งแพกเกตไปยังภาครับเพียงโนด
เดียว ดังนั้นเมื่อเร้าเตอร์ได้รับแพกเกตเร้าเตอร์จะส่งต่อเพื่อไปยังโนดถัดไป เพื่อไปยังโนดปลายทางเพียง
โนดเดียวเท่านั้น
KKU
• บรอดคาสท์ (broadcast): เป็นการสื่อสารที่ภาคส่งทำการส่งแพกเกตออกไปยังทุกโนดที่อยู่ในเน็ตเวิร์คการ
สื่อสารนี้จะทำให้สิ้นเปลืองทรัพยากรในเน็ตเวิร์คอย่างมาก

• มัลติคาสท์ (multicast): เป็นการสื่อสารที่มีภาคส่งเพียงหนึ่งเดียว แต่มีภาครับเพื่อรับจำนวนหลายโนด
พร้อมกัน โดยที่แอดเดรสของภาคส่งจะเป็นแบบยูนิคาสท์แอดเดรส (Class A ถึง Class C) ในขณะที่
แอดเดรสของภาครับจะมีลักษณะที่เป็นกลุ่มหรือแบบมัลติคาสท์แอดเดรส (Class D) โดยที่มีสมาชิกอย่าง
น้อยหนึ่งตัวต้องการที่จะรับมัลติคาสท์แพกเกต



23.1 อัลกอริทึมที่ใช้งานการทำงานแบบบรอดคาสท์เร้าติ้ง



แม้ว่าการทำงานแบบบรอดคาสท์ถือว่าเป็นการสื่อสารที่มีประสิทธิภาพตํ่า ในการใช้ทรัพยากรในเน็ตเวิร์ค แต่ข้อดี
ของการทำงานแบบบรอดคาสท์คือ ภาครับได้รับแพกเกตแน่นอน โดยโพรโตคอลที่ทำงานในลักษณะนี้ได้แก่


Flooding

จากการที่ได้กล่าวถึงการทำงานของ flooding มาแล้วในหัวข้อที่ 21.1.3 ซึ่งเป็นในการส่งข้อมูล โดยจะถูกส่งไปทุก
เส้นทาง ทำให้ทุกโนดในเน็ตเวิร์คสามารถรับข้อมูลที่ถูกส่งออกไป แม้ว่าจะอยู่ในมัลติคาสท์กรุปหรือไม่ ข้อเสียนอก

เหนือจากที่ได้กล่าวมาแล้วคือ การทำโดยการใช้วิธีนี้อาจทำให้เกิดการวน (loop) ของข้อมูลได้

179

180 บทที่ 23. เร้าติ้งแบบบรอดคาสท์ (BROADCAST) และมัลติคาสท์ (MULTICAST)



Reverse-Path Forwarding (RPF)

RPF ถูกพัฒนาขึ้นเพื่อแก้ไขปัญหาที่เกิดขึ้นในการส่งข้อมูลแบบ flooding การทำงานของเร้าเตอร์ R จะส่งต่อแพก
เกตที่ได้จากภาคส่ง S ก็ต่อเมื่อแพกเกตที่ได้รับมานั้นมาจากเส้นทางที่สั้นที่สุด (short path) จากเร้าเตอร์R เพื่อไป
หาไปยังภาคส่ง S จากนั้นจะส่งเร้าเตอร์จะส่งแพกเกตออกไปยังทุกอินเตอร์เฟซ ยกเว้นอินเตอร์เฟซที่ได้รับแพกเก

ตนั้น การทำเช่นนี้ทำให้แพกเกตถูก flood ออกในเน็ตเวิร์ค ดังนั้นในบางเส้นทางอาจได้รับแพกเกตเดียวกันมากกว่า
หนึ่งครั้ง


Reverse-Path Broadcasting (RPB)

แม้ว่าการทำงานของ RPF จะสามารถแก้ปัญหาการเกิดลูป (Loop) ของแพกเกตได้ อย่างไรก็ตามเนื่องจากใน

บางเส้นทาง ยังได้รับแพกเกตมากกว่าหนึ่งครั้ง หากในเน็ตเวิร์คหนึ่งมีการเชื่อมต่อมากกว่าหนึ่งเร้าเตอร์ เพื่อให้มี
ประสิทธิภาพที่ดีขึ้น Reverse-Path Broadcasting เลือกเร้าเตอร์หนึ่งเป็น root ของภาคส่ง S ในมัลติคาสท์กรุป
หนึ่งๆ (S, G) ดังนั้นหากเร้าเตอร์มิใช่ root ของเน็ตเวิร์คจะกำจัดแพกเกตที่ได้รับทิ้งไป



23.1.1 การทำงานของมัลติคาสท์ book)
(partial
ก่อนที่จะได้กล่าวถึงการทำงานของมัลติคาสท์โพรโตคอลแต่ละประเภท การทำงานของมัลติคาสท์สามารถแบ่งออก

ได้เป็น 2 วิธี[28] คือ

Source­Based Tree (SBT) กล่าวได้ว่าการทำงานมัลติคาสท์ของ Source-based Tree จะเน้นการสื่อสารจาก
ภาคส่งหรือเร้าเตอร์เป็นสำคัญ โดยที่แต่ละเร้าเตอร์จะสร้างทรี (Tree) ของตนเองในการส่งข้อมูล ดังนั้น
only
หากมีจำนวนมัลติคาสท์อยู่ m กลุ่มแต่ละกลุ่มมีจำนวนสมาชิกเป็น n ดังนั้นเร้าเตอร์ต้องสร้าง m x n ทรี
เพื่อรองรับจำนวนของกลุ่มมัลติคาสท์ทั้งหมด ทำให้การมัลติคาสท์ในรูปแบบนี้ แต่ละเร้าเตอร์เสมือนเป็นรูท
(root) ของทรีเพื่อการส่งข้อมูลแบบมัลติคาสท์
KKU
Group­Shared Tree (GST) การทำงานของ Group-Shared tree จะแตกต่างจากของ Source-based Tree
โดยที่แต่ละกลุ่มของมัลติคาสท์จะเลือกเร้าเตอร์หนึ่งเพื่อทำหน้าที่เป็น core หรือ rendezvous point เพื่อ

แทนแต่ละกลุ่มของมัลติคาสท์ ดังนั้น หากสมาชิกในกลุ่มของมัลติคาสท์มีแพกเกตที่ต้องการส่ง แพกเกตจะ
ถูกส่งไปยัง core เพื่อทำหน้าที่ในการส่งให้กับสมาชิกที่อยู่ในกลุ่มต่อไป ดังนั้นในวิธีนี้ จะทำให้มีการสร้างทรี
เท่ากับจำนวนของกลุ่มมัลติคาสท์เพื่อใช้ร่วมกัน


23.1.2 Multicast Group Membership Protocols


การทำงานของโพรโตคอลเพื่อจัดการกับกลุ่มของมัลติคาสท์ ทำให้เร้าเตอร์ทราบถึงโฮสต์ที่อยู่ในซับเน็ตต้องการที่
จะรับข้อมูลจากกลุ่มมัลติคาสท์ ดังนั้น เพื่อรองรับการทำงานของมัลติคาสท์ ใน IPv4 ได้กำหนด Internet Group

Management Protocol (IGMP) เพื่อรองรับการทำงานดังกล่าว เพื่อให้การทำงานของมัลติคาสท์เป็นไปอย่างมี
ประสิทธิภาพ จึงมีการใช้ IGMP เพื่อให้โฮสต์สามารถแจ้งไปยังเร้าเตอร์ที่อยู่ใกล้ในมัลติคาสท์กรุปของตนเอง ที่จะ
เข้าร่วม (join) หรือออกจาก (leave) รูปแบบของ IGMP เมสเสจดังแสดงในรูปที่ 23.1 โดยมีรายละเอียดดังนี้


• Version: แสดงถึงเวอร์ชันที่ใช้งาน

• Type: แสดงถึงประเภทของเมสเสจประกอบไปด้วยเมสเสจ 2 ประเภท 1. แสดงถึงเมสเสจที่ใช้ในการ

ค้นหา (query message) โดยเร้าเตอร์เป็นผู้ส่ง และ 2.แสดงถึงการรายการที่มาจากโฮสต์

23.1. อัลกอริทึมที่ใช้งานการทำงานแบบบรอดคาสท์เร้าติ้ง 181


0 7 15 31
Version Type Unused Checksum


IP Address (Class D)


รูปที่ 23.1: รูปแบบของ IGMP เมสเสจ



• Unused: ต้องตั้งเป็น 0

• Checksum: สำหรับค่า checksum ของเมสเสจIGMP


• Group Address: แสดงถึงหมายเลข IPv4 ในคลาส D จะถูกตั้งค่าเป็น 0 หากเป็นเมสเสจประเภทที่ 1 และ
จะเป็นหมายเลขของมัลติคาสท์กรุปหากเป็นประเภทที่ 2
book)
เมื่อโฮสต์ต้องการที่จะเข้าร่วมเป็นสมาชิกในมัลติคาสท์กรุปโฮสต์จะส่งเมสเสจIGMPซึ่งประกอบด้วยหมายเลข

ของกรุปตาม IP Address ที่ต้องการเข้าร่วม โดยโฮสต์จะส่งเพียงครั้งเดียวเมื่อต้องการเข้าร่วมมัลติคาสท์กรุปโดยที่
โฮสต์ไม่จำเป็นต้องส่งเมสเสจใดๆ หากต้องการออกจากมัลติคาสท์กรุป
ในที่นี้ มัลติคาสท์เร้าเตอร์จะส่งเมสเสจเพื่อตรวจสอบว่ายังคงมีโฮสต์อยู่ในมัลติคาสท์กรุปหรือไม่ การทำงาน
(partial
นี้สามารถทำโดยการที่เร้าเตอร์ส่งเมสเสจไปยังแอดเดรส 224.0.0.1 ซึ่งหมายถึงทุกโฮสต์ เมื่อโฮสต์ได้รับเมสเสจจะ
ตอบกลับด้วยแอดเดรสของ มัลติคาสท์กรุปที่ตนเองเป็นสมาชิกอยู่ การทำเช่นนี้จะทำให้เร้าเตอร์ทราบถึงหมายเลข
ของ มัลติคาสท์กรุปที่ตนเองต้องส่งต่อมัลติคาสท์แพกเกตพร้อมทั้งหมายเลขของพอร์ตที่จะส่ง อย่างไรก็ตาม การทำ
เช่นนี้เร้าเตอร์จะทราบเพียงว่ามีมัลติคาสท์กรุปที่ตนเองต้องส่งข้อมูลต่อ แต่ไม่สามารถทราบได้ว่า มีจำนวนโฮสต์อยู่

เท่าใดในแต่ละมัลติคาสท์กรุป แต่อย่างน้อยจะต้องมีหนึ่งโฮสต์ที่เป็นสมาชิกของมัลติคาสท์กรุป


เวอร์ชันของ IGMP only

KKU
ปัจจุบันทำงานของ IGMP ได้มีการพัฒนาและปรับปรุงจนกระทั่งถึงเวอร์ชัน 3 ดังรายละเอียดต่อไปนี้

IGMPv1 ถูกกำหนดขึ้นใน RFC 1112 โดยที่โฮสต์สามารถที่จะส่ง join เมสเสจไปยังเร้าเตอร์เนื่องจากในเวอร์ชัน
นี้ ไม่มีการกำหนด leave เมสเสจ ทำให้เป็นหน้าที่ของเร้าเตอร์ในการตรวจสอบว่ายังมีสมาชิกอยู่หรือไม่
โดยใช้การทำงานของ Timeout ทำให้เป็นภาระกับเร้าเตอร์อย่างมาก โดยเฉพาะอย่างยิ่งเครื่องรุ่นเก่าและ
มีประสิทธิภาพตํ่า

IGMPv2 กำหนดขึ้นใน RFC 2236 โดยเพิ่ม leave เมสเสจ ทำให้เร้าเตอร์สามารถที่จะทราบว่ายังมีสมาชิกอยู่ใน

LAN อีกหรือไม่

IGMPv3 ถือเป็นการปรับปรุงครั้งใหญ่ของ IGMP โดยที่อนุญาตให้โฮสต์สามารถกำหนดโฮสต์ต้นทางที่ต้องการรับ
แพกเกต และทราฟฟิก (traffic) จากโฮสต์อื่นจะไม่ถูกส่งออกนอกเน็ตเวิร์ค นอกจากนั้นยังอนุญาตให้โฮสต์
กันเน็ตเวิร์คแพกเกตจากภาคส่งที่ส่งทราฟฟฟิกที่ตนไม่ต้องการได้



23.1.3 โพรโตคอลสำหรับมัลติคาสท์เร้าติ้ง

Reverse Path Multicast (RPM) [36]

เนื่องจากการทำงานของ RPB ยังคงเป็นการทำบรอดคาสท์ การทำงานของ RPM เพิ่มเติมในส่วนของการจำกัด

ทราฟฟิก (traffic) ที่จะส่งต่อ โดยการใช้ prune message เพื่อไม่ส่งต่อไปแพกเกตไปยังในเส้นทางที่ไม่มีสมาชิก

182 บทที่ 23. เร้าติ้งแบบบรอดคาสท์ (BROADCAST) และมัลติคาสท์ (MULTICAST)



ในมัลติคาสท์อยู่ ดังนั้นหากเร้าเตอร์ไม่ต้องการรับแพกเกตจากมัลติคาสท์กรุป prune message จะถูกส่งไปในเส้น
ทางย้อนกลับของเส้นทางที่สั้นที่สุด (reverse shortest-path) จากเร้าเตอร์กลับไปยังภาคส่ง




















book)



รูปที่ 23.2: การส่ง prune message เพื่อออกจากมัลติคาสท์กรุป


รูปที่ 23.2 แสดงการส่ง prune message จากของเร้าเตอร์ 6 และ 7 ไปยังเร้าเตอร์ถัดขึ้นไป เพื่อไม่ให้ส่งมัลติ
(partial
คาสท์แพกเกตให้เร้าเตอร์ทั้งสองอีก เนื่องจากไม่มีเร้าเตอร์ใดเป็นสมาชิกของมัลติคาสท์กรุปอีกในเร้าเตอร์ 3 ดังนั้น
เร้าเตอร์ 3 จะส่ง prune message ไปยังเร้าเตอร์ถัดไป ในทำนองเดียวกัน ที่เร้าเตอร์ 4 เนื่องจากไม่มีสมาชิกใด
อยู่ในมัลติคาสท์กรุป เร้าเตอร์ 4 ส่ง prune message ไปยังเร้าเตอร์ 2 แต่เนื่องจากเร้าเตอร์ 5 ไม่ได้ส่ง prune
message ให้กับเร้าเตอร์ 2 แสดงว่ายังคงต้องการรับมัลติคาสท์แพกเกต เพราะฉะนั้นเร้าเตอร์ 2 จะไม่ส่ง prune
message กลับขึ้นไป แม้ว่าจะส่ง prune message ไปแล้ว หากมีโฮสต์ต้องการรับแพกเกตจากมัลติคาสท์กรุปอีก
only
ครั้ง การ Join มัลติคาสท์สามารถทำได้ภายหลัง


Distance-Vector Multicast Routing Protocol (DVMRP)
KKU

การทำงานของ DVMRP อยู่บนพื้นฐานของการทำงานแบบ source-based tree อาศัยการทำงานของ RPF และ
การใช้งานของprunemessageเพื่อการคำนวณหาเส้นทางไปยังฮอปถัดไปที่เป็นเส้นทางที่สั้นที่สุด(shortest-path)
เพื่อไปยังภาคส่ง (reverse path distance) โดยใช้ distance vectore algorithm คล้ายกับการคำนวณของ RIP
การทำงานของ DVMRP เริ่มจากเร้าเตอร์ส่งมัลติคาสท์แพกเกตไปยังทุกเร้าเตอร์ที่อยู่ข้างเคียง จากนั้นจะรอ
การตอบกลับ เร้าเตอร์ที่ไม่มีสมาชิกในมัลติคาสท์กรุป ส่ง prune message กลับ เพื่อไม่ให้มีการส่งแพกเกตมาอีก

การทำงานของ DVMRP จะเป็นการทำงานแบบ soft state โดยการกำหนด timeout ซึ่งหากหลังจากส่ง prune
message แล้ว โฮสต์ต้องการที่จะเข้าร่วมมัลติคาสท์กรุปอีกครั้ง สามารถทำได้โดยการ graft message ในภาพรวม
แล้วการทำงานของ DVMRP มีประสิทธิภาพค่อนข้างตํ่า หากสมาชิกของมัลติคาสท์กรุปค่อนข้างกระจาย (sparsely
distributed)



Multicast OSPF (MOSPF)

Multicast OSPF (MOSPF) เป็นการเพิ่มการทำงานมัลติคาสท์บน OSPF ด้วยการเพิ่มประเภทของ LSA เรียกว่า
group membership LSA MOSPF ใช้ IGMP เพื่อตรวจเช็คสมาชิกในมัลติคาสท์กรุปในเน็ตเวิร์ค และจะกระจาย
ข้อมูล (flood) ข้อมูลโดยใช้ LSA ใน Autonomous system (AS) จากการต่อยอดการทำงานของ OSPF ทำให้เมื่อ
เร้าเตอร์ได้รับมัลติคาสท์แพกเกต เร้าเตอร์จะทำการคำนวณหาเส้นทางที่สั้นที่สุดไปยังภาคส่ง และส่งต่อแพกเกตที่

ได้รับ ซึ่งเป็นการทำงานแบบ source-based tree

23.1. อัลกอริทึมที่ใช้งานการทำงานแบบบรอดคาสท์เร้าติ้ง 183















รูปที่ 23.3: การทำ Tunneling ระหว่างโนดที่ไม่สนับสนุนการทำ มัลติคาสท์: a.รูปแบบในเชิงการเชื่อมต่อจริง b.
รูปแบบเชิงนัย (logical)



ใน MOSPF เมื่อมีภาคส่งหรือจำนวนมัลติคาสท์กรุปจำนวนมาก ทำให้เร้าเตอร์ต้องการประมวลผลอย่างมาก
ทำให้ MOSPF เหมาะกับการใช้งานกับเน็ตเวิร์คที่มีจำนวนมัลติคาสท์กรุปและภาคส่งที่ไม่มาก ยิ่งไปกว่านั้นไม่
เหมาะสมอย่างมากในกรณีเน็ตเวิร์คไม่เสถียร
book)
Core-Based Tree (CBT)

Core-based Tree (CBT) เป็นการส่งมัลติคาสท์ในแบบ Group-shared Tree เพื่อใช้งานร่วมกันในการส่งข้อมูล
โดยมีหลักการทำงานดังนี้
(partial
1. เลือกเร้าเตอร์เพื่อเป็นโนด root (R) ของทรี tree ในมัลติคาสท์กรุป

2. เร้าเตอร์ A ส่ง join message ไปยัง root เพื่อเป็นสมาชิกของมัลติคาสท์กรุป

3. join message จากเร้าเตอร์ A จะถูกผ่านเร้าเตอร์ที่อยู่ระหว่างทางเพื่อไปโนด root ยกเว้นเร้าเตอร์ X
ระหว่างทางนั้น เป็นสมาชิกของมัลติคาสท์กรุปอยู่แล้ว เร้าเตอร์ X ไม่จำเป็นต้องส่งต่อ join message ดัง
กล่าว แต่เร้าเตอร์ X ต้องเพิ่มอินเตอร์เฟซที่ได้รับมัลติคาสท์แพกเกตเพิ่มรองรับการส่งมัลติคาสท์แพกเกต

ต่อไป only

KKU
Protocol Independent Multicast (PIM)

จากมัลติคาสท์โพรโตคอลที่ได้กล่าวมาทั้งหมด การทำงานของแต่ละโพรโตคอลมิได้คำนึงถึงจำนวนของเร้าเตอร์ที่
อยู่ในมัลติคาสท์กรุปดังนั้น Protocol Independent Multicast (PIM) ถูกพัฒนาขึ้น โดยไม่ขึ้นอยู่กับการทำงาน
ของยูนิคาสท์โพรโตคอลใดๆ สามารถแบ่งการทำงานเป็นสองแบบคือ


Dense mode (PIM­DM) ถูกใช้งานในกรณีที่ความน่าจะเป็นที่มีจำนวนเร้าเตอร์ในมัลติคาสท์กรุปอยู่เป็นจำนวน
มาก การทำงานของ Dense mode จะเป็นแบบ source based tree โดยการใช้ RPF ร่วมกับการใช้งาน
pruning และ grafting ในการทำมัลติคาสท์

Sparse mode (PIM­SM) ถูกใช้งานในกรณีที่ความน่าจะเป็นที่มีจำนวนเร้าเตอร์ในมัลติคาสท์กรุปอยู่เป็นจำนวน
ไม่มากนัก ซึ่งการทำงานในโหมดนี้ CBT ถือว่าเป็นวิธีที่เหมาะสมในการส่งวิธีนี้

จากที่กล่าวมาทั้งหมด หากเปรียบเทียบการทำงานของมัลติคาสท์โพรโตคอลเราสามารถสรุปได้ในตารางที่

23.1 โดยเราเปรียบเทียบประเด็นต่อไปนี้

• ประเภทของโพรโตคอล โดยเราพิจารณาในสองแบบที่กล่าวมาแล้วได้แก่ Source-Based Tree (SBT) และ
Group-Shared Tree (GST)

• การส่ง Join Message เพื่อเข้ารวมกับมัลติคาสท์กรุป

184 บทที่ 23. เร้าติ้งแบบบรอดคาสท์ (BROADCAST) และมัลติคาสท์ (MULTICAST)



Multicast Routing Protocol ประเภทของโพรโตคอล Implicit Join Explicit Join
DVMRP SBT Yes No
MOSPF SBT No Yes
CBT GST No Yes
PIM-DM SBT Yes No
PIM-SM SBT/GST No Yes

ตารางที่ 23.1: เปรียบเทียบการทำงานของมัลติคาสท์โพรโตคอล



23.2 การทำงานของเร้าเตอร์


ในบทที่ 3 เราได้กล่าวหน้าที่หลักของเร้าเตอร์ ซึ่งเป็นอุปกรณ์ที่ทำงานใน Network Layer ที่ได้กล่าวถึงในบทนี้ ดัง

นั้น เพื่อให้เห็นภาพการทำงานของเร้าเตอร์มากขึ้น รวมไปถึงความสัมพันธ์กับการทำงานต่างๆ ใน Network Layer
ที่ได้กล่าวไปแล้ว รูปที่ 23.4 แสดงการทำงานเบื้องต้นของเร้าเตอร์ ในการรองรับแพกเกตที่ถูกส่งผ่านเข้ามา



23.3 สรุป book)
(partial
Network Layer ถือว่าสำคัญอย่างมากเพื่อให้การส่งของแพกเกตเป็นไปอย่างเหมาะสม การกำหนด IP address
ทำให้แพกเกตสามารถส่งได้อย่างถูกต้อง ประกอบกับการใช้เร้าติ้งอัลกอริทึมต่างๆ แพกเกตจะถูกส่งไปในเส้นทาง

ที่สั้นที่สุด เช่นการใช้โพรโตคอล RIP หรือ OSPF นอกจากนั้นเพื่อลดทราฟฟิกที่เกิดขึ้น การทำงานของมัลติคาสท์
โพรโตคอลใน Network Layer ทำให้การส่งข้อมูลไปในหลายโนดพร้อมกันมีประสิทธิภาพสูงขึ้น
นอกเหนือจากนั้นในบทนี้ ได้นำเสนอการแบ่งเน็ตเวิร์คเป็นซับเน็ต ช่วยให้การใช้งาน IP address ที่มีจำกัดมี
ประสิทธิภาพสูงขึ้น นอกจากนี้ การใช้ NAT
only ทำให้เราสามารถสร้างเครือข่ายของตนเองขึ้น โดยลดความต้องการใช้
IPv4 ที่มีอยู่ ทำให้การคาดการณ์ที่ IPv4 จะหมดลงเลื่อนออกไปในบางประเทศ ทำให้ไม่จำเป็นในการใช้งาน IPv6

ทันที เนื่องจากในบางประเทศยังคงมีเร้าเตอร์หรืออุปกรณ์เครือข่ายอื่นที่ไม่สามารถทำงานบน IPv6 ได้
KKU
ในปัจจุบันการเล่นเกมบนอินเทอร์เน็ตได้รับความนิยมอย่างมาก การทำงานแบบมัลติคาสท์เป็นส่วนสำคัญที่
ทำให้ผู้ใช้ได้รับเหตุการณ์ที่เกิดขึ้นพร้อมๆกัน ในบทนี้ เราได้กล่าวถึงการทำงานของโพรโตคอลแบบต่างๆ ที่มีการ
พัฒนาขึ้น เพื่อให้ผู้อ่านได้เข้าใจการทำงานของมัลติคาสท์โพรโตคอล ในการนำไปพัฒนาแอพพลิเคชันอื่นๆ ที่เหมาะ
สมต่อไป

23.3. สรุป 185



























book)







(partial









only





KKU
























รูปที่ 23.4: การทำงานเบื้องต้นของเร้าเตอร์[7]

book)







(partial









only





KKU

บทที่ 24





IPv6







Technology is like a fish. The longer
book) the shelf, the less
it stays on
desirable it becomes.

Andrew Heller
(partial



จากความต้องการของ IP Address สูงขึ้นอย่างมาก เนื่องจากอุปกรณ์มีขนาดเล็กลง ความสะดวกในการพกพา

ความเร็วเน็ตเวิร์คที่สูงขึ้น ทำให้ความต้องการของ IP Address เพื่อกำหนดให้อุปกรณ์ต่างๆมีสูงขึ้น IPv4 เป็น IP
Address ที่ใช้อย่างแพร่หลายในปัจจุบัน แต่เนื่องด้วยจำนวนแอดเดรสที่จำกัด และถูกกำหนดให้กับหน่วยงานและ
only
องค์กรต่างๆ จนแทบหมดลง จึงมีความจำเป็นในการกำหนด IP Address ชุดใหม่ขึ้น
IPv6 เป็น IP Address ที่ถูกกำหนดขึ้นเพื่อใช้ในอินเทอร์เน็ต ซึ่งกำหนดให้มีจำนวนแอดเดรสที่สูงกว่า IPv4
หลายเท่าตัว และลดข้อผิดพลาดที่เกิดขึ้นกับ IPv4 รวมถึงมีการประมวลผลที่เร็วขึ้น ในบทนี้ เราจะได้กล่าวถึงข้อดี
KKU
ของ IPv6 การกำหนดแอดเดรสของ IPv6 และรายละเอียดการทำงานต่างๆ รวมถึงการแก้ปัญหาของการทำงาน
ร่วมกันของ IPv4 และ IPv6





IPv5 หายไปไหน? IP ที่ใช้อยู่ในปัจจุบันเป็นเวอร์ชัน 4 (IPv4) ดังที่ได้กล่าวไปแล้ว ซึ่งเวอร์ชันถัดไปที่จะใช้
งานคือเวอร์ชัน 6 (IPv6) แทนที่จะเป็นเวอร์ชัน 5 จึงมีคำถามว่าทำไมจึงไม่ใช้เวอร์ชัน 5 (IPv5) คำตอบก็คือ IPv5
ถูกใช้ในการทดสอบการทำงานของการออกแบบอินเทอร์เน็ตโพรโตคอลสำหรับแอพพลิเคชันที่เป็นแบบเวลาจริง
(real-time) และการส่งข้อมูลแบบขนาน (parallel data transmissions) ทำให้ Internet Engineering Steering
Group (IESG) ข้ามเวอร์ชันนี้ไป







24.1 ข้อดีของ IPv6



จากความผิดพลาดหรือข้อจำกัดที่เกิดขึ้นใน IPv4 ทำให้ IETF ออกแบบ IPv6 โดยปรับปรุงในส่วนต่างๆ ได้แก่ การ
มีแอดเดรสที่เพิ่มขึ้น ทำให้การติดดั้ง IP Address ง่ายขึ้น การเปลี่ยนแปลง IP address เมื่อมีการเคลื่อนย้ายของ

เครื่อง

187

188 บทที่ 24. IPV6



24.1.1 แอดเดรสที่เพิ่มขึ้น


สิ่งแรกที่เห็นได้ชัดใน IPv6 คือจำนวนแอดเดรสที่มากขึ้นเมื่อเทียบกับ IPv4 จำนวนที่มากขนาดนี้สามารถที่จะ
รองรับจำนวนโนดที่จะเพิ่มขึ้นได้เป็นจำนวนมาก ทำให้คาดว่าหากมีจำนวนเพิ่มขึ้นเป็นแบบเอกซ์โพเนนเชียล

(exponential) เราก็ยังที่จะมี IPv6 Address เพียงพอไปจนกระทั่งปี คศ. 2485 (พศ. 3028)




24.1.2 นวัตกรรมใหม่ (Innovation)


แม้ว่าปัจจุบัน IPv4 จะไม่หมดลงที่เดียว เนื่องจากการใช้งาน NAT แม้ว่า NAT จะทำให้ลดการใช้จำนวน IP Address
ลง แต่ NAT ก็เหมือนดาบสองคม ซึ่งข้อดีก็คือ เราสามารถที่จะเพิ่มโฮสต์ในเน็ตเวิร์คได้โดยการใช้ Private address
และใช้ NAT ในการสื่อสารกับอินเทอร์เน็ตโดยใช้ IP address เดียวกันในการสื่อสาร แต่ในวิธีการดังกล่าวดูเหมือน
book)
ว่าจะเป็นวิธีที่ดีสำหรับลักษณะของแอพพลิเคชันแบบไคลเอนต์/เซิร์ฟเวอร์ เช่นกรณีของเว็บเบราว์เซอร์หรือ Email
การทำงานของ NAT นี้เสมือนการที่โทรศัพท์หลายเครื่องที่เชื่อมต่อผ่านไปยังขาออกเดียว สำหรับขาออกดูเหมือน

ว่าจะไม่เป็นปัญหามากนัก แต่ในทางกลับกันไม่ง่ายนักที่จะให้เราต่อเชื่อมไปยังเครื่องที่ถูกต้องในกรณีที่มีสายโทร
เข้า
(partial
ปัญหาที่เกิดขึ้นเมื่อมีการใช้งานเสมือนทุกคนเป็นเซิร์ฟเวอร์ เช่นในกรณีของ Voice-Over-IP (VoIP) เมื่อเรา

จำเป็นต้องต่อเชื่อมโดยตรงถึงกันโดยการใช้หมายเลข IP Address การทำงานเช่นนี้เป็นลักษณะเดียวกับของการ
ทำงานของ Video conference และแอพพลิเคชันที่เป็นแบบ peer-to-peer การทำงานของ NAT ทำให้กรณีดัง
กล่าวยุ่งยาก การเกิดขึ้นของ IPv6 ทำให้เราสามารถที่จะให้ทำเครื่องมี IP address เฉพาะของตนได้

only

24.1.3 การติดตั้งแบบอัตโนมัติ (Stateless Autoconfiguration)


ในการทำงานของ IPv4 เราจะได้ IP Address จาก DHCP หากมองโดยทั่วไปแล้วสามารถทำงานได้ดี แต่อย่างไร
KKU ยังมีข้อเสียคือผู้ใช้อาจไม่ได้ IP address เดิมเมื่อร้องขอ IP Address ภายหลัง ทำให้
ก็ตามการใช้งานของ DHCP
IPv6 เพิ่มในส่วนที่เรียกว่า "stateless autoconfiguration" เพื่อการกำหนดหมายเลขของ IP address การทำงาน

ของ statless autoconfiguration จะทำงานโดยการที่โฮสต์จะตรวจสอบว่าเร้าเตอร์จะให้หมายเลข 64 บิตใด เพื่อ
ใช้งานกับส่วนของ 64 บิตแรกของ IPv6 address ทุกโฮสต์ที่ต่ออยู่ในเน็ตเวิร์คเดียวกันจะใช้ 64 บิตนี้เหมือนกัน ใน
ส่วน 64 บิตที่เหลือโฮสต์จะใช้ในส่วนของ MAC address ของตนเอง ทำให้ได้ IPv6 address ขนาด 128 บิต ใน
กรณีของ IPv4 เครื่องไคลเอนต์ยอมรับที่จะมีการปรับเปลี่ยน IP Address ได้ ซึ่งไม่มีผลใดๆในการสื่อสาร แม้ว่า
จะใช้ DHCP แต่ในกรณีของเซิร์ฟเวอร์โดยทั่วไปแล้วจะใช้การทำติดตั้งโดยผู้ดูแลระบบ เพื่อให้ได้ IP address ที่

ต้องการ เนื่องจากการใช้ DHCP อาจไม่ได้รับ IP address เดิม หากมีการร้องขอใหม่ แต่ใน IPv6 การทำเช่นนี้ไม่
จำเป็นอีกต่อไป เนื่องจากไม่มีทางที่การติดตั้งต่างๆจะหายไป




24.1.4 การปรับเปลี่ยนแอดเดรสที่ง่ายขึ้น (Renumbering)


การเปลี่ยนของ IP Address ของโฮสต์ทำได้ง่ายขึ้น เมื่อโฮสต์มีความจำเป็นในการเปลี่ยน IP Address ในกรณี IPv6
โฮสต์จะสร้างแอดเดรสขึ้นมาใหม่อีกหนึ่งแอดเดรส เพื่อป้องการสื่อสารที่ไม่ต่อเนื่อง เนื่องจาก IP Adrress เดิมถูก
ยกเลิกไป ในกรณีนี้ IP Address เดิมจะถูกเปลี่ยนสถานะเป็น "deprecated" ก่อน เพื่อให้การสื่อสารเดิมคงอยู่ แต่

หากมีการสื่อสารใหม่ที่จะเกิดขึ้น จะใช้ IP Address ใหม่

24.2. เฮดเดอร์ของ IPV6 189



24.1.5 ประสิทธิภาพที่ดีขึ้น (Efficiency)

นอกเหนือจากที่กล่าวมาแล้ว ประสิทธิภาพของ IPv6 ยังดีกว่าของ IPv4 ด้วยเหตุผลอีกหลายประการ แม้ว่าขนาด

ของแอดเดรสจะเพิ่มขึ้นถึง 4 เท่า แต่เฮดเดอร์ของ IPv6 มีขนาดเท่ากับ 40 ไบต์เป็นสองเท่าของ IPv4 สิ่งที่ทำให้
ประสิทธิภาพของ IPv6 เพิ่มขึ้นคือ

• การที่ขนาดของเฮดเดอร์ของ IPv6 มีขนาดคงที่


• การประมวลผลของเฮดเดอร์ที่สามารถทำได้เร็วขึ้นเป็นครั้งละ 64 บิต ใน IPv4 จะทำได้ที่ 32 บิต

• การที่ไม่มีส่วนของเฮดเดอร์ checksum ใน IPv6 ทำให้สามารถลดการประมวลผลลง

• การที่ลดภาระในการ fragment แพกเกตขนาดใหญ่ที่เร้าเตอร์ลง โดยเร้าเตอร์จะแจ้งภาคส่งทำการลดขนาด
ของแพกเกตลง หากเร้าเตอร์พบว่าแพกเกตที่ส่งมานั้นมีขนาดใหญ่เกินไป
book)

• การใช้บรอดคาสท์เพื่อการค้นหาถูกแทนที่ด้วยมัลติคาสท์ โดยที่โฮสต์ที่อยู่ในมัลติคาสท์เท่านั้นจะถูก
ขัดจังหวะ (interrrupt) แทนที่จะเป็นทุกโฮสต์หากเป็นการทำงานโดยบรอดคาสท์


(partial
24.2 เฮดเดอร์ของ IPv6



จากการที่กล่าวมาแล้ว เฮดเดอร์ของ IPv6 จะมีจำนวนฟิลด์ลดลง โดยนำฟิลด์ที่ไม่จำเป็นบางส่วนออก การทำ
เช่นนี้ทำให้การประมวลผลสามารถทำได้เร็วขึ้น โดยส่วนสำคัญที่ยังคงอยู่ได้แก่ การระบุถึงเวอร์ชัน และฟิลด์ของ
Differential Services รูปที่ 24.1 แสดงรูปแบบทั่วไปของเฮดเดอร์ของ IPv6
only
โดยที่ในส่วนของเฮดเดอร์ IPv6 ประกอบด้วยฟิลด์ดังต่อไปนี้


• Version มีขนาด 4 บิต ใน IPv6 จะมีค่าเป็น 6 (0110)
KKU
• Traffic Class จะแบ่งเป็นสองส่วนคือ

1. Differentiated Services (DS) ประกอบไปด้วย 6 บิต ตั้งแต่ปี คศ.1994 ฟิลด์นี้ถูกปรับจาก 4 บิต
ฟิลด์ Priority รายละเอียดจะได้กล่าวต่อไป ในการทำงานของ Differentiated Services

2. ECN มีขนาด 2 บิต ในส่วนที่เป็นการทำงานของ Explicit Congestion Notifications (ECN) flag

• Flow lebel มีขนาด 20 บิตเพื่อเป็นการบ่งถึงแพกเกตที่เป็น flow เดียวกัน โดยที่แต่ละโนดสามารถเป็นต้น

ทางของหลาย flow พร้อมกันได้ โดยที่หมายเลขของ flow และแอดเดรสของโนดต้นทางแสดงถึง flow การ
กำหนด flow สามารถทำได้โดยระบุในแพกเกตหรือใช้โพรโตคอลอื่นเข้าช่วยเช่น Rrsource reservation
protocol (RSVP)

• Payloadlengthมีขนาด16บิตมีค่าเป็นเลขจำนวนเต็มเท่ากับขนาดของpayloadเป็นไบต์โดยMaximum
length ของ IPv6 แพกเกตจะเป็น 64 Kbytes หากมีข้อมูลที่ขนาดใหญ่กว่า อาจใช้ Jumbo Payload

extension header ซึ่งหากมีการใช้ Jumbo Payload จะตั้งค่าของ Payload Length เป็น 0

• Next Header บ่งถึงโพรโตคอลที่ตามมาหลังจากเฮดเดอร์ของ IPv6 ซึ่งจะอยู่หลังเฮดเดอร์ของ IPv6 นี้ และ
อยู่ตำแหน่งเริ่มต้นของข้อมูลของ IPv6 แพกเกตโพรโตคอลที่บ่งถึงจะใช้ขนาด 8 บิตกำหนดโดย IANA เช่น
ที่นิยมมากที่สุดจะเป็น TCP หรือ UDP นอกเหนือจากนั้นอาจบอกถึง IPv6 extension header ตารางที่

24.1 แสดงตัวอย่างค่าที่กำหนดใน Next header

190 บทที่ 24. IPV6





0 3 11 31
Ver Traffic Class Flow Label


Payload Length Next Header Hop Limit








Source Address ขนาด 128 บิต




book)







(partial
Destination Address ขนาด 128 บิต








only
รูปที่ 24.1: แพกเกตเฮดเดอร์ของ IPv6 RFCs 2460 และ 2474




KKU HBH Reserved (IPv4)

Decimal Value Keyword Protocol
0
0
Hop-by-Hop Header (IPv6)
1
IGMP
Internet Group Management (IPv4)
2 ICMP Internet Control Message (IPv4)
4 IP IP in IP (IPv4 encapsuation)
6 TCP Transmission Control Protocol
8 EGP Exterior Gateway Protocol
17 UDP User Datagram Protocol
43 RH Routing Header (IPv6)
44 FH Fragmentation Header (IPv6)
50 ESP Encapsulating Security Payload Header (IPv6)
51 AH Authentication Header (IPv6)
58 ICMP Internet Control Message (IPv6)
59 Null NO next Header (IPv6)
60 DOH Destination Options header (IPv6)

ตารางที่ 24.1: ตัวอย่างค่าที่กำหนดใน Next header

24.3. IPV6 ADDRESS ARCHITECTURE 191



• Hop limit: ทุกครั้งที่มีการส่งต่อแพกเกต ค่า Hop limit จะลดลงหนึ่ง หากมีค่าเป็น 0 แพกเกตจะถูกกำจัด
ออกไปจากเน็ตเวิร์ค


• Source address: มีขนาด 128 บิต เพื่อระบุโนดต้นทางของแพกเกต IPv6


• Destination address: มีขนาด 128 บิต เพื่อระบุโนดปลายทางของแพกเกตIPv6 ซึ่งอาจเป็นได้ทั้ง

unicast, multicast และ anycast


ข้อดีของ IPv6 หากเปรียบเทียบกับ IPv4 จะพบว่า


• IPv6 เฮดเดอร์ฟิลด์ลดลง การที่จำนวนของฟิลด์ลดลง แม้ว่าจะมีขนาดของเฮดเดอร์ที่ใหญ่ขึ้น ทำให้การ
ประมวลผลสามารถทำได้เร็วขึ้นใน IPv6 เมื่อเทียบกับการประมวลผลเฮดเดอร์ของ IPv4
book)

• ไม่มีเฮดเดอร์ checksum เนื่องจากใน IPv6 ไม่มีส่วน checksum หากเกิดความผิดพลาดใดๆเกิดขึ้น หมาย

ถึงการที่แพกเกตนั้นอาจถูกส่งไปยังปลายทางผิดพลาด อย่างไรก็ตามในกรณีนี้เป็นหน้าที่ของโพรโตคอลใน
เลเยอร์ถัดไปในการตรวจสอบ ทำให้ไม่มีความจำเป็นอีกต่อไป นอกจากนี้ในเลเยอร์ที่ตํ่ากว่าโดยทั่วไปจะมี
(partial
การตรวจสอบความผิดพลาดที่อาจเกิดขึ้นอยู่แล้ว เช่นใน LAN มีการ CRC ขนาด 32 บิต ซึ่งถือได้ว่ามีหน้า
ที่เดียวกัน แต่มีความซับซ้อนกว่า และจะถูกทำอยู่แล้วบนการ์ด LAN


• ไม่มีการแบ่งแพกเกต (segmentation) : โดยทั่วไปหากได้รับแพกเกตที่มีขนาดใหญ่เกินไป TCP จะลด

ขนาดของแพกเกตลงในเส้นทางที่น่าสงสัย อย่างไรก็ตาม หากเป็น UDP จะไม่มีการทำเช่นนั้น ใน IPv4
only
แพกเกตของ UDP มักถูกส่งโดยที่ไม่มีการกำหนดบิตในการห้าม fragment (fragment bit) ดังนั้นเร้า
เตอร์จะทำหน้าที่ในการลดขนาดแพกเกตลง โดยการทำ fragment แต่ใน IPv6 กรณีเช่นนี้จะไม่เกิดขึ้น
เนื่องจากหากมีขนาดที่ใหญ่เกินไป ภาคส่งต้องทำหน้าที่แบ่งแพกเกตเป็นสองส่วนคือ unfragmentable
KKU
และ fragmentable ดังจะได้กล่าวในรายละเอียดต่อไปในหัวข้อที่ 25.0.2

ในการทำงานของ IPv6 ไม่ว่าโฮสต์หรือเร้าเตอร์ จะต้องสามารถรองรับขนาดของแพกเกตที่ใหญ่สุดที่ขนาด

ไม่ตํ่ากว่า 1280 ไบต์ ในกรณีของโพรโตคอลในเลเยอร์ล่างที่ไม่สามารถใช้มีขนาดของ Maximum Transfer Unit
(MTU) ที่ 1280 ไบต์ ไม่ว่าจะเป็น IPv6 over ... จะต้องสามารถแบ่งและรวมแพกเกตของ IPv6 นี้ได้




24.3 IPv6 Address Architecture



การกำหนดแอดเดรสของ IPv6 สามารถเป็นไปได้ด้วยกัน 3 แบบ คือ


• Unitcast หมายถึงอินเตอร์เฟซหนึ่งอินเตอร์เฟซที่เราจะส่งข้อมูลไป


• Multicast หมายถึงแอดเดรสของกลุ่มของสเตชันหรือกล่าวคือกลุ่มของอินเตอร์เฟซ


• Anycast หมายถึงกลุ่มของสเตชันเช่นกัน ความแตกต่างระหว่าง multicast กับ anycast นี้ คือแทนที่
anycast จะส่งไปยังสมาชิกทั้งหมดที่อยู่ในกลุ่ม การทำงานของ anycast จะส่งไปยังโนดเดียวที่อยู่ใกล้โนด

ที่เป็นสมาชิกใกล้ที่สุด


Click to View FlipBook Version