Portál AbcLinuxu, 12. května 2025 07:26

Dotaz: DNS, absolute domain name

24.5.2015 19:25 Jirka
DNS, absolute domain name
Přečteno: 309×
Odpovědět | Admin
Ve svém projektu potřebuji neblokující DNS rezoluci, bez použití knihoven třetích stran a bez vláken. Nastudoval jsem formát DNS dotazů a mám jakýsi prototyp. Testuji třeba na OpenDNS, pošlu dotaz třeba pro www.seznam.cz ("labely" www, seznam, cz). Dostanu IP adresu v odpovědi.
bdde8180000100010000000003777777 | .............www
0673657a6e616d02637a0000010001c0 | .seznam.cz......
0c00010001000000ff00044d4b4c03   | ...........MKL..
Když pošlu dotaz www.seznam.cz. (labely www, seznam, cz.), tak mi to vrátí chybu (3 = name error) a nějakou doménu. Proč? Variantu s tečkou jsem zkusil, protože jsem na wikipedii našel něco jako "většina DNS serverů poslední tečku nevyžaduje", tak jsem zkusil, co to udělá s ní.
bdde8183000100000001000003777777 | .............www
0673657a6e616d03637a2e0000010001 | .seznam.cz......
000006000100000e10004001610c726f | ............a.ro
6f742d73657276657273036e65740005 | ot.servers.net..
6e73746c640c766572697369676e2d67 | nstld.verisign.g
727303636f6d00781b42710000070800 | rs.com.x.Bq.....
00038400093a8000015180           | .........Q......
Ta tečka teda tam nemá co dělat? Mělo by to mít jenom vliv na nějaký preprocesing na relativní domény v aplikaci a k DNS serveru putovat nemá?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.5.2015 21:22 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Odpovědět | | Sbalit | Link | Blokovat | Admin
No ... neviem presne odpovedať na tvoju otázku, ale každopádne by som odporučil použiť WireShark a pozrieť sa ako vyzerá paket s požiadavkou a paket s odpoveďou. Je tam pekne vidno význam jednotlivých častí dát.
24.5.2015 22:18 Jirka
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Význam mám tu
Hlavička
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      ID                       |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    QDCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ANCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    NSCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ARCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
A odpověď

                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                                               /
    /                      NAME                     /
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     CLASS                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      TTL                      |
    |                                               |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                   RDLENGTH                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--|
    /                     RDATA                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Z toho
Header:
ID = 0xbdde
Query/response = 1 = response
Recursion Desired = 1
Recursion Available = 1
Response code = 3 = Name Error (.. name .. does not exist)
Question count = 1
Answer count = 0
nameserver count = 1
additional records = 0

Question#0:
QNAME = 03www06seznam03cz.00
        label 1: www
        label 2: seznam
        label 3: cz.
        label4: [terminating label]
QTYPE = 1 = A record
QCLASS = inet

Nameserver#0:
000006000100000e10004001610c726f | ............a.ro
6f742d73657276657273036e65740005 | ot.servers.net..
6e73746c640c766572697369676e2d67 | nstld.verisign.g
727303636f6d00781b42710000070800 | rs.com.x.Bq.....
00038400093a8000015180           | .........Q......

NAME = 00
       label1: [terminating label]
       (top-level doména)
TYPE = 0006 = SOA = start of a zone of authority
CLASS = 0001 = inet
TTL   = 0000 = no caching
RDLENGTH = 0e10 = 3600B

RDDATA = {

MNAME = 01a0croot-servers03net00
        label1: a
        label2: root-servers
        label3: net
        label4: [terminating label]
RNAME = 05nstld0cverisign-grs03com00
        label1: nstld
        label2: verisign-grs
        label3: com
        label4: [terminating label]
SERIAL  = 781b4271
REFRESH = 00007008 = 1800
RETRY   = 00000384 =  900
EXPIRE  = 00093a80 = 604800
MINIMUM = 00015180 = 86400

}
Nechápu, proč mi vrací chybu a posílá nějaký nameservery.
24.5.2015 22:16 Sten
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Odpovědět | | Sbalit | Link | Blokovat | Admin
Doména, kterou to vrací, je root NS, který odpověděl, že doména „cz.“ (s tečkou na konci) neexistuje. Chybu dostanete, protože žádná doména nemůže obsahovat tečku v názvu, tečka za „cz“ označuje, že jde o absolutní jméno, tedy že se nemá zkoušet implicitní doména. Implicitní doménu vkládá klient, ne server, ten vždy považuje dotazovanou doménu jako absolutní.

Nevím, kde jste četl, že DNS server ignoruje v protokolu tečku na konci, ale pravděpodobně se ta informace vztahuje k textovému zápisu (kde se opravdu ignoruje chybějící tečka), ne protokolu.
24.5.2015 22:34 Jirka
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Děkuji za vysvětlení. Bylo to někde na wikipedii, teď to jako naschvál nemůžu najít.
24.5.2015 22:21 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ta tečka je jen v textové reprezentaci doménového jména, v posílaném datagramu už být nemá (stejně jako tam nemáte všechny ostatní). Ta věta z wikipedie je IMHO hodně matoucí, spíš by tam mělo být něco ve smyslu, že koncová tečka se většinou vynechává a až na výjimky to ničemu nevadí (s tím, že je ale řeč o textové reprezentaci, ne o protokolu pro komunikaci mezi klientem a serverem).
24.5.2015 22:36 Jirka
Rozbalit Rozbalit vše Re: DNS, absolute domain name
Taky děkuji. Můžeme označit za vyřešené.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.