Hacker DirectoryHacker Directory

WEB / WEB-03.01

DNS namespace and resolution

DNS is more than a domain-to-IP list: it combines a namespace, distributed authority and resolver roles. Follow who answers a question for notes.example.org.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mechanism

Read every scenario without motion

Cold A · iterative referrals

  1. Absolute question ready

    Name/type/class are explicit. Application-to-local-stub call is not a separate network hop; the scene starts with the stub’s recursive-service request.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Selected cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  2. Stub question reached recursive

    The recursive resolver received the request. RD asks for recursion; it is not cryptographic validation.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    notes.example.org. / A / IN · RD=1 received
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  3. Local cache-miss decision

    This cold fixture requires iterative work. Root hints/server addresses/delegation selection are supplied; QNAME minimization is omitted.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    notes.example.org. / A / IN · local cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  4. Root received the query

    A separate query from the recursive resolver arrived. Root does not proxy it to the next authority.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    notes.example.org. / A / IN · local cache miss
    Root · .
    notes.example.org. / A / IN · RD=0 query received
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  5. Root referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Referral received · zone org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  6. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  7. TLD received the query

    A separate query from the recursive resolver arrived. TLD does not proxy it to the next authority.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    notes.example.org. / A / IN · RD=0 query received
    Authority · example.org.
    No query yet
  8. TLD referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Referral received · zone example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  9. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  10. Zone authority received the query

    The example.org zone role can decide from its own data. These are not claimed current example.org records.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    notes.example.org. / A / IN · query received
  11. Local authoritative result

    Zone lookup is local. The positive A record is selected fixture data.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR · A 198.51.100.200 · TTL 120 · AA=1
  12. Authority response reached recursive

    The result is now in recursive context. NODATA is inferred with NOERROR; NXDOMAIN is a separate name-error RCODE.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Authority result received · NOERROR · A 198.51.100.200 · TTL 120
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR · A 198.51.100.200 · TTL 120 · AA=1
  13. Final result prepared locally

    Selected caching is summarized as positive TTL 120; full resolver policies and DNSSEC are omitted.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Final result ready · NOERROR · A 198.51.100.200 · TTL 120
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR · A 198.51.100.200 · TTL 120 · AA=1
  14. Recursive result reached stub

    Result delivery completed. An address/type/name result is not a reachability or user-permission verdict.

    Stub / client
    Final result received · NOERROR · A 198.51.100.200 · TTL 120
    Recursive resolver
    Final result ready · NOERROR · A 198.51.100.200 · TTL 120
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR · A 198.51.100.200 · TTL 120 · AA=1

Warm A · cache hit

  1. Absolute question ready

    Name/type/class are explicit. Application-to-local-stub call is not a separate network hop; the scene starts with the stub’s recursive-service request.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Selected cache ready
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  2. Stub question reached recursive

    The recursive resolver received the request. RD asks for recursion; it is not cryptographic validation.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    notes.example.org. / A / IN · RD=1 received
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  3. Local positive-cache lookup

    The selected entry is usable. No root/TLD/authority exchange occurs; TTL is not executed as a live timer.

    Stub / client
    notes.example.org. / A / IN · no result
    Recursive resolver
    Cache hit · A 198.51.100.200 · TTL 120−30=90
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  4. Cached answer reached stub

    Delivery completed; an address result is not HTTP success or validated service identity.

    Stub / client
    Cached A 198.51.100.200 · TTL 90 received
    Recursive resolver
    Cache hit · A 198.51.100.200 · TTL 120−30=90
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet

