DNS-üzenetformátumok

Ez a cikk a DNS-üzenetek (tartománynévrendszer) windowsos és Windows Server-környezetekben való felépítését és formátumát ismerteti. A DNS-üzenetformátumok ismerete elengedhetetlen a DNS-kiszolgáló rendszergazdái számára, akiknek elemezni kell a DNS-forgalmat, elhárítani a névfeloldási problémákat és optimalizálni a DNS-teljesítményt.

A DNS szabványosított üzenetformátumokat használ az ügyfelek és kiszolgálók közötti kommunikációhoz. Az összes DNS-üzenet – legyen szó lekérdezésről, válaszról vagy frissítésről – egy általános struktúrát követ bizonyos mezőkkel, amelyek meghatározzák az információk feldolgozásának módját. Ez a cikk a DNS-üzenetek három fő típusát ismerteti, és lebontja az összetevőket, hogy segítsen megérteni, hogyan működik a DNS-kommunikáció a protokoll szintjén.

DNS-protokollok és szabványok

A Windowsban és a Windows Serverben a DNS megfelel az Internet Engineering Task Force (IETF) által meghatározott iparági szabványoknak és protokolloknak. Az alapvető DNS-protokoll az RFC 1035-ben van megadva, amely a DNS-üzenetek formátumát ismerteti, beleértve a lekérdezéseket és a válaszokat. További szabványok, például a dinamikus frissítésekhez készült RFC 2136 és a DNS Security Extensionshez (DNSSEC) készült RFC 4033 , növelik a DNS funkcióit és biztonságát.

A DNS-protokoll különböző típusú DNS-üzenetekből áll, amelyeket az üzenetmezőkben található információk alapján dolgoznak fel. Ez a szakasz a DNS-üzenetek típusait és az egyes üzenettípusok mezőit ismerteti.

A DNS-üzeneteknek három típusa van:

  • Queries

  • Responses

  • Updates

A lekérdezések és válaszok az eredeti DNS-szabványban vannak definiálva, a frissítések pedig az RFC 2136-ban vannak definiálva. Mindhárom típus egy gyakori üzenetformátumot követ.

Az üzenetformátumokkal kapcsolatos további információkért bontsa ki a következő szakaszokat.

DNS-lekérdezési üzenet formátuma

A gyakori DNS-üzenetformátum rögzített hosszúságú, 12 bájtos fejlécet és változó pozíciót tartalmaz, amely a kérdések, válaszok, jogosultságok és további DNS-erőforrásrekordok számára van fenntartva. A gyakori üzenetformátum az alábbiak szerint szemléltethető:

Szabványos DNS-lekérdezési üzenetformátum

  • DNS-fejléc (rögzített hossz)
  • Kérdések bejegyzései (változó hossza)
  • Válasz-erőforrás rekordok (változó hosszúságú)
  • Szolgáltatói erőforrásrekordok (változó hossza)
  • További erőforrásrekordok (változóhossz)

DNS-lekérdezési üzenet fejléce

A DNS-üzenet fejléce a következő mezőket tartalmazza a következő sorrendben:

