Hacker DirectoryHacker Directory

WEB / WEB-03.02

DNS records and aliasing

A DNS record’s type determines what its RDATA means. Read A/AAAA, a CNAME chain and NS/MX/TXT/PTR roles in one synthetic record table.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mechanism

Read every scenario without motion

A via two CNAMEs

  1. Typed question ready

    This scene assumes authority selection and does not repeat root/TLD. The loop case is a deliberately invalid local variant.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Authority/cache context selected
    Authority + local RR data
    Local record table · no query
  2. Question reached resolver

    Name/type/class are now in resolver context. Name-valued records do not all have the same resolution action.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    docs.example.org. / A / IN · query received
    Authority + local RR data
    Local record table · no query
  3. Local authority selection

    Delegation/server address data are initial conditions; lookup is not a transfer.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    Local record table · no query
  4. Authority received typed query

    The selected query arrived at authority. Local records can now be read by type.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    docs.example.org. / A / IN · query received
  5. First local CNAME lookup

    docs is the alias owner; edge is the RDATA target name. Same-zone lookup needs no new packet.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    docs CNAME → edge.example.org. · path [docs]
  6. Second local CNAME lookup

    The selected normal record points edge to notes. No network arrow is drawn.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    edge CNAME → notes.example.org. · path [docs,edge]
  7. Terminal A RRset found locally

    In the known finite table, notes A records are terminal data and the RRset contains two addresses.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
  8. Typed result reached resolver

    The response/teaching-outcome summary is now at the resolver; the loop variant is not a real DNS packet/error representation.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Authority summary received · CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
    Authority + local RR data
    CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
  9. Local result interpretation

    Keep QTYPE-appropriate data separate from alias path. Records are not HTTP Location, user permissions or mail-delivery results.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Final result ready for question · A
    Authority + local RR data
    CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
  10. Result reached client

    Delivery completed; address/name data are not the later application outcome.

    Typed consumer
    Typed result received · CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]
    Resolver
    Final result ready for question · A
    Authority + local RR data
    CNAME docs→edge→notes + A [198.51.100.200,198.51.100.201]

Direct AAAA RRset

  1. Typed question ready

    This scene assumes authority selection and does not repeat root/TLD. The loop case is a deliberately invalid local variant.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Authority/cache context selected
    Authority + local RR data
    Local record table · no query
  2. Question reached resolver

    Name/type/class are now in resolver context. Name-valued records do not all have the same resolution action.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    notes.example.org. / AAAA / IN · query received
    Authority + local RR data
    Local record table · no query
  3. Local authority selection

    Delegation/server address data are initial conditions; lookup is not a transfer.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Selected authority example.org. · notes.example.org. / AAAA / IN
    Authority + local RR data
    Local record table · no query
  4. Authority received typed query

    The selected query arrived at authority. Local records can now be read by type.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Selected authority example.org. · notes.example.org. / AAAA / IN
    Authority + local RR data
    notes.example.org. / AAAA / IN · query received
  5. Typed records found locally

    AAAA is IPv6 address data; DNS transport family is separate. MX carries preferences, not a delivered-mail outcome.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Selected authority example.org. · notes.example.org. / AAAA / IN
    Authority + local RR data
    AAAA [2001:db8:2::20]
  6. Typed result reached resolver

    The response/teaching-outcome summary is now at the resolver; the loop variant is not a real DNS packet/error representation.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Authority summary received · AAAA [2001:db8:2::20]
    Authority + local RR data
    AAAA [2001:db8:2::20]
  7. Local result interpretation

    Keep QTYPE-appropriate data separate from alias path. Records are not HTTP Location, user permissions or mail-delivery results.

    Typed consumer
    notes.example.org. / AAAA / IN · no result
    Resolver
    Final result ready for question · AAAA
    Authority + local RR data
    AAAA [2001:db8:2::20]
  8. Result reached client

    Delivery completed; address/name data are not the later application outcome.

    Typed consumer
    Typed result received · AAAA [2001:db8:2::20]
    Resolver
    Final result ready for question · AAAA
    Authority + local RR data
    AAAA [2001:db8:2::20]

