Protocol and Format

DNS Messages

The DNS protocol uses a common message format for all exchanges between client and server or between servers. The DNS messages are encapsulated over UDP or TCP using the "well-known port number" 53. DNS uses UDP for message smaller than 512 bytes (common requests and responses). DNS uses TCP for bigger exchange (i.e. zone transfer).

DNS Message

IdentificationControl
Question countAnswer count
Authority countAdditional count
Question
...
Answer
...
Authority
...
Additional
...

The first 6 fields are 16-bits long, other fields are variable length. Maximum size for a DNS label is 64 Bytes, for a DNS name 255 bytes, for a DNS RDATA value 65535 bytes

Depending of the request, the 4 sections contain various RR, some required, some optional...

For an iterative response (RD=0 or RA=0),

For a positive recursive response (RD=RA=1, Rcode=NOERROR, Response-Count>0),

For a negative recursive response (RD=RA=1, NXDOMAIN or NO DATA),

(cf chapter DNS traces using dig for examples)