Josh Littlefield writes:
RFC1034 clearly states that the answer section "carries RRs which
directly answer the query." I don't see how anyone could conclude
that AXFR clients should look for zone RRs anywhere else.
There is overwhelming consensus that (in the absence of extended
behavior requested by the client) the AXFR _server_ must leave the
additional section and authority section empty. It must put the data
into the answer section. All existing servers work this way---and must
do so for interoperability.
There are several perfectly valid parsing strategies for the client.
In particular, my software uses the simple strategy
while there are records left
read a record
Which can only be found by adding up the three fields in
the header (number of answer records (which bind uses),
number of records in the authority section and number of
records in the additional section). You can't use the DNS
message length as too many implementations get it wrong and
leave a couple of bytes between the end of the messages as
discovered by processing the records and the end of the
data that is read. You have discovered this havn't you?
while BIND 9 uses the slightly more complicated strategy
BIND has always used the simple strategy of reading the
number from the header then processing that number of
records after skipping any questions, again read from
the header.
while there are records left in the answer section
read a record
Let me see if I have your logic right,
Simple:
Read the number of questions then skip them. Read three
numbers, add them up, then read this number of records.
Complicated:
Read the number of questions then skip them. Read one
number then read this number of records.
I think you have the labels the wrong way around.
Both strategies work, since servers put all records into the answer
section. Neither strategy creates any interoperability problems.
There is different behaviour. That is enough reason in and
of itself to clarify the issue.
I don't think anyone envisioned someone that would process
records outside of the answer section as answers.
There is certainly _not_ consensus on telling the _client_ to use the
BIND 9 strategy. Furthermore, any such statement (whether ``MUST'' or
``SHOULD'') would blatantly violate RFC 2119, section 6.
This is about the tenth time that I have had to point out the blazingly
obvious fact that constraining _server_ behavior is not the same as
constraining _client_ behavior.
--
Mark Andrews, Internet Software Consortium
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET:
Mark(_dot_)Andrews(_at_)isc(_dot_)org