Як виглядає запит DNS?


32

Я бачив, що таке текстове подання HTTP-запиту, але як виглядає DNS-запит? Де в даних розташування URL-адреси, яку ви намагаєтесь знайти? Також, як форматується відповідь?


3
Найкраще ставитись до завантаження проводів та захоплення пакетів, які ви зможете отримати повне уявлення про те, що відбувається, коли буде зроблено запит DNS.
mrdenny

1
здається, питання домашнього завдання
Jimsmithkka

2
@mydenny - ні, найкраще було б зробити це з копією RFC1035 в руки. Wireshark не дасть вам "повного" зображення, він може лише коли-небудь показати вам, як виглядають конкретні пакети, які ви бачили.
Альнітак

@ Джим - Це не @ mrdenny - я використав Wireshark і не знаю, як перероблений запит перетворюється на те, що я надсилаю.
AMWJ

Відповіді:


40

Це неочищений дамп із Wireshark запиту DNS.

Частина DNS починається з 24 1a:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 3c 51 e3 40 00 40 11  ea cb 7f 00 00 01 7f 00   .<Q.@.@. ........
0020  00 01 ec ed 00 35 00 28  fe 3b 24 1a 01 00 00 01   .....5.( .;$.....
0030  00 00 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01                     e.com... ..      

І ось розбивка:

Domain Name System (query)
    [Response In: 1852]
    Transaction ID: 0x241a
    Flags: 0x0100 (Standard query)
        0... .... .... .... = Response: Message is a query
        .000 0... .... .... = Opcode: Standard query (0)
        .... ..0. .... .... = Truncated: Message is not truncated
        .... ...1 .... .... = Recursion desired: Do query recursively
        .... .... .0.. .... = Z: reserved (0)
        .... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)

І відповідь, знову починаючи з 24 1а:

0000  00 00 00 00 00 00 00 00  00 00 00 00 08 00 45 00   ........ ......E.
0010  00 7a 00 00 40 00 40 11  3c 71 7f 00 00 01 7f 00   .z..@.@. <q......
0020  00 01 00 35 ec ed 00 66  fe 79 24 1a 81 80 00 01   ...5...f .y$.....
0030  00 03 00 00 00 00 03 77  77 77 06 67 6f 6f 67 6c   .......w ww.googl
0040  65 03 63 6f 6d 00 00 01  00 01 c0 0c 00 05 00 01   e.com... ........
0050  00 05 28 39 00 12 03 77  77 77 01 6c 06 67 6f 6f   ..(9...w ww.l.goo
0060  67 6c 65 03 63 6f 6d 00  c0 2c 00 01 00 01 00 00   gle.com. .,......
0070  00 e3 00 04 42 f9 59 63  c0 2c 00 01 00 01 00 00   ....B.Yc .,......
0080  00 e3 00 04 42 f9 59 68                            ....B.Yh         

Зламатися:

Domain Name System (response)
    [Request In: 1851]
    [Time: 0.000125000 seconds]
    Transaction ID: 0x241a
    Flags: 0x8180 (Standard query response, No error)
        1... .... .... .... = Response: Message is a response
        .000 0... .... .... = Opcode: Standard query (0)
        .... .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: 0
    Additional RRs: 0
    Queries
        www.google.com: type A, class IN
            Name: www.google.com
            Type: A (Host address)
            Class: IN (0x0001)
    Answers
        www.google.com: type CNAME, class IN, cname www.l.google.com
            Name: www.google.com
            Type: CNAME (Canonical name for an alias)
            Class: IN (0x0001)
            Time to live: 3 days, 21 hours, 52 minutes, 57 seconds
            Data length: 18
            Primary name: www.l.google.com
        www.l.google.com: type A, class IN, addr 66.249.89.99
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.99
        www.l.google.com: type A, class IN, addr 66.249.89.104
            Name: www.l.google.com
            Type: A (Host address)
            Class: IN (0x0001)
            Time to live: 3 minutes, 47 seconds
            Data length: 4
            Addr: 66.249.89.104

Редагувати:

Зауважте, що якщо ваше справжнє запитання "як мені написати DNS-сервер?", То є два відповідні відповіді:

Редагувати (2):

Запит надіслано за hostдопомогою linux box:

host www.google.com

Якщо ви перебуваєте в Windows, ви можете користуватися nslookup

nslookup www.google.com

2
Не оскаржування дротяного сліду без посилання на реальну специфікацію. Далеко надто багато DNS Interop проблем були викликані людьми , вважаючи , що вони можуть здійснювати реінжиніринг від провідного траси, і відсутні тонкі нюанси. У будь-якому випадку цей дамп недостатній - він не демонструє, як кодуються мітки та RR.
Альнітак

7
@Alnitak: Я читав питання як "що є прикладом запиту / відповіді DNS", а не як виглядають усі можливі запити. Оновлено, якщо це неправильно.
ngoozeff

Як ви надіслали запит, щоб отримати це?
AMWJ

1
Мені хотілося б дізнатися, чи надсилаються також параметри URL-адреси, використовувані в браузерах, чи це лише доменне ім’я? Отже, для цього питання, /questions/173187/what-does-a-dns-request-look-likeвключений у запит?
SPRBRN

1
@SPRBRN DNS не займається URL-адресами, а лише доменними іменами.
Хокан Ліндквіст

7

Макет даних запиту DNS описаний в RFC 1035 . Я думаю, що копіювати текст тут трохи безглуздо ...


5

DNS-запити та відповіді найкраще розглядати за допомогою аналізатора протоколів - Wireshark - це хороший інструмент крос-платформи, який може фіксувати та деконструювати запити та відповіді в різні їх частини. Тут є приємне вступ до структури запитів та відповідей DNS на Firewall.cx .

Запити DNS містять запитання, які задають ім’я (або, можливо, дещо довільне текстове поле) та тип запису - зміст відповіді буде змінюватися залежно від типу. Більшість запитів - це прості прямі пошуки імені сервера, які шукають ip-адресу у відповідь (тип A), але деякі шукають додаткову інформацію про самі сервери імен (Type NS), записи пошти (Type MX) та інші послуги (Type SRV, який повертає назви, порти, ваги та пріоритети). Відповіді DNS містять відповіді на ці запитання, можливо, більше, ніж один, якщо цього вимагає запит і не завжди є лише ip-адресами.

Ще одне уточнення - DNS не вирішує URL-адреси - у більшості сценаріїв із URL-адресами DNS використовується лише для того, щоб клієнтська система знаходила ip-адресу серверної частини URL-адреси, а все інше обробляється іншими протоколами.


3

Якщо ви можете потрапити на машину Linux, ви можете запустити команду dig, щоб виконати пошук DNS. Ця утиліта виконує пошук і повертає саме те, на що відповідає сервер імен. Наприклад:

; <<>> DiG 9.6.1-P2 <<>> serverfault.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32383
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;serverfault.com.               IN      A

;; ANSWER SECTION:
serverfault.com.        55961   IN      A       69.59.196.211

;; Query time: 21 msec
;; SERVER: 68.87.64.150#53(68.87.64.150)
;; WHEN: Sun Aug 22 09:21:35 2010
;; MSG SIZE  rcvd: 49

Все, що починається з розділу "HEADER" - це те, що повертається з сервера імен. Я припускаю, що це ви називаєте текстовим форматом, оскільки це не формат фактичного пакету, але це повертається текст.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.