Thường thì hầu hết các developer bị hạn chế hoặc thậm chí không hề biết cách thức DNS thực sự hoạt động ra sao cả. Vậy nên, sẽ rất rất hữu ích khi họ biết thêm một số thông tin tổng quan ngắn gọn, dễ hiểu ở high-level về quy trình được thực hiện khi request phân giải DNS được tạo ra.
Nói một cách đơn giản nhất, tất cả các hệ thống DNS chỉ có tác dụng thực hiện chức năng đơn giản chính là chuyển đổi domain name sang địa chỉ IP. Tuy nhiên, ở đằng sau đó là cả một hệ thống lớn và cực kỳ phức tạp.
Mọi domain name khi được đăng ký – đều sẽ được tạo ra một DNS record, thường được lưu trữ bởi công ty cung cấp domain mà bạn đã đăng ký. Tuy nhiên, một khi domain name đã được đăng ký, domain name có thể sẽ được chuyển sang lưu trữ ở một nơi khác. Đây đơn giản chỉ là một đoạn text record – lưu trữ thông tin chi tiết và sẽ được cung cấp cho ai đó khi họ gửi request yêu cầu thông tin chi tiết về domain name đó. Record này bao gồm một số thông tin phân giải dựa trên web cũng như một số thông tin khác như khi mail server (MX record),…
Trong thực tế, có nhiều loại biến thể và cách tối ưu hóa hệ thống khác nhau để cải thiện độ tin cậy và hiệu quả, nhưng các yếu tố cần thiết của quá trình phân giải DNS đều phải diễn ra như sau:
Khi bạn nhập một địa chỉ vào trình duyệt web:
- Việc kiểm tra ngay trên hệ thống của bạn sẽ được thực hiện để xem liệu rằng domain name đó đã được biết đến trên máy local hay chưa, nếu như trình duyệt đã tạo ra request trước đó từ cùng domain name hoặc nó đã được đăng ký trong DNS registry (thường được biết đến với file hosts).
- Nếu như không có record nào trên máy local được tìm thấy, khi đó một request sẽ được gửi tới local DNS server. Local DNS server này hoàn toàn có thể được chạy ngay trên máy tính local của bạn hoặc mạng văn phòng, nhưng phổ biến nhất đều được cung cấp bởi ISP – là nhà cung cấp dịch vụ internet cho bạn.
- Local DNS server sẽ kiểm tra lại xem nó có chứa thông tin chi tiết về domain name đã được truy vấn hay không. Nếu không có record nào được cache lại, khi đó DNS server cần xác định thông tin chi tiết của name server nào có chứa record cho địa chỉ mà bạn đang cố gắng phân giải (domain name server có thẩm quyền).
- Để thực hiện điều này, DNS server sẽ chia domain name thành các phần khác nhau, bắt đầu từ phần bên phải của domain name. Ví dụ, www.vu-review.com, sẽ được phân chia thành com, vu-review và www. Phần sau cùng của dấu “.” (trong trường hợp này là com) được biết đến ở level cao nhất (top level-domain hay TLD). Root name server (hay name server ở tầng cao nhất) được kết nối để tìm thông tin chi tiết về server đang giữ domain record đối với TLD.
- DNS server sẽ tạo ra một request tới TLD name server để hỏi thông tin chi tiết về name server nào chứa thông tin chi tiết của phần tiếp theo trong domain name (trong ví dụ này là vu-review). DNS server khi đó sẽ tạo ra một request tới name server giữ thông tin chi tiết vu-review.com. Name server này sau đó có thể trả về thông tin chi tiết của name server khác giữ record cho domain vu-review.com, hầu hết thì tại đây nó sẽ trả về địa chỉ IP liên kết với www.vu-review.com.
- Địa chỉ được trả về bởi name server từ xa có thể là địa chỉ IP hoặc cũng có thể là domain name khác, được biết đến với tên gọi CNAME. Ví dụ, www.vu-review.com có thể trả về một tham chiếu tới cdn-hcm.vngcloud.vn. Nếu CNAME được trả về, DNS server khi đó sẽ lặp lại quá trình ở trên với domain name là tên CNAME cho đến khi địa chỉ IP được phân giải.
Ví dụ minh họa về quá trình đệ quy phiân giải DNS được thực hiện như sau:
Giới thiệu công cụ kiểm tra DNS: NSLookup
Tất cả thông tin phân giải domain name đều luôn là public cả. Bằng cách sử dụng công cụ nslookup – công cụ có sẵn trên hầu hết các loại máy tính hiện nay. Bạn có thể truy vấn trực tiếp DNS server và tìm tất cả các thông tin chi tiết của bất kỳ domain name nào. NSLookup cho phép bạn truy vấn sử dụng DNS server mặc định và cũng có thể chỉ ra DNS server khác (DNS server như của Google là 8.8.8.8) để đảm bảo rằng thông tin chi tiết DNS trên máy local của bạn cũng giống như của những người khác.