Hệ thống phân giải tên miền

**Hệ thống phân giải tên miền** (hay được viết tắt là **DNS** do tên tiếng Anh ***Domain Name System***) là một hệ thống cho phép thiết lập tương ứng giữa địa chỉ IP và tên miền trên Internet.

## Tổng quan
Hệ thống phân giải tên miền (DNS) về căn bản là một hệ thống giúp cho việc chuyển đổi các tên miền mà con người dễ ghi nhớ (dạng ký tự, ví dụ www.example.com) sang địa chỉ IP vật lý (dạng số, ví dụ 123.11.5.19) tương ứng của tên miền đó. DNS giúp liên kết với các trang thiết bị mạng cho các mục đích định vị và địa chỉ hóa các thiết bị trên Internet.

Phép so sánh thường được sử dụng để giải thích cho DNS là, nó phục vụ như một "Danh bạ điện thoại", có khả năng tìm kiếm và dịch tên miền thành địa chỉ IP. Ví dụ, www.example.com dịch thành 208.77.188.166. Tên miền Internet dễ nhớ hơn các địa chỉ IP, là 208.77.188.166 (IPv4) hoặc 2001: db8: 1f70:: 999: de8: 7648:6 e8 (IPv6).

Hệ thống phân giải tên miền phân phối trách nhiệm gán tên miền và lập bản đồ những tên tới địa chỉ IP bằng cách định rõ những máy chủ có thẩm quyền cho mỗi tên miền. Những máy chủ có tên thẩm quyền được phân công chịu trách nhiệm đối với tên miền riêng của họ, và lần lượt có thể chỉ định tên máy chủ khác độc quyền của họ cho các tên miền phụ. Kỹ thuật này đã thực hiện các cơ chế phân phối DNS, chịu đựng lỗi, và giúp tránh sự cần thiết cho một trung tâm đơn lẻ để đăng ký được tư vấn và liên tục cập nhật.

Nhìn chung, Hệ thống phân giải tên miền cũng lưu trữ các loại thông tin khác, chẳng hạn như danh sách các máy chủ email mà chấp nhận thư điện tử cho một tên miền Internet. Bằng cách cung cấp cho một thế giới rộng lớn, phân phối từ khóa – cơ sở của dịch vụ đổi hướng, Hệ thống phân giải tên miền là một thành phần thiết yếu cho các chức năng của Internet. Các định dạng khác như các thẻ RFID, mã số UPC, ký tự Quốc tế trong địa chỉ email và tên máy chủ, và một loạt các định dạng khác có thể có khả năng sử dụng DNS.

## Chức năng của DNS
Mỗi website có một tên (là tên miền hay đường dẫn URL: Uniform Resource Locator) và một địa chỉ IP. Địa chỉ IP gồm 4 nhóm số cách nhau bằng dấu chấm(IPv4). Khi mở một trình duyệt Web và nhập tên website, trình duyệt sẽ đến thẳng website mà không cần phải thông qua việc nhập địa chỉ IP của trang web. Quá trình "dịch" tên miền thành địa chỉ IP để cho trình duyệt hiểu và truy cập được vào website là công việc của một DNS server. Các DNS trợ giúp qua lại với nhau để dịch địa chỉ "IP" thành "tên" và ngược lại. Người sử dụng chỉ cần nhớ "tên", không cần phải nhớ địa chỉ IP (địa chỉ IP là những con số rất khó nhớ).

## Nguyên tắc làm việc của DNS
* Mỗi nhà cung cấp dịch vụ vận hành và duy trì DNS server riêng của mình, gồm các máy bên trong phần riêng của mỗi nhà cung cấp dịch vụ đó trong Internet. Tức là, nếu một trình duyệt tìm kiếm địa chỉ của một website thì DNS server phân giải tên website này phải là DNS server của chính tổ chức quản lý website đó chứ không phải là của một tổ chức (nhà cung cấp dịch vụ) nào khác.
* INTERNIC (Internet Network Information Center) chịu trách nhiệm theo dõi các tên miền và các DNS server tương ứng. INTERNIC là một tổ chức được thành lập bởi NSF (National Science Foundation), AT&T và Network Solution, chịu trách nhiệm đăng ký các tên miền của Internet. INTERNIC chỉ có nhiệm vụ quản lý tất cả các DNS server trên Internet chứ không có nhiệm vụ phân giải tên cho từng địa chỉ.
* DNS có khả năng truy vấn các DNS server khác để có được một cái tên đã được phân giải. DNS server của mỗi tên miền thường có hai việc khác biệt. Thứ nhất, chịu trách nhiệm phân giải tên từ các máy bên trong miền về các địa chỉ Internet, cả bên trong lẫn bên ngoài miền nó quản lý. Thứ hai, chúng trả lời các DNS server bên ngoài đang cố gắng phân giải những cái tên bên trong miền nó quản lý.
* DNS server có khả năng ghi nhớ lại những tên vừa phân giải. Để dùng cho những yêu cầu phân giải lần sau. Số lượng những tên phân giải được lưu lại tùy thuộc vào quy mô của từng DNS.

