Domain Name System based on RFC1034 RFC1035 CommonConfigurations ------------------------------------------------------------------ | LocalHost | Foreign | | | | | +---------+ +----------+ | +--------+ | | | | user queries | |queries | | | | | | User |-------------->| |---------|->| | | | | Program | | Resolver | | | Name | | | | |<--------------| |<--------|--| Server | | | | | user responses| |responses| | | | | +---------+ +----------+ | +--------+ | | | A | | | cache additions | | references | | | V | | | | +----------+ | | | | Cache | | | | +----------+ | | ------------------------------------------------------------------ UserProgram queries and responses format is specific to LocalHost and OS LocalHost implements Resolver as a subroutine to be linked in with every program that needs its services NameServer either a stand alone program on dedicated machine process or processes on large timeshared Host ------------------------------------------------------------------ | Local Host | Foreign | | | | | +---------+ +----------+ | +--------+ | | | | | |responses| | | | | | | | Name |---------|->| | | | | Master |-------------->| Server | | |Resolver| | | | Files | | |<--------|--| | | | | | | | queries | +--------+ | | +---------+ +----------+ | | ------------------------------------------------------------------ ------------------------------------------------------------------ | Local Host | Foreign | | | | | +---------+ +----------+ | +--------+ | | | | | |responses| | | | | | | | Name |---------|->| | | | | Master |-------------->| Server | | |Resolver| | | | Files | | |<--------|--| | | | | | | | queries | +--------+ | | +---------+ +----------+ | | | A |maintenance | +--------+ | | | +------------|->| | | | | queries | | Name | | | | | | Server | | | +------------------|--| | | | maintenance responses | +--------+ | ------------------------------------------------------------------ NameServer makes connection periodically to foreign NameServer using VirtualCircuit checks current copy of zone has not changed gets copy of zone using ZoneTransfer -----------------------------------------------------------------| | Local Host | Foreign | | | | | +---------+ +----------+ | +--------+ | | | | user queries | |queries | | | | | | User |-------------->| |---------|->| | | | | Program | | Resolver | | | Name | | | | |<--------------| |<--------|--| Server | | | | | user responses| |responses| | | | | +---------+ +----------+ | +--------+ | | | A | | | cache additions | | references | | | V | | | | +----------+ | | | | Shared | | | | | Database | | | | +----------+ | | | A | | | | refreshes | | references | | | | V | | | +---------+ +----------+ | +--------+ | | | | | |responses| | | | | | | | Name |---------|->| | | | | Master |-------------->| Server | | |Resolver| | | | Files | | |<--------|--| | | | | | | | queries | +--------+ | | +---------+ +----------+ | | | A |maintenance | +--------+ | | | +------------|->| | | | | queries | | Name | | | | | | Server | | | +------------------|--| | | | maintenance responses | +--------+ | ------------------------------------------------------------------ SharedDatabase has part of DomainNameSpace tree authoritative data maintained by periodic refresh operations of NameServer cached data from Resolver requests format is up to the implementor ------------------------------------------------------------------ | Local Hosts | Foreign | | | | | +---------+ | | | | | responses | | | | Stub |<--------------------+ | | | | Resolver| | | | | | |----------------+ | | | | +---------+ recursive | | | | | queries | | | | | V | | | | +---------+ recursive +----------+ | +--------+ | | | | queries | |queries | | | | | | Stub |-------------->| Recursive|---------|->| | | | | Resolver| | Server | | | Name | | | | |<--------------| |<--------|--| Server | | | +---------+ responses | |responses| | | | | +----------+ | +--------+ | | | Central | | | | | Cache | | | | +----------+ | | ------------------------------------------------------------------ group of Hosts may offload other Hosts that do not implement full Resolver replace Resolvers with StubResolvers share small number of caches while CentralCache has higher hit ratio UserProgram ask Resolver about DomainName using Query Resolver responds to Query of UserProgram after reading cache data or asking NameServer knows at least one NameServer discovers NameServers after receiving Response from NameServer referring to other NameServer NameServer responds to Query of Resolver using either zone data cached data zone data has a part of DomainNameSpace tree is authoritative updated by NameServer using MasterFile stored locally in another NameServer cached data improves performance of data retrieval process acquired by local Resolver may be incomplete periodically discarded using timeout mechanism if is unable to load zone data from MasterFile due to errors or refresh zone data using expiration parameter then NameServer should respond as if it did not possess that zone data DomainNameSpace a tree data structure nodes are <label> of DomainNames different parts of tree are stored in different NameServers example -------------------------------------------------------------- | | | | | | +---------------------+------------------+ | | | | | | | MIL EDU ARPA | | | | | | | | | | | | +-----+-----+ | +------+-----+-----+ | | | | | | | | | | | BRL NOSC DARPA | IN-ADDR SRI-NIC ACC | | | | | +--------+------------------+---------------+--------+ | | | | | | | | | UCI MIT | UDEL YALE | | | ISI | | | | | | +---+---+ | | | | | | | | LCS ACHILLES +--+-----+-----+--------+ | | | | | | | | | | XX A C VAXA VENERA Mockapetris | | | -------------------------------------------------------------- the top <label> is Root is empty one DomainName inside is LCS.MIT.EDU. DomainName syntax <domain> ::= <subdomain> | " " <subdomain> ::= <label> | <subdomain> "." <label> <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> <let-dig-hyp> ::= <let-dig> | "-" <let-dig> ::= <letter> | <digit> <letter> ::= any character A to Z and a to z <digit> ::= any digit 0 to 9 rules are not obligatory use to avoid problems if old software is converted to use DomainName two <domain> with same spelling but different case are treated identical <label> follows rules for ARPANET HostName length < 64 characters starts with letter interior with letters digits hyphen ends with letter digit future additions may use more characters binary octets examples for Hosts in Internet A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA avoid storing in 7-bit ASCII using special bytes to terminate labels original case should be preserved on databases if x.y and X.Y need to be stored then only one casing is stored data for a.x and B.X is not stored under A.x, A.X, b.x, b.X preserve case of first label of DomainName HostName name of computer inside network if HostName is myComputer4 and DomainName is ISI.EDU and ISI.EDU refers to the Gateway of a network and myComputer4 refers to my computer inside that network then myComputer4.ISI.EDU could be the DomainName of my computer if creating HostName then follow rules of HOSTS.TXT Gateway a device on a network sends local network traffic to other networks BitDiagrams data order of transmission is the order read in English left most bit is most significant bit example 0 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 1 | 2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 3 | 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 5 | 6 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ example representing value 170 in decimal 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1 0 1 0 1 0 1 0| +-+-+-+-+-+-+-+-+ Message +---------------------+ | Header | +---------------------+ | Question | the question for NameServer +---------------------+ | Answer | RRs answering the question +---------------------+ | Authority | RRs pointing toward an authority +---------------------+ | Additional | RRs holding additional information +---------------------+ Header is always present 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ID | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |QR| Opcode |AA|TC|RD|RA| Z | RCODE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QDCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ANCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | NSCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ARCOUNT | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ ID identifier assigned by creator of Query is copied into Response QR 0 = this Message is Query 1 = this Message is Response OPCODE assigned by creator of Query is copied into Response 0 = this Message is a Query QUERY 1 = this Message is a InverseQuery IQUERY 2 = this Message is server status request STATUS 3-15 = reserved for future use AA Authoritative Answer valid in Response 1 = responding NameServer is authority for DomainName in Question authority for DomainName which matches Query DomainName in Answer first owner DomainName in Answer TC Truncation 1 = this Message length was greater than permitted on transmission channel truncated if truncating Response then truncation should start at the end of Response and work forward in datagram if Authority has RR then Answer RR are unique RD Recursion Desired is copied into Response recursive Query support is optional 1 = may make NameServer receiving this Query pursue this Query recursively 0 = makes NameServer receiving this Query not pursue this Query recursively RA Recursion Available set or cleared in Response by NameServer 1 = NameServer supports recursive Query Z Reserved for future use = 0 in all Query and Response RCODE Response code set in Response 0 = no error condition 1 = format error NameServer was unable to interpret Query 2 = Server failure NameServer was unable to process Query due to problem with the server 3 = Name Error (NE) DomainMame in Query does not exist meaningful only for responses from authoritative NameServer 4 = Not Implemented NameServer does not support requested kind of Query 5 = Refused NameServer refuses to perform operation for policy reasons example NameServer refuses to provide information to requester perform operation for particular data perform zone transfer 6-15 = Reserved for future use QDCOUNT unsigned integer number of Entrie in Question ANCOUNT unsigned integer number of RR in Answer NSCOUNT unsigned integer number of NameServer RR in Authority ARCOUNT unsigned integer number of RR in Additional Question sequence of Entrie Entrie 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / QNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QTYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | QCLASS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ QNAME <domain-name> has no padding QTYPE type of Query all TYPEs are valid QTYPEs values 252 AXFR request for transfer of an entire zone 253 MAILB request for mailbox related records (MB, MG or MR) 254 MAILA request for mail agent RRs (Obsolete - see MX) 255 * request for all records length = 2 octet QCLASS class of Query every CLASS is a valid QCLASS values 255 * any class length = 2 octet if receive QCLASS=* or other QCLASS that matches multiple classes and server can't guarantee Response covers all those classes then Response should not be authoritative Answer sequence of RR answering Question Authority sequence of RR pointing toward authoritative NameServer Additional sequence of RR which relate to Query are not answers to Question if composing Response and RRs in Additional are duplicates of RRs in Answer or Authority then those duplicate RRs may be omitted RR Resource Record 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | | / / / NAME / | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | CLASS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | TTL | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | RDLENGTH | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--| / RDATA / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ NAME name of node to which this RR pertains TYPE are a subset of QTYPEs values 1 A HostAddress 2 NS authoritative NameServer 3 MD mail destination (Obsolete, use MX) 4 MF mail forwarder (Obsolete, use MX) 5 CNAME canonical name for an alias 6 SOA marks the start of a zone of authority 7 MB mailbox DomainName (EXPERIMENTAL) 8 MG mail group member (EXPERIMENTAL) 9 MR mail rename DomainName (EXPERIMENTAL) 10 NULL null RR (EXPERIMENTAL) 11 WKS well known service description 12 PTR DomainName pointer 13 HINFO Host information 14 MINFO mailbox or mail list information 15 MX mail exchange 16 TXT text strings length = 2 octets CLASS values 1 IN the Internet 2 CS the CSNET class (Obsolete) 3 CH the CHAOS class 4 HS Hesiod [Dyer 87] length = 2 octets may not indicate protocol family used to communicate with Host example Hosts that are NameServers for IN or HS may be queried using IN protocols TTL seconds this RR may be cached before source information is consulted again unsigned integer < 2^31 = 0 if TYPE = SOA length = 32 bit if = 0 then this RR should not be cached used for transaction in progress extremely volatile data if RR is sent in Response then TTL of RR in zone data is set to maximum between TTL of that RR MINIMUM of that RR RDLENGTH octet length of RDATA unsigned integer length = 16bit RDATA string describing resource format depends on TYPE and CLASS example if TYPE=A and CLASS=IN then RDATA has 4 octet ARPA InternetAddress DomainNames may be compressed CNAME Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / CNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ <domain-name> canonical or primary name for owner owner name is an alias causes no additional section processing NameServer may restart Query at the canonical name more details in RFC1034 NameServer logic HINFO Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / CPU / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / OS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ CPU <character-string> central processing unit type standard values in RFC1010 OS <character-string> operating system type standard values in RFC1010 used to acquire general information about Host by FTP if talking between machines or operating systems of same type MB Standard RR (EXPERIMENTAL) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MADNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ MADNAME <domain-name> of Host that has mailbox causes lookup for A type RRs corresponding to MADNAME (Obsolete) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MADNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ MADNAME <domain-name> of Host that has mail agent that delivers mail for domain causes lookup for A type RRs corresponding to MADNAME more details in MX and RFC974 if found in MasterFiles then should reject MB convert to MX 0 MF Standard RR (Obsolete) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MADNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ MADNAME <domain-name> of Host that has mail agent that forwards mail to domain causes lookup for A type record corresponding to MADNAME more details in MX and RFC974 if found in MasterFiles then should reject MB convert to MX 10 MG Standard RR (EXPERIMENTAL) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MGMNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ MGMNAME <domain-name> of mailbox member of mail group of this DomainName causes no additional section processing MINFO Standard RR (EXPERIMENTAL) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / RMAILBX / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / EMAILBX / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ RMAILBX <domain-name> of mailbox person responsible for mailing list or mailbox used for requests to be added to a mail group if RMAILBX = Root then owner of MINFO is responsible for itself EMAILBX <domain-name> of mailbox receives error messages of mailing list or mailbox specified by owner of MINFO if EMAILBX = Root then errors should be returned to sender causes no additional section processing may be associated with simple mailbox used with mailing list MR Standard RR (EXPERIMENTAL) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / NEWNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ NEWNAME <domain-name> has new name of mailbox causes no additional section processing use for forwarding entry for user who has moved to different mailbox MX Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PREFERENCE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / EXCHANGE / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ PREFERENCE 16bit integer preference given to this RR among others at the same owner lower values are preferred EXCHANGE <domain-name> of Host acting as mail exchange for the owner name causes type A additional section processing for the Host specified by EXCHANGE more detail in RFC974 NULL Standard RR (EXPERIMENTAL) +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / <anything> / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ has any data length < 65536 octets causes no additional section processing not allowed in MasterFiles used as placeholders in experimental extensions of DNS NS Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / NSDNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ NSDNAME <domain-name> of Host that should be authoritative for this RR CLASS and domain have zone starting at owner name of this RR CLASS causes additional section processing to search type A record if used in referral then causes search of zone in which they reside for glue information PTR Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / PTRDNAME / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ PTRDNAME <domain-name> points to location in DomainNameSpace causes no additional section processing don't imply any special processing similar to that performed by CNAME SOA Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / RNAME / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | SERIAL | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | REFRESH | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | RETRY | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | EXPIRE | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | MINIMUM | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ MNAME <domain-name> of NameServer original or primary source of data for this zone RNAME <domain-name> of mailbox person responsible for this zone SERIAL unsigned integer version number of original copy of zone value wraps is preserved in zone transfers should be compared using sequence space arithmetic length = 32bit REFRESH seconds before zone should be refreshed length = 32bit RETRY seconds before failed refresh should be retried length = 32bit EXPIRE seconds upper limit before zone is no longer authoritative length = 32bit MINIMUM unsigned integer minimum TTL that should be exported with any RR from this zone used in all Query operations that retrieve RRs from zone length = 32bit causes no additional section processing TXT Standard RR +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / TXT-DATA / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ TXT-DATA one or more <character-string> used to hold descriptive text semantics depends on domain A specific for Internet +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ADDRESS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ ADDRESS InternetAddress length = 32bit Hosts with multiple InternetAddress have multiple A records causes no additional section processing RDATA of A line in MasterFile is an InternetAddress InternetAddress four decimal numbers separated by dots without any imbedded spaces example 10.2.0.52 192.0.5.6 WKS specific for Internet +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ADDRESS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PROTOCOL | | +--+--+--+--+--+--+--+--+ | | | / <BIT MAP> / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ ADDRESS InternetAddress length = 32bit PROTOCOL IP protocol number length = 8bit <BIT MAP> one bit per port of protocol first bit is port 0 second bit is port 1 ... etc if does not include bit for protocol of interest then that bit = 0 length = multiple of 8bits well known services supported by protocol on internet address provides availability information for servers using TCP and UDP causes no additional section processing values and mnemonics for ports and protocols are in RFC1010 if PROTOCOL = TCP (6) then 26th bit is TCP port 25 (SMTP) if this bit is set then SMTP server should be listening on TCP port 25 if this bit is not set then SMTP service is not supported on ADDRESS if server supports both TCP and UDP or has multiple InternetAddress then multiple WKS are used in MasterFiles ports and protocols are expressed using mnemonics or decimal numbers <domain-name> should follow DomainName syntax sequence of Label Label is a lengthField followed by that number of octets case-insensitive to NameServers Resolvers lengthField value < 64 octet length = 1 octet ends with Label Root lengthField = 0 length < 256 octet <character-string> has binary information one LengthOctet followed by that number of octets LengthOctet length = 1 octet length <= 256 characters includes LengthOctet compression eliminates repeated DomainNames length of compressed data is used in length calculation in Message Pointer +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | 1 1| OFFSET | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ length = 2 octet first two bits allows pointer to be distinguished from Label OFFSET offset from start of message in octets only used on DomainName if format is not CLASS specific writing it may not be supported reading it must be supported example datagram needs DomainNames F.ISI.ARPA FOO.F.ISI.ARPA ARPA Root representation +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 20 | 1 | F | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 22 | 3 | I | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 24 | S | I | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 26 | 4 | A | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 28 | R | P | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 30 | A | 0 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 40 | 3 | F | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 42 | O | O | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 44 | 1 1| 20 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 64 | 1 1| 26 | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 92 | 0 | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ F.ISI.ARPA starts at offset 20 FOO.F.ISI.ARPA starts at offset 40 offset 44 has pointer to F.ISI.ARPA ARPA is at offset 64 offset 64 has pointer to ARPA of F.ISI.ARPA Root is at offset 92 transport over UDP RFC768 use port 53 length <= 512 bytes does not count IP or UDP headers if > 512 bytes then Header TC bit is set not used for zone transfers Query may be lost retransmission strategy is required responses may be reordered by network processing in NameServer client should try other servers before retrying Query on same server retry interval should minimum 2-5 seconds TCP RFC793 use port 53 begins with lengthField lengthField length 2byte number of bytes that follow allows assembling complete message before beginning to parse it server should not block other activities waiting for TCP data support multiple connections assume client will initiate connection closing delay closing its end of connection until all outstanding client requests are satisfied allow SOA and AXFR request sequence on single TCP connection may use unilateral close or reset instead of graceful close if needs to close dormant connection then waits two minutes to close it MasterFile used to define zone lists cache contents format is a sequence of Entry Entry predominantly line oriented can use parentheses to continue list of items across line boundary text literals can have CRLF items can be separated by any combination of tabs and spaces lines <blank>[<comment>] $ORIGIN <domain-name> [<comment>] $INCLUDE <file-name> [<domain-name>] [<comment>] <domain-name><rr> [<comment>] <blank><rr> [<comment>] <comment> starts with ;(semicolon) [<comment>] means may have <comment> $ORIGIN resets current origin for relative <domain-name> to stated <domain-name> $INCLUDE inserts <file-name> into current file <domain-name> sets relative DomainName origin for <file-name> never changes relative origin of parent file <rr> represent RR if <blank><rr> then RR is owned by last stated owner if <domain-name><rr> then RR owner name is reset = [<TTL>] [<class>] <type> <RDATA> = [<class>] [<TTL>] <type> <RDATA> <class> uses standard mnemonics mnemonics are disjoint parse is unique <type> uses standard mnemonics mnemonics are disjoint parse is unique <TTL> decimal integer omitted <class> and <TTL> values are default to last explicitly stated values <domain-name> character strings labels are separated by dots arbitrary characters can be stored using quoting conventions if end in dot then is absolute DomainName and taken as complete if do not end in dot then is relative DomainName if making relative DomainName into absolute DomainName then concatenat relative part with origin part in $ORIGIN or $INCLUDE or argument to MasterFile loading routine if is relative DomainName and no origin is available then error <character-string> either - contiguous set of characters no interior spaces - string begining with " and ending with " inside "" any character can occur " must be quoted using \ (back slash) encodings of root @ denotes current origin \X X is any character other than digit(0-9) used to quote X so that its special meaning does not apply example \. can be used to place . in label \DDD D is a digit DDD is a decimal number an octet assumed to be text has no special meaning ( ) used to group data that crosses a line boundary line terminations are not recognized within parentheses ; remainder of line is ignored if used to load zone and errors are encountered then stop loading if used to load zone then all RRs should have same CLASS one SOA RR should be present at top of zone if delegations are present and glue information is required then glue information should be present zone information outside of authoritative nodes should be glue information not be result of an origin error or similar error example defines ISI.EDU zone is loaded with an origin of ISI.EDU \ character in SOA RR specifies responsible person mailbox "Action.domains@E.ISI.EDU" file --------------------------------------------------- |@ IN SOA VENERA Action\.domains ( | | 20 ; SERIAL | | 7200 ; REFRESH| | 600 ; RETRY | | 3600000; EXPIRE | | 60) ; MINIMUM| | | | NS A.ISI.EDU. | | NS VENERA | | NS VAXA | | MX 10 VENERA | | MX 20 VAXA | | | |A A 26.3.0.103 | | | |VENERA A 10.1.0.52 | | A 128.9.0.32 | | | |VAXA A 10.2.0.27 | | A 128.9.0.33 | | | | | |$INCLUDE <SUBSYS>ISI-MAILBOXES.TXT | --------------------------------------------------- <SUBSYS>ISI-MAILBOXES.TXT ----------------------------- | MOE MB A.ISI.EDU.| | LARRY MB A.ISI.EDU.| | CURLEY MB A.ISI.EDU.| | STOOGES MG MOE | | MG LARRY | | MG CURLEY | ----------------------------- NameServer does not block UDP requests while waiting for TCP data may serialize requests from single client regard identical requests from same client as duplicates should not delay requests if reloading zone from MasterFiles or adding refreshed zone into database Database may have any structure suggested DataStructure1 named "catalog" lists zones available to server a tree structure that points to places in "zones" use to find nearest ancestor of zone may have parameters to control zone refreshing activities saved across system crashes DataStructure2 named "zones" a tree structure that has RRs saved across system crashes DataStructure3 for cached data or separate caches for different classes a tree structure that has RRs saved across system crashes tree node has all ASCII characters in a single case bit mask defining characters case uses LinkedList if branching factor is small HashTable if branching factor is big if zone is refreshed then Response should not combine old-new zone data authoritative data takes precedence over cached data data errors in zone can't corrupt another zone cache corruption is discarded without corrupting zone data if sending zone via AXFR and during transfer a new zone version is created then should continue sending old version if completion is not possible then reset connection Time RRs in zones use RelativeTime refresh timers use AbsoluteTime cache data use AbsoluteTime RelativeTime is the seconds left until somethig happens AbsoluteTime is at what time will somethig happen converted to RelativeTime if placed in Response if conversion results in negative number then data is expired and ignored InverseQuery example Query maps DomainName to HostAddress InverseQuery maps HostAddress to DomainNames does not map HostAddress to HostNames useful for database management and debugging activities InvertedDatabase used by NameServer to support InverseQuery one for each zone structure according to search key future versions of DNS may support transfers of InvertedDatabase case-insensitive example get same Response for InverseQuery MX RR "Venera.isi.edu" InverseQuery MX RR "VENERA.ISI.EDU" get same Response for InverseQuery HINFO RR "IBM-PC UNIX" InverseQuery HINFO RR "IBM-pc unix" not guaranteed because NameServers may have unknown character in string in RR request Answer has one RR Question has nothing owner name is ignored TTL is ignored Response Question has zero or more DomainName all DomainNames known to NameServer Answer owner name matches RR found at the first QNAME TTL matches RR found at the first QNAME RR cannot be cached using same mechanism of Query if NameServer does not support InverseQuery then Response has "Not Implemented" error in Header example request +-----------------------------------------+ Header | OPCODE=IQUERY, ID=997 | +-----------------------------------------+ Question | <empty> | +-----------------------------------------+ Answer | <anyname> A IN 10.1.0.52 | +-----------------------------------------+ Authority | <empty> | +-----------------------------------------+ Additional | <empty> | +-----------------------------------------+ asks for Question whose Answer is Internet style address 10.1.0.52. may use Root to minimize length Response +-----------------------------------------+ Header | OPCODE=RESPONSE, ID=997 | +-----------------------------------------+ Question |QTYPE=A, QCLASS=IN, QNAME=VENERA.ISI.EDU | +-----------------------------------------+ Answer | VENERA.ISI.EDU A IN 10.1.0.52 | +-----------------------------------------+ Authority | <empty> | +-----------------------------------------+ Additional | <empty> | +-----------------------------------------+ QTYPE is equal to TYPE in Answer of request optional completion services RFC882 and RFC883 have been deleted redesigns may become available in the future Resolver is able to multiplex multiple requests steps receives Query from UserProgram use Query to create Block creates Query to send to NameServer may revise CNAME NameServer is selected from SLIST if no HostAddress available from SLIST and SLIST NameServers are used to look up their own HostAddress then search next ancestor zone or Root in SLIST if NameServer response takes too long and causes timeout then either send UserProgram a temporary error ask another NameServer NameServer response timeout should be 50-100% > average predicted value if receive some error from NameServer or NameServer has no current copy of zone then remove NameServer from SLIST ask another NameServer if receive NameServer response then check RR correct format TTL < 1 week it is not a Query if it has something wrong then discard response match it to original Query of UserProgram using ID of Header check Question has information desired watchout NameServer response may come from different HostAddress may cache response to use for other UserProgram request Block timestamp time request began used to decide if RRs in database can be used or are out of date uses AbsoluteTime format is superior to using a current time allows RR with TTL=0 to be entered in cache used by current request even after intervals of many seconds counter to limit work on single request set to some initial value if Resolver acts on request then counter is decremented if counter < 0 then request is terminated with temporary error if Resolver allows request to start other request in parallel then counter of started request < counter of parent request prevent circular references in database chain reaction of Resolver activity SLIST RFC1034 data structure keeps track of state of request to NameServers SLIST list of NS RR nearest ancestor zone Resolver knows initialize with default list of NS list filled by getting data using request get HostAddress of NameServers get reponse times of HostAddress 5-10 seconds should be worst case reinitialize if delegation cache if received Response has RRs have same type and owner name then cache all or none if received Response is truncated and resolver doesn't know the continuation then do not cache if selecting between cached data or authoritative data then select authoritative data and delete cached data if Query QNAME has "*" and received Response is used to construct wildcard then do not cache data of Response if received Response has RR data other than requested then do not cache data of Response sanity checks on packet are performed before caching it if received Response has RRs for DomainName then if cache already has RRs for DomainName then either replace old cache data with Response data leave chache as it is authoritative data in Response is preferred for caching Mail MailboxName <local-part>@<mail-domain> if creating Mail name then follow rules of RFC822 mapping MailboxName into DomainName dots or other special characters use backslash quoting examples HOSTMASTER@SRI-NIC.ARPA into HOSTMASTER.SRI-NIC.ARPA Action.domains@ISI.EDU into Action\.domains.ISI.EDU do map MailboxName to DomainName to InternetAddress do not map MailboxName to InternetAddress MailExchangeBinding RFC974 uses <mail-domain> to determine where mail should be sent as DomainName to find MX RRs uses MX RRs to list Hosts willing to accept mail for <mail-domain> rank Hosts in order prefered by administrators of <mail-domain> example start with Mockapetris@ISI.EDU <mail-domain> is ISI.EDU lookup MX RRs of ISI.EDU returns VENERA.ISI.EDU VAXA.ISI.EDU send Query with A to get HostAddress MailboxBinding experimental still under development steps mailer maps MailboxName into DomainName DomainName is the QNAME in MAILB of Query mailer sends Query may return name error if use of MailboxBinding is universal then this error means specified mailbox doesn't exist as DomainName if use of MailboxBinding is not universal then this error means organization identified by global part does not support MailboxBinding revert to MailExchangeBinding may return Mail Rename (MR) RR carring new mailbox specification in RDATA then mailer should replace old mailbox with new one and retry operation may return mailbox domain name (MB) RR DomainName for Host in RDATA then mailer should deliver message to that Host via protocol applicable, e.g., b,SMTP may return one or more Mail Group (MG) RRs meaning mailbox was actually mailing list or mail group rather than single mailbox RDATA has mailbox that is member of group mailer should deliver copy of message to each member may return (MB) RR and one or more (MG) RRs which means mailbox is a mailing list then mailer either delivers message to Host in (MB) RR then Host does delivery to all members uses (MG) RRs to do the expansion itself IN-ADDR.ARPA special DomainName in Internet used to map InternetAddress to Host DomainName find InternetAddress of Gateway returned data may be inconsistent DomainNames can have up to four Labeel in addition to IN-ADDR.ARPA suffix Labeel character string represents one octet of InternetAddress leading zeros omitted except zero octet which is one zero Labeels of InternetAddress are in reverse order example 22.0.2.10.IN-ADDR.ARPA data of InternetAddress 10.2.0.22 is at DomainName 22.0.2.10.IN-ADDR.ARPA zones are exactly one Network of address space example 10.IN-ADDR.ARPA can be zone containing data for ARPANET 26.IN-ADDR.ARPA can be zone containing data for MILNET example database 10.IN-ADDR.ARPA. PTR MILNET-GW.ISI.EDU. 10.IN-ADDR.ARPA. PTR GW.LCS.MIT.EDU. 18.IN-ADDR.ARPA. PTR GW.LCS.MIT.EDU. 26.IN-ADDR.ARPA. PTR MILNET-GW.ISI.EDU. 22.0.2.10.IN-ADDR.ARPA. PTR MILNET-GW.ISI.EDU. 103.0.0.26.IN-ADDR.ARPA. PTR MILNET-GW.ISI.EDU. 77.0.0.10.IN-ADDR.ARPA. PTR GW.LCS.MIT.EDU. 4.0.10.18.IN-ADDR.ARPA. PTR GW.LCS.MIT.EDU. 103.0.3.26.IN-ADDR.ARPA. PTR A.ISI.EDU. 6.0.0.10.IN-ADDR.ARPA. PTR MULTICS.MIT.EDU. here ISI Gateway with Network 10 has Host DomainName MILNET-GW.ISI.EDU MIT Gateway with InternetAddress 10.0.0.77 has Host DomainName GW.LCS.MIT.EDU if using database to initialize routing tables then start with enough Gateway data to access appropriate NameServer if UserProgram wants to find Gateways on Network 10 then send Query QTYPE=PTR, QCLASS=IN, QNAME=10.IN-ADDR.ARPA. receive RR 10.IN-ADDR.ARPA. PTR MILNET-GW.ISI.EDU. RR 10.IN-ADDR.ARPA. PTR GW.LCS.MIT.EDU. send Query QTYPE=A, QCLASS=IN for MILNET-GW.ISI.EDU. GW.LCS.MIT.EDU. to discover InternetAddress of Gateways if Resolver wants to find Host DomainName of InternetAddress 10.0.0.6 then send Query QTYPE=PTR, QCLASS=IN, QNAME=6.0.0.10.IN-ADDR.ARPA receive RR 6.0.0.10.IN-ADDR.ARPA. PTR MULTICS.MIT.EDU. if one Gateway has 2 DomainName then only one can be primary Gateway data doesn't replace the information from GGP or EGP Defining new TYPE, CLASS, special namespaces NAMEDROPPERS@SRI-NIC.ARPA a mailing list forum discussing general design issues new TYPE created if new information is to be added to database about existing object new data formats for new object RDATA designed to be generally applicable to all CLASS avoid duplication of information needs mnemonics for MasterFiles multiple TYPE are not stored in one RDATA of RR multiple RR TYPE should not be used to create an ordering between entries express different formats for equivalent bindings new CLASS is created if DNS is used in new protocol and requires new class-specific data formats if copy of existing DomainNameSpace is desired but separate management domain is necessary needs mnemonics for MasterFiles MasterFiles format requires disjoint mnemonics for new TYPE or CLASS SCENARIO ----------------------------------------------------------------------------- | | | | | |(C.ISI.EDU,SRI-NIC.ARPA A.ISI.EDU) | | +---------------------+------------------+ | | | | | | | MIL EDU ARPA | | |(SRI-NIC.ARPA, |(SRI-NIC.ARPA, | | | | A.ISI.EDU) | C.ISI.EDU) | | | +-----+-----+ | +------+-----+-----+ | | | | | | | | | | | BRL NOSC DARPA | IN-ADDR SRI-NIC ACC | | | | | +--------+------------------+---------------+--------+ | | | | | | | | | UCI MIT | UDEL YALE | | |(XX.LCS.MIT.EDU, ISI | | |ACHILLES.MIT.EDU) |(VAXA.ISI.EDU,VENERA.ISI.EDU,A.ISI.EDU) | | +---+---+ | | | | | | | | LCS ACHILLES +--+-----+-----+--------+ | | | | | | | | | | XX A C VAXA VENERA Mockapetris | | | ----------------------------------------------------------------------------- NameServers are in parentheses are authoritative control nodes where they are located Root NameServers are C.ISI.EDU SRI-NIC.ARPA A.ISI.EDU MIL domain is served by SRI-NIC.ARPA A.ISI.EDU EDU domain is served by SRI-NIC.ARPA C.ISI.EDU C.ISI.EDU has contiguous zones at Root and EDU A.ISI.EDU has contiguous zones at Root and MIL nocontiguous zone at ISI.EDU C.ISI.EDU NameServer for Root of CLASS IN MIL of CLASS IN EDU of CLASS IN zone data for Root ------------------------------------------------------------------ |. IN SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. (| | 870611 ;serial | | 1800 ;refresh every 30 min | | 300 ;retry every 5 min | | 604800 ;expire after a week | | 86400) ;minimum of a day | | NS A.ISI.EDU. | | NS C.ISI.EDU. | | NS SRI-NIC.ARPA. | | | |MIL. 86400 NS SRI-NIC.ARPA. | | 86400 NS A.ISI.EDU. | | | |EDU. 86400 NS SRI-NIC.ARPA. | | 86400 NS C.ISI.EDU. | | | |SRI-NIC.ARPA. A 26.0.0.73 | | A 10.0.0.51 | | MX 0 SRI-NIC.ARPA. | | HINFO DEC-2060 TOPS20 | | | |ACC.ARPA. A 26.6.0.65 | | HINFO PDP-11/70 UNIX | | MX 10 ACC.ARPA. | | | |USC-ISIC.ARPA. CNAME C.ISI.EDU. | | | |73.0.0.26.IN-ADDR.ARPA. PTR SRI-NIC.ARPA. | |65.0.6.26.IN-ADDR.ARPA. PTR ACC.ARPA. | |51.0.0.10.IN-ADDR.ARPA. PTR SRI-NIC.ARPA. | |52.0.0.10.IN-ADDR.ARPA. PTR C.ISI.EDU. | |103.0.3.26.IN-ADDR.ARPA. PTR A.ISI.EDU. | | | |A.ISI.EDU. 86400 A 26.3.0.103 | |C.ISI.EDU. 86400 A 10.0.0.52 | ------------------------------------------------------------------ as it would be in MasterFile all RR must be same CLASS only first RR needs specify CLASS loading zone applies MINIMUM=86400 in SOA to all authoritative RR NS RRs marking delegation of MIL and EDU are not authoritative data glue RRs for servers host InternetAddresses are not authoritative data data that is not authoritative has explicit TTL 4 RRs are attached to Root SOA describes Root management of zone data NS are Root NameServers maintained on host SRI-NIC.ARPA responsible party is HOSTMASTER@SRI-NIC.ARPA NS RRs for MIL EDU mark boundary between Root zone and MIL EDU zones root zone and lower zones are supported by same NameServers MasterFile for EDU zone may be stated relative to origin EDU zone data for EDU -------------------------------------------------------- |EDU. IN SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. ( | | 870729 ;serial | | 1800 ;refresh every 30 minutes| | 300 ;retry every 5 minutes | | 604800 ;expire after a week | | 86400 ;minimum of a day | | ) | | NS SRI-NIC.ARPA. | | NS C.ISI.EDU. | | | |UCI 172800 NS ICS.UCI | | 172800 NS ROME.UCI | |ICS.UCI 172800 A 192.5.19.1 | |ROME.UCI 172800 A 192.5.19.31 | |ISI 172800 NS VAXA.ISI | | 172800 NS A.ISI | | 172800 NS VENERA.ISI.EDU. | |VAXA.ISI 172800 A 10.2.0.27 | | 172800 A 128.9.0.33 | |VENERA.ISI.EDU. 172800 A 10.1.0.52 | | 172800 A 128.9.0.32 | |A.ISI 172800 A 26.3.0.103 | | | |UDEL.EDU. 172800 NS LOUIE.UDEL.EDU. | | 172800 NS UMN-REI-UC.ARPA. | |LOUIE.UDEL.EDU. 172800 A 10.0.0.96 | | 172800 A 192.5.39.3 | | | |YALE.EDU. 172800 NS YALE.ARPA. | |YALE.EDU. 172800 NS YALE-BULLDOG.ARPA. | | | |MIT.EDU. 43200 NS XX.LCS.MIT.EDU. | | 43200 NS ACHILLES.MIT.EDU. | |XX.LCS.MIT.EDU. 43200 A 10.0.0.44 | |ACHILLES.MIT.EDU. 43200 A 18.72.0.8 | -------------------------------------------------------- owner name of ISI.EDU. is using relative name ISI.EDU two RRs are using relative name relative and absolute DomainName may be intermixed Query +---------------------------------------------------+ Header | OPCODE=SQUERY | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 86400 IN A 26.0.0.73 | | 86400 IN A 10.0.0.51 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ RESPONSE bit is set AA bit is set Question of response matches Question of Query response from NameServer not authoritative for SRI-NIC.ARPA +---------------------------------------------------+ Header | OPCODE=SQUERY,RESPONSE | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 1777 IN A 10.0.0.51 | | 1777 IN A 26.0.0.73 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ AA bit is not set data did not come from zone data data did come from cache data authoritative TTLs in zone data tend to be bigger than authoritative TTLs in cache data Answer RRs ordering is not significant Query +---------------------------------------------------+ Header | OPCODE=SQUERY | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=* | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=* | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 86400 IN A 26.0.0.73 | | A 10.0.0.51 | | MX 0 SRI-NIC.ARPA. | | HINFO DEC-2060 TOPS20 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ response from NameServerA not authoritative for SRI-NIC.ARPA +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=* | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 12345 IN A 26.0.0.73 | | A 10.0.0.51 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ response from NameServerB not authoritative for SRI-NIC.ARPA +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=* | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 1290 IN HINFO DEC-2060 TOPS20 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ NameServerA and NameServerB response contents and TTLs suggest cached data at different times NameServerA cached response to QTYPE=A Query NameServerB cached response to HINFO Query Query QNAME=SRI-NIC.ARPA QTYPE=MX from mailer aking routing information for HOSTMASTER@SRI-NIC.ARPA response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=MX | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 86400 IN MX 0 SRI-NIC.ARPA.| +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | SRI-NIC.ARPA. 86400 IN A 26.0.0.73 | | A 10.0.0.51 | +---------------------------------------------------+ Additional has A because it may be needed to properly use MX Query QNAME=SRI-NIC.ARPA QTYPE=NS response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=NS | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ only difference to Query is AA RESPONSE SRI-NIC.ARPA exists but no RRs of type NS exist Query QNAME=SIR-NIC.ARPA QTYPE=A mistyped SRI-NIC.ARPA response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA, RCODE=NE | +---------------------------------------------------+ Question | QNAME=SIR-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | . SOA SRI-NIC.ARPA. HOSTMASTER.SRI-NIC.ARPA. | | 870611 1800 300 604800 86400 | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ RCODE=NE means that SIR-NIC.ARPA does not exist SIR-NIC.ARPA will not exist for MINIMUM 86400 seconds Query QNAME=BRL.MIL QTYPE=A response from NameServer C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE | +---------------------------------------------------+ Question | QNAME=BRL.MIL, QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | MIL. 86400 IN NS SRI-NIC.ARPA. | | 86400 NS A.ISI.EDU. | +---------------------------------------------------+ Additional | A.ISI.EDU. A 26.3.0.103 | | SRI-NIC.ARPA. A 26.0.0.73 | | A 10.0.0.51 | +---------------------------------------------------+ is referral because Answer empty AA bit not set to authoritative NameServer SRI-NIC.ARPA authoritative NameServer A.ISI.EDU Query QNAME=USC-ISIC.ARPA QTYPE=A response from NameServer A.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | USC-ISIC.ARPA. 86400 IN CNAME C.ISI.EDU. | | C.ISI.EDU. 86400 IN A 10.0.0.52 | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ AA bit makes Answer CNAME data authoritative does not make Answer A data authoritative A.ISI.EDU is authoritative for ARPA where USC-ISIC.ARPA is found ISI.EDU where C.ISI.EDU data is found response from NameServer C.ISI.EDU may be equal to response from NameServer A.ISI.EDU if NameServer C.ISI.EDU has RR A in cache +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | USC-ISIC.ARPA. 86400 IN CNAME C.ISI.EDU. | +---------------------------------------------------+ Authority | ISI.EDU. 172800 IN NS VAXA.ISI.EDU. | | NS A.ISI.EDU. | | NS VENERA.ISI.EDU. | +---------------------------------------------------+ Additional | VAXA.ISI.EDU. 172800 A 10.2.0.27 | | 172800 A 128.9.0.33 | | VENERA.ISI.EDU. 172800 A 10.1.0.52 | | 172800 A 128.9.0.32 | | A.ISI.EDU. 172800 A 26.3.0.103 | +---------------------------------------------------+ is authoritative for alias USC-ISIC.ARPA Authority has ISI.EDU. because CNAME points to C.ISI.EDU. Query QNAME=USC-ISIC.ARPA QTYPE=CNAME response from NameServer A.ISI.EDU or C.ISI.EDU +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=USC-ISIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | USC-ISIC.ARPA. 86400 IN CNAME C.ISI.EDU. | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ creator may look up something for Additional Resolver just did a system boot has empty cache data the system is not one of the hosts in the data host is on net 26 has safety belt (SBELT) data match count = -1 SRI-NIC.ARPA. 26.0.0.73 10.0.0.51 A.ISI.EDU. 26.3.0.103 match count -1 means servers aren't very close to target is not accurate closeness measure receives Query from local mailer PVM@ISI.EDU asking MX for ISI.EDU searches in cache data for MX at ISI.EDU cache data is empty searches in cache data for NS with ISI.EDU EDU, Root cache data is empty copies SBELT into SLIST selects one InternetAddress of SBELT selects closest IP to net 26 either 26.0.0.73 26.3.0.103 sends Query to 26.0.0.73 +---------------------------------------------------+ Header | OPCODE=SQUERY | +---------------------------------------------------+ Question | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ waits for response timeout occurs tries different servers in SLIST tries different InternetAddresses of same servers in SLIST retries InternetAddresses in SLIST receives from SRI-NIC.ARPA +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE | +---------------------------------------------------+ Question | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX | +---------------------------------------------------+ Answer | <empty> | +---------------------------------------------------+ Authority | ISI.EDU. 172800 IN NS VAXA.ISI.EDU. | | NS A.ISI.EDU. | | NS VENERA.ISI.EDU.| +---------------------------------------------------+ Additional | VAXA.ISI.EDU. 172800 A 10.2.0.27 | | 172800 A 128.9.0.33 | | VENERA.ISI.EDU. 172800 A 10.1.0.52 | | 172800 A 128.9.0.32 | | A.ISI.EDU. 172800 A 26.3.0.103 | +---------------------------------------------------+ notice closer delegation to ISI.EDU than Resolver SLIST since it matches three labels caches received data sets up new SLIST Match count = 3 A.ISI.EDU. 26.3.0.103 VAXA.ISI.EDU. 10.2.0.27 128.9.0.33 VENERA.ISI.EDU. 10.1.0.52 128.9.0.32 Queries servers on new SLIST receives +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=ISI.EDU., QCLASS=IN, QTYPE=MX | +---------------------------------------------------+ Answer | ISI.EDU. MX 10 VENERA.ISI.EDU. | | MX 20 VAXA.ISI.EDU. | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | VAXA.ISI.EDU. 172800 A 10.2.0.27 | | 172800 A 128.9.0.33 | | VENERA.ISI.EDU. 172800 A 10.1.0.52 | | 172800 A 128.9.0.32 | +---------------------------------------------------+ caches received data sends Response to local mailer with MX now wants HostName for 26.6.0.65 searches in cache data for 26.6.0.65 fails searches in cache data for NS to ask for 26.6.0.65 fails in chache data the servers for ISI.EDU are not ancestor of 26.6.0.65 in SBELT the servers have authoritative data for 26.6.0.65 sends Query PTR 65.0.6.26.IN-ADDR.ARPA to one server in SBELT receives +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=65.0.6.26.IN-ADDR.ARPA.,QCLASS=IN,QTYPE=PTR | +---------------------------------------------------+ Answer | 65.0.6.26.IN-ADDR.ARPA. PTR ACC.ARPA. | +---------------------------------------------------+ Authority | <empty> | +---------------------------------------------------+ Additional | <empty> | +---------------------------------------------------+ now wants host InternetAddress of poneria.ISI.EDU creates Query A to poneria.ISI.EDU search in cache data for A poneria.ISI.EDU fails search in cache data for NS poneria.ISI.EDU finds NS ISI.EDU constructs SLIST Match count = 3 A.ISI.EDU. 26.3.0.103 VAXA.ISI.EDU. 10.2.0.27 128.9.0.33 VENERA.ISI.EDU. 10.1.0.52 A.ISI.EDU is first because of preference on the same net one server in SLIST would answer Query