Google Treasure Hunt ปริศนาข้อสามกับการเดินทางของ Packet ในระบบเครือข่าย

ปริศนาข้อสามของ Google Treasure Hunt เป็นการวัดความรู้ในเรื่องระบบเครือข่าย ครั้งนี้ก็เป็นโจทย์ที่ไม่ยากสำหรับคนที่มีความรู้ด้าน Network อยู่แล้ว อาจจะใช้เวลาไม่ถึง 5 นาทีในการหาคำตอบ แต่ถ้าใครไม่รู้เรื่อง Network เลยก็คงต้องเสียเวลาศึกษาสักเล็กน้อย (รวมถึงผมด้วยที่ต้องนั่งทำความเข้าใจกับตารางที่มาพร้อมกับปริศนาข้อนี้อยู่นาน)

เรื่องของเรื่องมีอยู่ว่า… ในระบบเครือข่ายมีองค์ประกอบอยู่สองอย่าง อย่างแรกคือโหนด ซึ่งอาจจะเป็นเครื่องเซิร์ฟเวอร์ ทุกโหนดจะมีเลข IP ในรูปแบบ xxx.xxx.xxx.xxx กำกับไว้ เป็นเสมือนชื่อที่คอมพิวเตอร์ใช้สำหรับเรียกโหนดนั้นๆ องค์ประกอบอีกอย่างก็คือลิงก์ ทำหน้าที่เชื่อมต่อโหนดสองโหนดเข้าด้วยกัน คอยส่งต่อข้อมูลหรือ Packet จากโหนดหนึ่งไปอีกโหนดหนึ่ง ด้วยองค์ประกอบทั้งสองอย่างนี้ เมื่อมีโหนดเยอะมากๆ และมีลิงก์เชื่อมต่อระหว่างโหนดเยอะมากๆ ระบบเครือข่ายอินเทอร์เน็ตก็เกิดขึ้นมาได้

โครงสร้างของระบบเครือข่าย

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

คำถามก็คือแล้วข้อมูลจะวิ่งผ่านโหนดอะไรบ้างเพื่อไปให้ถึง G? ซึ่งนี่ก็คือปริศนาข้อที่สาม

ถ้ามองด้วยสายตามนุษย์ที่มองรูปภาพ คำตอบก็อาจจะง่ายๆ เลยก็คือ G -> D -> C -> B -> A แค่นี้เอง เส้นทางนี้น่าจะเป็นเส้นทางที่ดีที่สุดเพราะผ่านโหนดตัวกลางน้อยที่สุด

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

ข้อมูลป้ายบอกทางเหล่านี้เรียกว่า Network Routing Table ซึ่งอยู่ในรูปของตารางที่มีตัวเลขเยอะๆ ในปริศนาข้อนี้นั่นเอง

Network Routing Table

คอลัมน์ Node หมายถึงชื่อโหนด คอลัมน์ Ip address หมายถึงเลขไอพีของโหนดนั้นๆ คอลัมน์ Routing table entry และ Default route หมายถึงป้ายบอกทาง ตัวอย่างเช่น โหนด G มีไอพีประจำโหนดคือ 150.20.57.36 มีป้ายบอกทางดังนี้

  • 25.62.154.224 => 81.63.49.210 หมายถึง ถ้าจะไป 25.62.154.224 ให้ไปที่ 81.63.49.210 ก่อน
  • 183.112.170.247 => 23.240.62.190 หมายถึง ถ้าจะไป 183.112.170.247 ให้ไปที่ 23.240.62.190 ก่อน
  • 150.20.57.0/24 => 246.189.60.23 จะเห็นได้ว่าป้ายบอกทางอันนี้แตกต่างจากสองอันก่อน ตัวเลข 150.20.57.0/24 มีความหมายว่าไอพีที่อยู่ระหว่าง 150.20.57.0 – 150.20.57.255 ดังนั้นป้ายบอกทางนี้จะหมายถึง ถ้าจะไป 150.20.57.0 – 150.20.57.255 ให้ไปที่ 246.189.60.23 ก่อน
  • Default 104.85.35.103 หมายถึง ถ้าจะไปที่อื่นนอกเหนือจากนี้ ให้ไปที่ 104.85.35.103 ก่อน

จากโจทย์ของปริศนาข้อนี้ที่ผมได้ก็คือให้หาเส้นทางที่ Packet จะเดินทางจากโหนด G ไปยังไอพี 25.62.154.224 (ซึ่งในที่นี้เรารู้ว่ามันคือโหนด A แต่อย่าเพิ่งไปสนใจมัน) วิธีไขปริศนาเริ่มจากข้อมูลในตารางของโหนด G ก่อน จะต้องหาป้ายบอกทางว่าถ้าจะไป 25.62.154.224 จะต้องไปที่ไหนก่อน คำตอบก็คือต้องไปที่ 81.63.49.210 หรือโหนด F