NXDOMAIN · name absent

  1. Absolute question ready

    Name/type/class are explicit. Application-to-local-stub call is not a separate network hop; the scene starts with the stub’s recursive-service request.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Selected cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  2. Stub question reached recursive

    The recursive resolver received the request. RD asks for recursion; it is not cryptographic validation.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    missing.example.org. / A / IN · RD=1 received
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  3. Local cache-miss decision

    This cold fixture requires iterative work. Root hints/server addresses/delegation selection are supplied; QNAME minimization is omitted.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    missing.example.org. / A / IN · local cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  4. Root received the query

    A separate query from the recursive resolver arrived. Root does not proxy it to the next authority.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    missing.example.org. / A / IN · local cache miss
    Root · .
    missing.example.org. / A / IN · RD=0 query received
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  5. Root referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Referral received · zone org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  6. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  7. TLD received the query

    A separate query from the recursive resolver arrived. TLD does not proxy it to the next authority.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    missing.example.org. / A / IN · RD=0 query received
    Authority · example.org.
    No query yet
  8. TLD referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Referral received · zone example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  9. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  10. Zone authority received the query

    The example.org zone role can decide from its own data. These are not claimed current example.org records.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    missing.example.org. / A / IN · query received
  11. Local authoritative result

    Zone lookup is local. No alias; the negative result carries an SOA summary.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NXDOMAIN · name absent · AA=1
  12. Authority response reached recursive

    The result is now in recursive context. NODATA is inferred with NOERROR; NXDOMAIN is a separate name-error RCODE.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Authority result received · NXDOMAIN · name absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NXDOMAIN · name absent · AA=1
  13. Final result prepared locally

    Selected caching is summarized as min(300,60)=60 negative seconds; full resolver policies and DNSSEC are omitted.

    Stub / client
    missing.example.org. / A / IN · no result
    Recursive resolver
    Final result ready · NXDOMAIN · name absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NXDOMAIN · name absent · AA=1
  14. Recursive result reached stub

    Result delivery completed. An address/type/name result is not a reachability or user-permission verdict.

    Stub / client
    Final result received · NXDOMAIN · name absent
    Recursive resolver
    Final result ready · NXDOMAIN · name absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NXDOMAIN · name absent · AA=1

NODATA · AAAA

  1. Absolute question ready

    Name/type/class are explicit. Application-to-local-stub call is not a separate network hop; the scene starts with the stub’s recursive-service request.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Selected cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  2. Stub question reached recursive

    The recursive resolver received the request. RD asks for recursion; it is not cryptographic validation.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    v4only.example.org. / AAAA / IN · RD=1 received
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  3. Local cache-miss decision

    This cold fixture requires iterative work. Root hints/server addresses/delegation selection are supplied; QNAME minimization is omitted.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    v4only.example.org. / AAAA / IN · local cache miss
    Root · .
    No query yet
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  4. Root received the query

    A separate query from the recursive resolver arrived. Root does not proxy it to the next authority.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    v4only.example.org. / AAAA / IN · local cache miss
    Root · .
    v4only.example.org. / AAAA / IN · RD=0 query received
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  5. Root referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Referral received · zone org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  6. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    No query yet
    Authority · example.org.
    No query yet
  7. TLD received the query

    A separate query from the recursive resolver arrived. TLD does not proxy it to the next authority.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Local next authority selected · org.
    Root · .
    Referral prepared · org.
    TLD · org.
    v4only.example.org. / AAAA / IN · RD=0 query received
    Authority · example.org.
    No query yet
  8. TLD referral reached recursive

    The authority-section referral names the next zone, not a final address answer. AA=0 is a role summary; server addresses are supplied separately.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Referral received · zone example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  9. Local referral follow-up selection

    The recursive resolver selects the receiver of its next query. This lookup is not a network message.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    No query yet
  10. Zone authority received the query

    The example.org zone role can decide from its own data. These are not claimed current example.org records.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    v4only.example.org. / AAAA / IN · query received
  11. Local authoritative result

    Zone lookup is local. No alias; the negative result carries an SOA summary.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Local next authority selected · example.org.
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR / NODATA · AAAA absent · AA=1
  12. Authority response reached recursive

    The result is now in recursive context. NODATA is inferred with NOERROR; NXDOMAIN is a separate name-error RCODE.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Authority result received · NOERROR / NODATA · AAAA absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR / NODATA · AAAA absent · AA=1
  13. Final result prepared locally

    Selected caching is summarized as min(300,60)=60 negative seconds; full resolver policies and DNSSEC are omitted.

    Stub / client
    v4only.example.org. / AAAA / IN · no result
    Recursive resolver
    Final result ready · NOERROR / NODATA · AAAA absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR / NODATA · AAAA absent · AA=1
  14. Recursive result reached stub

    Result delivery completed. An address/type/name result is not a reachability or user-permission verdict.

    Stub / client
    Final result received · NOERROR / NODATA · AAAA absent
    Recursive resolver
    Final result ready · NOERROR / NODATA · AAAA absent
    Root · .
    Referral prepared · org.
    TLD · org.
    Referral prepared · example.org.
    Authority · example.org.
    NOERROR / NODATA · AAAA absent · AA=1

