What is the difference and relation between Host Name and Canonical Name?

What is Canonical Name in relation to Host Name, Domain Name? Are they all pointing to the same IP?


Solution 1:

In DNS, a hostname is a domain name that identifies a host computer (e.g. foo.example.com). The term hostname is also used to mean the name used for a computer without the domain suffix (foo).

Note that the above usage, as used by DNS administrators, is slightly different from more causal usage where example.com would be considered a domain but many people don't realise a fully qualified hostname is also technically a domain name (see RFCs).

In DNS there are many types of records:

  • "A" records associate a domain name with an address
  • "CNAME" records associate an alias (extra) domain name with a canonical domain name
    • multiple CNAME records can be used to associate several aliases with a single canonical domain name
  • "PTR" records are normally used to associate an IP-address with a canonical domain name.
  • etc

"Canonical" means "unique distinguished exemplar". A computer may have many aliases but should only have one canonical name.


From RFC1035

CNAME A <domain-name> which specifies the canonical or primary name for the owner. The owner name is an alias.


From RFC1034

Most of these systems have a notion that one of the equivalent set of names is the canonical or primary name and all others are aliases.

Solution 2:

The host name is the real name the server has. A canonical name is a name that the host is known by, but that the host is not actually called.

A machine's host name could be "barkley.example.com", but because it runs the web and FTP services for the domain "example.com", it could have canonical names of "www.example.com" and "ftp.example.com".