## DNS server

Do các DNS có tốc độ biên dịch khác nhau, có thể nhanh hoặc có thể chậm, do đó người sử dụng có thể chọn DNS server để sử dụng cho riêng mình. Có các cách chọn lựa cho người sử dụng. Sử dụng DNS mặc định của nhà cung cấp dịch vụ (Internet), trường hợp này người sử dụng không cần điền địa chỉ DNS vào network connections trong máy của mình. Sử dụng DNS server khác (miễn phí hoặc trả phí) thì phải điền địa chỉ DNS server vào network connections. Địa chỉ server cũng là 4 nhóm số cách nhau bởi các dấu chấm.

## Kiến trúc DNS

### Không gian tên miền (Domain name space)

Không gian tên miền là một kiến trúc dạng cây (hình), có chứa nhiều nốt (node). Mỗi nốt trên cây sẽ có một nhãn và có không hoặc nhiều resource record (RR), chúng giữ thông tin liên quan tới tên miền. Nốt root không có nhãn.

### Tên miền (Domain name)
Tên miền được tạo thành từ các nhãn và phân cách nhau bằng dấu chấm (.), ví dụ example.com. Tên miền còn được chia theo cấp độ như tên miền top level, tên miền cấp 1, cấp 2...

### Cú pháp tên miền (Domain name syntax)
Tên miền được định nghĩa trong các , , và RFC 2181. Một tên miền bao gồm một hoặc nhiều phần, gọi là các nhãn (label), chúng cách nhau bởi dấu chấm (.), ví dụ example.com.

Hệ thống phân giải tên miền tính theo hướng từ phải sang trái. Ví dụ www.example.com thì nhãn *example* là một tên miền con của tên miền *com*, và *www* là tên miền con của tên miền *example.com*. Cây cấu trúc này có thể có tới 127 cấp.

### Tên miền quốc tế hóa (Internationalized domain names)
Do sự giới hạn của bộ ký tự ASCII trong việc diễn tả các ngôn ngữ khác nhau trên thế giới, ICANN cho phép thiết lập hệ thống IDNA (Internationalized domain names Application), dùng ký tự Unicode để biểu diễn tên miền, ví dụ http://TênMiềnTiếngViệt.vn.

### Máy chủ tên miền (NS - Name Server)
Máy chủ tên miền chứa thông tin lưu trữ về một số tên miền. Hệ thống phân giải tên miền được vận hành bởi hệ thống dữ liệu phân tán, dạng Client-Server. Các node của hệ thống dữ liệu này là các máy chủ tên miền. Mỗi một tên miền sẽ có ít nhất một máy chủ tên miền chứa thông tin về tên miền đó. Các thông tin về máy chủ tên miền sẽ được lưu trữ trong các zone của tên miền. Có hai dạng Name Server (NS) là là Primary và Secondary. Một Client sẽ ưu tiên hỏi Primary trước và thử lại với Secondary nếu Primary không thể trả lời thông tin về tên miền đó trong thời gian quy định.

### Máy chủ tên miền có thẩm quyền (Authoritative name server)
Máy chủ tên miền có thẩm quyền là một máy chủ tên miền có thể trả lời các truy vấn DNS từ các dữ liệu gốc, ví dụ, tên miền quản trị hoặc phương thức DNS động.

## Vận hành

### Cơ chế phân giải địa chỉ (Address resolution mechanism)

Các máy chủ phân giải tên miền theo cơ chế từ cao xuống thấp.

### Máy chủ tên miền Recursive và Caching (Recursive and caching name server)
Theo lý thuyết, các máy chủ tên miền có thẩm quyền đã đủ dùng để vận hành hệ thống Internet. Tuy nhiên, nếu chỉ có máy chủ tên miền thẩm quyền, mỗi truy vấn DNS phải bắt đầu đi từ root zone, và mỗi hệ thống người dùng phải vận hành một phần mềm để làm nhiệm vụ phân giải.

Để giảm lượng băng thông trên Internet, DNS cho phép các máy chủ DNS lưu Cache các kết quả mà nó đã từng truy vấn.

### Phân giải DNS
Phần client của DNS gọi là DNS resolver.
* Truy vấn non-recursive: DNS resolver client truy vấn DNS server để tìm record của tên miền chưa trên server đó.
* Truy vấn recursive
* Truy vấn iterative

