Các khái niệm cơ bản về DNS

DNS là gì?

DNS-Domain Name System là một csdl phân tán đc các ứng dụng tcp/ip sử dụng để ánh xạ giữa hostname và địa chỉ IP và routing email. Gọi là phân tán bởi vì ko có một site đơn lẻ nào quản lý toàn bộ thông tin. Mỗi site sẽ quản lý csdl của riêng nó trên server và xử lý các truy vấn từ Internet hoặc từ các clients. DNS cung cấp giao thức cho phép client và server giao tiếp với nhau.

Có thể hình dung DNS là một cây ngược giống như hệ thống file trong Linux. Trong “cây” này có một gốc gọi là root, đc ký hiệu bằng một dấu chấm-dot(.)

1. Domain namespace

Một domain namespace sẽ chứa một “cây” các domain names. Mỗi node trong cây sẽ giữ thông tin đại diện cho domain name. Mỗi một tổ chức có thể tạo riêng cho mình một domain namespace để tự quản lý các host trong mạng của họ. Trong một domain thì tên dành cho một host là duy nhất, ko thể trùng với nhau đc.

2. Domain names

Mỗi node trong cây có một nhãn riêng. Một nhãn rỗng đại diện cho root. Một domain name đầy đủ của bất kỳ một node nào trong “cây” là thứ tự các nhãn trong đường dẫn từ node đó đến root, tên mỗi node đc phân chia bằng các dấu chấm (.) Việc đánh tên này sẽ xác định được vị trí của node đó trong “cây”. Mỗi node trong cây đc xác định bằng một FQDN – tên đầy đủ chỉ đường dẫn đến node trong cây.

Ở trên, xuất hiện 2 node có tên hobbes trong cùng một domain mà pa.ca.us. Nhưng node tên là hobbes.lg.ca.us thì nằm trong domain lb.ca.us vẫn hợp lệ.

3. Domains

Một domain là một nhánh của namespace. Domain là tập các node có cùng một node cha, các node này tạo nên một domain. Tên của domain này cũng chính là tên của node cha. Một domain có thể có các nhánh con của nó. Các nhánh này đc gọi là subdomain – domain con.

Ngoài ra, các domain còn đc phân biệt dựa vào level:

  • Top-level domain ngay dưới root
  •  First-level domain là con của top
  •   Second-level domain là con của first …

4. Resource records

Dữ liệu ứng với domain names đc chứa trong các resource record- bản ghi. Các records đc chia thành các classes, mỗi class chứa các types(kiểu) chịu trách nhiệm phân giải cho từng dịch vụ trong namespace. Các class khác nhau có thể định nghĩa các kiểu record khác nhau. Một số RRs thông dụng:

  • SOA(Start of Authority): Chỉ ra rằng server này là nơi tốt nhất để cung cấp dữ liệu và thông tin cho toàn zone. Name server đc đánh giá có quyền lực nhất trong zone thông qua SOA record này.
  • NS(Name Server): Record này chỉ ra đâu là nameserver cho toàn zone.
  • A(Address): record này chịu trách nhiệm phân giải tên sang IP
  • PTR(Pointer): record này chịu trách nhiệm phân giả IP sang tên
  • MX(Mail Exchangers): record này chỉ ra đâu là mail server cho domain.

5. Delegation

Một trong những mục đích của DNS đó là quản trị phân tán. Ta có thể chia nhỏ việc quản lý thành nhiều phần khác nhau. Một domain có thể có nhiều subdomains.

Mỗi subdomain có thể đại diện cho một tổ chức và tổ chức đó có toàn quyền để điều khiển DNS của tổ chức đó. Việc phân quyền này làm cho DNS trở nên nhẹ hơn, ko phải quản lý tập trung bởi dữ liệu là rất lớn

6. Nameserver and Zones

Các chương trình lưu trữu toàn bộ thông tin về domain namespace gọi là nameserver. Nameserver thông thường sẽ có thông tin hoàn chỉnh về một phần nào đó của domain namespace gọi là zone, zone này load từ file hoặc từ nameserver khác.

Hình trên cho ta thấy một domain edu đc chia ra thành nhiều zone. Mỗi zone lại đc phân quyền quản lý riêng.

Có 2 kiểu nameserver: primary master và secondary master.
Primary: chứa tất cả các thông tin cho domain
Secondary: hoạt động dự phòng, đề phòng trường hợp Primary fail.
Qúa trình Primary gửi bản sao của nó đến Secondary gọi là zone transfer.

7. Resolvers

Là các clients truy cập vào nameservers. Các chương trình chạy host nếu cần thông tin từ domain namespace sẽ sử dụng resolver.
Resolver quản lý:
-Truy vấn nameserver
-Quản lý các trả lời từ nameserver
-Trả thông tin về cho chương trình yêu cầu

8.Querying the database

Các truy vấn dns có thể đc gửi từ một DNS client ( resolver) đến một DNS server hoặc giữa 2 DNS server.
Một yêu cầu DNS thực ra chỉ là một truy vấn yêu cầu đưa ra các kiểu dữ liêu(RRs). Các kiểu dữ liệu trong truy vấn này có thể là dữ liệu ánh xạ hostname->IP(RR A), mail( MX)…

Có 2 kiểu truy vấn DNS có thể đc gửi đến DNS server:

Recursive: truy vấn theo kiểu đệ quy
Iterative: truy vấn theo kiểu lặp đi lặp lại

+ Một truy vấn kiểu recursive bắt một DNS phải trả lời cho nó rằng truy vấn đó có thành công hay ko. DNS clients(resolver) sẽ tạo ra các truy vấn kiểu này. Với truy vấn kiểu này, DNS server sẽ phải liên lạc với bất cứ một DNS server nào khác mà nó có thể để xử lý truy vấn. Khi nhận tín hiệu trả lời thành công từ DNS server khác, nó sẽ gửi câu trả lời đó đến DNS client. Việc truy vấn kiểu này thường xảy ra do resolvers gửi yêu cầu đến DNS server.
Khi 1 DNS server xử lý 1 truy vấn recursive và truy vấn ko thể đc phân giải từ dữ liệu cục bộ ( các zone file cục bộ hoặc cache của các truy vấn trước), truy vấn kiểu này phải đc leo thang đến một root DNS server. Mỗi một domain nên có 1 file  chứa các entries cho root DNS servers của các domain trên Internet.

+ Một truy vấn kiểu iterative là kiểu mà 1 client hỏi DNS server, server sẽ trả lại thông tin tốt nhất mà nó có hiện tại. Thông tin này có thể trong cache. Nếu nó ko biết thông tin mà client hỏi, nó sẽ trả về client một DNS gần nhất mà nó biết.

Khi client truy vấn đén DNS server nó sẽ dùng recursive, còn khi server truy vấn đến server khác, nó sẽ sử dụng iterative.

Hình trên cho ta thấy cả 2 truy vấn. Đầu tiên resolver hỏi nameserver xem có biết địa chỉ www.whitehouse.gov hay ko. Nếu biết thì nameserver sẽ trả lại cho resolver một IP của domain name kia. Nếu ko biết, nameserver sẽ thực hiện các iterative query(2-7) hỏi các nameserver gần với domain name đó nhất để lấy cho được thông tin.

Bài viết liên quan

Leave a Reply

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