Convalida dei nomi di dominio (conformità alle norme RFC)

Verifica che un nome di dominio rispetti le regole sintattiche delle norme RFC 1035 e 1123. Controlla una per una la lunghezza delle etichette, la lunghezza complessiva, i caratteri ammessi e la posizione dei trattini, indicando il motivo preciso di ogni violazione.

Consigli per l'uso

  • Lo strumento verifica la sintassi definita dalle norme RFC 1035 e 1123 e non accerta se il dominio sia effettivamente registrato o utilizzabile, cioè se esista nel sistema dei nomi.
  • Prima di scrivere di vostra mano un'espressione regolare per la convalida di un modulo, conviene osservare qui il comportamento nei casi limite — esattamente 63 caratteri, trattini in posizioni particolari — per non trascurare nulla in fase di sviluppo.
  • Per i nomi che contengono caratteri non ASCII, come i domini in ideogrammi, la sola verifica dei caratteri ammessi resta indeterminata. Per un controllo accurato convertiteli prima nella notazione «xn--» con lo strumento di conversione Punycode.
  • Il caso di un dominio di primo livello composto di sole cifre non si presenta quasi mai nella pratica, ma è incluso di proposito fra i controlli per evitare, nella convalida dei dati inseriti dagli utenti, che un indirizzo IP venga scambiato per un nome di dominio.
  • Le stesse regole valgono per la parte che segue la chiocciola in un indirizzo di posta elettronica, cioè il dominio: lo strumento si presta quindi anche a una verifica sommaria degli indirizzi.

Domande frequenti

La norma RFC 1035 stabilisce che ogni etichetta, cioè ciascuna parte separata dai punti, sia lunga da 1 a 63 caratteri e che il dominio nel suo complesso non superi i 253 caratteri, limite che deriva dai 255 ottetti previsti dal formato di trasmissione. Nella pratica, però, i singoli registri possono imporre restrizioni ulteriori.

Secondo le norme RFC 1035 e 1123 un nome di host può contenere soltanto lettere, cifre e trattini: il carattere di sottolineatura non è ammesso. Compare però nelle etichette di record diversi dai nomi di host, come i record TXT o SRV del sistema dei nomi, per esempio in «_dmarc.example.com».

La norma RFC 1123 prescrive che ogni etichetta cominci e finisca con una lettera o una cifra. Un trattino in prima o in ultima posizione rende ambigua l'analisi sintattica; la regola serve inoltre a evitare problemi di compatibilità con le vecchie implementazioni del sistema dei nomi.

I nomi di dominio internazionalizzati vengono sempre convertiti in Punycode, cioè nella notazione ASCII che comincia con «xn--», prima di essere registrati nel sistema dei nomi. Poiché lo strumento è progettato per convalidare la stringa già convertita, per questi domini conviene procedere prima alla conversione con l'apposito strumento e poi al controllo sintattico.
Tool-kun

A proposito — perché la convalida dei nomi di dominio viene continuamente reinventata

Il controllo sintattico di un nome di dominio sembra risolvibile con una sola espressione regolare, eppure è un terreno su cui molti sviluppatori sono inciampati scrivendo implementazioni proprie. La convalida di un indirizzo di posta in un modulo, l'analisi di un nome di host in un file di configurazione, il controllo di un indirizzo web in un'interfaccia di programmazione: in ogni occasione occorre trattare stringhe che somigliano a un dominio, ma le realizzazioni che rispecchiano fedelmente le regole formali delle norme RFC 1035 del 1987 e RFC 1123 del 1989 non sono affatto numerose.

Il doppio limite di lunghezza — 63 caratteri per etichetta e 253 complessivi — deriva per esempio dal formato di trasmissione del sistema dei nomi, cioè dalla forma binaria che viaggia realmente in rete. Ogni etichetta è preceduta da un ottetto che ne indica la lunghezza, e il fatto che quel valore sia limitato all'intervallo fra 0 e 63, il massimo esprimibile con sei bit, è la ragione diretta del limite sulle etichette.

Anche la consuetudine che vieta i domini di primo livello composti di sole cifre ha una storia curiosa. Non è una regola obbligatoria messa nero su bianco in una norma, bensì un accorgimento realizzativo diffusosi per distinguere i nomi di dominio dagli indirizzi IP nella loro forma numerica puntata. Molti risolutori e molti navigatori si servono di questa convenzione per stabilire che una stringa come 192.168.1.1 vada trattata come indirizzo IP e non come nome di dominio.