DNS là gì?

DNS (Domain Name System) là một dịch vụ phân giải tên miền, giúp chuyển đổi các tên miền (ví dụ: www.ducphat.com) thành địa chỉ IP (ví dụ: 93.184.216.34) và ngược lại. Thay vì phải nhớ dãy số IP, chúng ta chỉ cần nhập tên miền, DNS sẽ tìm kiếm địa chỉ IP tương ứng để thiết bị có thể kết nối đến máy chủ.

Cấu trúc phân cấp của DNS

DNS hoạt động theo mô hình phân cấp dạng cây, bao gồm các cấp chính:

Root (gốc)

Được ký hiệu bằng dấu chấm (.) ở cuối tên miền (thực tế khi gõ trình duyệt, dấu chấm này có thể bỏ).

Top-Level Domains (TLDs)

Chia thành hai nhóm chính:

  • gTLDs (Generic TLDs): .com, .net, .org, .info, .edu, .gov…
  • ccTLDs (Country-code TLDs): .vn, .jp, .us, .de, .fr…

Các TLD server lưu trữ thông tin về máy chủ quản lý SLD (ví dụ, máy chủ TLD .vn biết máy chủ Authoritative cho example.vn).

Second-Level Domains (SLDs)

  • Là tên miền đăng ký (ví dụ: example.com, google.vn). Được tổ chức quản lý bởi các registry (như VNNIC với .vn).
  • Dưới SLD có thể có nhiều subdomain (ví dụ: www.example.com, mail.example.com, dev.blog.example.com).

Authoritative Name Servers

Mỗi tên miền thuê (SLD hoặc subdomain) đều có một hoặc nhiều máy chủ DNS chính thức (Authoritative DNS Servers) chứa các bản ghi (A, MX, CNAME, TXT, NS, SOA, v.v.) xác định cách chuyển đổi tên thành IP hoặc cung cấp thông tin khác.

Caching Name Servers (Resolver)

Thường triển khai ở ISP (nhà cung cấp Internet) hoặc cấu hình ở máy cá nhân (ví dụ: 8.8.8.8 của Google, 1.1.1.1 của Cloudflare).

Khi client (máy tính, điện thoại) thực hiện truy vấn DNS, resolver sẽ tìm trong cache trước, nếu không có mới gửi truy vấn lên các máy chủ cấp cao (root → TLD → Authoritative) rồi lưu kết quả vào cache để tăng tốc cho các lần sau.

Phân giải DNS (DNS Resolution)

Giả sử máy client cần biết IP của www.example.com, quá trình diễn ra như sau:

Bước 1 (Kiểm tra cache local): Client (hoặc hệ điều hành) kiểm tra xem DNS cache trong máy đã có sẵn bản ghi IP cho www.example.com chưa (chẳng hạn vừa resolve xong cách đây vài phút). Nếu có, trả thẳng về client mà không cần gọi tiếp.

Bước 2 (Gửi truy vấn tới Resolver):

  • Nếu cache local trống, client gửi truy vấn đến Recursive Resolver ( thường là DNS server của ISP hoặc DNS công cộng).
  • Truy vấn được gửi dưới dạng UDP (port 53) hoặc TCP (nếu kích thước quá lớn hoặc cần chính xác).

Bước 3 (Nếu Resolver có trong cache): Nếu Resolver đã lưu bản ghi (vẫn trong TTL hợp lệ), thì trả ngay về client mà không cần đi tiếp.

Bước 4 (Query tới Root Server):

  • Resolver không có cache sẽ gửi request “recursive” lên một trong các máy chủ Root.
  • Root server không trả IP trực tiếp, mà trả về Referral (địa chỉ của các máy chủ TLD phù hợp, ví dụ server quản lý .com).

Bước 5 (Query tới TLD Server):

  • Resolver gửi truy vấn tiếp đến một trong các TLD servers (ví dụ: server của .com).
  • TLD server trả về Referral chứa địa chỉ Authoritative Name Server cho example.com, ví dụ ns1.example.com, ns2.example.com.

Bước 6 (Query tới Authoritative Server):

  • Resolver kết nối tới Authoritative Name Server cho example.com và yêu cầu bản ghi A của www.example.com.
  • Authoritative server trả về response chứa địa chỉ IP (ví dụ: 93.184.216.34) cùng TTL (Time To Live) — giá trị xác định thời gian cache.

Bước 7 (Kết quả về client):

  • Resolver trả IP cho client; client thiết lập kết nối TCP (hoặc UDP) với IP này để gửi HTTP request, v.v.
  • Thông tin cũng được lưu cache ở Resolver (và client) dựa trên TTL để lần sau không phải lặp lại toàn bộ chuỗi truy vấn.

About the Author

Đức Phát

View all author's posts

Leave a Comment

Your email address will not be published. Required fields are marked *

Bài viết khác

Web Security

Khái niệm Web Security Web Security là tập hợp các nguyên tắc, biện pháp và công nghệ nhằm bảo vệ website, ứng dụng web và dữ liệu khỏi các hành vi truy cập trái phép, tấn công độc hại hoặc khai thác lỗ hổng. Nó không chỉ bao gồm việc ngăn chặn hacker, mà còn […]

Markdown

Markdown là một ngôn ngữ đánh dấu nhẹ (lightweight markup language) dùng để định dạng văn bản thuần túy (plain text), thường được sử dụng trong các tài liệu như README, bài viết blog, tài liệu hướng dẫn, và cả trong GitHub, Stack Overflow, hoặc các trình soạn thảo như VS Code, Obsidian… Markdown được […]

CSS

CSS (Cascading Style Sheets – tạm dịch: Tập tin định kiểu tầng) là ngôn ngữ dùng để mô tả cách trình bày (giao diện) của một tài liệu HTML. Nói đơn giản, CSS giúp làm đẹp trang web: chỉnh màu sắc, font chữ, bố cục, khoảng cách, hiệu ứng chuyển động, v.v. CSS được phát […]

HTML

HTML (HyperText Markup Language) là ngôn ngữ đánh dấu siêu văn bản, được dùng để xây dựng cấu trúc của một trang web. Nói cách khác, HTML cho trình duyệt biết nội dung nào sẽ hiển thị và hiển thị như thế nào (như tiêu đề, đoạn văn, hình ảnh, liên kết…). Một tài liệu […]

Browser

Browser (Web Browser, Trình duyệt web) là phần mềm trên máy tính, điện thoại hoặc thiết bị thông minh, cho phép người dùng truy cập, hiển thị và tương tác với các trang web, tài nguyên Internet. Về bản chất, trình duyệt gửi các yêu cầu (HTTP/HTTPS request) đến máy chủ web, nhận về mã […]

Tìm hiểu giao thức HTTP

HTTP là gì? HTTP (HyperText Transfer Protocol) là giao thức truyền tải siêu văn bản, dùng để trao đổi dữ liệu giữa client (thường là trình duyệt web) và server (máy chủ web) qua mô hình request–response. HTTP hoạt động ở tầng ứng dụng (Application Layer) trong mô hình OSI/TCP-IP, dựa trên kết nối TCP […]