The DNS Protocol

Giới thiệu
Bạn đã bao giờ tự hỏi DNS đến từ đâu? Đây sẽ là những bài mà tôi và bạn sẽ cùng tìm hiểu về giao thức này. Bản tóm lược ngắn gọn về lịch sử DNS cũng sẽ giúp bạn hiểu lý do tại sao các máy chủ DNS đang chạy chủ yếu trên các hệ thống Linux và UNIX. Sau đó chúng ta có thể thấy DNS làm việc ở những tầng nào trong mô hình OSI và ở cuối bài này, tôi và bạn sẽ cùng tìm hiểu các Domain (tên miền) và các máy chủ DNS có cấu trúc như thế nào và làm sao để chúng đảm bảo được thời gian hoạt động và hiệu quả.

Lịch sử
DNS được sử dụng trong những ngày đầu khi Internet chỉ là 1 mạng nhỏ được tạo ra bởi Bộ Quốc Phòng Mỹ cho các mục đích nghiên cứu. Do đó mạng chỉ cần 1 file HOSTS chứa tất cả các thông tin cần thiết về máy tính ở trong mạng và giúp các máy tính chuyển đổi được thông tin địa chỉ và tên mạng cho tất cả các máy tính trong mạng một cách dễ dàng. Và đó chính là bước khởi đầu của hệ thống tên miền gọi tắt là DNS (Domain Name System).
Nhưng khi mạng máy tính ngày càng phát triển thì việc quản lý thông tin chỉ dựa vào 1 file HOSTS là rất khó khăn và không khả thi. Vì thông tin bổ sung và sửa đổi vào file HOSTS ngày càng nhiều và nhất là khi hệ thống máy tính được phát triển dựa trên bộ giao thức TCP/IP dẫn đến sự phát triển tăng vọt của máy tính:
- Lưu lượng và trao đổi trên mạng tăng lên.
- Tên miền trên mạng và địa chỉ ngày càng nhiều.
- Mật độ máy tính ngày càng cao do đó đảm bảo phát triển ngày càng khó khăn.
Đến năm 1984, Paul Mockpetris thuộc viện USC's Information Sciences Institute phát triển 1 hệ thống quản lý tên miền mới gọi là DNS và ngày nay nó ngày càng được phát triển và hiệu chỉnh bổ sung tính năng để đảm bảo yêu cầu ngày càng cao của hệ thống.


Giao thức
Hệ thống tên miền (Domain Name System) là một "cơ sở dữ liệu phân cấp" mà nói 1 cách khác là các lớp của nó được sắp xếp theo 1 thứ tự nhất định và dữ liệu của nó được phân bố trên 1 phạm vi rộng các thiết bị.
Hầu hết các công ty ngày nay đều sở hữu máy chủ DNS riêng của họ để đảm bảo các máy tính có thể tìm thấy nhau mà không gặp vấn đề. Nếu bạn đang sử dụng Windows 2000 và Active Directory, thì bạn đang chắc chắn sử dụng DNS cho việc phân giải tên của máy tính. Microsoft đã tạo ra 1 phiên bản riêng của máy chủ "DNS", được gọi là máy chủ WINS, viết tắt của Windows Internet Name Service, nhưng đây là công nghệ cũ và công nghệ này sử dụng các giao thức gần giống nhưng không hiệu quả bằng DNS, và đó là lẽ dĩ nhiên Microsoft đã xóa bỏ WINS và hướng tới DNS. Sau tất cả, toàn bộ mạng Internet hoạt động trên DNS.
Giao thức DNS hoạt động khi máy tính của bạn gửi đi 1 truy vấn DNS tới 1 máy chủ tên để phân giải 1 Domain. Ví dụ, bạn gõ "www.google.com" trong trình duyệt web của bạn, nó sẽ tạo ra 1 yêu cầu DNS, khi đó máy tính của bạn sẽ gửi yêu cầu đó đến 1 máy chủ DNS để có được địa chỉ IP của trang web đó.
Giao thức DNS thường sử dụng giao thức UDP như 1 phương tiện vận tải vì chi phí nhỏ so với giao thức TCP.
Trong trường hợp có lỗi liên tục và máy tính cố gắng yêu cầu 1 phân giải DNS không bị lỗi, nó sẽ chuyển sang giao thức TCP để đảm bảo các dữ liệu đến mà không bị lỗi.
Tuy nhiên, quá trình này phụ thuộc vào hệ điều hành mà bạn đang sử dụng. Một số hệ điều hành có thể không cho phép DNS sử dụng giao thức TCP, và chỉ cho sử dụng UDP. Bởi vì cũng rất hiếm khi bạn nhận được rất nhiều lỗi mà bạn không thể phân giải được bất kỳ hostname hay Domain name nào sang địa chỉ IP.
Giao thức DNS sử dụng cổng 53 cho dịch vụ của mình. Điều này có nghĩa là 1 máy chủ DNS lắng nghe trên cổng 53. Tuy nhiên, trong nhiều trường hợp bạn phải sử dụng 1 cổng khác, điều đó là tùy thuộc vào hệ điều hành và máy chủ DNS bạn đang dùng.


