Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> อินเทอร์เน็ต

เข้าใจ Domain Name System (DNS): คู่มือครบวงจร

โดย Sumedh Nimkarde

คุณทุกคนคงเคยได้ยินหรือรู้จัก Domain Name System (DNS) หากเข้าใจ Internet ทำงานอย่างไร หรือ Computer Networks ทำงานอย่างไร หากไม่คุ้นเคยกับ DNS ขอแนะนำไปอ่าน Blog Post ก่อนหน้าของผมที่ Focus Computer Networks ที่นี่

Hostnames เพียงอย่างเดียวไม่บอกได้ว่า Machine/Hardware ที่เราพยายาม Communicate อยู่ที่ไหนในโลก ดังนั้น Communication ทั้งหมดทำด้วย IP Addresses

Domain Name Servers คือ Devices ที่ Map Hostname ไป IP Addresses ของ Machine/Hardware ที่ Services ของคุณ Run อยู่

ใน Post นี้ ผมจะอธิบายรายละเอียด: Types of DNS Queries, Types of DNS Servers, และ Types of DNS Records

DNS Resolver

DNS Resolvers คือ Computers ที่ ISPs ใช้ Lookup ใน Database สำหรับ Hostname ที่ User Request แล้ว Redirect User ไป Mapped IP Address เล่น Role สำคัญใน DNS Resolution

DNS Resolvers ยัง Cache Data ด้วย เช่นเว็บไซต์ของผม example.com Host บน Machine IP 35.195.226.230 Caches ของ DNS Resolvers ทั่วโลก Map ไว้:

example.com -> 35.195.226.230

อนาคตถ้าผมอยาก Host Website บน Server อื่น IP 35.192.247.235 DNS Caches ของ Resolvers ทั่วโลกยังมี Old IP Address เป็นเวลาบ้าง อาจทำให้ Website ไม่ Available ผ่าน Conventional Means จนกว่า DNS Propagation จะเสร็จสมบูรณ์

Record ใน DNS Resolver Cache อยู่เป็นเวลาบ้าง เรียกว่า Time To Live (TTL)

นี่คือเวลาที่ Record Cached ใน DNS Resolver ตั้งค่าได้ใน Registrar Dashboard ที่ซื้อ Domain

Note: ตั้งแต่ตอนนี้ จะเรียก DNS Resolver ว่า Resolver เท่านั้นใน Blog Post นี้

Types of DNS Servers

Root DNS Server

Root DNS Servers มี Addresses ของ TLD Domain Servers ทั้งหมด Request แรกเจอ Root DNS Servers ใน Journey หา IP Address จาก Hostname

มี 13 Root Domain Name Servers ทั่วโลก (ณ 2016) ไม่ใช่ว่ามีแค่ 13 Machines Handle Load จากทั่วโลก — มี Multiple Servers Ground Level Handle Load

Organizations ต่างๆ Manage Root DNS Servers:

เข้าใจ Domain Name System (DNS): คู่มือครบวงจร Credits: https://iana.org

TLD Domain Server

Classified ตาม Top-Level Domain มักเป็น Next Ones ที่ Iterative Query Hit หลัง Root DNS Server Store TLD-specific Records สำหรับ Hostname

เช่น Request IP ของ medium.com TLD Domain Servers สำหรับ ".com" TLD ถูก Query TLD Domain Servers Return Address ของ Authoritative DNS Servers ให้ Resolver

เข้าใจ Domain Name System (DNS): คู่มือครบวงจร Fig. TLD Name Servers Pointing to Authoritative Name Servers

คำถาม: TLD Name Server รู้ Address ของ Authoritative Name Server ยังไง? คำตอบง่าย: เวลาซื้อ Domain กับ Registrars เช่น GoDaddy หรือ Namecheap Registrars Communicate Domains ให้ TLD Name Server ดังนั้นจึง Contact Authoritative Name Servers ได้

ปัจจุบัน Registrars บางแห่งให้ใช้ Third-party Authoritative Name Servers ตาม Figure ข้างบน ตั้งค่า Authoritative Nameservers ใน Registrar Dashboard ได้

Authoritative DNS Server

Queried Iteratively ในท้ายสุดโดย Resolver Store Actual Records สำหรับ Types A, NS, CNAME, TXT ฯลฯ

ดังนั้น Return IP Address ของ Hostname ถ้ามี ถ้าไม่มีใน Authoritative DNS Server ก็ Throw Error พร้อม Message และ Process หา IP Addresses จบสิ้น

Types of DNS Queries

มี 3 Types of DNS Queries:

