อินเทอร์เน็ตมีรากฐานทางแนวคิดที่หลากหลาย พร้อมด้วยแนวคิดที่น่าตื่นเต้นมากมายที่ช่วยให้อินเทอร์เน็ตสามารถทำงานได้อย่างที่เรารู้ๆ กัน หนึ่งในสิ่งที่เจ๋งจริงๆ คือ DNS ก่อนที่จะมีการประดิษฐ์ขึ้น ทุกคนบนอินเทอร์เน็ต ซึ่งเป็นที่ยอมรับว่ามีไม่มากนักในขั้นตอนนั้น อาศัยไฟล์ที่ใช้ร่วมกันที่เรียกว่า HOSTS.TXT ซึ่งดูแลโดยสถาบันวิจัยสแตนฟอร์ด ไฟล์นี้ซิงโครไนซ์ด้วยตนเองผ่าน FTP และเมื่อจำนวนโฮสต์เพิ่มขึ้น อัตราการเปลี่ยนแปลงและความเป็นไปได้ของระบบก็เพิ่มขึ้นเช่นกัน ในปี 1983 Paul Mockapetris มุ่งมั่นที่จะค้นหาวิธีแก้ไขปัญหาในระยะยาว และได้ออกแบบและใช้ DNS ต่อไป ถือเป็นข้อพิสูจน์ถึงความอัจฉริยะของเขาว่าการสร้างสรรค์ของเขาสามารถขยายขนาดจากคอมพิวเตอร์ไม่กี่พันเครื่องไปจนถึงอินเทอร์เน็ตอย่างที่เรารู้จักในปัจจุบัน
ด้วยเป้าหมายร่วมกันในการทำความเข้าใจ DNS อย่างลึกซึ้ง การทำสิ่งที่น่าสนใจกับ Rust และขจัดปัญหาบางอย่างของตัวเอง เดิมทีฉันตั้งใจที่จะใช้เซิร์ฟเวอร์ DNS ของตัวเอง เอกสารนี้ไม่ใช่บันทึกเหตุการณ์ที่เป็นความจริงของการเดินทางครั้งนั้น แต่เป็นฉบับในอุดมคติของการเดินทาง โดยปราศจากการอ้อมใดๆ ทั้งสิ้นที่ฉันลงเอยด้วย เราจะค่อยๆ ปรับใช้เซิร์ฟเวอร์ DNS เต็มรูปแบบ โดยเริ่มจากหลักการแรก
แต่ละบทมีตัวอย่างที่สอดคล้องกันซึ่งมีโค้ดเต็มจนถึงจุดนั้นในคำแนะนำ ชื่อ sample1.rs
ถึง sample5.rs
สิ่งเหล่านี้สามารถรันได้โดยใช้สำหรับบทแรก cargo run --example sample1
read_qname
ซึ่งอนุญาตให้แพ็กเก็ตที่เป็นอันตรายทริกเกอร์การวนซ้ำไม่สิ้นสุด ปรับปรุงโค้ดให้ทันสมัยเพื่อให้สอดคล้องกับแนวทางปฏิบัติในปัจจุบัน และแก้ไขความไร้ประสิทธิภาพที่น่าเกลียดต่างๆ