Tiếp theo chúng ta sẽ có 1 cái nhìn cận cảnh về các miền trên Internet và các máy chủ DNS được cấu trúc như thế nào để đảm bảo mô hình hoạt động hoàn hảo và hiệu quả.

Hệ thống phân cấp Internet Domain Name Server
Cấu trúc DNS đã được thiết kế theo cách mà không máy chủ DNS nào cần phải biết về tất cả các Domain mà chỉ cần biết những Domain ở ngay trên và dưới nó.
Hình ảnh dưới đây cho thấy 1 phần của cấu trúc phân cấp DNS:


Hãy xem nó hoạt động như thế nào:
Internic kiểm soát "Root" Domain. Ở dưới Root Domain là tất cả các Top Level Domain (nằm trong hình bầu dục màu xanh lá cây). Trong hình bầu dục màu xanh lá cây chúng ta có các máy chủ ROOT DNS, những máy chủ đó biết tất cả về các máy chủ DNS có thẩm quyền đối với các Domain ở ngay bên dưới chúng ví dụ như firewall.cx, cisco.com, microsoft.com... Các máy chủ ROOT DNS này có thể nói cho bạn biết máy chủ DNS nào đang chứa các Domain firewall.cx, cisco.com, microsoft.com...
Mỗi Domain đều có "Primary DNS" và "Secondary DNS". Primary DNS giữ tất cả các thông tin về Domain, còn Secondary DNS hoạt động như 1 bản sao lưu (backup) của Primary DNS đề phòng trường hợp Primary DNS có vấn đề. Quá trình mà 1 máy chủ Primary DNS gửi bản copy của nó cho máy chủ Secondary DNS gọi là Zone Transfer. 
Ngày nay có hàng trăm trang web mà ở đó bạn có thể đăng ký tên miền riêng của mình, và khi bạn đã làm điều đó thì bạn có quyền quản lý nó. Trong ví dụ trên, Cisco đã mua tên miền "cisco.com" và sau đó tạo ra các bản ghi tài nguyên (resource record). Một số ví dụ về các bản ghi tài nguyên cho tên miền Cisco trong ví dụ trên là support, www và routers. Phần này sẽ được phân tích sau trong những bài tới.
Sau đây là 1 câu hỏi nhỏ: "Bạn tạo ra các Subdomain và www's (được gọi là bản ghi tài nguyên - resource record) như thế nào?"
Câu trả lời như sau:
Bạn sử dụng 1 giao diện quản trị DNS đặc biệt (thường dựa trên nền web -  được cung cấp bởi những nơi mà bạn đã đăng ký tên miền của mình) cho phép bạn tạo, thay đổi và xóa các Subdomain, www và bất kỳ 1 bản ghi tài nguyên nào. Khi bạn đang thay đổi thiết lập DNS cho tên miền của bạn, bạn đang thực sự thay đổi các nội dung của các tập tin cụ thể được đặt trên máy chủ đó.
Những thay đổi này sau đó từ từ tuyên truyền đến các máy chủ DNS có thẩm quyền (chịu trách nhiệm đối với khu vực tên miền của bạn) và sau đó toàn bộ mạng DNS sẽ liên hệ với các máy chủ DNS này khi họ cần truy cập bất kì phần nào thuộc tên miền của bạn.
Ví dụ, nếu bạn muốn phân giải tên ftp.firewall.cx, máy tính của bạn sẽ xác định vị trí và liên lạc với máy chủ DNS chịu trách nhiệm về các tên miền .CX và tất nhiên máy chủ DNS đó sẽ phụ trách tên miền firewall.cx. Máy chủ DNS đó sẽ lần lượt cho phép máy tính của bạn biết địa chỉ IP của ftp.firewall.cx bởi vì nó chứa tất cả các thông tin của tên miền firewall.cx.
Done!

Lược dịch từ bài gốc: Click Here



4 nhận xét:

  1. tin học thật mênh mông, khó mà xác định được goal khi mà đang ở trong vòng xoáy "cơm áo gạo tiền", goal chỉ có thể khi ở môi trường chuyên môn sâu... không có goal, nên không có plan... và sẽ là cái vòng luẩn quẩn cho đến hết đời... chỉ có thể goal theo thời điểm ... plan theo thời điểm ...

    Trả lờiXóa
  2. nắm được kiến thức dns này, google 1 đoạn code nhỏ, chạy trên dns server local, khi client request dns thì phân tích và xem client request tên miền gì, nếu các tên miền độc hại chứa các từ khóa như jav, sex, nude... thì gửi email cảnh báo cho quản trị hệ thống ... cho dù tên miền đó có thể không tồn tại...

    Trả lờiXóa