Subject: Valid charecter set in DNS

From: "dhiraj Dhiraj" <[email-masked]>
Date: Tue, 16 Apr 2002 21:24:09 -0600

Hi all,
               I have a question regarding the valid character set in
DNS. I have seen RFC 1034, 1123, 2181. It seems RFC 2181 removes the
restrictions of RFC 1034,1123 which says that only  letters, digits, and
hyphen are allowed. I wanted to know whether this interpretation is
correct or not and if it is, then what are the applications that require
other characters? I am aware of that underscores are required bcoz of
the SRV RR. 

RFC 1034 section 3.5: The labels must follow the rules for ARPANET host
names.  They must start with a letter, end with a letter or digit, and
have as interior characters only letters, digits, and hyphen.  There are
also some restrictions on the length.  Labels must be 63 characters or
less.

<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 one of the 52 alphabetic characters A through Z
in
                  upper case and a through z in lower case
<digit>       ::= any one of the ten digits 0 through 9

RFC 1123 2.1  Host Names and Numbers:  The syntax of a legal Internet
host name was specified in RFC-952 [DNS:4].  One aspect of host name
syntax is hereby changed: the restriction on the first character is
relaxed to allow either a letter or a digit.  Host software MUST support
this more liberal  syntax. Host software MUST handle host names of up to
63 characters and SHOULD handle host names of up to 255 characters.

RFC 2181 11. Name syntax: The DNS itself places only one restriction on
the particular labels that can be used to identify resource records. 
That one restriction relates to the length of the label and the full
name.  The length of any one label is limited to between 1 and 63
octets.  A full domain name is limited to 255 octets (including the
separators).  The zero length full name is defined as representing the
root of the DNS tree, and is typically written and displayed as ".". 
Those restrictions aside, any binary string whatever can be used as the
label of any resource record.  Similarly, any binary string can serve as
the value of any record that includes a domain name as some or all of
its value (SOA, NS, MX, PTR, CNAME, and any others that may be added).
Implementations of the DNS protocols must not place any restrictions on
the labels that can be used.  In particular, DNS servers must not refuse
to serve a zone because it contains labels that might not be acceptable
to some DNS client programs.  A DNS server may be configurable to issue
warnings when loading, or even to refuse to load, a primary zone
containing labels that might be considered questionable, however this
should not happen by default.

Regards
dhiraj

---

From: "Eric A. Hall" <[email-masked]>
Date: Tue, 16 Apr 2002 23:31:11 -0500

dhiraj Dhiraj wrote:

> correct or not

The restriction has always been on the names that applications use, rather
than on the data that DNS can provide. RFC 2181 doesn't change the rules
so much as it clarifies the distinction.

> what are the applications that require other characters? I am aware of
> that underscores are required bcoz of the SRV RR.

Email addresses are often stored in DNS labels (as data to the SOA and RP
resource records), and the allowable syntax for the local-part element of
an email address is significantly greater than the allowable syntax for
hostnames.

As another example, TXT resource records do not reference hosts, and
therefore are not subject to the hostname rules. Any characters can be
provided as the owner domain name of a TXT RR and it will be fully legal.

Another situation which can result in funky names getting stored in DNS is
with NetBIOS names (specifically, those NetBIOS names which are not
encoded according to STD 19).

> names.

That is a reference to the hostname rules (RFC 952, updated by 1123).
However, it is not the only rule for data in the DNS. See RFC 1035,
section 3.1. Name space definitions:

 | Although labels can contain any 8 bit values in octets that make up a
 | label, it is strongly recommended that labels follow the preferred
 | syntax described elsewhere in this memo, which is compatible with
 | existing host naming conventions.

RFC 2181 provides the necessary additional clarification.

-- 
Eric A. Hall                                        http://www.ehsco.com/
Internet Core Protocols          http://www.oreilly.com/catalog/coreprot/