Recursive: Recursive Queries ทำโดย Users ไป Resolver เป็น First Query ใน DNS Lookup ใดๆ

Resolvers อาจเป็น ISP หรือ Network Admin แต่ส่วนใหญ่เป็น ISP ในเกือบทุกกรณี

Non-recursive: Resolver รู้คำตอบ Respond ทันทีโดยไม่ Query Name Servers อื่นเพิ่ม เพราะ Local DNS Server มี IP ใน Cache หรือ Query Authoritative Name Servers โดยตรง พวกเขา Definitely Hold Record และ Avoid Recursive Queries

Iterative: Iterative Queries เกิดเมื่อ Resolver ไม่ Return Results เพราะอาจไม่ Cached ทำ Request ไป Root DNS Servers Root DNS Servers รู้ว่าหา TLD Domain Server ได้ที่ไหน

เช่น หา IP ของ medium.com Root Domain Server มี Address ของ .com TLD Server Stored ส่งกลับ Resolver Resolver ถาม TLD Server ขอ IP TLD Domain Server อาจไม่รู้ แต่รู้ Address ของ Authoritative DNS Server สำหรับ medium.com

พอ Theory มาสรุปด้วย Flow Diagram:

เข้าใจ Domain Name System (DNS): คู่มือครบวงจร Fig. DNS Resolution

Break Down Diagram ข้างบนเป็น Steps:

  1. User Request ไป Resolver ด้วย Hostname ที่ต้องการ IP นี่คือ Recursive Query
  2. Resolver Lookup ใน Cache ดูว่ามีอยู่ไหม
  3. ถ้ามี Return กลับ User
  4. ถ้าไม่มี Cache ทำ Iterative Request ไป Root DNS Servers Globally ณ 2016 มี 13 Root DNS Servers ชื่อ A-M Root DNS Server Lookup TLD ของ Domain ที่ Request เช่น Hostname medium.com TLD = ".com" Root DNS Server มี Entry สำหรับ ".com" Domain Servers Return Results กลับ Resolver Resolver ต้องมี Addresses ของ Root Domain Name Servers ทั้งหมด ถ้าไม่มี DNS Lookup อาจ Fail ตั้งแต่แรก
  5. Resolver Iterative Request ไป TLD Domain Server ขอ IP ของ Domain TLD Domain Server Return Address ของ Authoritative Server สำหรับ Domain ที่ Request
  6. ตอนนี้เข้าใจ Authoritative DNS Servers แล้ว พวกเขามี Actual Records Hostname Map ไป IP Address IP Address Return กลับ Resolver (ซึ่ง Return กลับ User)
  7. ถ้าไม่เจอ Matching Record ใน Authoritative Name Servers Throw Error "DNS_PROBE_FINISHED_NXDOMAIN" บ่งชี้ไม่มี Record สำหรับ Hostname ที่ Request
  8. ใน Nameservers ทั้งหมดที่ Request ผ่าน Results สำหรับ Hostname ถูก Cached เพื่อ User ถัดไปที่ Request Domain เดียวกัน Record จะอยู่ใน DNS Cache แล้ว
  9. รวมกัน Max 4 Queries สำหรับ DNS Lookup แต่ Hardly Takes Few Milliseconds

DNS Propagation Concept

พิจารณา: Website Hosted กับ Provider เช่น Digital Ocean บน Machine IP "x" อยากย้าย Hosting ไป Machine อื่น IP "y" ต้องเปลี่ยน IP ใน Authoritative Records เพื่อ Traffic Navigate ไป New IP

แม้ Update Records ใน Registrar/Name Server Dashboard ใช้เวลา Reflect ใน Resolvers' Caches ทั่วโลก DNS Propagation ใช้ 24-72 Hours แต่ปกติเร็วกว่านี้ เพราะ ISPs เก็บ TTL ต่ำ

And that's it!

Thanks for reading หากมีคำถาม Comment ได้เลยและ Share Post นี้ให้ใครก็ได้

See you next time Have a great time Thank you

เช็ค Article อื่นของผมเกี่ยว Computer Networks ที่อธิบายรายละเอียด:

What computer networks are and how to actually understand them
_Whether you are new to the world of development..._medium.freecodecamp.org

ถ้าชอบงานของผม ซื้อคาเฟ่ให้ผมได้ที่:

Buy Sumedh Nimkarde a Coffee - BuyMeACoffee.com
_Hello, I am Sumedh and my work is to build, break and rebuild things._buymeacoffee.com

Feel free to reach out on Twitter

เรียนรู้เขียนโค้ดฟรี หลักสูตรโอเพนซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานเป็นนักพัฒนา เริ่มต้นได้เลย