จากนั้นดูข้อมูลที่โหนด F ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 140.180.213.219 (ดูจากคอลัมน์ 25.62.154.0/24) หรือโหนด E

ดูข้อมูลที่โหนด E ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 112.175.23.48 หรือโหนด J

ดูข้อมูลที่โหนด J ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 246.189.60.23 หรือโหนด K

ดูข้อมูลที่โหนด K ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 181.130.110.52 หรือโหนด L

ดูข้อมูลที่โหนด L ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 23.240.62.190 หรือโหนด D

ดูข้อมูลที่โหนด D ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 155.75.43.89 หรือโหนด C

ดูข้อมูลที่โหนด C ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 243.0.224.174 หรือโหนด O

ดูข้อมูลที่โหนด O ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน คำตอบก็คือให้ไปที่ 63.12.203.69 หรือโหนด N

ดูข้อมูลที่โหนด N ว่าถ้าจะไป 25.62.154.224 ต้องไปที่ไหน ซึ่งในที่นี้จะต้องใช้ Default route ก็คือ 25.62.154.224 หรือโหนด A นั่นเอง เท่ากับว่าข้อมูลมาถึงที่หมายเรียบร้อยแล้ว

คำตอบของปริศนาในตัวอย่างนี้ก็คือ GFEJKLDCONA (เส้นประสีเขียว) บางคนอาจจะสงสัยว่าทำไมมันต้องวิ่งอ้อมโลกแบบนี้ด้วย ทำไมไม่วิ่งตรงๆ สั้นๆ GDCBA (เส้นประสีแดง) คำตอบก็คือเพราะเส้นประสีแดงอาจจะมีต้นทุนในการส่งผ่านข้อมูลสูงกว่าเส้นประสีเขียว ถึงแม้ว่าเส้นประสีแดงจะผ่านโหนดน้อยกว่าก็ตาม ต้นทุนในที่นี้ไม่ได้หมายถึงเงิน แต่หมายถึงเวลาที่ใช้ในการส่งข้อมูล สมมุติว่าโหลดข้อมูล 1 KB เส้นประสีเขียวอาจจะใช้เวลาเพียง 1 วินาที แต่เส้นประสีแดงอาจจะใช้เวลาถึง 2 วินาทีก็ได้ Router ที่ฉลาดจะพยายามเลือกเส้นทางที่ใช้เวลาน้อยที่สุดให้

คำตอบของการหาเส้นทาง

หรืออาจจะเป็นไปได้ว่าเส้นสีแดงคือเส้นที่มีปัญหาอยู่ทำให้ข้อมูลส่งผ่านไม่ได้ (มีต้นทุนสูงมากในระดับ infinity) เช่น ลิงก์ที่เชื่อมโหนด D กับ G เข้าด้วยกันคือเคเบิ้ลใต้น้ำที่เชื่อมฝั่งอเมริกากับเอเชียเข้าด้วยกัน วันร้ายคืนร้ายก็มีเรือดำน้ำไปชนเคเบิ้ลจนขาดเข้า ทำให้ลิงก์ DG ใช้งานไม่ได้ Router ก็เลยต้องเปลี่ยนไปใช้เส้นทางอื่นแทน นี่จึงเป็นอีกเหตุผลหนึ่งที่ทำให้ข้อมูลต้องถูกส่งผ่านโหนดตัวกลางหลายโหนด

ผ่านไปแล้วกับปริศนาทั้ง 3 ข้อ จากที่ Google Australia Blog บอกไว้ว่ามีปริศนาทั้งหมด 4 ข้อ โดยจะวัดความรู้ด้านวิทยาศาสตร์คอมพิวเตอร์ (ปริศนาข้อแรก) ด้านการใช้งาน UNIX (ปริศนาข้อสอง) และด้านระบบเครือข่าย (ปริศนาข้อสาม) ซึ่งไม่รู้ว่าปริศนาข้อสุดท้ายจะวัดความรู้ด้านไหน ผมเดาว่าอาจจะต้องใช้ความรู้ทั้งสามอย่างมาผสมกันเลยก็เป็นได้

ถ้าอ่านแล้วชอบ ฝากแชร์ด้วยนะครับ
  •  
  •  
  •  
  •  
  •  
  •  
  •