- The "name"; this is a variable-length domain label (and is often times compressed)
- Type, a 16-bit big endian value, which is whether it is a "A" record, a "NS" record, a "MX" record or whatever
- Class, a 16-bit big-endian value which is no longer used and must be 1 on the modern internet
- TTL, how long we want to remember this record, which is a 32-bit big-endian number
- rdlength, which tells us how long the actual DNS record is
- The actual DNS record
- How far from the beginning of the string the name part of the given record is
- How from from the beginning of the string the "type" part of the given record is
OK, design is done. Time to start coding again.