DNS-lekérdezési üzenet fejlécmezői

  • Tranzakcióazonosító:
    Egy adott DNS-tranzakciót azonosító 16 bites mező. A tranzakcióazonosítót az üzenet kezdeményezője hozza létre, és a válaszadó átmásolja a válaszüzenetbe. A tranzakcióazonosító használatával a DNS-ügyfél megfeleltetheti a kérésekre adott válaszokat.

  • Flags:
    Egy 16 bites mező, amely különböző szolgáltatásjelzőket tartalmaz, amelyek a DNS-ügyfél és a kiszolgáló között kommunikálnak, beleértve a következőket:

    • Kérés/válasz: 1 bites mező, amely 0-ra van állítva egy kéréshez vagy 1 válaszhoz.
    • Műveleti kód: 4 bites mező, amely a csomag névszolgáltatás-műveletét jelöli; 0x0 egy lekérdezés.
    • Mérvadó válasz: 1 bites mező, amely azt jelzi, hogy a válaszadó mérvadó a lekérdezett tartománynévhez.
    • Csonkolás: Az 1 bites mező értéke 1, ha a válaszok teljes száma túllépte az UDP-adatgram méretét. Ha az 512 bájtnál vagy EDNS0-nél nagyobb UDP-adatgramok nincsenek engedélyezve, a rendszer csak az UDP-válasz első 512 bájtját adja vissza.
    • Rekurziós cél: 1 bites mező, rekurzív lekérdezés esetén 1, iteratív lekérdezések esetén 0. Ha 0 értékre van állítva, a DNS-kiszolgáló a helyi gyorsítótáradatokból visszaadja a többi DNS-kiszolgáló listáját.
    • Rekurzió elérhető: 1 bites mező, amelyet a DNS-kiszolgáló 1-re állít be, ha képes rekurzív lekérdezéseket kezelni. Ha a rekurzió le van tiltva, a kiszolgáló megfelelően állítja be a mezőt.
    • Fenntartott: 3 bites mező, amely fenntartott, és 0 értékre van állítva.
    • Visszatérési kód: A visszatérési kódot tartalmazó 4 bites mező:
      • 0: Sikeres válasz (a lekérdezési válasz a válaszban található).
      • 0x3: Névhiba, amely azt jelzi, hogy egy mérvadó DNS-kiszolgáló válaszolt arra, hogy a tartománynév nem létezik. A visszatérési kódokról további információt az IANA DNS RCODEs című témakörben talál.
  • Kérdésrekord erőforrásszáma:
    Egy 16 bites mező, amely a DNS-üzenet kérdésszakaszában szereplő bejegyzések számát jelöli.

  • Válaszerőforrás-rekord száma:
    Egy 16 bites mező, amely a DNS-üzenet válaszszakaszában lévő bejegyzések számát jelöli.

  • Autoritás erőforrásrekordok száma:
    Egy 16 bites mező, amely a DNS-üzenetben szereplő szolgáltatói erőforrásrekordok számát jelöli.

  • További erőforrásrekordok száma:
    Egy 16 bites mező, amely a DNS-üzenetben szereplő további erőforrásrekordok számát jelöli.

DNS-lekérdezési kérdések bejegyzései

A DNS-üzenet kérdésbejegyzései szakasz a lekérdezett tartománynevet tartalmazza, és a következő három mezővel rendelkezik:

  • Kérdés neve:
    A lekérdezett tartománynév. A DNS-tartománynevek címkék sorozataként vannak kifejezve (pl. microsoft.com). A Kérdésnév mezőben a tartománynév hossz-érték párok sorozataként van kódolva: egy 1 bájtos mező, amely a címke hosszát jelzi, majd magát a címkét. A kód például úgy van kódolva, microsoft.com hogy 0x09microsoft0x03com0x00a hexadecimális számjegyek a címke hosszát jelölik, az ASCII karakterek a címkék, a végső 0 pedig a név végét jelzik.

  • Kérdés típusa:
    A visszaadni kívánt erőforrásrekord típusát jelölő 16 bites egész szám. Gyakori értékek a következők:

    • 0x01: Hoszt (A) rekord
    • 0x02: Névkiszolgáló (NS) rekord
    • 0x05: Alias (CNAME) rekord
    • 0x0C (12): Visszafelé keresési (PTR) rekord
    • 0x0F (15): Levelezési (MX) rekord
    • 0x21 (33): Szolgáltatási (SRV) rekord
    • 0xFB (251): Növekményes zónaátviteli (IXFR) bejegyzés
    • 0xFC (252): Standard zónaátviteli (AXFR) rekord
    • 0xFF (255): Minden rekord
  • Kérdésosztály:
    Az IN (Internet) kérdésosztályt jelöli, amely általában a következőre 0x0001van állítva: .

DNS-lekérdezés válaszüzenete

A DNS-válaszüzenet válasz-, szolgáltató- és további információszakaszai olyan erőforrásrekordokat tartalmazhatnak, amelyek megválaszolják a lekérdezési üzenet kérdésszakaszát. Az erőforrásrekordok a következőképpen vannak formázva:

  • Erőforrásrekord neve: A DNS-tartománynév változó hosszúságú mezőként van rögzítve a Kérdésnév mezővel megegyező formázást követve.
  • Erőforrásrekord típusa: Az erőforrásrekord típusának értéke.
  • Erőforrásrekord-osztály: Az erőforrásrekord osztálykódja, az internetes osztály, 0x0001.
  • Élettartam: A TTL másodpercben kifejezve 32 bites aláíratlan mezőként.
  • Erőforrásadatok hossza: 2 bájtos mező, amely az erőforrásadatok hosszát jelzi.
  • Erőforrásadatok: Az erőforrásrekord típusának megfelelő változó hosszúságú adatok.

