Un nome canonico è un termine utilizzato nelle reti di computer per identificare il nome effettivo di un computer all’interno del sistema di denominazione di Internet. È più spesso usato in riferimento a un record di risorse nel sistema dei nomi di dominio (DNS), che è responsabile della traduzione di indirizzi IP (Internet Protocol) oscuri in nomi più riconoscibili. In questo caso, il record di risorse nel DNS si chiama CNAME e consente a un altro nome, o alias, di puntare al vero nome del computer.
Quando un computer cerca un sito Web, ad esempio, verifica il nome digitato nel browser Web rispetto a server speciali che ospitano i record DNS. Se il nome cercato nei record DNS è specificato in un record CNAME, riceve il nome canonico, quindi esegue una seconda ricerca sul nome canonico per risolvere l’indirizzo IP del computer host. Un esempio abbastanza comune è quando un singolo computer ospita più servizi, come un sito Web e un servizio FTP (File Transfer Protocol) per il trasferimento dei dati.
In un browser Web, un utente può digitare www.example.com. Durante la ricerca DNS, incontra il nome canonico in un record CNAME che punta a un server denominato foo.example.com. Un altro utente potrebbe quindi utilizzare un client FTP e digitare l’indirizzo del server FTP su ftp.example.com. La ricerca DNS incontra un’altra voce CNAME che punta anche a foo.example.com, lo stesso computer host utilizzato per il sito web. In questo caso, però, al DNS sono stati dati due nomi diversi, che hanno portato al nome canonico del server.
In entrambi i casi precedenti, il DNS esegue quindi una seconda ricerca del nome canonico per risolvere il suo indirizzo IP sulla rete. L’indirizzo IP viene quindi rispedito al computer che effettua la richiesta Web o FTP in modo che i pacchetti di dati possano iniziare a scorrere. Naturalmente, questo apre diverse possibilità per gli amministratori di rete di utilizzare i record DNS CNAME in altri modi. Un’altra tecnica comune utilizzata dai servizi di hosting di siti Web consente a un singolo computer host di eseguire diversi server Web, ciascuno con un nome diverso.
A causa della natura delicata del DNS, tuttavia, l’implementazione di nomi canonici con i record CNAME presenta numerosi pericoli e pertanto vi sono limitazioni al suo utilizzo. Il più pericoloso è la possibilità di creare un ciclo infinito durante la ricerca di un nome, quindi nessun record CNAME dovrebbe puntare a un altro record CNAME. Se, ad esempio, vengono utilizzati due record CNAME, dove www.example.com punta al nome canonico foo.example.com e poi foo.example.com punta a www.example.com, la ricerca controllerà all’infinito un nome contro l’altro.