ประวัติ DNS
ย้อนกลับไปในทศวรรษที่ 70 ผู้คนเบื่อที่จะจดจำที่อยู่ IP ของเซิร์ฟเวอร์ที่พวกเขาต้องการเข้าถึง ในขณะเดียวกัน แนวคิดก็เกิดขึ้นเพื่อใช้ชื่อที่เรียบง่ายและน่าจดจำมากขึ้นแทนที่อยู่โฮสต์ที่เป็นตัวเลข
คนงานในสถาบันวิจัยสแตนฟอร์ดสร้างไฟล์ข้อความHOSTS.TXTซึ่งมีรายการชื่อสตริงและที่อยู่ตัวเลขที่สอดคล้องกันของคอมพิวเตอร์บน ARPANET
ที่อยู่ถูกกำหนดด้วยตนเอง หากต้องการขอชื่อโฮสต์และที่อยู่หรือเพิ่มคอมพิวเตอร์ในไฟล์หลัก ผู้ใช้ติดต่อศูนย์ข้อมูลเครือข่ายของ Stanford ทางโทรศัพท์ในช่วงเวลาทำการ
ในช่วงต้นทศวรรษ 1980 การบำรุงรักษาตารางโฮสต์แบบรวมศูนย์เดียวนั้นช้าและยุ่งยาก และเครือข่ายที่กำลังเติบโตต้องการระบบการตั้งชื่ออัตโนมัติเพื่อจัดการกับปัญหาด้านเทคนิคและบุคลากร
ในปี 1984 นักศึกษา UC Berkeley สี่คนเขียนเวอร์ชันแรกของระบบชื่อโดเมนแบบลำดับชั้น ปัจจุบันมีการใช้งานกันอย่างแพร่หลายโดยเฉพาะบนระบบ Unix และยังคงเป็นซอฟต์แวร์ DNS ที่ใช้กันอย่างแพร่หลายบนอินเทอร์เน็ต
รู้เบื้องต้นเกี่ยวกับ DNS
ระบบชื่อโดเมน (DNS)คือระบบการแจกจ่ายสำหรับจัดเก็บและเรียกใช้ข้อมูลเกี่ยวกับโดเมน โดยทั่วไปจะใช้เพื่อรับที่อยู่ IP จากชื่อโฮสต์ (คอมพิวเตอร์หรืออุปกรณ์) รับข้อมูลเส้นทางอีเมล และ/หรือให้บริการโฮสต์สำหรับโปรโตคอลในโดเมน
ระบบได้รับการจัดระเบียบในรูปแบบของลำดับชั้นของเซิร์ฟเวอร์ DNS ที่โต้ตอบตามโปรโตคอลบางอย่าง พื้นฐานสำหรับการทำความเข้าใจ DNS คือความเข้าใจโครงสร้างลำดับชั้นของชื่อและโซน
แต่ละเซิร์ฟเวอร์ที่รับผิดชอบโซนโดเมนสามารถโอนความรับผิดชอบสำหรับส่วนเพิ่มเติมของโดเมนไปยังเซิร์ฟเวอร์อื่นได้ ซึ่งทำให้สามารถกำหนดความรับผิดชอบสำหรับความเกี่ยวข้องของข้อมูลไปยังเซิร์ฟเวอร์ขององค์กรต่างๆ ที่รับผิดชอบเฉพาะส่วน "ของตน" ของ ชื่อโดเมน.
ระบบ DNS มีลำดับชั้นของเซิร์ฟเวอร์ DNSที่สอดคล้องกับลำดับชั้นของโซน แต่ละโซนได้รับการสนับสนุนโดยเซิร์ฟเวอร์ DNS ที่เชื่อถือได้อย่างน้อยหนึ่งตัวที่โฮสต์ข้อมูลเกี่ยวกับโดเมน
สำคัญ! ชื่อและที่อยู่ IP ไม่จำเป็นต้องสัมพันธ์กันแบบหนึ่งต่อหนึ่ง ที่อยู่ IP เดียวสามารถมีชื่อโดเมนได้หลายชื่อ ซึ่งช่วยให้คุณสนับสนุนเว็บไซต์จำนวนมากในคอมพิวเตอร์เครื่องเดียว (เรียกว่าโฮสติ้งที่ใช้ร่วมกัน )
นอกจากนี้ยังสามารถเป็นอีกทางหนึ่งได้ - ที่อยู่ IP จำนวนมากสามารถเชื่อมโยงกับ ชื่อโดเมนเดียว: สิ่งนี้ช่วยให้คุณสร้างโหลดบาลานซ์และใช้งานในเครือข่าย CDN
เพื่อเพิ่มความเสถียรของระบบ เซิร์ฟเวอร์จำนวนมากที่มีข้อมูลที่เหมือนกันถูกนำมาใช้ และโปรโตคอลมีวิธีการรักษาการซิงโครไนซ์ของข้อมูลที่อยู่บนเซิร์ฟเวอร์ต่างๆ มีเซิร์ฟเวอร์รูท 13 เครื่อง ที่อยู่จริงจะไม่เปลี่ยนแปลง
น่าสนใจ! โปรโตคอล DNS ใช้พอร์ต TCP หรือ UDP 53 เพื่อตอบสนองต่อการสืบค้น ตามธรรมเนียมแล้ว คำขอและการตอบกลับจะถูกส่งเป็นดาตาแกรม UDP เดียว TCP จะใช้เมื่อขนาดข้อมูลตอบกลับเกิน 512 ไบต์
บันทึก DNS
เซิร์ฟเวอร์ DNS เก็บชุดของพารามิเตอร์สำหรับแต่ละชื่อโดเมน ข้อมูลเหล่านี้เป็นบันทึกเกี่ยวกับชื่อโดเมน ที่อยู่ IP ตลอดจนข้อมูลบริการต่างๆ
มีทั้งหมดหลายสิบรายการดังนั้นเราจะพิจารณาเฉพาะรายการที่ได้รับความนิยมสูงสุด:
ก | ที่อยู่ | ที่อยู่ IP |
AAAA | ที่อยู่ IPv6 | ที่อยู่ในรูปแบบ IPv6 |
CNAME | ชื่อบัญญัติ | ชื่อบัญญัติสำหรับนามแฝง |
เอ็มเอ็กซ์ | ตัวแลกเปลี่ยนจดหมาย | ที่อยู่เกตเวย์เมลสำหรับโดเมน |
สวพ.FM91 | เนมเซิร์ฟเวอร์ | ที่อยู่ของโหนดที่รับผิดชอบโซนโดเมน |
สพธอ | จุดเริ่มต้นของผู้มีอำนาจ | การแสดงอำนาจของข้อมูล |
เอส.อาร์.วี | การเลือกเซิร์ฟเวอร์ | การระบุตำแหน่งเซิร์ฟเวอร์สำหรับบริการ |
พี.ที.อาร์ | ตัวชี้ | การจับคู่ชื่อที่อยู่ - การจับคู่แบบย้อนกลับสำหรับ A และ AAAA |
TXT | สตริงข้อความ | เขียนข้อมูลไบนารีตามอำเภอใจ สูงสุด 255 ไบต์ |
สิ่งที่น่าสนใจที่สุดคือ:
- บันทึก Aช่วยให้คุณระบุที่อยู่ IP ที่สอดคล้องกับโดเมน
- CNAMEอนุญาตให้คุณตั้งคำพ้องสำหรับชื่อ เช่น www.codegym.cc == codegym.cc
- ระเบียน MXมีข้อมูลเกี่ยวกับเซิร์ฟเวอร์อีเมล: จะทำอย่างไรหากจดหมายมาถึง xxx@codegym.cc
- NS - ระบุที่อยู่ของเซิร์ฟเวอร์ DNS ซึ่งมีข้อมูลในโดเมนนี้ มีประโยชน์เมื่อบันทึกถูกแคชและจัดเก็บไว้ในโหนดที่ไม่ใช่เนทีฟ
ค้นหาที่อยู่ IP
มาดูกันว่าระบบ DNS ทำงานอย่างไร
สมมติว่าคุณพิมพ์ api.codegym.cc ในเบราว์เซอร์ของคุณ เบราว์เซอร์จะติดต่อบริการ DNS ในพื้นที่และขอให้คุณระบุที่อยู่ IP สำหรับโดเมน api.codegym.cc ต่อไปนี้จะเกิดอะไรขึ้น...
ขั้นแรก บริการ DNS จะดูว่าโดเมนนี้อยู่ในไฟล์โฮสต์ภายในเครื่องบนคอมพิวเตอร์ของคุณหรือไม่ ถ้ามี จะใช้ที่อยู่ IP จากนั้น หากไม่เป็นเช่นนั้น ระบบจะส่งคำขอไปยังเซิร์ฟเวอร์ DNS ที่รู้จัก: "ที่อยู่ IP ของ api.codegym.cc คืออะไร"
อย่างไรก็ตาม เซิร์ฟเวอร์ DNS อาจไม่รู้อะไรเลย ไม่เพียงแต่เกี่ยวกับชื่อที่ร้องขอเท่านั้น แต่ยังเกี่ยวกับโดเมน codegym.cc ทั้งหมดด้วย ในกรณีนี้ เซิร์ฟเวอร์จะติดต่อกับเซิร์ฟเวอร์รูท ตัวอย่างเช่น 198.41.0.4 เซิร์ฟเวอร์นี้บอกว่า: "ฉันไม่มีข้อมูลเกี่ยวกับที่อยู่นี้ แต่ฉันรู้ว่า 204.74.112.1 รับผิดชอบโซน ru"
จากนั้นเซิร์ฟเวอร์ DNS ส่งคำขอไปที่ 204.74.112.1 แต่ตอบกลับว่า: "ฉันไม่มีข้อมูลเกี่ยวกับเซิร์ฟเวอร์นี้ แต่ฉันรู้ว่า 207.142.131.234 รับผิดชอบโซน codegym.cc" สุดท้าย คำขอเดียวกันนี้ถูกส่งไปยังเซิร์ฟเวอร์ DNS ที่สามและได้รับการตอบกลับ - ที่อยู่ IP ซึ่งส่งไปยังไคลเอนต์ นั่นคือ เบราว์เซอร์
ในกรณีนี้ ในกระบวนการค้นหา IP ตามชื่อ กฎต่อไปนี้ทำงาน:
- เบราว์เซอร์ส่ง คำขอเรียกซ้ำไปยังเซิร์ฟเวอร์ DNS ที่รู้จัก(เพื่อตอบสนองคำขอประเภทนี้ เซิร์ฟเวอร์ต้องส่งคืนที่อยู่ IP หรือการตอบกลับที่ว่างเปล่าและรหัสข้อผิดพลาด NXDOMAIN)
- เซิร์ฟเวอร์ DNS ที่ได้รับคำขอจากเบราว์เซอร์ส่งคำขอแบบไม่เรียกซ้ำอย่างต่อเนื่อง ซึ่งได้รับการตอบสนองจากเซิร์ฟเวอร์ DNS อื่น ๆ จนกว่าจะได้รับการตอบกลับจากเซิร์ฟเวอร์ที่รับผิดชอบโซนที่ร้องขอ
- เซิร์ฟเวอร์ DNS ที่เหลือที่กล่าวถึงกำลังประมวลผลคำขอแบบไม่เรียกซ้ำ (และน่าจะไม่ได้ประมวลผลคำขอแบบเรียกซ้ำ แม้ว่าข้อกำหนดดังกล่าวจะอยู่ในคำขอก็ตาม)
บางครั้งเป็นไปได้ที่เซิร์ฟเวอร์ที่ร้องขอจะส่งแบบสอบถามแบบเรียกซ้ำไปยังเซิร์ฟเวอร์ DNS "อัปสตรีม" และรอการตอบกลับที่พร้อม
สำคัญ! ด้วยการประมวลผลคิวรีแบบเรียกซ้ำ คำตอบทั้งหมดจะผ่านเซิร์ฟเวอร์ DNS และได้รับโอกาสในการแคช คำขอซ้ำสำหรับชื่อโดเมนเดียวกันมักจะไม่เกินแคชของเซิร์ฟเวอร์ และการเรียกไปยังเซิร์ฟเวอร์อื่นจะไม่เกิดขึ้นเลย
เวลาแคชที่อนุญาตสำหรับการตอบกลับจะมาพร้อมกับการตอบกลับ (ฟิลด์ TTL ของเรกคอร์ดทรัพยากร)
ไฟล์โฮสต์
เราสังเกตเห็นว่าการค้นหาครั้งแรกอยู่ในไฟล์โฮสต์ในเครื่อง นี่คือทายาทของไฟล์ HOSTS.TXT ซึ่งถูกประดิษฐ์ขึ้นในสมัยของ ARPANET ใช่ มันยังมีอยู่และยังใช้อยู่
ตั้งอยู่ตามเส้นทาง:
- /etc/hostsบนลินุกซ์
- %SystemRoot%\system32\drivers\etc\hostsบน Windows
- /system/etc/hostsใน Android
โดยทั่วไป ไฟล์จะมีการกำหนดตำแหน่งสำหรับโหนด localhost:
127.0.0.1 localhost
โครงสร้างนั้นง่ายมาก: อันดับแรกคือที่อยู่ IP จากนั้นชื่อโดเมน
มีประโยชน์
การใช้ไฟล์โฮสต์ เป็นไปได้ที่จะกรองโฆษณาโดยเปลี่ยนเส้นทางที่อยู่โดเมนของแบนเนอร์ไปยังที่อยู่ 127.0.0.0, 127.0.0.1 หรือ 0.0.0.0
โดยทั่วไปไม่แนะนำให้ใช้ 127.0.0.1 เนื่องจากส่งผลให้เกิดการหมดเวลาการตอบสนองและความล่าช้าที่เกี่ยวข้อง หากเซิร์ฟเวอร์ไม่มีอยู่หรือมีการกำหนดค่าไม่ถูกต้อง และหากคุณจับคู่โดเมนโฆษณาใดๆ กับที่อยู่ IP 0.0.0.0 คำขอทั้งหมดจะตกไปทันที)
เซิร์ฟเวอร์ DNS สาธารณะ
โดยปกติคุณจะได้รับเซิร์ฟเวอร์ DNS พร้อมกับบริการอินเทอร์เน็ตของคุณเมื่อคุณเชื่อมต่อ แต่เซิร์ฟเวอร์ DNS ฟรีนั้นไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป นอกจากนี้ คุณอาจไม่ต้องการส่งข้อความค้นหาพร้อมชื่อโดเมนทุกครั้งที่คุณเยี่ยมชมไซต์ไปยังเซิร์ฟเวอร์ DNS ของ ISP
ดังนั้นหลายคนต้องการเปลี่ยนไปใช้เซิร์ฟเวอร์ DNS สาธารณะฟรี ประการแรก พวกเขารวดเร็วมากและมีแคชชื่อโดเมนจำนวนมาก คุณจะโหลดไซต์ได้เร็วขึ้นและมีเวลาทำงานโดยมีโอกาสเกิดปัญหาทางเทคนิคน้อยที่สุด
ประการที่สองความปลอดภัย บริการ DNS บางอย่างสามารถบล็อกการเข้าถึงไซต์ฟิชชิ่งและไซต์ที่เป็นอันตราย และเสนอการกรองเนื้อหาเพื่อปกป้องเด็กๆ จากเนื้อหาที่ไม่เหมาะสมทางออนไลน์
เซิร์ฟเวอร์ DNS ดังกล่าวสามารถต่อสู้กับนักต้มตุ๋นได้ ตัวอย่างเช่น คุณไปที่เว็บไซต์ธนาคารปลอม และเซิร์ฟเวอร์ DNS จะไม่ให้ที่อยู่ IP ของสแกมเมอร์แก่คุณ แต่จะเป็นบริการรักษาความปลอดภัย
รายชื่อเซิร์ฟเวอร์ดังกล่าว
เปลวไฟ | 1.1.1.1 1.0.0.1 |
Cloudflare สัญญาว่าจะไม่ใช้ข้อมูลผู้เยี่ยมชมเพื่อแสดงโฆษณาและจะไม่เขียนที่อยู่ IP ต้นทางของคำขอลงในดิสก์ |
DNS สาธารณะของ Google | 8.8.8.8 8.8.4.4 |
เก็บข้อมูลที่สมบูรณ์เกี่ยวกับที่อยู่ IP ของอุปกรณ์ที่ร้องขอเป็นเวลาประมาณ 24-48 ชั่วโมงสำหรับการแก้ไขปัญหาและการวินิจฉัย |
Comodo Secure DNS | 8.26.56.26 8.20.247.20 |
บล็อกไซต์ฟิชชิ่ง แต่ยังเตือนหากคุณพยายามเยี่ยมชมไซต์ที่มีมัลแวร์ สปายแวร์ |
ยานเดกซ์ DNS | 77.88.8.8 77.88.8.1 |
บริการ DNS ฟรีจากเครื่องมือค้นหายอดนิยมของรัสเซีย |
GO TO FULL VERSION