• หน้าแบบอินเทอร์แอ็กทีฟที่แสดงภาพแบบเรียลไทม์ของ เส้นทางที่แพ็กเก็ตของผู้ใช้เดินทางผ่านอินเทอร์เน็ตไปถึงเซิร์ฟเวอร์ของเว็บไซต์
  • ใช้ โปรแกรม traceroute ที่พัฒนาขึ้นเองชื่อ ktr เพื่อเก็บข้อมูลของแต่ละ network hop โดยอาศัยค่า TTL ของแพ็กเก็ต ICMP
  • เว็บไซต์ ทำงานได้โดยไม่ต้องใช้ JavaScript และเซิร์ฟเวอร์จะสะท้อนผลลัพธ์ traceroute ลงใน HTML ในรูปแบบสตรีม
  • การวิเคราะห์เส้นทางใช้ ข้อมูล WHOIS และ PeeringDB เพื่อแสดง Autonomous System (AS) และข้อมูลบริษัทที่ IP แต่ละตัวสังกัด
  • ผสาน traceroute เข้ากับ โครงสร้างอินเทอร์เน็ตที่อิง BGP เพื่อแสดงใหเห็นว่าอินเทอร์เน็ตคือ กลุ่มของเครือข่ายที่ประกอบขึ้นจากความสัมพันธ์แบบ peering ระหว่างบริษัทต่าง ๆ

การเดินทางที่แพ็กเก็ตของคุณผ่านมา

  • traceroute ด้านบนของหน้าจอแสดง เส้นทางการเคลื่อนที่ของแพ็กเก็ต จากคอมพิวเตอร์ของผู้ใช้ไปยังเซิร์ฟเวอร์
    • ผ่านเครือข่ายของ router, ISP, Amazon, NTT Global IP Network, Hetzner ตามลำดับ
    • บางช่วงจะแสดงเป็น “(no response)” ซึ่งเกิดจากเซิร์ฟเวอร์ที่ไม่ตอบกลับ
  • ภายในเครือข่ายของ Hetzner แพ็กเก็ตจะผ่าน router หลายตัวก่อนถึงเซิร์ฟเวอร์ปลายทาง
  • IP address 213.239.252.10 แสดงเป็น core0.fra.hetzner.com ผ่าน reverse DNS lookup

Behind the Scenes

  • เมื่อเว็บไซต์ได้รับคำขอจากผู้ใช้ จะ รัน traceroute บนเซิร์ฟเวอร์ แล้วส่งผลลัพธ์กลับแบบเรียลไทม์
  • traceroute ใช้ โปรโตคอล ICMP โดยเพิ่มค่า TTL (Time To Live) ทีละ 1 และเก็บการตอบกลับของแต่ละ hop
  • เมื่อ TTL กลายเป็น 0 router ที่เกี่ยวข้องจะส่งข้อความ error กลับมา ทำให้สามารถ ติดตามเส้นทางที่แพ็กเก็ตเดินทางผ่านได้
  • ktr จะสตรีมผล traceroute พร้อมกับค้นหาข้อมูล IP, ASN และข้อมูลเครือข่ายเจ้าของ ของแต่ละ hop ไปพร้อมกัน

Frontend Fun

  • ทำงานได้แม้ไม่มี JavaScript โดยเบราว์เซอร์จะมองว่าเป็นเพียง หน้าที่โหลดช้า
  • เซิร์ฟเวอร์จะคงการเชื่อมต่อ HTTP ไว้ แล้วแทรกผลลัพธ์ traceroute ลงใน HTML ตามลำดับ
  • ในแต่ละการอัปเดต จะ แทรก CSS block เพื่อซ่อนผลลัพธ์ก่อนหน้า ทำให้เกิดเอฟเฟกต์เหมือนอัปเดตแบบเรียลไทม์

Front to Back, Back to Front

  • ในความเป็นจริง ระบบ รัน traceroute จากเซิร์ฟเวอร์ไปยัง IP ของผู้ใช้ แล้ว แสดงผลในลำดับย้อนกลับ
  • นี่คือ “reverse traceroute” ซึ่งแม้เส้นทางไปและกลับจะไม่เหมือนกันทั้งหมด แต่โดยทั่วไปจะ มีเส้นทางคล้ายกัน

