-- MikeGore - 11 Oct 2005

Host Naming Rules and RFC Documents

For the CSCF specific guildlines see https://cs.uwaterloo.ca/cscf/decisions/DNS_names



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.


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/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


http://www.faqs.org/rfcs/rfc1123.html 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>]






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 )



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
Topic revision: r6 - 2018-06-08 - DaveGawley
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback