- หน้าแบบอินเทอร์แอ็กทีฟที่แสดงภาพแบบเรียลไทม์ของ เส้นทางที่แพ็กเก็ตของผู้ใช้เดินทางผ่านอินเทอร์เน็ตไปถึงเซิร์ฟเวอร์ของเว็บไซต์
- ใช้ โปรแกรม 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 แบบโอเพนซอร์ส
- พร้อมข้อความว่า “ของที่เล็กกว่าแต่เสร็จสมบูรณ์นั้นดีกว่า” และหวังให้มันคงอยู่ในฐานะ เนื้อหาเว็บที่ยั่งยืน
ยังไม่มีความคิดเห็น