MX preferences

  1. Typed question ready

    This scene assumes authority selection and does not repeat root/TLD. The loop case is a deliberately invalid local variant.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Authority/cache context selected
    Authority + local RR data
    Local record table · no query
  2. Question reached resolver

    Name/type/class are now in resolver context. Name-valued records do not all have the same resolution action.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    example.org. / MX / IN · query received
    Authority + local RR data
    Local record table · no query
  3. Local authority selection

    Delegation/server address data are initial conditions; lookup is not a transfer.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Selected authority example.org. · example.org. / MX / IN
    Authority + local RR data
    Local record table · no query
  4. Authority received typed query

    The selected query arrived at authority. Local records can now be read by type.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Selected authority example.org. · example.org. / MX / IN
    Authority + local RR data
    example.org. / MX / IN · query received
  5. Typed records found locally

    AAAA is IPv6 address data; DNS transport family is separate. MX carries preferences, not a delivered-mail outcome.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Selected authority example.org. · example.org. / MX / IN
    Authority + local RR data
    MX [10 mail1.example.org.,20 mail2.example.org.]
  6. Typed result reached resolver

    The response/teaching-outcome summary is now at the resolver; the loop variant is not a real DNS packet/error representation.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Authority summary received · MX [10 mail1.example.org.,20 mail2.example.org.]
    Authority + local RR data
    MX [10 mail1.example.org.,20 mail2.example.org.]
  7. Local result interpretation

    Keep QTYPE-appropriate data separate from alias path. Records are not HTTP Location, user permissions or mail-delivery results.

    Typed consumer
    example.org. / MX / IN · no result
    Resolver
    Final result ready for question · MX
    Authority + local RR data
    MX [10 mail1.example.org.,20 mail2.example.org.]
  8. Result reached client

    Delivery completed; address/name data are not the later application outcome.

    Typed consumer
    Typed result received · MX [10 mail1.example.org.,20 mail2.example.org.]
    Resolver
    Final result ready for question · MX
    Authority + local RR data
    MX [10 mail1.example.org.,20 mail2.example.org.]
  9. Consumer interprets mail preference

    Lower preference is preferred. This is local interpretation; no SMTP connection or mail sending is drawn.

    Typed consumer
    Mail consumer preference: mail1(10) before mail2(20)
    Resolver
    Final result ready for question · MX
    Authority + local RR data
    MX [10 mail1.example.org.,20 mail2.example.org.]

Invalid local CNAME loop

  1. Typed question ready

    This scene assumes authority selection and does not repeat root/TLD. The loop case is a deliberately invalid local variant.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Authority/cache context selected
    Authority + local RR data
    Local record table · no query
  2. Question reached resolver

    Name/type/class are now in resolver context. Name-valued records do not all have the same resolution action.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    docs.example.org. / A / IN · query received
    Authority + local RR data
    Local record table · no query
  3. Local authority selection

    Delegation/server address data are initial conditions; lookup is not a transfer.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    Local record table · no query
  4. Authority received typed query

    The selected query arrived at authority. Local records can now be read by type.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    docs.example.org. / A / IN · query received
  5. First local CNAME lookup

    docs is the alias owner; edge is the RDATA target name. Same-zone lookup needs no new packet.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    docs CNAME → edge.example.org. · path [docs]
  6. Second local CNAME lookup

    The selected invalid variant points edge back to docs. No network arrow is drawn.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    edge CNAME → docs.example.org. · path [docs,edge]
  7. Cycle found locally

    In the known finite table, a repeated owner is a cycle; no actual resolver RCODE is generated.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Selected authority example.org. · docs.example.org. / A / IN
    Authority + local RR data
    Cycle detected · no terminal address
  8. Typed result reached resolver

    The response/teaching-outcome summary is now at the resolver; the loop variant is not a real DNS packet/error representation.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Authority summary received · Cycle detected · no terminal address
    Authority + local RR data
    Cycle detected · no terminal address
  9. Local result interpretation

    Keep QTYPE-appropriate data separate from alias path. Records are not HTTP Location, user permissions or mail-delivery results.

    Typed consumer
    docs.example.org. / A / IN · no result
    Resolver
    Final result ready for question · A
    Authority + local RR data
    Cycle detected · no terminal address
  10. Result reached client

    Delivery completed; the CNAME cycle has no terminal address.

    Typed consumer
    Typed result received · Cycle detected · no terminal address
    Resolver
    Final result ready for question · A
    Authority + local RR data
    Cycle detected · no terminal address

