Jak wygląda żądanie DNS?


32

Widziałem, jaka jest tekstowa reprezentacja żądania HTTP, ale jak wygląda żądanie DNS? Gdzie w danych znajduje się adres URL, który próbujesz zlokalizować? Jak również sformatowana jest odpowiedź?


3
Najlepszym rozwiązaniem byłoby pobranie wireshark i przechwycenie pakietów, dzięki którym można uzyskać pełny obraz tego, co dzieje się po złożeniu żądania DNS.
mrdenny,

1
wygląda na pytanie o pracę domową
Jimsmithkka

2
@mydenny - nie, najlepszym rozwiązaniem byłoby zrobienie tego z kopią RFC1035 do ręki. Wireshark nie da Ci „pełnego” obrazu, może tylko pokazać, jak wyglądają poszczególne pakiety, które widziałeś.
Alnitak,

@ Jim-To nie jest @ mrdenny-Użyłem Wiresharka i nie wiem, jak surowe żądanie przekłada się na to, co wysyłam.
AMWJ

Odpowiedzi:


40

Jest to surowy zrzut z Wireshark zapytania DNS.

Część DNS zaczyna się od 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... ..      

A oto podział:

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)

I odpowiedź, znowu zaczynając od 24 1a:

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         

Awaria:

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

Edytować:

Zauważ, że jeśli Twoim prawdziwym pytaniem jest „jak napisać serwer DNS?”, To istnieją dwie odpowiednie odpowiedzi:

Edycja (2):

Żądanie zostało wysłane za pomocą hostna polu Linux:

host www.google.com

Jeśli korzystasz z systemu Windows, możesz użyć nslookup

nslookup www.google.com

2
Nie przegłosowanie śledzenia drutu bez odniesienia do prawdziwej specyfikacji. Zdecydowanie zbyt wiele problemów związanych z interakcją DNS było spowodowanych tym, że ludzie wierzą, że mogą odwrócić inżynier od śladu drutu i brakuje subtelnych niuansów. W każdym razie zrzut ten jest niewystarczający - nie pokazuje, w jaki sposób kodowane są etykiety i RR.
Alnitak,

7
@Alnitak: Czytam pytanie jako „jaki jest przykład zapytania / odpowiedzi DNS”, a nie jak wyglądają wszystkie możliwe żądania. Zaktualizowano w przypadku, gdy jest to nieprawidłowe.
ngoozeff,

Jak wysłałeś prośbę o to?
AMWJ

1
Chciałbym wiedzieć, czy parametry adresu URL używane w przeglądarkach również są przesyłane, czy to tylko nazwa domeny? Czy w przypadku tego pytania /questions/173187/what-does-a-dns-request-look-likezawarto prośbę?
SPRBRN

1
@SPRBRN DNS nie obsługuje adresów URL, tylko nazwy domen.
Håkan Lindqvist

7

Układ danych żądania DNS jest opisany w RFC 1035 . Myślę, że kopiowanie tekstu tutaj jest trochę bezcelowe ...


5

Zapytania i odpowiedzi DNS najlepiej sprawdzać za pomocą analizatora protokołów - Wireshark to dobre narzędzie wieloplatformowe, które może przechwytywać i dekonstruować żądania i odpowiedzi na ich różne części. Tutaj znajduje się ładne wprowadzenie do struktury zapytań i odpowiedzi DNS w Firewall.cx .

Żądania DNS zawierają pytania, które określają nazwę (lub może nieco dowolne pole tekstowe) i typ rekordu - treść odpowiedzi będzie się różnić w zależności od typu. Większość żądań to proste bezpośrednie wyszukiwanie nazwy serwera w odpowiedzi na adres IP (typ A), ale niektóre będą szukać więcej informacji na temat samych serwerów nazw (typ NS), rekordów poczty (typ MX) i innych usług (typ SRV, które zwrócą nazwy, porty, wagi i priorytety). Odpowiedzi DNS zawierają odpowiedzi na te pytania, być może więcej niż jedno, jeśli żądanie tego wymaga i nie zawsze są to tylko adresy IP.

Jeszcze jedno wyjaśnienie - DNS nie rozpoznaje adresów URL - w większości scenariuszy dotyczących adresów URL DNS jest używany tylko w celu umożliwienia systemowi po stronie klienta znalezienia adresu IP części serwerowej adresu URL, wszystko inne jest obsługiwane przez inne protokoły.


3

Jeśli możesz dostać się na maszynę z systemem Linux, możesz uruchomić polecenie dig, aby wykonać wyszukiwanie DNS. To narzędzie wykonuje wyszukiwanie i zwraca dokładnie to, co odpowiada serwer nazw. Na przykład:

; <<>> 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

Wszystko, co zaczyna się od sekcji „HEADER”, jest zwracane z serwera nazw. Zakładam, że jest to tak zwany format tekstowy, ponieważ nie jest to format rzeczywistego pakietu, ale zwracany jest tekst.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.