ACTORS · STATE · DATA FLOW

Why separate names from addresses?

Permanently binding an application to a numeric address pushes address changes into user choices and configuration. DNS provides a shared hierarchical namespace with typed data; a question has QNAME, QTYPE and QCLASS. A can request an address while other types describe mail or naming authority. DNS is neither a routing nor an application-permission database.

Our synthetic question is notes.example.org. / A / IN. A result of 198.51.100.200 can be followed by connectivity and service-identity work. Receiving the address does not establish reachability, expected TLS identity or a user’s permissions, so those layers remain separate.

Labels, domains, subdomains and FQDNs

The presentation form notes.example.org. contains labels notes, example, org and the root’s empty label. Tree hierarchy reads root → org → example → notes. It is a subdomain of example.org because of label boundaries, not an arbitrary substring match. A domain name can serve as a host name, but not every DNS node must be a web host.

The final dot explicitly represents root in strict presentation form. Applications commonly display notes.example.org and call it an FQDN; omission of the dot is not automatic proof of a relative name. A short name such as notes can be completed through search/origin context. We supply an absolute question rather than inventing that context.

Namespace and zones have different scopes

A domain describes subtree relationships; a zone scopes authoritative data management. A subdomain can remain in its parent zone without separate delegation. A dot therefore does not necessarily introduce another server or security tenant. Our example.org zone directly contains notes.example.org.

The root is not a central catalog of every host address; delegations guide a resolver toward closer authority. The .org TLD role points toward example.org authority. An authoritative server answers from its zone knowledge; a recursive resolver obtains or caches information from other roles.

Separate stub and recursive resolver work

A stub generally cannot perform the full referral process and asks a configured recursive resolver for the result. Application-to-local-resolver calls need not be DNS packets; they may be OS/library interfaces. Browsers can have their own resolver/cache choices. We draw one selected stub-to-recursive path rather than asserting universal browser behavior.

A recursive request asks with RD=1; RA separately indicates offered recursion support. These bits do not themselves assert TLS or DNSSEC validation. An authoritative server need not provide recursion. Because DNS server alone hides its role, actor labels state each task.

A recursive result can require iterative exchanges

In the cold fixture the stub question reaches the recursive resolver. It queries root and receives a referral, then separately queries TLD and receives another referral, then queries the authoritative server and receives an answer. Root does not forward the question as a proxy to TLD. The resolver returns a final result to the stub.

This path uses full-question summaries and omits QNAME minimization, forwarders, retries, priming, glue-address lookup, anycast and DNS transport details. Delegation/server-address selection is supplied. A warm cache may need no root/TLD/authoritative exchange; not every page request performs a cold resolution.

Results: answer, name error or missing type

The positive-cache example starts at TTL 120 and is examined after 30 seconds, leaving a selected TTL of 90. Cache lookup is local; DNS record TTL differs from IP packet TTL. It bounds cache use without consulting the source again, while application/resolver policy can discard data earlier.

NXDOMAIN for missing.example.org. is a name error. If v4only.example.org. exists without AAAA, the fixture shows NODATA using NOERROR, no relevant answer and a zone SOA; NODATA is not a separate wire RCODE. SERVFAIL or timeout is not NXDOMAIN: inability to resolve does not establish absence. Aliases can change which name a negative result concerns; these negative cases contain no aliases.

2. Red · Trust & Impact

Read every scenario without motion