ACTORS · STATE · DATA FLOW

Record owner and data are different fields

A Resource Record attaches type/class/TTL/RDATA to an owner name. Owner answers which name, and type answers what kind of data. Records sharing owner, class and type form an RRset. Two IPv4 addresses in the notes.example.org. A RRset do not mean two domains.

The artifact uses an explicit JSON table rather than a deployable master file. TTL 120 seconds is a selected cache bound, not an application timeout or hop count. RDATA is not uniformly text: A carries an address, CNAME a name, MX preference plus exchange, and TXT strings. Parsing all RDATA as IP ignores its type.

A and AAAA: address family is separate from transport

An IN-class A record carries a 32-bit IPv4 address; AAAA carries one 128-bit IPv6 address. The fixture gives notes.example.org A addresses 198.51.100.200 and .201 plus AAAA 2001:db8:2::20. They are distinct RRsets; an A answer alone does not determine AAAA presence.

An AAAA query can travel over IPv4 and an A query over IPv6: record address family is not DNS transport family. Selection or ordering of multiple answers requires client behavior; the fixture does not mandate using the first IP. These records describe addresses, not listening services, routes or TLS/user permissions.

CNAME owner is an alias; RDATA is the target name

For docs.example.org. CNAME edge.example.org., docs is the alias owner and edge the target. A second CNAME leads to notes.example.org. An A lookup can follow targets to the terminal A RRset. A same-zone target can be resolved locally; each alias link does not require another network exchange.

A standard CNAME does not coexist at its owner with ordinary A/AAAA/MX/TXT data; applicable DNSSEC metadata exceptions are outside this table. A zone apex with required SOA/NS therefore cannot simply host a standard CNAME too. Distinguish provider ALIAS/flattening behavior through its vendor contract rather than calling it a wire CNAME.

An alias-chain result is not an HTTP action

CNAME is DNS name indirection; it carries neither URL scheme/path/port nor HTTP status/location fields. Obtaining an address for docs does not mean a browser received an HTTP redirect response. The subsequent request’s naming and identity conditions remain at the application layer.

A valid chain reaches terminal address data. If the target is absent, the alias owner can exist while a negative result concerns the target. A docs→edge→docs loop is a deliberately invalid inert variant, not an infinite success path. The checker detects it locally without inventing production errors, retries or live queries.

NS, MX, TXT, PTR and SOA describe different roles

NS names an authority server whose address is separate A/AAAA data. MX carries exchange name and preference: 10 is preferred to 20, without guaranteeing uptime or mail delivery. Standard MX and NS targets must not be aliases. Our ns1/mail1/mail2 have direct A records.

TXT holds one or more character strings whose consumer defines semantics. course=atlas is neither a verification secret nor security policy. PTR is a name pointer in reverse namespace: 198.51.100.200 maps to owner 200.100.51.198.in-addr.arpa. Reverse data does not prove forward A ownership or TLS identity. SOA carries zone metadata; RFC2308 updated the old RFC1035 MINIMUM meaning for negative-cache lifetime.

2. Red · Trust & Impact

Read every scenario without motion

