Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

Cấu trúc gói của thông điệp DNS

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cấu trúc gói của thông điệp DNS

    Tác giả:
    Trần Lâm Đăng Khoa
    Cấu trúc gói của thông điệp DNS

    - Truy vấn DNS sử dụng định dạng gói chung cho cả câu truy vấn và trả lời:
    - Một gói có thể chứa đến 5 thành phần, mỗi gói phải chứa thông tin HEADER, thuật ngữ “truy vấn” được dùng trong hai trường hợp:
    • Thao tác DNS QUERY: một thao tác giao thức DNS cơ bản xuyên suốt những bộ (RR) được tìm kiếm trong cơ sở dữ liệu DNS.
    • Thao tác DNS QUERY luôn gồm có một cây truy vấn (do client gởi) và một trả lời do máy chủ tên gởi cho client. Client có thể là một xử lý hoặc một máy chủ tên không thể cung cấp trả lời. Trạm xử lý thường đánh dấu truy vấn với một thẻ thể hiện nó là một truy vấn đệ quy, nghĩa là hỏi máy chủ tên để yêu cầu câu trả lời cuối cùng. Ngược lại, nếu truy vấn được gởi bởi máy chủ tên thì thường được đánh dấu với một thẻ thể hiện nó là một truy vấn tương tác, nghĩa máy chủ server hỏi máy chủ server khác giúp nó biên dịch, nhưng không gởi truy vấn đệ quy khi nó có thể đạt được khi cần bởi thực phép lặp.
    1. DNS Query Packet Header:
    - Tiêu đề của gói là bắt buộc và được chứa trong cả truy vấn và trả lời.
    Hai bytes (16 bits) đầu tiên chứa định danh truy vấn (query ID). Định danh truy vấn được sinh ra bởi client và được chép sang trả lời của máy chủ. ID được sử dụng để kết hợp truy vấn với trả lời. Nó xác định duy nhất truy vấn nào đi kèm với trả lời nào. ID cho phép client gởi nhiều query cùng lúc mà không cần phải chờ trả lời.
    - Hai bytes tiếp theo chứa các bit điều khiển:
    • QDCOUNT đặc tả số các bộ của một truy vấn chứa
    • ANCOUNT đặc tả số các bộ của một trả lời chứa
    • NSCOUNT đặc tả số các bộ một phiên chứa các liên kết đến các máy chủ xác thực tên.
    • ARCOUNT đặc tả số các bộ một phiên chứa thông tin thêm vào
    - Ví dụ sau thể hiện một gói DNS được tìm thấy tronga mạng, sử dụng Ethereal để bắt gói:
    Frame 2 (318 bytes on wire, 318 bytes captured)
    Ethernet II, Src: Cisco_8e:1f:80 (00:15:63:8e:1f:80), Dst: Fujitsu_79:5d:0e
    Internet Protocol, Src: 160.217.1.10 (160.217.1.10), Dst: 160.217.208.142
    User Datagram Protocol, Src Port: domain (53), Dst Port: 1337 (1337)
    Domain Name System (response)
    Transaction ID: 0x000c
    Flags: 0x8180 (Standard query response, No error)
    1... .... .... .... = Response: Message is a response
    .000 0... .... .... = Opcode: Standard query (0)
    DNS Protocol
    .... .0.. .... .... = Authoritative: Server is not an authority for domain
    .... ..0. .... .... = Truncated: Message is not truncated
    .... ...1 .... .... = Recursion desired: Do query recursively
    .... .... 1... .... = Recursion available: Server can do recursive queries
    .... .... .0.. .... = Z: reserved (0)
    .... .... ..0. .... = Answer authenticated: Answer/authority portion was not
    authenticated by the server
    .... .... .... 0000 = Reply code: No error (0)
    Questions: 1
    Answer RRs: 3
    Authority RRs: 6
    Additional RRs: 6
    Queries
    www.google.com: type A, class IN
    Answers
    www.google.com: type CNAME, class IN, cname www.l.google.com
    www.l.google.com: type A, class IN, addr 72.14.207.99
    www.l.google.com: type A, class IN, addr 72.14.207.104
    Authoritative nameservers
    l.google.com: type NS, class IN, ns d.l.google.com
    l.google.com: type NS, class IN, ns e.l.google.com
    l.google.com: type NS, class IN, ns g.l.google.com
    l.google.com: type NS, class IN, ns a.l.google.com
    l.google.com: type NS, class IN, ns b.l.google.com
    l.google.com: type NS, class IN, ns c.l.google.com
    Additional records
    a.l.google.com: type A, class IN, addr 216.239.53.9
    b.l.google.com: type A, class IN, addr 64.233.179.9
    c.l.google.com: type A, class IN, addr 64.233.161.9
    d.l.google.com: type A, class IN, addr 64.233.183.9
    e.l.google.com: type A, class IN, addr 66.102.11.9
    g.l.google.com: type A, class IN, addr 64.233.167.9


    (còn tiếp)

  • #2
    2. Question Section:
    - Các gói truy vấn DNS hầu hết chỉ chứa một phiên: là phiên truy vấn từ một truy vấn (QDCOUNT = 1), Question Section gồm có:
    • QNAME: chứa tên miền. Trong DNS, khái ký hiệu “.” không sử dụng với các tên miền. Mỗi phần của tên miền (thường được thể hiện giữa các dấu chấm) được thể hiện bằng 1 byte chứa chiều dài chuỗi. Tên miền được kết thúc bởi một đánh dấu zero (chuỗi cuối cùng có độ dài 0).
    • QTYPE: đặc tả kiểu truy vấn, nghĩa là kiểu RR được yêu cầu trong trả lời, kiểu phổ biến nhất là kiểu được thể hiện như sau:


    Comment


    • #3
      3. Phiên trả lời, các máy chủ xác thực và thông tin thêm:
      - Cùng với tiêu đề và truy vấn lặp, các gói trả lời chứa ba thành phần: thành phần trả lời, thành phần máy chủ xác thực, thông tin thêm. Bản thân trả lời đã chứa thành phần trả lời. Các máy chủ xác thực tên lưu giữ tên của các máy chủ trong các bộ NS. Thông tin thêm thường lưu địa chỉ IP của các máy chủ xác thực. Các bộ trong các thành phần này là các bộ tài nguyên thông dụng như các bộ lưu trữ máy chủ tên và sử dụng chung định dạng như sau:
      - NAME: tên miền, cùng định dạng với trường QNAME trong truy vấn.
      - TYPE: kiểu bộ, cùng định dạng với QTYPE.
      - CLASS: lớp, cùng định dạng với QCLASS.
      - TTL: giới hạn kết thúc RR, thời gian mà trả lời có thể được lưu trong máy chủ lưu trữ khi có giá trị.
      - RDLENGHT: chiều dài RDATA.
      - RDATA: phần còn lại của RR (địa chỉ IP hay tên miền).
      - Ví dụ một gói DNS với trả lời, các máy chủ xác thực, thông tin thêm như sau:




      (còn tiếp)

      Comment


      • #4
        4. Nén:
        - Nén được sử dụng nhằm giảm kích thước của gói DNS. Các tên miền hoặc các thành phần có thể được nén trong các gói DNS. Tiến trình này dựa trên phát biểu tên chỉ một và mỗi thể hiện của tên với cờ xác định thể hiện đầu tiên của tên.
        - Tên miền không sử dụng ký hiệu dấu chấm trong các gói DNS, nhưng số định nghĩa chiều dài của phần tiếp theo được sử dụng để phân biệt các phần riêng lẻ trong các tên miền. Số thành phần tách ra được chứa trong 1 byte, mỗi phần trong tên miền có thể chứa đến 63 ký tự, nghĩa là giá trị chiều dài byte phân tách tối đa là 63 theo ký hiệu thập phân và 00111111 theo ký hiệu nhị phân.
        - Nếu giá trị của byte này là 192 hoặc hơn, chỉ một cờ xác định thể hiện trước đó sẽ được trình bày thay cho toàn bộ tên. Cờ này dài 16 bit. Hai bít này của cở chứa 1s, để phân biệt với bộ phân tách. Những bit còn lại chứa số vị trí của byte (đếm từ vị trí bắt đầu gói DNS) mà cờ tên miền thể hiện thể hiện trước đó của tên miền bắt đầu
        - 9 thể hiện byte đầu tiên, nghĩa là trường ID trong tiêu đề:
        - Mã sau thể hiện ví dụ một gói DNS được nén tiêu đề, gói DNS được thể hiện bằng in đậm, tên miền được lặp trong gói. Đó là thể hiện đầu tiên trong truy vấn được gạch dưới, tham chiếu đến thể hiện này trong các phần khác cũng được gạch dưới:
        - Nội dung của cờ xác định tên miền theo ký hiệu hexa là C00C16=110000000000112 ký hiệu nhị phân. Số vị trí của byte trong gói khi tên miền xuất hiện làn đầu tiên là 12¬10 = 000000000011002. Số đầu tiên của byte đầu tiên là 0, tên miền có thể được tìm thấy ở byte thứ 13 của gói DNS. Tuy nhiên, cần thiết để hiểu rằng ví dụ đề cập không chỉ đến gói DNS mà còn toàn bộ khung dữ liệu được gởi bởi mạng. Các gói DNS bắt đầu với byte thứ 11 tên dòng thứ 3.
        5. Truy vấn nghịch đảo:
        - Truy vấn nghịch đảo phải không được nhầm lẫn với truy vấn ngược. Với truy vấn nghịch đảo, địa chỉ IP được dịch ngược lại thành tên, nhưng tìm kiến dựa trên một RR kiểu A. Dịch ngược dựa trên RR kiểu PTR. Không phải tất cả các máy chủ tên hỗ trợ truy vấn nghịch đảo, đây là loại truy vấn lỗi thời.
        6. Phương thức chuyển tải RR thông quan gói DNS:
        - Một gói DNS đơn có thể chứa một hoặc nhiều RR. Nếu gói DNS chứa một RR, định dạng là định dạng “1-trả lời”. Thuật ngữ “nhiều-trả lời” đề cập đến định dạng mà một gói chứa nhiều RR. Định dạng này được sử dụng bởi các máy chủ để truyền thông với các thực thi của máy chủ tên. Trong khi định dạng nhiều-trả lời hiển nhiên là hiệu quả, nó chỉ được hỗ trợ bởi BIND phiên bản 8 hoặc cao hơn và phiên bản 4.9.5 có nhiều cải tiến.

        (hết)

        Comment


        • #5
          Thanks cậu nhiều nhé mình đang cần tìm thông tin về nó vào đây thấy có rùi cảm ơn rất nhiêu.:)

          Comment

          Working...
          X