DNS là gì? Nó hoạt động như thế nào?

Hệ thống tên miền (Domain Name System / DNS) là danh bạ khổng lồ dành riêng cho Internet. Con người chúng ta truy cập thông tin trực tuyến thông qua các tên miền dễ hiểu- dễ nhớ, chẳng hạn như vnexpress.net hoặc youtube.com. Trình duyệt web tương tác thông qua địa chỉ giao thức Internet (Internet Protocol / IP). DNS có nhiệm vụ dịch tên miền thành địa chỉ IP (IP address) để trình duyệt có thể tải các tài nguyên Internet về.

Mỗi thiết bị được kết nối với Internet có một địa chỉ IP duy nhất mà các máy khác sử dụng để tìm đến nó. Máy chủ DNS giúp con người loại bỏ nhiệm vụ của việc phải ghi nhớ các địa chỉ IP như 192.168.1.1 (trong IPv4) hoặc các địa chỉ IP gồm chữ và số phức tạp hơn nhiều như 2400:cb00:2048:1::c629:d7a2 (trong IPv6).


DNS hoạt động như thế nào?

Quá trình phân giải DNS (DNS resolution) bao gồm việc chuyển đổi tên máy chủ / hostname (chẳng hạn như www.example.com) thành địa chỉ IP thân thiện với máy tính (chẳng hạn như 192.168.1.1). Địa chỉ IP được cấp cho mỗi thiết bị trên Internet và địa chỉ đó là cần thiết để việc tìm thiết bị Internet diễn ra chính xác – giống như địa chỉ đường phố được sử dụng để tìm một ngôi nhà cụ thể vậy. 

Khi người dùng muốn tải một trang web, sự chuyển đổi phải xảy ra giữa thông tin người dùng nhập vào trình duyệt web của họ (vd: example.com) và địa chỉ thân thiện với máy (địa chỉ IP) cần thiết để định vị website example.com đang nằm trên máy chủ web nào.

Để hiểu được quy trình đằng sau quá trình phân giải DNS, điều quan trọng là chúng ta phải tìm hiểu về các thành phần phần cứng khác nhau mà truy vấn DNS phải di chuyển qua. Đối với trình duyệt web, việc tra cứu DNS xảy ra ở chế độ “ẩn / sau cánh gà” và không yêu cầu tương tác từ máy tính của người dùng ngoài yêu cầu ban đầu.


Có 4 máy chủ DNS tham gia vào việc tải trang web:

  • Trình đệ quy DNS – Đệ quy (recursor) có thể được coi như người thủ thư, người được yêu cầu đi tìm một cuốn sách cụ thể ở đâu đó trong thư viện. Đệ quy DNS là một máy chủ được thiết kế để nhận các truy vấn từ các máy khách thông qua các ứng dụng như trình duyệt web. Thông thường, trình đệ quy sau đó chịu trách nhiệm thực hiện các yêu cầu bổ sung để đáp ứng truy vấn DNS của máy khách.
  • Máy chủ định danh gốc (root nameserver) – Máy chủ root là bước đầu tiên trong việc dịch (phân giải) các tên máy chủ có thể đọc được của con người thành địa chỉ IP. Nó có thể được coi như một chỉ mục trong thư viện trỏ đến các giá sách khác nhau – thường nó dùng như một tham chiếu đến các vị trí cụ thể hơn.
  • Máy chủ định danh TLD – Máy chủ miền cấp cao nhất (TLD) có thể được coi như một giá sách cụ thể trong thư viện. Máy chủ định danh này là bước tiếp theo trong việc tìm kiếm một địa chỉ IP cụ thể và nó lưu trữ phần cuối cùng của tên máy chủ (trong ví dụ example.com, máy chủ TLD là “com”).
  • Máy chủ định danh có thẩm quyền (authoritative nameserver) – Máy chủ định danh cuối cùng này có thể được coi như một cuốn từ điển trên giá sách, trong đó một tên cụ thể có thể được dịch theo định nghĩa của nó. Máy chủ định danh có thẩm quyền là điểm dừng cuối cùng trong truy vấn máy chủ định danh (nameserver query). Nếu máy chủ định danh có thẩm quyền có quyền truy cập vào bản ghi được yêu cầu, nó sẽ trả lại địa chỉ IP cho tên máy chủ (hostname / tên miền) được yêu cầu trở lại DNS Recursor (thủ thư) đã thực hiện yêu cầu lúc ban đầu.

Sự khác biệt giữa máy chủ DNS có thẩm quyền và trình phân giải DNS đệ quy là gì?

Cả hai khái niệm đều đề cập đến các máy chủ (nhóm máy chủ) không thể tách rời với cơ sở hạ tầng DNS, nhưng mỗi máy thực hiện một vai trò khác nhau và hoạt động ở các vị trí khác nhau bên trong đường dẫn truy vấn DNS. 