Az Erőforrásrekord neve mező ugyanúgy van kódolva, mint a Kérdés neve mező, kivéve, ha a név már szerepel a DNS-üzenet más részein, ebben az esetben a rendszer egy 2 bájtos mezőt használ egy hossz-érték kódolt név helyett, és a már meglévő névre mutató mutatóként szolgál.

Név lekérdezési üzenet formátuma

A Név lekérdezés üzenetformátuma megegyezik a fent ismertetett DNS-üzenetformátummal. Egy tipikus név lekérdezési üzenetben a DNS-üzenetmezők a következőképpen vannak beállítva:

  • Lekérdezésazonosító (tranzakcióazonosító)::
    Állítson be egy egyedi számot, hogy a DNS-ügyfélfeloldó megfeleljen a lekérdezésre adott válasznak. A lekérdezési válasz tranzakcióazonosítója mindig megegyezik a lekérdezéskérés tranzakcióazonosítójával.

  • Flags:
    Egy szabványos lekérdezés jelzésére van beállítva, amelyen engedélyezve van a rekurzió.

  • Kérdések száma:
    Állítsa be az 1 értéket.

  • Kérdésbejegyzés:
    Állítsa be a lekérdezett tartománynevet és a visszaadni kívánt erőforrásrekord típusát.

Név lekérdezési válasz üzenetformátuma

A név lekérdezési válasz üzenetformátuma megegyezik a fent ismertetett DNS-üzenetformátummal. Egy tipikus név lekérdezési üzenetben a DNS-üzenetmezők a következőképpen lesznek beállítva:

  • Lekérdezésazonosító (tranzakcióazonosító)::
    Állítson be egy egyedi számot, hogy a DNS-ügyfélfeloldó megfeleljen a lekérdezésre adott válasznak.

  • Flags:
    Egy szabványos lekérdezés jelzésére van beállítva, amelyen engedélyezve van a rekurzió.

  • Kérdések száma:
    Állítsa be az 1 értéket.

  • Kérdésbejegyzés:
    Állítsa be a lekérdezett tartománynevet és a visszaadni kívánt erőforrásrekord típusát.

A névlekérdezés fordított üzenetformátuma

A fordított név lekérdezési üzenetei az alábbi különbségekkel használják a gyakori üzenetformátumot:

  • A DNS-ügyfélfeloldó a lekérdezett IP-cím alapján hozza létre a tartománynevet az in-addr.arpa tartományban.

  • A mutató (PTR) erőforrásrekordot a gazdagép (A) erőforrásrekord helyett lekérdezi a függvény.

Üzenetformátum frissítése