เครือข่ายและ Autonomous System (AS)

  • อินเทอร์เน็ตคือ โครงข่ายที่เชื่อมต่อกันของเครือข่ายระดับองค์กร ซึ่งเรียกว่า Autonomous System (AS)
  • แต่ละ AS มี ASN (Autonomous System Number) ของตัวเอง และแลกเปลี่ยนทราฟฟิกกันผ่าน peering
  • อินเทอร์เน็ตเป็นกลุ่มของ เครือข่ายที่บริษัทเป็นเจ้าของ ไม่ใช่ของบุคคล และการเชื่อมต่อถูกกำหนดโดย สัญญาทางการเงินและกระบวนการทางปกครอง
  • สามารถยื่นขอ ASN ได้ผ่านหนึ่งใน 5 Regional Internet Registries (RIRs)

WHOIS และ PeeringDB

  • ใช้ โปรโตคอล WHOIS และ ฐานข้อมูล PeeringDB เพื่อค้นหา AS ที่ IP แต่ละตัวใน traceroute สังกัดอยู่
  • WHOIS มีโครงสร้างเรียบง่าย คือเปิดการเชื่อมต่อ TCP ส่งคำค้น แล้วเซิร์ฟเวอร์จะส่งข้อมูลกลับมา
  • เนื่องจากแต่ละเซิร์ฟเวอร์มีชื่อฟิลด์และรูปแบบต่างกัน parser จึงถูกสร้างเป็น ตัวจำลองแบบง่ายที่ใกล้เคียงกับวิธีที่มนุษย์อ่านข้อมูล
  • PeeringDB ให้ข้อมูลบริษัทของ AS ราว หนึ่งในสามของทั้งหมด

BGP (Border Gateway Protocol)

  • BGP คือโปรโตคอลหลักที่กำหนดรูปร่างของอินเทอร์เน็ต โดยใช้แลกเปลี่ยนข้อมูลเส้นทางระหว่าง AS
  • border router จะเก็บ ตาราง routing ของ BGP ไว้ และบันทึกรายการ ASN ของแต่ละเส้นทาง
  • เมื่อ AS สองแห่งทำ peering กัน router ของทั้งสองฝั่งจะสร้าง BGP session และแลกเปลี่ยน route advertisement
  • จากหลายเส้นทางที่มีอยู่ router จะเลือก เส้นทางที่สั้นที่สุดหรือมีค่าความพึงพอใจสูงกว่า เพื่อส่งต่อแพ็กเก็ต

ประวัติของ BGP

  • การทดลองเครือข่ายที่เริ่มจาก ARPANET ในปี 1969 นำไปสู่ RFC 1105 ของ Cisco และ IBM ในปี 1989 ซึ่งเป็นจุดกำเนิดของ BGP v1
  • หลังจากนั้นมีการประกาศ BGP v2 (1990) และ v4 (1994) โดย v4 ยังคงถูกใช้งานมาจนถึงปัจจุบัน
  • BGP ได้กลายเป็นโปรโตคอลมาตรฐานสำหรับ กำหนดเส้นทางการเชื่อมต่อระหว่างทุกเครือข่ายบนอินเทอร์เน็ต

ความสัมพันธ์ระหว่าง Traceroute และ BGP

  • ตัวอย่างเส้นทาง: AS16509 → AS2914 → AS24940
    • Amazon (AS16509) → NTT Global IP Network (AS2914) → Hetzner (AS24940) ตามลำดับ
  • แม้อยู่ภายใน ASN เดียวกันก็ยังอาจมีหลาย hop ได้ ซึ่งจะถูกจัดการด้วยโปรโตคอล routing ภายในหรือเส้นทางแบบคงที่
  • ความสัมพันธ์แบบ peering ระหว่าง AS เป็นตัวกำหนดความสามารถในการเข้าถึงจริงบนอินเทอร์เน็ต

สรุปย่อ

  • เว็บไซต์รัน traceroute ไปยัง IP ของผู้ใช้ แล้วส่งผลลัพธ์ผ่าน HTTP stream
  • traceroute ใช้ TTL ของแพ็กเก็ต ICMP เพื่อ แสดงภาพเส้นทางระหว่าง router
  • แต่ละ router สังกัด Autonomous System (AS) และเชื่อมต่อกันผ่าน BGP
  • ความสัมพันธ์แบบ peering เป็นตัวกำหนดการเข้าถึงและโครงสร้างของอินเทอร์เน็ต

บทส่งท้าย

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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น