Một cách để suy nghĩ về sự khác biệt là trình phân giải đệ quy ở đầu truy vấn DNS và máy chủ định danh có thẩm quyền ở cuối.


Trình phân giải DNS đệ quy

Trình phân giải đệ quy (recursive resolver) là máy tính phản hồi yêu cầu đệ quy từ máy khách và dành thời gian để theo dõi bản ghi DNS. 

Nó thực hiện điều này bằng cách thực hiện một loạt các yêu cầu cho đến khi nó nhận được từ máy chủ định danh DNS có thẩm quyền (authoritative DNS nameserver) cho bản ghi được yêu cầu (hoặc hết thời gian chờ hoặc trả về lỗi nếu không tìm thấy bản ghi). 

May mắn là, các trình phân giải DNS đệ quy không phải lúc nào cũng cần thực hiện nhiều yêu cầu đến vậy để theo dõi các bản ghi cần thiết nhằm phản hồi cho một máy khách; bộ nhớ đệm cache là một quá trình lưu trữ dữ liệu giúp rút ngắn các yêu cầu cần thiết bằng cách cung cấp bản ghi tài nguyên được yêu cầu trước đó trong tra cứu DNS (DNS lookup).

quy trình phân giải DNS

Máy chủ DNS có thẩm quyền

Nói một cách đơn giản, máy chủ DNS có thẩm quyền là một máy chủ thực sự lưu giữ và chịu trách nhiệm về các bản ghi tài nguyên DNS. Đây là máy chủ ở cuối chuỗi tra cứu DNS sẽ phản hồi với bản ghi tài nguyên được truy vấn, cuối cùng nó cho phép trình duyệt web thực hiện yêu cầu có được địa chỉ IP cần thiết để truy cập trang web hoặc các tài nguyên web khác. 

Máy chủ định danh có thẩm quyền có thể đáp ứng các truy vấn từ dữ liệu của chính nó mà không cần truy vấn nguồn khác, vì nó là nguồn trung thực cuối cùng cho các bản ghi DNS nhất định.

máy chủ định danh có thẩm quyền

Điều đáng nói là trong các trường hợp truy vấn dành cho miền phụ (subdomain) như foo.example.com hoặc blog.cloudflare.com, một máy chủ định danh bổ sung sẽ được thêm vào ngay sau máy chủ định danh có thẩm quyền, chịu trách nhiệm lưu trữ bản ghi CNAME của miền phụ.

máy chủ định danh của miền phụ

Có một sự khác biệt chính giữa nhiều dịch vụ DNS và dịch vụ mà Cloudflare cung cấp. Các trình phân giải đệ quy DNS khác nhau như Google DNS, OpenDNS và các nhà cung cấp như Comcast đều duy trì cài đặt trung tâm dữ liệu của trình phân giải đệ quy DNS. Các trình phân giải này cho phép thực hiện các truy vấn nhanh chóng và dễ dàng thông qua các cụm hệ thống máy tính được tối ưu hóa DNS, nhưng về cơ bản chúng khác với các máy chủ định danh do Cloudflare lưu trữ.

Cloudflare duy trì các máy chủ định danh cấp cơ sở hạ tầng không thể thiếu đối với các hoạt động của Internet. Một ví dụ chính là mạng máy chủ f-root mà Cloudflare chịu trách nhiệm lưu trữ một phần. F-root là một trong những thành phần cơ sở hạ tầng máy chủ định danh DNS cấp cơ sở chịu trách nhiệm về hàng tỷ yêu cầu Internet mỗi ngày. 

Mạng Anycast của chúng tôi đặt chúng tôi vào vị trí độc nhất để xử lý khối lượng lớn lưu lượng DNS mà không bị gián đoạn dịch vụ.


Các bước trong tra cứu DNS là gì?

Đối với hầu hết các tình huống, DNS liên quan đến việc: một tên miền được dịch sang địa chỉ IP chuẩn xác. 

Để tìm hiểu cách thức hoạt động của quá trình này, hãy thực hiện theo đường dẫn tra cứu DNS khi nó di chuyển từ trình duyệt web của người dùng, xuyên qua quy trình tra cứu DNS và quay lại lần nữa. Chúng ta hãy xem xét lần lượt các bước.

Lưu ý: Thông thường thông tin tra cứu DNS sẽ được lưu trữ cục bộ, cả bên trong máy tính truy vấn hoặc từ xa trong cơ sở hạ tầng DNS. Thường có 8 bước trong tra cứu DNS. Khi thông tin DNS được lưu vào bộ nhớ cache, các bước sẽ được bỏ qua khỏi quy trình tra cứu DNS, giúp quá trình này diễn ra nhanh hơn. Ví dụ dưới đây phác thảo tất cả 8 bước khi không có gì được lưu vào bộ nhớ cache.