Alias / rights

  1. Record type selects interpretation

    docs.example.org. CNAME edge.example.org. and edge CNAME notes.example.org. establish address indirection. The chain carries no user or tenant grant.

    Record inventory
    docs → edge → notes
    Typed consumer
    No consumer decision
    Permission boundary
    No grant
  2. A type-aware contract was applied

    The CNAME chain reaches the A RRset at notes. Terminal addresses and alias owners are recorded separately; adding A at a CNAME owner does not resolve a conflict.

    Record inventory
    docs → edge → notes
    Typed consumer
    Terminal A: .200,.201
    Permission boundary
    No grant
  3. An unsupported permission conclusion was stopped

    DNS records provide consumer-specific direction. NS indicates naming authority, PTR a reverse pointer and TXT consumer-specific text; none alone establishes application permission.

    Record inventory
    docs → edge → notes
    Typed consumer
    Terminal A: .200,.201
    Permission boundary
    Name-valued record ≠ grant
  4. Reverse scope stayed separate

    The separate PTR example links owner 200.100.51.198.in-addr.arpa. to notes.example.org. That reverse pointer is not a step in docs→edge→notes. Forward and reverse management scopes need not match, and PTR does not validate service identity.

    Record inventory
    docs → edge → notes
    Typed consumer
    Terminal A: .200,.201
    Permission boundary
    Name-valued record ≠ grant
  5. The chain-termination condition was retained

    The selected normal chain reaches two A addresses at notes. The separate docs→edge→docs loopVariant stops without a terminal address. Keep the outcomes distinct: this normal case has no repeated owner, and its addresses grant no resource access.

    Record inventory
    docs → edge → notes
    Typed consumer
    Terminal A: .200,.201
    Permission boundary
    Name-valued record ≠ grant
  6. The control finished at the correct layer

    Record type and terminal scope are interpreted correctly; the application separately checks intended name, TLS identity and resource policy. DNS indirection is not carried as an access token.

    Record inventory
    docs → edge → notes
    Typed consumer
    Terminal A: .200,.201
    Permission boundary
    Terminal A available; resource rights separate

MX consumer

  1. Record type selects interpretation

    MX preference 10/mail1 and 20/mail2 belong to mail routing. Their name-valued RDATA does not make them CNAME records.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    No consumer decision
    Permission boundary
    No grant
  2. A type-aware contract was applied

    Lower preference is preferred: mxPriority orders mail1 then mail2. This selection does not establish successful mail delivery or a web endpoint IP.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    mail1 first / delivery unknown
    Permission boundary
    No grant
  3. An unsupported permission conclusion was stopped

    DNS records provide consumer-specific direction. NS indicates naming authority, PTR a reverse pointer and TXT consumer-specific text; none alone establishes application permission.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    mail1 first / delivery unknown
    Permission boundary
    Name-valued record ≠ grant
  4. MX targets have direct address records

    mail1.example.org. and mail2.example.org. have direct A records and neither is a CNAME owner. The MX exchange field is a mail-consumer target. A PTR reverse pointer or web alias chain does not replace this MX selection.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    mail1 first / delivery unknown
    Permission boundary
    Name-valued record ≠ grant
  5. Preference is not a delivery guarantee

    mail1 has preference 10 and mail2 preference 20; the consumer prefers the lower value first. This ordering establishes neither a successful SMTP connection nor delivered mail. Target selection and actual delivery remain separate.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    mail1 first / delivery unknown
    Permission boundary
    Name-valued record ≠ grant
  6. The control finished at the correct layer

    Type-aware MX interpretation explains preference for mail1; it is neither CNAME resolution nor a web-resource grant. Mail delivery needs separate SMTP-layer results. Do not merge a correct preference order with unobserved delivery.

    Record inventory
    MX 10/mail1,20/mail2
    Typed consumer
    mail1 first / delivery unknown
    Permission boundary
    mail1 preferred; delivery unknown

ASSUMPTION · BOUNDARY · CONTROL

Broken assumption: an alias grants access rights

An alias links names without conveying user or tenant rights to a target resource. A TXT string likewise does not prove correct consumer/policy processing; a security conclusion needs evidence beyond the record.

Require naming indirection to agree with intended service identity and lifecycle scope during review. Explain unsupported assumptions in the inert table without takeover or external-target validation workflows.

Broken assumption: every name-valued record is an alias

