A canonical name is a term used in computer networking to identify a computer's actual name within the Internet naming system. It is most often used in reference to a resource record in the domain name system (DNS), which is responsible for translating obscure Internet protocol (IP) addresses into more recognizable names. In this case, the resource record in the DNS is called CNAME and allows for another name, or alias, to point to the real name of the computer.
When a computer is looking for a website, for example, it checks the name typed into the web browser against special servers that host the DNS records. If the name being looked up in the DNS records is specified in a CNAME record, it receives the canonical name, and then performs a second lookup against the canonical name to resolve the IP address of the host computer. A fairly common example is when a single computer is hosting multiple services, such as a website and a file transfer protocol (FTP) service for transferring data.
In a web browser, a user may type in www.example.com. During the DNS lookup, it encounters the canonical name in a CNAME record that points to a server named foo.example.com. Another user may then be using an FTP client and typing in the address of the FTP server at ftp.example.com. The DNS lookup encounters another CNAME entry that also points to foo.example.com, the exact same host machine that is being used for the website. In this case, though, two different names were given to the DNS, which led to the canonical name of the server.
In either of the above cases, the DNS then performs a second lookup for the canonical name to resolve its IP address on the network. The IP address is then sent back to the computer making the web or FTP request so that the data packets may start flowing. Of course, this opens up several possibilities for network administrators to use the DNS CNAME records in other ways. Another common technique used by website hosting services allows for a single host computer to run several web servers, each with a different name.
Due to the delicate nature of the DNS, however, there are a number of dangers to implementing canonical names with CNAME records, and so there are restrictions to its use. The most dangerous is the potential for creating an infinite loop during a name's lookup, and so no CNAME record should point to another CNAME record. If, for example, two CNAME records are used, where www.example.com points to the canonical name foo.example.com and then foo.example.com points back to www.example.com, the lookup will endlessly check one name against the other.