### Circular dependencies and glue records

### Mẩu tin caching (Record caching)

### Tra cứu ngược (Reverse lookup)
Tra cứu ngược là một truy vấn để tìm tên miền khi biết địa chỉ IP.

### Tra cứu client (Client lookup)

## Giao thức vận chuyển
DNS chủ yếu hoạt động trên giao thức UDP và cổng 53. Một số hoạt động khác có sử dụng giao thức TCP.

## Cấu trúc gói tin DNS
* **ID**: Là một trường 16 bits, chứa mã nhận dạng, nó được tạo ra bởi một chương trình để thay cho truy vấn. Gói tin hồi đáp sẽ dựa vào mã nhận dạng này để hồi đáp lại. Chính vì vậy mà truy vấn và hồi đáp có thể phù hợp với nhau.
* **QR**: Là một trường 1 bit. Bít này sẽ được thiết lập là 0 nếu là gói tin truy vấn, được thiết lập là một nếu là gói tin hồi đáp.
* **Opcode**: Là một trường 4 bits, được thiết lập là 0 cho cờ hiệu truy vấn, được thiết lập là 1 cho truy vấn ngược, và được thiết lập là 2 cho tình trạng truy vấn.
* **AA**: Là trường 1 bit, nếu gói tin hồi đáp được thiết lập là 1, sau đó nó sẽ đi đến một server có thẩm quyền giải quyết truy vấn.
* **TC**: Là trường 1 bit, trường này sẽ cho biết là gói tin có bị cắt khúc ra do kích thước gói tin vượt quá băng thông cho phép hay không.
* **RD**: Là trường 1 bit, trường này sẽ cho biết là truy vấn muốn server tiếp tục truy vấn một cách đệ quy.
* **RA**: Trường 1 bit này sẽ cho biết truy vấn đệ quy có được thực thi trên server không.
* **Z**: Là trường 1 bit. Đây là một trường dự trữ, và được thiết lập là 0.
* **Rcode**: Là trường 4 bits, gói tin hồi đáp sẽ có thể nhận các giá trị sau:
:**0**: Cho biết là không có lỗi trong quá trình truy vấn.
:**1**: Cho biết định dạng gói tin bị lỗi, server không hiểu được truy vấn.
:**2**: Server bị trục trặc, không thực hiện hồi đáp được.
:**3**: Tên bị lỗi. Chỉ có server có đủ thẩm quyền mới có thể thiết lập giá trị náy.
:**4**: Không thi hành. Server không thể thực hiện chức năng này.
:**5**: Server từ chối thực thi truy vấn.
* **QDcount**: Số lần truy vấn của gói tin trong một vấn đề.
* **ANcount**: Số lượng tài nguyên tham gia trong phần trả 
lời.
* **NScount**: Chỉ ra số lượng tài nguyên được ghi lại trong các phần có thẩm quyền của gói tin.
* **ARcount**: Chỉ ra số lượng tài nguyên ghi lại trong phần thêm vào của gói tin.

## Mẩu tin resoucre DNS (DNS resource records)
Mẩu tin Resource Record (RR) lưu trữ thông tin của tên miền. Các RR chia thành các lớp (class) và có kiểu (type) khác nhau. Một số kiểu RR phổ biến:
* Start of Authority (SOA) resource record: định nghĩa các tham số toàn cục cho zone hoặc tên miền. Một tệp tin zone chỉ được phép chứa một mẩu tin SOA và phải nằm ở vị trí đầu tiên trước các mẩu tin khác.
* Name server (NS) resource record: chỉ ra Máy chủ tên miền (Name server) của zone đó.
* A Resource Records (mẩu tin địa chỉ): mẩu tin cho biết địa chỉ IP tương ứng của một tên miền, có dạng như "example IN A 172.16.48.1"
* PTR Records (mẩu tin con trỏ): ngược lại với A record, PTR chỉ ra tên miền tương ứng của một địa chỉ IP, có dạng như "1.48.16.172.in-addr.arpa. IN PTR example.com."
* CNAME Resource Records: một dạng record giúp tạo ra biệt hiệu cho một tên miền, ví dụ mẩu tin CNAME "ftp.example.com. IN CNAME ftp1.example.com." cho phép trỏ tên miền ftp.example.com sang ftp1.example.com
* MX Resource Records (mẩu tin Mail exchange): chỉ ra máy chủ mail của tên miền.
* TXT Resource Records (mẩu tin text): chứa thông tin dạng văn bản không định dạng, thường dùng để chứa các thông tin bổ sung.
Tất cả các DNS Resource Records dựa theo tiêu chuẩn  khi vận chuyển trên Internet:

## Tham khảo

## Liên kết ngoài