Authority boundary

  1. The question scope was defined

    notes.example.org. A/IN is an absolute question. The notes label is not automatically a delegated zone or application tenant boundary.

    Question evidence
    A / notes / example.org.
    Result interpretation
    No trust conclusion
    Application gate
    No application grant
  2. The result class is read separately

    AA is set on the authoritative answer but not on the recursive reply, where RA indicates recursion support. The difference identifies answering roles; AA is not a cryptographic-authenticity result.

    Question evidence
    A / notes / example.org.
    Result interpretation
    AA = authority role, not proof
    Application gate
    No application grant
  3. An unsupported promotion was stopped

    Promoting an address answer to verified service identity or resource permission skips higher-layer gates. Resolution informs target selection only.

    Question evidence
    A / notes / example.org.
    Result interpretation
    AA = authority role, not proof
    Application gate
    Service identity separately required
  4. A referral is not the final answer

    Root org. and TLD example.org. referrals have aa=false. The resolver continues to another authority; the root has not personally verified the application address.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    AA = authority role, not proof
    Application gate
    Service identity separately required
  5. The control preserved source and scope

    The application retains result classification separately from resolver source/cache context. HTTPS/TLS and object-policy decisions are not completed by a plain DNS role diagram.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    Question / result / source separate
    Application gate
    Service identity separately required
  6. A supported conclusion was selected

    The notes A answer supplies 198.51.100.200. This inert answer is not a service-identity or browser-origin-enforcement test.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    Question / result / source separate
    Application gate
    Address result supplied; identity unknown

Type boundary

  1. The question scope was defined

    The question is AAAA/IN for v4only.example.org.; the artifact supplies existingA=198.51.100.201. An absent requested type does not erase all data at the name.

    Question evidence
    AAAA / v4only
    Result interpretation
    No trust conclusion
    Application gate
    No application grant
  2. The result class is read separately

    NOERROR with empty answers gives NODATA, requested-type-absent. That differs from NXDOMAIN name-absent; empty answers alone do not imply the same verdict.

    Question evidence
    AAAA / v4only
    Result interpretation
    NODATA / AAAA only
    Application gate
    No application grant
  3. An unsupported promotion was stopped

    Promoting absent AAAA to an absent name wrongly closes an existing A path. Policy must use only the absence supported by the question tuple.

    Question evidence
    AAAA / v4only
    Result interpretation
    NODATA / AAAA only
    Application gate
    Name-wide denial unsupported
  4. A referral is not the final answer

    Root org. and TLD example.org. referrals have aa=false. The resolver continues to another authority; the root has not personally verified the application address.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    NODATA / AAAA only
    Application gate
    Name-wide denial unsupported
  5. The control preserved source and scope

    The application retains result classification separately from resolver source/cache context. HTTPS/TLS and object-policy decisions are not completed by a plain DNS role diagram.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    Question / result / source separate
    Application gate
    Name-wide denial unsupported
  6. A supported conclusion was selected

    Absent AAAA data is known in this supplied case; A data remains present. No resource availability or authorization denial is added.

    Question evidence
    Referral ≠ application answer
    Result interpretation
    Question / result / source separate
    Application gate
    AAAA absent; name exists

ASSUMPTION · BOUNDARY · CONTROL

Broken assumption: a written name is trusted identity

A name is a resource-selection input; trust decisions need roles and validated evidence. Its appearance does not replace routing, authentication or object access. Data provenance and the selected resolver policy are part of the trust boundary.

Name the necessary condition precisely: an application needs an appropriate result for its intended name, then validates service identity and authorization. We show where a conclusion goes wrong without answer manipulation or external-domain probing.

Broken assumption: every subdomain is independent authority

Equating the name tree with zone cuts, deployment and tenant boundaries creates the wrong scope. The notes label is not a delegated zone in this fixture. Subdomain relationships follow label suffixes rather than visually similar text.

The control question belongs to configuration review: does naming authority agree with application scope, and who manages the intended name? Answer it through the inert namespace without enumeration or ownership-takeover reproduction.

Broken assumption: an empty answer proves name absence

Referral, NOERROR/NODATA and NXDOMAIN differ. An empty answer with an NS referral can leave resolution unfinished; SOA and RCODE context change interpretation. The authoritative-answer bit is not cryptographic authenticity.

A negative fixture supports its question scope. Failure to obtain A does not decide all AAAA data; missing AAAA proves neither total name absence nor an unavailable application. Name the needed type/result evidence without running real queries.

