Resolve compression before applying the name rule
04A DNS message can shorten a name by pointing to an earlier occurrence. A case-insensitive name match can reuse earlier label bytes whose capitalization differs from the name being written.
The pointer resolves to lab.example., which compares equal to Lab.Example. Compression has changed this output spelling, not the DNS name being looked up.
Source for this drawing: RFC 4343 · Read RFC section 4.1 ↗
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Compression can change observed output case while preserving DNS lookup equality.
- Uncompressed output does not case-fold the labels being written. The output-preservation rule is qualified when indirect labels optimize the message.
- A compression pointer refers to a name elsewhere in the same DNS message. Resolve that name, then apply the original-label comparison rules. The pointer bytes themselves are not ASCII letters to fold.
- The worked pointer c00c refers to byte offset 12. In this fixture the earlier name is lab.example.; reusing it can produce lowercase output even when the name being optimized is Lab.Example.
The fixture has a twelve-byte placeholder DNS header, not a complete real query. The bounded decoder handles ordinary labels and backward compression pointers, with local traversal limits; it is not a full DNS-message validator. Output case is not a separate identity or an authentication signal.
Read the RFC section ↗