CNAME, NS, MX and PTR can all contain names but do not trigger identical resolution actions. PTR is a pointer, MX a mail-routing preference and NS a naming-authority role. A consumer following all of them as CNAME loses type semantics.

The necessary condition is type-aware processing: NS/MX targets need direct address data and MX preference follows lower-is-preferred. Scope the impact of a wrong interpretation to its required data/control conditions without reproduction on real mail or DNS services.

Broken assumption: every chain yields an address

Missing target, missing requested address type and a loop are different conditions. Adding A beside an alias is not a standard fallback for a CNAME conflict. Table review must inspect owner records and the alias path together.

Fixture loop detection is local cycle reasoning on known finite data. It is not resolver fingerprinting or domain discovery. Actual error reporting depends on implementation and complete response context.

3. Blue · Secure development & defense

Read every scenario without motion

RRset review

  1. Owner and type were selected together

    The alias query requests A/IN for docs.example.org. A separate AAAA query for notes.example.org. expects 2001:db8:2::20. A and AAAA are different address-family results and are not substituted.

    Question evidence
    docs / A / IN
    Chain review
    Path unread
    Lifecycle review
    No conclusion
  2. Path records were read one by one

    expectedPath docs→edge→notes and expectedAddresses [.200, .201] are read together. Alias steps and the terminal RRset are separate evidence pieces.

    Question evidence
    docs / A / IN
    Chain review
    docs → edge → notes
    Lifecycle review
    No conclusion
  3. Termination evidence was evaluated

    The notes A RRset contains two addresses; their order does not establish a preferred service or actual connection result.

    Question evidence
    docs / A / IN
    Chain review
    Terminal RRset: two A
    Lifecycle review
    No conclusion
  4. Scope changes were recorded

    Forward records and a separate reverse PTR illustration do not form one deployable zone file. Owner/class/type/TTL/RDATA grouping retains those management boundaries.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Terminal RRset: two A
    Lifecycle review
    No conclusion
  5. Valid and negative controls stay together

    The normal docs chain gives terminal A, the loop gives a cycle and notes AAAA gives another family. Review must not pass by closing the valid path.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Terminal RRset: two A
    Lifecycle review
    Valid A + AAAA + cycle controls
  6. Uncovered outcomes remain explicit

    The inventory supports record and chain semantics only. Provider change, cache provenance, mail delivery and browser TLS acceptance are not observed; actual service outcome remains UNKNOWN.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Terminal RRset: two A
    Lifecycle review
    Record scope explicit; service unknown

Cycle review

  1. Owner and type were selected together

    The alias query requests A/IN for docs.example.org. A separate AAAA query for notes.example.org. expects 2001:db8:2::20. A and AAAA are different address-family results and are not substituted.

    Question evidence
    docs / A / IN
    Chain review
    Path unread
    Lifecycle review
    No conclusion
  2. Path records were read one by one

    loopVariant records supply docs→edge→docs; deliberatelyInvalid=true belongs only to this finite supplied table.

    Question evidence
    docs / A / IN
    Chain review
    docs → edge → docs
    Lifecycle review
    No conclusion
  3. Termination evidence was evaluated

    docs is seen a second time, with no terminal address. expectedClassification=cycle-no-terminal-address is not a measured timeout or actual DNS error.

    Question evidence
    docs / A / IN
    Chain review
    Cycle / no terminal
    Lifecycle review
    No conclusion
  4. Scope changes were recorded

    Forward records and a separate reverse PTR illustration do not form one deployable zone file. Owner/class/type/TTL/RDATA grouping retains those management boundaries.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Cycle / no terminal
    Lifecycle review
    No conclusion
  5. Valid and negative controls stay together

    The normal docs chain gives terminal A, the loop gives a cycle and notes AAAA gives another family. Review must not pass by closing the valid path.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Cycle / no terminal
    Lifecycle review
    Valid A + AAAA + cycle controls
  6. Uncovered outcomes remain explicit

    The inventory supports record and chain semantics only. Provider change, cache provenance, mail delivery and browser TLS acceptance are not observed; actual service outcome remains UNKNOWN.

    Question evidence
    Forward zone / reverse separate
    Chain review
    Cycle / no terminal
    Lifecycle review
    Record scope explicit; service unknown