3. Blue · Secure development & defense

Read every scenario without motion

Negative types

  1. The observed path was selected

    NXDOMAIN for missing.example.org. A/IN and NODATA for v4only.example.org. AAAA/IN carry different question/result tuples.

    Resolution evidence
    NXDOMAIN / NODATA tuples
    Result classification
    No classification
    Coverage review
    No review
  2. The source role was marked

    The stub receives a recursive reply; an authoritative answer belongs to another observation point. rd/ra/aa do not show that one actor sees every upstream exchange.

    Resolution evidence
    NXDOMAIN / NODATA tuples
    Result classification
    Stub reply ≠ upstream capture
    Coverage review
    No review
  3. Negative SOA context was preserved

    Both negative summaries have an SOA for example.org. With SOA TTL 300 and MINIMUM 60, the selected negative lifetime is 60 seconds. Empty answers alone explain neither that calculation nor the result class.

    Resolution evidence
    NXDOMAIN / NODATA tuples
    Result classification
    min(300,60)=60
    Coverage review
    No review
  4. Ordinary absence was not made an alarm

    Cache responses may lack observed root/TLD exchanges from coldTrace. Missing AAAA in NODATA also does not remove existingA; deviations are judged within the same scope.

    Resolution evidence
    NXDOMAIN / NODATA tuples
    Result classification
    min(300,60)=60
    Coverage review
    Cache / type absence can be normal
  5. Missing coverage was stated separately

    The artifact provides no transport, DNSSEC or HTTP outcome. Their absence in a plain role trace does not show those layers are disabled in an actual deployment.

    Resolution evidence
    UNKNOWN: transport/validation
    Result classification
    min(300,60)=60
    Coverage review
    Cache / type absence can be normal
  6. Resolution regression was bounded

    Cold referrals, warm TTL and NXDOMAIN/NODATA classification remain separate controls. A supplied DNS answer does not mean certificate or user-permission regression has passed.

    Resolution evidence
    UNKNOWN: transport/validation
    Result classification
    min(300,60)=60
    Coverage review
    Name/type results distinct; higher layer unknown

Warm cache

  1. The observed path was selected

    The cache entry arrived with a 120-second TTL and has aged 30 seconds, leaving 90 seconds. Not seeing an upstream root query is therefore consistent with ordinary cache reuse.

    Resolution evidence
    Cache 120−30=90
    Result classification
    No classification
    Coverage review
    No review
  2. The cache entry matched the question

    The warmCache entry has name=notes.example.org., type=A and class=IN, matching the stub question. The recursive resolver reads it locally; no new authoritative answer is shown. The entry supplies cache provenance rather than TLS or DNSSEC validation.

    Resolution evidence
    Cache 120−30=90
    Result classification
    name/type/class match
    Coverage review
    No review
  3. Positive TTL lifetime was computed

    This positive entry supplies receivedTtl=120 and elapsedSeconds=30, leaving remainingTtl=90. The negative SOA TTL 300 / MINIMUM 60 calculation belongs to another case and does not replace this A answer’s lifetime with 60 seconds.

    Resolution evidence
    Cache 120−30=90
    Result classification
    Positive remainingTtl=90
    Coverage review
    No review
  4. The upstream query steps were skipped

    The selected fresh cache entry answers the same question, skipping root, TLD and authoritative queries in this branch. A stub seeing the cached reply does not observe how the resolver originally learned it. No new upstream record is ordinary for this baseline.

    Resolution evidence
    Cache 120−30=90
    Result classification
    Positive remainingTtl=90
    Coverage review
    Fresh cache / no new upstream query
  5. Missing coverage was stated separately

    The artifact provides no transport, DNSSEC or HTTP outcome. Their absence in a plain role trace does not show those layers are disabled in an actual deployment.

    Resolution evidence
    UNKNOWN: transport/validation
    Result classification
    Positive remainingTtl=90
    Coverage review
    Fresh cache / no new upstream query
  6. Resolution regression was bounded

    Matching name/type/class and remaining TTL support cache-use expectations in this branch. They do not establish a current authoritative exchange, accepted certificate or verified user permission. Actual cached-response review must correlate resolver, time and provenance for the same operation.

    Resolution evidence
    UNKNOWN: transport/validation
    Result classification
    Positive remainingTtl=90
    Coverage review
    Cache expectation agrees; higher layer unknown