8 bước trong tra cứu DNS:

  1. Người dùng nhập ‘example.com’ vào trình duyệt web và truy vấn sẽ được chuyển tới Internet và được nhận bởi trình phân giải đệ quy DNS (DNS recursive resolver).
  2. Sau đó, trình phân giải sẽ truy vấn một máy chủ định danh gốc DNS (DNS root namesever).
  3. Sau đó, máy chủ root sẽ phản hồi trình phân giải bằng địa chỉ của máy chủ DNS của Miền cấp cao nhất (Top Level Domain / TLD) (chẳng hạn như .com hoặc .net), nơi lưu trữ thông tin cho các miền của nó. Khi tìm kiếm example.com, yêu cầu của chúng ta được hướng tới TLD .com.
  4. Sau đó, trình phân giải đưa ra yêu cầu tới .com TLD.
  5. Sau đó, máy chủ TLD sẽ phản hồi bằng địa chỉ IP của máy chủ định danh của miền, example.com.
  6. Cuối cùng, trình phân giải đệ quy gửi một truy vấn đến máy chủ định danh của miền.
  7. Địa chỉ IP cho example.com sau đó được trả về trình phân giải từ máy chủ định danh.
  8. Sau đó, trình phân giải DNS sẽ phản hồi lại trình duyệt web bằng địa chỉ IP của miền được yêu cầu lúc ban đầu.

Sau khi 8 bước của quá trình tìm kiếm DNS trả về được địa chỉ IP cho tên miền example.com, trình duyệt có khả năng thực hiện yêu cầu tới trang web:

9. Trình duyệt thực hiện một yêu cầu HTTP đến địa chỉ IP.

10. Máy chủ tại IP đó trả về trang web- cái sẽ được hiển thị trong trình duyệt (bước 10).

quy trình tìm kiếm DNS diễn ra trong thực tế

Trình phân giải DNS là gì?

Trình phân giải DNS (DNS resolver) là điểm dừng đầu tiên trong quá trình tra cứu DNS, và nó chịu trách nhiệm xử lý máy khách đã đưa ra yêu cầu ban đầu. Trình phân giải bắt đầu chuỗi truy vấn cuối cùng dẫn đến một URL được dịch thành địa chỉ IP cần thiết.

Lưu ý: Tra cứu DNS thông thường chưa được cache sẽ liên quan đến cả truy vấn đệ quy và lặp lại.

Điều quan trọng là chúng ta phải phân biệt được giữa truy vấn DNS đệ quy (recursive DNS) và trình phân giải DNS đệ quy (recursive DNS resolver)

Truy vấn đề cập đến yêu cầu tới trình phân giải DNS, yêu cầu giải quyết truy vấn. 

Trình phân giải đệ quy DNS là máy tính chấp nhận truy vấn đệ quy và xử lý phản hồi bằng cách đưa ra các yêu cầu cần thiết.

trình phân giải DNS đệ quy

Các loại truy vấn DNS là gì?

Trong một tra cứu DNS điển hình, có ba loại truy vấn xảy ra. Bằng cách sử dụng kết hợp các truy vấn này, một quy trình được tối ưu hóa để phân giải DNS có thể dẫn đến việc giảm khoảng cách di chuyển. Trong tình huống lý tưởng, dữ liệu bản ghi đã lưu trong bộ nhớ cache sẽ có sẵn, cho phép máy chủ định danh DNS trả về một truy vấn không đệ quy (non-recursive query).

3 loại truy vấn DNS:

  1. Truy vấn đệ quy – Trong truy vấn đệ quy, máy khách DNS yêu cầu máy chủ DNS (thường là trình phân giải đệ quy DNS) sẽ trả lời máy khách bằng bản ghi tài nguyên được yêu cầu hoặc thông báo lỗi nếu trình phân giải không thể tìm thấy bản ghi.
  2. Truy vấn lặp lại – trong trường hợp này, máy khách DNS sẽ cho phép máy chủ DNS trả về câu trả lời tốt nhất có thể. Nếu máy chủ DNS được truy vấn không khớp với tên truy vấn, nó sẽ trả về thông tin giới thiệu đến máy chủ DNS có thẩm quyền cho cấp thấp hơn của không gian tên miền. Máy khách DNS sau đó sẽ thực hiện truy vấn đến địa chỉ giới thiệu. Quá trình này tiếp tục với các máy chủ DNS bổ sung trong chuỗi truy vấn cho đến khi xảy ra lỗi hoặc hết thời gian.
  3. Truy vấn không đệ quy – thường điều này sẽ xảy ra khi máy khách phân giải DNS (DNS resolver client) truy vấn máy chủ DNS (DNS server) về bản ghi mà nó có quyền truy cập, vì nó có thẩm quyền cho bản ghi hoặc bản ghi tồn tại bên trong bộ nhớ cache của nó. Thông thường, một máy chủ DNS sẽ lưu trữ các bản ghi DNS để ngăn chặn việc tiêu thụ thêm băng thông và tải trên các máy chủ đầu nguồn (upstream servers).

