Tìm hiểu cách Paul Mockapetris tạo ra DNS, thay thế file host cồng kềnh bằng hệ thống tên có thể mở rộng. Xem DNS hoạt động ra sao, tại sao cache quan trọng và những kiến thức bảo mật cơ bản.

Mỗi lần bạn gõ địa chỉ web, bấm một liên kết, hoặc gửi email, bạn đang dựa vào một ý tưởng đơn giản: con người nên dùng tên dễ nhớ, còn máy tính làm việc tìm máy chủ tương ứng.
DNS giải quyết một vấn đề thường gặp: máy tính giao tiếp bằng địa chỉ số (địa chỉ IP) như 203.0.113.42, nhưng con người không muốn ghi nhớ chuỗi số. Bạn muốn nhớ example.com, chứ không phải địa chỉ số mà trang đó đang dùng hôm nay.
Domain Name System (DNS) là “sổ địa chỉ” của internet, chuyển tên miền dễ nhớ thành các địa chỉ IP mà máy tính dùng để kết nối.
Việc chuyển đổi này nghe có vẻ nhỏ, nhưng nó quyết định internet cảm giác là hữu dụng hay giống như một cuốn danh bạ toàn số.
Đây là một chuyến tham quan phi kỹ thuật—không cần nền tảng mạng. Chúng ta sẽ đi qua:
Trên đường, bạn sẽ gặp Paul Mockapetris, kỹ sư thiết kế DNS đầu những năm 1980. Công trình của ông quan trọng vì ông không chỉ tạo ra một định dạng tên mới—ông thiết kế một hệ thống có thể mở rộng khi internet phát triển từ mạng nghiên cứu nhỏ thành thứ được hàng tỷ người sử dụng.
Nếu bạn từng thấy một trang “sập”, chờ một thay đổi domain “lan truyền”, hoặc thắc mắc tại sao cài đặt email có những bản ghi DNS kỳ lạ, thì bạn đã gặp DNS ở bề ngoài. Phần còn lại của bài viết giải thích điều gì đang diễn ra phía sau—rõ ràng và không nhiều biệt ngữ.
Trước khi ai đó gõ một địa chỉ web quen thuộc, mạng ban đầu có một vấn đề đơn giản hơn: làm sao bạn liên hệ được tới một máy cụ thể? Máy tính có thể nói chuyện với nhau bằng IP addresses (số như 10.0.0.5), nhưng con người thích hostnames—những nhãn ngắn như MIT-MC hay SRI-NIC dễ nhớ hơn.
Với ARPANET đời đầu, giải pháp là một file chung gọi là HOSTS.TXT. Về cơ bản đó là một bảng tra cứu: danh sách hostname ghép với địa chỉ IP.
Mỗi máy giữ một bản sao cục bộ của file này. Nếu bạn muốn kết nối tới một máy bằng tên, hệ thống kiểm tra HOSTS.TXT và tìm địa chỉ IP tương ứng.
Cách này hoạt động lúc đầu vì mạng nhỏ, thay đổi tương đối ít, và có một nơi rõ ràng để lấy bản cập nhật.
Khi nhiều tổ chức tham gia, phương pháp này bắt đầu lộ điểm yếu:
Vấn đề cốt lõi là phối hợp. HOSTS.TXT giống như một cuốn sổ địa chỉ chung cho cả thế giới. Nếu mọi người phụ thuộc vào cùng một cuốn sách, mọi sửa đổi đều phải chỉnh sửa toàn cầu, và mọi người phải tải bản mới nhất nhanh chóng. Khi mạng đạt một kích thước nhất định, mô hình “một file cho mọi thứ” trở nên quá chậm, quá tập trung và dễ sai sót.
DNS không thay đổi ý tưởng ánh xạ tên thành số—nó thay đổi cách ánh xạ đó được duy trì và phân phối.
Đầu những năm 1980, internet đang chuyển từ mạng nghiên cứu nhỏ thành thứ lớn hơn, lộn xộn hơn và được chia sẻ rộng rãi. Nhiều máy tham gia, các tổ chức muốn tự chủ, và mọi người cần cách dễ dàng hơn để đến dịch vụ thay vì ghi nhớ địa chỉ số.
Paul Mockapetris, làm việc trong bối cảnh đó, được ghi công rộng rãi là người thiết kế DNS. Đóng góp của ông không phải một sản phẩm bóng bẩy—mà là một lời giải kỹ thuật cho câu hỏi rất thực tế: làm sao giữ tên vẫn dễ dùng khi mạng tiếp tục lớn lên?
Một hệ thống đặt tên nghe có vẻ đơn giản cho tới khi bạn tưởng tượng nghĩa “đơn giản” lúc ấy: một danh sách tên chia sẻ mà mọi người đều phải tải và cập nhật. Cách đó vỡ vụn ngay khi thay đổi trở nên thường xuyên. Mỗi host mới, đổi tên hay sửa lỗi đều trở thành công việc phối hợp cho tất cả.
Khái niệm then chốt của Mockapetris là tên không chỉ là dữ liệu; chúng là các thỏa thuận được chia sẻ. Nếu mạng mở rộng, hệ thống để tạo và phân phối những thỏa thuận đó cũng phải mở rộng—mà không yêu cầu mọi máy tính phải liên tục lấy danh sách gốc.
DNS thay thế ý tưởng “một file có thẩm quyền” bằng một thiết kế phân tán:
Đó là sự khôn ngoan im lặng: DNS không được thiết kế để thật thông minh; nó được thiết kế để tiếp tục hoạt động dưới các ràng buộc thực tế—băng thông hạn chế, thay đổi thường xuyên, nhiều quản trị viên độc lập, và một mạng không chịu dừng phát triển.
DNS không được phát minh như một mẹo khéo—nó được thiết kế để giải quyết các vấn đề thực tế xuất hiện khi Internet ban đầu phát triển. Cách tiếp cận của Mockapetris là đặt mục tiêu rõ ràng trước, rồi xây hệ thống đặt tên có thể theo kịp trong nhiều thập kỷ.
Khái niệm then chốt là ủy quyền: các nhóm khác nhau quản lý các phần khác nhau của cây tên.
Ví dụ, một tổ chức quản lý những gì dưới .com, một registrar giúp bạn đăng ký example.com, và sau đó bạn (hoặc nhà cung cấp DNS của bạn) kiểm soát các bản ghi cho www.example.com, mail.example.com, v.v. Điều này chia trách nhiệm rõ ràng, nên tăng trưởng không tạo ra cổ chai.
DNS giả định sẽ có sự cố—máy chủ sập, mạng phân đoạn, đường đi thay đổi. Vì vậy nó dựa vào nhiều máy chủ authoritative cho một domain và vào bộ nhớ đệm ở các resolver, nên một sự cố tạm thời không phá hỏng mọi tra cứu.
DNS chuyển tên thân thiện thành dữ liệu kỹ thuật, nổi bật nhất là địa chỉ IP. Nó không phải là “toàn bộ Internet”—nó là một dịch vụ đặt tên và tra cứu giúp thiết bị của bạn biết phải kết nối tới đâu.
DNS làm cho tên dễ quản lý bằng cách tổ chức chúng như một cây. Thay vì một danh sách khổng lồ mà mỗi tên phải duy nhất trên toàn cầu (và có người giám sát), DNS chia đặt tên thành các cấp và ủy quyền trách nhiệm.
Một tên DNS được đọc từ phải sang trái:
www.example.com. về mặt kỹ thuật kết thúc bằng một .\n- TLD (Top-Level Domain): .com, .org, .net, mã quốc gia như .uk\n- Domain: example trong example.com\n- Subdomain / host: www trong www.example.comVậy www.example.com có thể chia thành:
com (TLD)\n- example (domain đăng ký dưới .com)\n- www (nhãn do chủ domain tạo và kiểm soát)Cấu trúc này giảm xung đột vì tên chỉ cần duy nhất trong cha mẹ của nó. Nhiều tổ chức có thể có subdomain www vì www.example.com và www.another-example.com không va chạm.
Nó cũng phân tán khối lượng công việc. Những người điều hành .com không cần quản lý mọi bản ghi website; họ chỉ trỏ tới ai chịu trách nhiệm cho example.com, rồi chủ example.com quản lý chi tiết.
Một zone đơn giản là một phần quản lý được của cây—dữ liệu DNS mà ai đó chịu trách nhiệm xuất bản. Với nhiều đội, “zone của chúng tôi” nghĩa là “các bản ghi DNS cho example.com và các subdomain chúng tôi host,” nằm trên nhà cung cấp DNS authoritative của họ.
Khi bạn gõ tên website vào trình duyệt, bạn không hỏi “internet” trực tiếp. Một vài thực thể chuyên biệt chia công việc để câu trả lời được tìm nhanh và đáng tin.
Bạn (thiết bị và trình duyệt) bắt đầu bằng một câu hỏi đơn giản: “Địa chỉ IP tương ứng với example.com là gì?” Thiết bị của bạn thường chưa biết câu trả lời, và nó không muốn gọi hàng chục máy chủ để tìm.
A recursive resolver thực hiện việc tìm kiếm thay bạn. Thường do ISP, IT nơi làm việc/trường học, hoặc resolver công cộng cung cấp. Lợi ích chính: nó có thể tái sử dụng các câu trả lời đã cache, làm mọi thứ nhanh hơn cho những ai dùng resolver đó.
Authoritative DNS servers là nguồn sự thật cho một domain. Chúng không “tìm kiếm” internet; chúng nắm các bản ghi chính thức nói địa chỉ IP, máy chủ mail, hoặc token xác thực thuộc domain đó.
example.com là gì.\n2. Nếu resolver đã có câu trả lời trong cache và còn mới, nó trả ngay.\n3. Nếu không, resolver hỏi hệ thống phân cấp DNS nơi tìm các authoritative server cho domain (bắt đầu từ đỉnh và thu hẹp dần).\n4. Resolver đến authoritative server của domain, lấy câu trả lời cuối cùng, và trả về cho thiết bị.\n5. Trình duyệt dùng địa chỉ IP đó để kết nối tới website.Hãy tưởng tượng recursive resolver như một thủ thư có thể tra giúp bạn (và nhớ những câu trả lời phổ biến), trong khi authoritative server là danh mục chính thức của nhà xuất bản: nó không lục tìm các danh mục khác—nó chỉ cho biết điều gì đúng cho sách của mình.
Khi bạn gõ example.com vào trình duyệt, trình duyệt thực ra không đang tìm một tên—nó cần một địa chỉ IP (một số như 93.184.216.34) để biết phải kết nối đâu. DNS là hệ thống “tìm cho tôi số cho tên này”.
Trình duyệt trước tiên hỏi hệ điều hành: “Chúng ta đã biết IP cho example.com chưa?” Hệ điều hành kiểm tra bộ nhớ ngắn hạn (cache). Nếu có câu trả lời còn mới, tra cứu dừng ở đây.
Nếu OS không có, nó gửi câu hỏi tới DNS resolver—thường do ISP, công ty hoặc nhà cung cấp công cộng chạy. Hãy nghĩ resolver như “concierge DNS” của bạn: nó làm công việc nặng để thiết bị không phải làm.
Nếu resolver không có câu trả lời trong cache, nó bắt đầu tìm theo hướng dẫn:
.com). Root không cho IP cuối—nó đưa referral, tức chỉ đường: “Hỏi các máy chủ .com này tiếp theo.”\n- TLD server (.com): resolver hỏi máy chủ .com xem example.com do ai xử lý. Lại là chỉ dẫn: “Hỏi authoritative server này cho example.com.”\n- Authoritative server: nguồn sự thật cho domain. Nó trả bản ghi thực tế (ví dụ A hoặc AAAA) chứa địa chỉ IP.Resolver gửi IP về cho OS của bạn, rồi tới trình duyệt, và trang web được kết nối. Phần lớn tra cứu có cảm giác tức thời vì resolver và thiết bị cache câu trả lời trong một khoảng thời gian do chủ domain đặt (TTL).
Dòng chảy nhớ dễ là: Trình duyệt → Cache OS → Cache Resolver → Root (referral) → TLD (referral) → Authoritative (answer) → trở về Trình duyệt.
DNS sẽ rất chậm nếu mỗi lần truy cập trang đều phải bắt đầu từ đầu và hỏi nhiều máy chủ cho cùng một câu trả lời. Thay vào đó, DNS dựa vào cache—“ký ức” tạm thời của các tra cứu gần đây—nên hầu hết người dùng nhận câu trả lời trong vài mili giây.
Khi thiết bị hỏi một DNS resolver về example.com, resolver có thể phải làm một số bước lần đầu. Sau khi biết câu trả lời, nó lưu vào cache. Người tiếp theo hỏi cùng tên sẽ được trả ngay.
Cache tồn tại vì hai lý do:
Mỗi bản ghi DNS được phục vụ kèm giá trị TTL (Time To Live). Hãy nghĩ TTL như hướng dẫn: giữ câu trả lời này trong X giây, rồi vứt và hỏi lại.
Nếu một bản ghi có TTL là 300, resolver có thể dùng lại nó trong tới 5 phút trước khi kiểm tra lại.
TTL là một thỏa hiệp:
Nếu bạn di chuyển website sang host mới, đổi CDN, hoặc cắtover email (thay MX), TTL quyết định người dùng ngừng đến nơi cũ nhanh thế nào.
Một cách thông thường là hạ TTL trước khi dự định thay đổi, làm chuyển đổi, rồi tăng TTL lại khi mọi thứ ổn định. Đó là lý do DNS có thể nhanh trong ngày thường—và đôi khi “cứng đầu” ngay sau cập nhật.
Khi bạn đăng nhập vào bảng điều khiển DNS, bạn chủ yếu sẽ chỉnh một số loại bản ghi. Mỗi bản ghi là một hướng dẫn nhỏ nói internet phải gửi người dùng tới đâu (web), nơi giao email, hoặc cách xác minh quyền sở hữu.
| Bản ghi | Làm gì | Ví dụ đơn giản |
|---|---|---|
| A | Trỏ một tên đến địa chỉ IPv4 | example.com → 203.0.113.10 (server web của bạn) |
| AAAA | Trỏ một tên đến địa chỉ IPv6 | example.com → 2001:db8::10 (tương tự, địa chỉ mới hơn) |
| CNAME | Làm một tên thành bí danh của tên khác | www.example.com → example.com (như vậy cả hai cùng tới nơi) |
| MX | Nói nơi email cho domain nên tới | example.com → mail.provider.com (priority 10) |
| TXT | Lưu “ghi chú” máy có thể đọc (xác minh, chính sách email) | example.com có SPF như v=spf1 include:mailgun.org ~all |
| NS | Nói máy chủ authoritative nào host DNS cho domain/zone | example.com → ns1.dns-host.com |
| SOA | “Header” của zone: NS chính, liên hệ admin, và các giá trị thời gian | SOA của example.com bao gồm ns1.dns-host.com và các thiết lập retry/expire |
Một vài lỗi DNS lặp lại:
example.com). Nhiều nhà cung cấp DNS không cho phép vì tên gốc cũng phải mang các bản ghi như NS và SOA. Nếu cần “root trỏ tới hostname”, dùng A/AAAA hoặc tính năng “ALIAS/ANAME” nếu nhà cung cấp hỗ trợ.\n- Bản ghi xung đột: không đặt đồng thời CNAME và A cho cùng một hostname (ví dụ cả hai trên www). Chọn một cách.\n- Lỗi chính tả và định dạng: một ký tự sai trong mail.provider.com có thể làm hỏng email; thiếu/thừa dấu chấm và copy sai trường host (ví dụ @ vs www) là nguyên nhân thường thấy của gián đoạn.Nếu bạn chia sẻ hướng dẫn DNS với đội, một bảng nhỏ như trên trong tài liệu (hoặc trang runbook) giúp rà soát và xử lý sự cố nhanh hơn.
DNS hoạt động vì trách nhiệm được chia cho nhiều tổ chức. Sự chia này cũng là lý do bạn có thể đổi nhà cung cấp, thay đổi cài đặt và giữ tên trực tuyến mà không phải hỏi “internet” xin phép.
Đăng ký domain là mua quyền sử dụng một tên (như example.com) trong một khoảng thời gian. Hãy nghĩ đó như giữ một nhãn để không ai khác chiếm.
DNS hosting là chạy cài đặt nói thế giới biết tên đó trỏ tới đâu—website, nhà cung cấp email, bản ghi xác thực, v.v. Bạn có thể đăng ký domain ở một chỗ và host DNS ở chỗ khác.
.com, .org, hay .uk). Nó giữ cơ sở dữ liệu chính thức ai sở hữu mỗi tên dưới TLD đó và máy chủ tên nào chịu trách nhiệm.\n- Registrar: Đại lý bạn dùng để đăng ký (và gia hạn) domain. Registrar nói chuyện với registry thay bạn và cho phép bạn chỉnh một số cài đặt quan trọng.\n- Name servers: Các máy (do nhà host DNS vận hành) xuất bản bản ghi DNS của domain—A/AAAA, MX, TXT, CNAME, v.v. Chúng được gọi là authoritative vì cung cấp câu trả lời cuối cùng cho domain của bạn.Root servers nằm ở đỉnh DNS. Chúng không biết IP của website bạn và không lưu bản ghi domain của bạn. Nhiệm vụ của chúng hẹp hơn: chỉ nói resolvers nơi tìm authoritative servers cho mỗi TLD (như nơi .com được xử lý).
Khi bạn đặt “name servers” cho domain ở registrar, bạn đang tạo một delegation. Registry .com (thông qua các máy chủ authoritative của nó) sẽ trỏ các truy vấn cho example.com tới các name server bạn chọn.
Từ lúc đó, các name server đó kiểm soát câu trả lời mà phần còn lại của internet nhận—cho tới khi bạn thay đổi delegation lại.
DNS được xây trên niềm tin: khi bạn gõ một tên, bạn tin câu trả lời đưa bạn đến dịch vụ thực. Hầu hết thời gian điều đó đúng—nhưng DNS cũng là mục tiêu tấn công ưa thích, vì một thay đổi nhỏ trong “nơi tên này đi tới” có thể chuyển hướng rất nhiều người.
Một vấn đề kinh điển là spoofing hoặc cache poisoning. Nếu kẻ tấn công lừa được resolver lưu một câu trả lời giả, người dùng có thể bị gửi tới IP sai ngay cả khi họ gõ đúng domain. Hậu quả là trang lừa đảo, tải phần mềm độc hại, hoặc bị chặn/bắt nội dung.
Một vấn đề khác là chiếm đoạt domain tại cấp registrar. Nếu ai đó truy cập được tài khoản registrar của bạn, họ có thể thay name server hoặc bản ghi DNS và thực tế “chiếm” domain mà không cần chạm tới hosting của bạn.
Rồi có nguy cơ thường ngày: cấu hình sai. Một CNAME sai, một TXT cũ, hoặc MX không chính xác có thể làm hỏng luồng đăng nhập, giao nhận email, hay kiểm tra xác thực. Những lỗi này thường trông như “internet bị sập”, nhưng nguyên nhân cốt lõi chỉ là một sửa đổi DNS nhỏ.
DNSSEC thêm chữ ký mật mã vào dữ liệu DNS. Nói dễ hiểu: câu trả lời DNS có thể được xác thực để đảm bảo không bị thay đổi trên đường truyền và thực sự đến từ authoritative server của domain. DNSSEC không mã hóa DNS hay che bạn đang tra cứu gì, nhưng nó có thể ngăn nhiều dạng câu trả lời giả không bị chấp nhận.
Truy vấn DNS truyền thống dễ bị các mạng quan sát. DNS-over-HTTPS (DoH) và DNS-over-TLS (DoT) mã hóa kết nối giữa thiết bị và resolver, giảm khả năng rình mò và một số hình thức chỉnh sửa trên đường truyền. Chúng không biến DNS thành “ẩn danh”, nhưng thay đổi ai có thể thấy và can thiệp truy vấn.
Dùng MFA trên registrar, bật khoá domain/chuyển nhượng, và hạn chế ai có thể chỉnh DNS. Xem các thay đổi DNS như phát hành production: yêu cầu rà soát, giữ nhật ký thay đổi, và thiết lập giám sát/cảnh báo cho thay đổi bản ghi hoặc name server để bạn biết sớm khi có bất thường.
DNS có thể trông như “đặt xong rồi quên”, cho tới khi một thay đổi nhỏ làm rớt site hoặc email. Tin tốt là: vài thói quen giúp việc quản lý DNS dễ đoán—dù với đội nhỏ.
Bắt đầu với quy trình nhẹ bạn có thể lặp lại:
Hầu hết sự cố DNS không phức tạp—chỉ khó phát hiện nhanh:
Nếu bạn triển khai ứng dụng thường xuyên, DNS trở thành một phần trong quy trình phát hành. Ví dụ, các đội triển khai web trên nền tảng như Koder.ai (nơi bạn có thể xây và triển khai app qua chat, rồi gắn domain tùy chỉnh) vẫn phụ thuộc các nguyên tắc cơ bản: A/AAAA/CNAME đúng, TTL hợp lý khi cắtover, và lộ trình quay lui rõ ràng nếu có thứ trỏ sai.
Nếu bạn gửi email từ domain của mình, DNS ảnh hưởng trực tiếp tới khả năng thư tới hộp thư đến.
Tên thân thiện với con người đã giúp internet mở rộng vượt ra ngoài cộng đồng nghiên cứu nhỏ. Hãy coi DNS như cơ sở hạ tầng chung—đầu tư chút công sức ban đầu giữ site của bạn truy cập được và email đáng tin khi bạn phát triển.
DNS (Domain Name System) chuyển các tên dễ nhớ như example.com thành các địa chỉ IP như 93.184.216.34 để thiết bị của bạn biết phải kết nối đến đâu.
Không có DNS, bạn sẽ phải nhớ địa chỉ số cho từng trang và dịch vụ bạn dùng.
Mạng ban đầu dùng một file chia sẻ duy nhất (HOSTS.TXT) để ánh xạ tên sang địa chỉ IP.
Khi mạng lớn lên, cách đó trở nên không quản lý được: cập nhật liên tục, xung đột tên, và lỗi do các bản sao lỗi thời. DNS thay thế mô hình “một file toàn cầu” bằng một hệ thống phân tán.
Paul Mockapetris thiết kế DNS vào đầu thập niên 1980 để giải quyết bài toán đặt tên khi mạng mở rộng nhanh chóng.
Ý tưởng chính là ủy quyền (delegation): chia trách nhiệm cho nhiều tổ chức để không có một danh sách chính thống duy nhất hay một quản trị viên trở thành nút thắt.
Tên DNS có dạng phân cấp và đọc từ phải sang trái:
www.example.com..comexample.comwww.example.comCấu trúc này giúp ủy quyền và quản lý ở quy mô toàn cầu trở nên thực tế.
Một recursive resolver tìm câu trả lời thay bạn và lưu cache các đáp án đó (thường do ISP, công ty hoặc nhà cung cấp công cộng vận hành).
Một authoritative DNS server là nguồn chính xác cho các bản ghi của một domain; nó không “tìm kiếm” những nơi khác — nó trả lời cho zone của mình.
Một lượt tra cứu điển hình như sau:
.com) → các authoritative servers của domain.\n4. Authoritative server trả bản ghi (như A/AAAA).\n5. Resolver lưu cache kết quả và trả về cho thiết bị của bạn.TTL (Time To Live) cho biết resolver được phép lưu một câu trả lời trong bao lâu trước khi phải kiểm tra lại.
“Propagation” chủ yếu là do các cache hết hạn ở những thời điểm khác nhau.
Các bản ghi phổ biến bạn sẽ quản lý:
A / AAAA: trỏ tên đến địa chỉ IPv4/IPv6 (web, server).\n- CNAME: biến một hostname thành bí danh của hostname khác (thường dùng cho www).\n- : nơi nhận email cho domain.\n- : xác thực và xác minh email (SPF, DKIM, DMARC).\n- : tên server nào là authoritative cho domain.Một registrar là nơi bạn đăng ký/gia hạn domain (quyền sử dụng example.com).
Một DNS host/provider vận hành các name server authoritative và lưu trữ bản ghi DNS của bạn.
Bạn có thể đăng ký ở chỗ này và host DNS ở chỗ khác bằng cách thay đổi NS tại registrar.
DNS có thể gặp sự cố do:
Các biện pháp phòng ngừa thực tế:
MXTXTNSQuy tắc thực tế: không đặt cả CNAME và A cho cùng một hostname.