A DNS-frissítési üzenet formátuma a végrehajtandó frissítési műveletet meghatározó fejlécet és a frissítést tartalmazó erőforrásrekord-készletet használja. A DNS-frissítési üzenet formátuma a következő mezőket tartalmazza:

  • Identification. A DNS-ügyfél kérelmezője által hozzárendelt 16 bites azonosító. Ezt az azonosítót a rendszer a megfelelő válaszba másolja, és a kérelmező használhatja a függőben lévő kérelmekre adott válaszok egyeztetésére, vagy a kiszolgáló az egyes kérelmezők ismétlődő kéréseinek észlelésére.

  • Flags. Egy 16 bites DNS-frissítési üzenetjelző mező. Az egyes jelölők leírásáért lásd alább a "DNS Update Message Flags mező" című témakört.

  • Zónabejegyzések száma. A Zónabejegyzés szakaszban található erőforrásrekordok száma.

  • Az előfeltételként megadott erőforrásrekordok száma. Az Előfeltétel erőforrásrekordok szakaszban található erőforrásrekordok száma.

  • A frissítési erőforrás-rekordok száma. Az Erőforrásrekordok frissítése szakaszban található erőforrásrekordok száma.

  • További erőforrásrekordok száma. Az erőforrásrekordok száma a További erőforrásrekordok szakaszban.

  • Zónabejegyzés. A frissített rekordok zónáját jelöli. A frissíteni kívánt rekordoknak ugyanabban a zónában kell lenniük, ezért a zónaszakasznak pontosan egy rekordot kell tartalmaznia. Három értékből áll: A ZNAME a zóna neve, a ZTYPE-nak SOA-nak kell lennie, a ZCLASS pedig a zóna osztálya.

  • Előfeltételként szolgáló erőforrásrekordok. Olyan erőforrásrekord-előfeltételeket tartalmaz, amelyeket a frissítési üzenetnek a fő DNS-kiszolgáló általi fogadásakor kell teljesítenie. Öt lehetséges értékkészlet fejezhető ki:

    • Az erőforrásrekordkészlet létezik (értékfüggetlen). Legalább egy megadott névvel és típussal rendelkező erőforrásrekordnak (a zónaszakasz által meghatározott zónában és osztályban) léteznie kell.

    • Az erőforrásrekordkészlet létezik (értékfüggő). Létezik egy megadott névvel és típussal rendelkező erőforrásrekord-készlet, és ugyanazokkal a tagokkal rendelkezik, mint az ebben a szakaszban megadott erőforrásrekord-készlet.

    • Az erőforrásrekord-készlet nem létezik. Nincs megadott névvel és típussal rendelkező erőforrásrekord (a Zóna szakasz által jelölt zónában és osztályban).

    • A név használatban van. Létezik legalább egy megadott nevű erőforrásrekord (a Zóna szakasz által megadott zónában és osztályban). Ezt az előfeltételt nem teljesítik az üres nemterminálisok.

    • A név nincs használatban. Egyetlen típusú erőforrásrekord sem rendelkezik megadott névvel. Ezt az előfeltételt üres nemterminálisok teljesítik.

  • Erőforrásrekordok frissítése. A zónából hozzáadni vagy törölni kívánt erőforrásrekordokat tartalmazza. A frissítés során négy művelet egyikét hajtja végre:

    • Erőforrásrekordok hozzáadása erőforrásrekordkészlethez.

    • Egy erőforrás-rekordkészlet törlése.

    • Törölje az összes erőforrásrekord-készletet egy névből.

    • Erőforrásrekord törlése egy erőforrásrekordkészletből.

  • További erőforrásrekordok. A frissítéshez vagy a frissítés által hozzáadott új erőforrásrekordokhoz kapcsolódó erőforrásrekordokat tartalmaz.

DNS-frissítési üzenetjelzők mező

A DNS-frissítési üzenetjelzők mezője a következő jelzőket használja:

  • Request/response. Az 1 bites mező 0 értékre van állítva, amely egy frissítési kérést, 1 pedig egy frissítési választ jelöl.

  • Műveleti kód. A DNS-frissítésekhez 0x5-re állított 4 bites mező.

  • Reserved. A 7 bitesre fenntartott mező értéke 0.

  • Visszaadott kód. A frissítési lekérdezés eredményét jelölő kódokat tartalmazó 4 bites mező. A kódok a következők:

    • 0 (NOERROR): Nincs hiba; sikeres frissítést.
    • 1 (KORÁBBIR): Formátumhiba; A DNS-kiszolgáló nem értette a frissítési kérést.
    • 0x2 (SERVFAIL): A DNS-kiszolgáló belső hibát észlelt, például egy továbbítási időtúllépést.
    • 0x3 (NXDOMAIN): A létező név nem létezik.
    • 0x4 (NOTIMP): A DNS-kiszolgáló nem támogatja a megadott műveleti kódot.
    • 0x5 (MEGTAGADVA): A DNS-kiszolgáló nem hajlandó végrehajtani a frissítést.
    • 0x6 (YXDOMAIN): Létezik olyan név, amely nem létezhet.
    • 0x7 (YXRRSET): Létezik olyan erőforrásrekordkészlet, amely nem létezhet.
    • 0x8 (NXRRSET): Nem létezik olyan erőforrásrekordkészlet, amelyeknek létezniük kell.
    • 0x9 (NOTAUTH): A DNS-kiszolgáló nem mérvadó a Zóna szakaszban elnevezett zónához.
    • 0xA (NOTZONE): Az Előfeltétel vagy frissítés szakaszokban használt név nem a Zóna szakasz által megadott zónán belül található.

Dinamikus frissítés válaszüzenetének formátuma

A dinamikus frissítési válaszüzenet a DNS-frissítési üzenet formátumát követi, a DNS-jelzők kivételével. A dinamikus frissítési válasz üzenet fejlécjelzői azt mutatják, hogy a frissítés sikeres-e a sikeres válaszkód vagy a DNS-frissítési üzenetjelzőkben leírt hibakódok egyikének belefoglalásával.