DNS caching là gì? Bộ nhớ đệm DNS xảy ra ở đâu?

Mục đích của bộ nhớ đệm là để dữ liệu được lưu trữ tạm thời ở một vị trí dẫn đến cải thiện hiệu suất và độ tin cậy cho các yêu cầu dữ liệu. 

Bộ nhớ đệm DNS liên quan đến việc lưu trữ dữ liệu gần hơn với máy khách yêu cầu, để truy vấn DNS có thể được giải quyết sớm hơn và có thể tránh được các truy vấn bổ sung bên dưới chuỗi tra cứu DNS, do đó cải thiện thời gian tải và giảm tiêu thụ băng thông / CPU. 

Dữ liệu DNS có thể được lưu vào bộ nhớ cache ở nhiều vị trí khác nhau, mỗi vị trí sẽ lưu trữ các bản ghi DNS trong một khoảng thời gian nhất định được xác định theo thời gian tồn tại (time-to-live / TTL) .

Bộ nhớ đệm DNS của trình duyệt

Các trình duyệt web hiện đại được thiết kế (theo mặc định) để lưu các bản ghi DNS vào bộ nhớ cache trong một khoảng thời gian nhất định. Mục đích ở đây là rõ ràng; bộ nhớ đệm DNS càng ở gần với trình duyệt web, thì càng phải thực hiện ít bước xử lý hơn để kiểm tra bộ nhớ cache và thực hiện các yêu cầu chính xác đối với địa chỉ IP. Khi yêu cầu bản ghi DNS được thực hiện, bộ nhớ cache của trình duyệt là vị trí đầu tiên được kiểm tra cho bản ghi được yêu cầu.

Trong trình duyệt chrome, bạn có thể xem trạng thái bộ nhớ cache DNS của mình bằng cách truy cập chrome://net-internals/#dns.

Bộ nhớ đệm DNS cấp hệ điều hành (OS)

Trình phân giải DNS cấp hệ điều hành là điểm dừng cục bộ thứ hai và cuối cùng trước khi truy vấn DNS rời máy tính của bạn. Quá trình bên trong hệ điều hành của bạn được thiết kế để xử lý truy vấn này thường được gọi là “trình phân giải sơ khai / stub resolver” hoặc máy khách DNS. 

Khi “stub resolver” nhận được yêu cầu từ một ứng dụng, trước tiên nó sẽ kiểm tra bộ nhớ cache của chính nó xem liệu nó có bản ghi hay không. Nếu không, nó sẽ gửi một truy vấn DNS (với cờ đệ quy được đặt), bên ngoài mạng cục bộ tới trình phân giải đệ quy DNS bên trong nhà cung cấp dịch vụ Internet (ISP).

Bộ nhớ đệm của trình phân giải đệ quy

Khi trình phân giải đệ quy bên trong ISP nhận được truy vấn DNS, giống như tất cả các bước trước đó, nó cũng sẽ kiểm tra xem bản dịch địa chỉ máy chủ sang IP được yêu cầu đã được lưu trữ bên trong lớp lưu trữ cục bộ lâu dài hay chưa.

Trình phân giải đệ quy cũng có chức năng bổ sung tùy thuộc vào các loại bản ghi mà nó có trong bộ nhớ cache:

  1. Nếu trình phân giải không có bản ghi A, nhưng có bản ghi NS cho máy chủ định danh có thẩm quyền, nó sẽ truy vấn trực tiếp các máy chủ định danh đó, bỏ qua một số bước trong truy vấn DNS. Lối tắt này ngăn chặn việc tra cứu từ máy chủ tên gốc và .com (trong ví dụ tìm kiếm DNS cho trên miền example.com) và giúp việc giải quyết truy vấn DNS diễn ra nhanh hơn.
  2. Nếu trình phân giải không có bản ghi NS, nó sẽ gửi một truy vấn đến máy chủ TLD (.com trong trường hợp này), bỏ qua máy chủ root.
  3. Trong trường hợp không chắc chắn rằng trình phân giải không có bản ghi trỏ đến máy chủ TLD, thì nó sẽ truy vấn máy chủ root. Sự kiện này thường xảy ra sau khi bộ nhớ cache DNS đã được xóa.

(Biên tập từ bài viết What Is DNS? | How DNS Works của Cloudflare)

Leave a Comment