--
MikeGore - 11 Oct 2005
Host Naming Rules and RFC Documents
For the CSCF specific guildlines see
https://cs.uwaterloo.ca/cscf/decisions/DNS_names
RFC921
http://www.faqs.org/rfcs/rfc921.html
Case is not significant.
For example: USC-ISIF is the same as USC-isif
Simple Names
Until recently, hosts in the DARPA research and DDN operational communities were assigned names in a flat or global name space of character strings. There are some limits on these names.
"They must start with a letter, end with a letter or digit and
have only letters or digits or hyphen as interior
characters."
Thr non-bold parts have been revised as of
http://www.faqs.org/rfcs/rfc1123.html
(
see below)
Hierarchical Names
Because of the growth of the Internet, structured names (or domain style names) have been introduced. Each element of the structured name will be a character string (with the same constraints that previously applied to the simple names).
The elements (or components) of the structured names are separated
with periods, and the elements are written from the most specific on the left to the most general on the right.
RFC952
http://www.faqs.org/rfcs/rfc952.html
1. A "name" (Net, Host, Gateway, or Domain name) is a text string up to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus sign (-), and period (.).
Note that periods are only allowed when they serve to delimit components of "domain style names". (See RFC-921, "Domain Name System Implementation Schedule", for background).
RFC1035 (describes DNS components, A records,CNAME,… etc)
http://www.faqs.org/rfcs/rfc1035.html
RFC1034
http://www.faqs.org/rfcs/rfc1034.html
(See notes about Labels below not containing dots)
3.1. Name space specifications and terminology
...
When a user needs to type a domain name, the length of each label is omitted and the
labels are separated by dots (".").
3.5. Preferred name syntax The following syntax will result in fewer problems with many applications that use domain names (e.g., mail, TELNET).
<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
Note that while upper and lower case letters are allowed in domain names, no significance is attached to the case. That is, two names with the same spelling but different case are to be treated as if identical.
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.
Note: the label syntax and parts not bolded in previous sentence have been updated by RFC1123
RFC1123
http://www.faqs.org/rfcs/rfc1123.html
6.1.3.5 Extensibility
The DNS defines domain name syntax very generally -- a
String of labels each containing up to 63 8-bit ctets,
separated by dots, and with a maximum total of 255
octets.
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.
So the original Lexical grammar has changed...
From RFC-952
<name> ::= <let>[*[<let-or-digit-or-hyphen>]<let-or-digit>]
or From RFC-1039
<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
To RFC-1123
<name> ::= <let-digit>[*[<let-or-digit-or-hyphen>]<let-or-digit>]
RFC2100
http://www.faqs.org/rfcs/rfc2100.html
RFC2181
http://www.faqs.org/rfcs/rfc2181.html
RFC2396
http://www.faqs.org/rfcs/rfc2396.html
(Notes: See Top Label, note: a sequence of domain labels
separated by "." )
3.2.2. Server-based Naming Authority
(deleted)
The host is a domain name of a network host, or its IPv4 address as a
set of four decimal digit groups separated by ".".
Literal IPv6 addresses are not supported.
hostport = host [ ":" port ]
host = hostname | IPv4address
hostname = *( domainlabel "." ) toplabel [ "." ]
domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
toplabel = alphanum | alphanum *( alphanum | "-" ) alphanum
IPv4address = 1*digit "." 1*digit "." 1*digit "." 1*digit
port = *digit
Hostnames take the form described in Section 3 of [RFC1034] and Section 2.1 of [RFC1123]:
a sequence of domain labels separated by ".", each domain label starting and ending with an alphanumeric character and possibly also containing "-" characters. The rightmost domain label of a fully qualified domain name will never start with a digit, thus syntactically distinguishing domain names from IPv4
Other References
BNF for specific URL schemes (Note syntax only – NOT grammar )
http://www.w3.org/Addressing/URL/5_BNF.html
WWW.ICANN.ORG
Appendix J — Character Sets Domain Name Character Sets
http://www.icann.org/tlds/org/applications/isoc/AppendixJ.html#JE2
(Notes: The "label" is the unqualified name of the host - NOTE: There is NO dot in this part)
E. Domain Name Character Set
1. Usage
This character set will be used in places where a domain name is to be specified. It does not govern the specification of internationalised domain names, which are not authorized by the current specification.
2. Definition
The rules for the format and character set of domain names are defined by the following:
dot = %x2E ; "."
alpha = %x41-5A | %x61-7A ; A-Z | a-z
digit = %x30-39 ; 0-9
dash = %x2D ; "–"
dns-char = alpha | digit | dash
id-prefix = alpha | digit
label = id-prefix [*61dns–char id–prefix]
sldn = label dot label ; not to exceed 254 characters
hostname = 1*(label dot) sldn; not to exceed 254 characters