IMPLEMENTATION · SECURITY CONTROL · VERIFICATION

Record inventory needs type and scope

Store owner/class/type/TTL/RDATA with authority scope. Keeping alias and terminal address RRsets separate reveals the chain’s names. The PTR reverse zone need not be managed by the same party as forward example.org.

This teaching artifact combines forward-zone rows with a separate reverse-zone illustration; it is not one deployable zone file. Do not force provider exports into its custom fields. Current answers, cache provenance and change times are separate observations.

Valid baselines and conflict/loop checks

The normal docs→edge→notes path reaches the terminal A RRset; an AAAA question has a separate family result. The MX case prioritizes mail1 at preference 10. NS/MX targets are not alias owners. Local grouping checks are not resolver-availability tests.

The negative loop stops without a terminal address. The standard conflict check flags CNAME alongside ordinary data at one owner. DNSSEC/provider extensions are explicitly omitted, so the checker does not judge them.

Change review: consumers and lifecycle

Review an alias change alongside terminal data, intended consumer name, TLS/application identity and cache/delegation lifecycle. MX/TXT/NS changes should not be assumed to perform the same job as a web-address change.

Read record semantics together with which owner supplied each value along the chain. This artifact uses synthetic records rather than DNS-server, mail-delivery or provider-control-panel outcomes. Correctly reading the example does not establish the same response in a real environment.

NOW APPLY IT TO THE CASE

Which decisions are not shared by the name-valued CNAME, MX and PTR records?

docs points through edge to notes and reaches its A RRset. MX records instead prioritize mail1 and mail2. Reverse PTR belongs to a separate scope; the cycle between docs and edge produces no terminal address.

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

Typed RR table and alias graph

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

Read the raw artifact and field explanations
{
  "scope": "Original forward example.org illustration plus separately scoped reverse PTR; not a deployable zone or actual DNS answers.",
  "records": [
    {
      "owner": "example.org.",
      "class": "IN",
      "type": "NS",
      "ttl": 300,
      "rdata": "ns1.example.org."
    },
    {
      "owner": "example.org.",
      "class": "IN",
      "type": "MX",
      "ttl": 300,
      "rdata": {
        "preference": 10,
        "exchange": "mail1.example.org."
      }
    },
    {
      "owner": "example.org.",
      "class": "IN",
      "type": "MX",
      "ttl": 300,
      "rdata": {
        "preference": 20,
        "exchange": "mail2.example.org."
      }
    },
    {
      "owner": "example.org.",
      "class": "IN",
      "type": "TXT",
      "ttl": 300,
      "rdata": [
        "course=atlas",
        "purpose=synthetic"
      ]
    },
    {
      "owner": "docs.example.org.",
      "class": "IN",
      "type": "CNAME",
      "ttl": 120,
      "rdata": "edge.example.org."
    },
    {
      "owner": "edge.example.org.",
      "class": "IN",
      "type": "CNAME",
      "ttl": 120,
      "rdata": "notes.example.org."
    },
    {
      "owner": "notes.example.org.",
      "class": "IN",
      "type": "A",
      "ttl": 120,
      "rdata": "198.51.100.200"
    },
    {
      "owner": "notes.example.org.",
      "class": "IN",
      "type": "A",
      "ttl": 120,
      "rdata": "198.51.100.201"
    },
    {
      "owner": "notes.example.org.",
      "class": "IN",
      "type": "AAAA",
      "ttl": 120,
      "rdata": "2001:db8:2::20"
    },
    {
      "owner": "ns1.example.org.",
      "class": "IN",
      "type": "A",
      "ttl": 300,
      "rdata": "192.0.2.53"
    },
    {
      "owner": "mail1.example.org.",
      "class": "IN",
      "type": "A",
      "ttl": 300,
      "rdata": "192.0.2.25"
    },
    {
      "owner": "mail2.example.org.",
      "class": "IN",
      "type": "A",
      "ttl": 300,
      "rdata": "192.0.2.26"
    },
    {
      "owner": "200.100.51.198.in-addr.arpa.",
      "class": "IN",
      "type": "PTR",
      "ttl": 300,
      "rdata": "notes.example.org."
    }
  ],
  "aliasQuery": {
    "name": "docs.example.org.",
    "type": "A",
    "class": "IN",
    "expectedPath": [
      "docs.example.org.",
      "edge.example.org.",
      "notes.example.org."
    ],
    "expectedAddresses": [
      "198.51.100.200",
      "198.51.100.201"
    ]
  },
  "aaaaQuery": {
    "name": "notes.example.org.",
    "type": "AAAA",
    "class": "IN",
    "expectedAddresses": [
      "2001:db8:2::20"
    ]
  },
  "mxPriority": [
    "mail1.example.org.",
    "mail2.example.org."
  ],
  "loopVariant": {
    "deliberatelyInvalid": true,
    "records": [
      {
        "owner": "docs.example.org.",
        "type": "CNAME",
        "rdata": "edge.example.org."
      },
      {
        "owner": "edge.example.org.",
        "type": "CNAME",
        "rdata": "docs.example.org."
      }
    ],
    "expectedClassification": "cycle-no-terminal-address"
  },
  "soaSummary": {
    "owner": "example.org.",
    "mname": "ns1.example.org.",
    "rname": "hostmaster.example.org.",
    "serial": 2026100801,
    "refresh": 3600,
    "retry": 600,
    "expire": 86400,
    "minimum": 60,
    "ttl": 300
  }
}
records.owner / type / class
Keys for RRset grouping and type-specific interpretation.
records.rdata
Address, name, preference/exchange or text list depending on type.
aliasQuery.expectedPath
Terminal owner reached after two CNAME indirections.
loopVariant
Deliberately invalid inert data, not submitted to a live resolver.
soaSummary.minimum
RFC2308 negative-cache semantics, not a zone-wide lower TTL bound.