IMPLEMENTATION · SECURITY CONTROL · VERIFICATION

A resolution trace needs roles and results

The artifact separates query sender/receiver, QNAME/QTYPE, referral zone and final result. Resolver-to-stub and authoritative-to-resolver answers have different roles. Trace fields are an original teaching schema, not a DNS product log or hex capture.

Real observations need resolver identity, cache source, time, question tuple and response context. One observer may not see upstream exchanges. Do not infer encrypted transport from this role diagram; transport and validation evidence are separate.

Cold, warm and negative baselines

The cold path follows root/TLD referrals; the warm branch answers from a selected cache entry. No root query can be normal with answer or delegation-cache reuse. Its absence alone does not prove DNS was unused.

NXDOMAIN concerns a missing name; NODATA concerns missing AAAA at an existing v4only name. The negative authority summary carries SOA and selected cache lifetime min(SOA TTL 300, MINIMUM 60)=60. This is a basic boundary; full negative-cache policy and DNSSEC validation are separate lesson scopes.

A good review is more than one hostname result

Retain absolute-name and label boundaries in namespace review, zone scope in authority review, and recursion/cache provenance in resolver review. In the cold trace the root referral returns to the recursive resolver, which sends a new query to TLD. Root does not forward it as an application proxy. In the warm branch a fresh entry skips those upstream steps.

A DNS result supports its question and response scope only. RCODE, relevant answers and authority context distinguish missing name from missing requested type. Certificates, browser origin, outbound policy and user authorization need separate observations at their layers. Do not record the resolver reply and authoritative answer as the same observation point.

An application consuming DNS results should retain name/type/class with the result. AAAA NODATA for v4only.example.org. does not establish that its A record is missing; NXDOMAIN for missing.example.org. reports name absence. Turning both into one permanent invalid-hostname state can incorrectly disable a normal IPv4 path. Verify these distinct expected results separately, and do not keep treating an expired negative-cache result as a current decision.

NOW APPLY IT TO THE CASE

How do authority roles and negative-answer scope differ?

notes.example.org. resolves within example.org. authority. Missing AAAA data for v4only.example.org. does not remove its existing A record. A resolver reply informs address selection rather than deciding application identity.

Does a DNS answer establish the case’s correct book result? Separate the end of name-resolution knowledge from the start of HTTP and application observations.

Open the related case file ↗

READ THE EXAMPLE TOGETHER

Namespace and resolution decision trace

Select a field and examine what it supports and where the evidence ends.