Inert partial inventory plus separate reverse PTR. No DNSSEC metadata, provider ALIAS/flattening, actual answers, wildcards, full master-file syntax, transport, mail delivery or HTTP redirects.

Two reality checks

A CNAME is an HTTP redirect.

CNAME is DNS name indirection without HTTP status/Location or URL-path data.

An AAAA query must use an IPv6 network.

DNS transport family is independent of the record family; AAAA can be queried over IPv4.

YOUR TURN

Work through this story.

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

An A query for docs.example.org follows two CNAMEs. Does the browser URL automatically become notes.example.org?

  1. No; address resolution is not a URL-changing redirect.
  2. Yes; every CNAME changes browser location.
Read the explained answer

No; address resolution is not a URL-changing redirect. — The alias path reaches the terminal A RRset; browser URL/HTTP Host/service identity remain a separate context.

What ordering do MX preferences 10 and 20 define?

Selected lesson artifact fields; teaching example

records[1]
{"owner":"example.org.","class":"IN","type":"MX","ttl":300,"rdata":{"preference":10,"exchange":"mail1.example.org."}}
records[2]
{"owner":"example.org.","class":"IN","type":"MX","ttl":300,"rdata":{"preference":20,"exchange":"mail2.example.org."}}
mxPriority
["mail1.example.org.","mail2.example.org."]
  1. mail1 is preferred first; actual delivery is not measured.
  2. mail2 definitely receives delivery because 20 is larger.
Read the explained answer

mail1 is preferred first; actual delivery is not measured. — 10 is the lower preference. Mail-exchanger selection does not prove successful SMTP delivery.

Explain the docs→edge→docs loop variant and why it supplies no terminal address result.

Read the explained answer

CNAME traversal goes from docs to edge and back to docs. This deliberately-invalid fixture never reaches a terminal A/AAAA record and is classified cycle-no-terminal-address. It does not observe a real resolver’s exact error response or HTTP behavior.

□ I distinguished a cycle from a terminal address.

□ I did not invent a real resolver error output.

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

Sources and scope