Read the raw artifact and field explanations
{
  "question": {
    "name": "notes.example.org.",
    "type": "A",
    "class": "IN",
    "stubRd": true
  },
  "labels": [
    "notes",
    "example",
    "org",
    ""
  ],
  "authoritativeZone": "example.org.",
  "coldTrace": [
    {
      "from": "stub",
      "to": "recursive",
      "kind": "query",
      "rd": true
    },
    {
      "from": "recursive",
      "to": "root",
      "kind": "query",
      "rd": false
    },
    {
      "from": "root",
      "to": "recursive",
      "kind": "referral",
      "zone": "org.",
      "aa": false
    },
    {
      "from": "recursive",
      "to": "tld",
      "kind": "query",
      "rd": false
    },
    {
      "from": "tld",
      "to": "recursive",
      "kind": "referral",
      "zone": "example.org.",
      "aa": false
    },
    {
      "from": "recursive",
      "to": "authoritative",
      "kind": "query",
      "rd": false
    },
    {
      "from": "authoritative",
      "to": "recursive",
      "kind": "answer",
      "aa": true,
      "rcode": "NOERROR",
      "records": [
        {
          "owner": "notes.example.org.",
          "type": "A",
          "class": "IN",
          "ttl": 120,
          "rdata": "198.51.100.200"
        }
      ]
    },
    {
      "from": "recursive",
      "to": "stub",
      "kind": "answer",
      "aa": false,
      "rd": true,
      "ra": true,
      "rcode": "NOERROR"
    }
  ],
  "warmCache": {
    "name": "notes.example.org.",
    "type": "A",
    "class": "IN",
    "receivedTtl": 120,
    "elapsedSeconds": 30,
    "remainingTtl": 90,
    "source": "selected-positive-cache-entry"
  },
  "negativeCases": [
    {
      "id": "NXDOMAIN",
      "question": {
        "name": "missing.example.org.",
        "type": "A",
        "class": "IN"
      },
      "rcode": "NXDOMAIN",
      "answers": [],
      "soaSummary": {
        "owner": "example.org.",
        "ttl": 300,
        "minimum": 60
      },
      "classification": "name-absent",
      "selectedNegativeTtl": 60
    },
    {
      "id": "NODATA",
      "question": {
        "name": "v4only.example.org.",
        "type": "AAAA",
        "class": "IN"
      },
      "rcode": "NOERROR",
      "answers": [],
      "soaSummary": {
        "owner": "example.org.",
        "ttl": 300,
        "minimum": 60
      },
      "classification": "requested-type-absent",
      "existingA": "198.51.100.201",
      "selectedNegativeTtl": 60
    }
  ],
  "limits": [
    "synthetic authority/delegation summaries; not current example.org DNS",
    "server-address selection supplied",
    "no alias in negative cases",
    "no transport, DNSSEC or HTTP outcome"
  ]
}
labels / authoritativeZone
Separates the name tree from managed zone scope.
coldTrace.from / to / kind
Identifies the sender/receiver roles of query or response arrivals.
rd / ra / aa
Recursion request/availability and authoritative-answer context, not validation proof.
warmCache.remainingTtl
Selected positive-cache arithmetic, not a live clock or OS cache.
negativeCases
Distinct name/type conditions for NXDOMAIN and NOERROR/NODATA.

Inert role trace and selected results. No DNS bytes, actual example.org records, QNAME minimization, glue/priming, full caching, DNSSEC or application outcome.

Two reality checks

A recursive resolver repeats root→TLD→authority for every query.

Usable answer/delegation caches or another resolver path can change upstream work; the cold path is one selected condition.

An empty AAAA answer means the domain does not exist.

NOERROR/NODATA can mean a missing type at an existing name; NXDOMAIN is a name error, while timeout/SERVFAIL differ.

YOUR TURN

Work through this story.

Predict the outcome, find the evidence boundary, and explain it in your own words.

An AAAA answer for v4only.example.org is NOERROR with empty answers. Is the name absent?

  1. No; the selected record is NODATA and an A record exists.
  2. Yes; empty answers always means NXDOMAIN.
Read the explained answer

No; the selected record is NODATA and an A record exists. — NOERROR with empty AAAA is absence of the requested type in this example, not name-absent.

Do the root referral and authoritative answer serve the same role?

Selected lesson artifact fields; teaching example

coldTrace[2]
{"from":"root","to":"recursive","kind":"referral","zone":"org.","aa":false}
coldTrace[6]
{"from":"authoritative","to":"recursive","kind":"answer","aa":true,"rcode":"NOERROR","records":[{"owner":"notes.example.org.","type":"A","class":"IN","ttl":120,"rdata":"198.51.100.200"}]}
  1. The referral directs resolution to the next authority; the authoritative answer supplies a resource record.
  2. The root referral is the final IP answer for the book server.
Read the explained answer

The referral directs resolution to the next authority; the authoritative answer supplies a resource record. — The root referral for org. has AA=false. The selected authority supplies the notes A answer with AA=true.

Why is a root lookup not required when the warm cache has remainingTtl=90?

Read the explained answer

The resolver can answer the same question from a fresh positive entry. A cached response is not a newly queried authoritative answer. This example does not measure DNSSEC, transport or HTTP-server availability; learning an address is not application success.

□ I distinguished a cache hit from a new authority query.

□ I did not equate a DNS result with HTTP success.

Open the application console · request / response / browser
Also open request, URL, cookie and DOM examples

Sources and scope