2012-01-03 12 views
8

Per prima cosa:Qual è la lunghezza massima di un nome di dominio convertito IDNA?

sto memorizzazione di più domini a un database, dopo che ho convertito ogni nome di dominio è la versione IDNA. Quello che devo sapere è la lunghezza massima che può avere un nome di dominio convertito in IDNA, così posso definire la lunghezza massima del campo del database.

fatto noto:

Ora, so che il numero massimo di caratteri in un nome di dominio (compresi eventuali sottodomini) è di 255 caratteri.

Dove l'ho perso:

che è facile a prima vista, ma ... vuol dire questo caratteri ASCII regolari di caratteri internazionali (si pensi codifica UTF-8)?

Per fare un esempio: il dominio "müller.de" ha 9 caratteri quando ignoro che "ü" è un carattere internazionale che necessita di più byte per essere rappresentato. La versione IDNA di "müller.de" è "xn--mller-kva.de", che ha 16 caratteri. Questo dimostra che c'è sicuramente una differenza nella lunghezza massima a seconda di "se" è IDNA convertito o meno.

A seconda del tipo di caratteri che intendono, il massimo di 255 caratteri potrebbe essere la versione del personaggio internazionale, la versione convertita IDNA o addirittura entrambe.

E questo è dove ho perso un po '... soprattutto, dal momento che ho di prendere in considerazione che non tutti i domini saranno sani di mente e cose del genere "öüßüöäéèê.example.äöüßüöäéèê-äöüßüöäéèê.test.äöüßüöäéèê.com" e ancora peggio è da aspettarselo.

Quindi "indovinare" e "sperare per il meglio" non è un'opzione. Ho bisogno di sapere con certezza ...

La domanda è:

Sulla base del fatto noto che il numero massimo di caratteri in un nome di dominio (compresi eventuali sottodomini) è di 255 caratteri ... Qual è la lunghezza massima di un nome di dominio convertito IDNA?

o hanno significa che l'IDNA convertito versione (Punycode) è anche limitato a 255 caratteri (il che significherebbe che i domini con caratteri internazionali/unicode sarebbe in realtà hanno limiti più brevi nella loro rappresentazione Unicode, perché la loro IDNA convertito versione sarebbe rispettare il limite di 255 caratteri)?

risposta

5

La mia comprensione è che il limite di 255 caratteri deve essere considerato dopo la conversione IDNA.

Questo perché i record DNS hanno questo limite di caratteri e, in generale, i record DNS possono contenere solo lettere, cifre e trattini (from Wikipedia). Il server DNS utilizza quindi la versione Punycode dell'IDN per il suo record, non la versione Unicode.

+0

Sono arrivato alla stessa conclusione dopo aver controllato alcuni siti web registrar e le loro informazioni su "Nomi di dominio con accenti e dieresi". Sì, è 255 dopo la conversione. Ma grazie per la tua risposta. Significa che non sono l'unico ad arrivare alla stessa conclusione, ed è una cosa rilassante da sapere! ;) –

6

OK, penso che ho scoperto me stesso e questo frammento che ho trovato (cercando su Internet) ha aiutato:

C'erano sostanzialmente due diverse opzioni aperte per l'introduzione di nomi di dominio internazionalizzati (IDN). Il primo era di apportare modifiche al sistema dei nomi di dominio (DNS) che consentirebbe l'uso diretto dei caratteri unicode. Si è ritenuto che questa fosse una misura troppo drastica, e quindi è stata scelta la seconda opzione. Ciò comportava la compilazione di un algoritmo per specificare come convertire una stringa unicode in un nome di dominio ASCII consentito. Questa stringa ACE (ACE sta per ASCII Compatible Encoding) viene quindi inserita nel DNS. L'introduzione di IDN significa che, per la prima volta, la voce nel DNS non è più identica al nome di dominio.

- Source

La risposta è che la lunghezza da rispettare è il limite di 255 caratteri come DNS aspetta.

Il mio sospetto era corretto. Il nome di dominio e la voce nel DNS sono due cose diverse con IDN. È la lunghezza massima della voce DNS che conta.

Il nome di dominio "müller.de" ha 9 caratteri, ma la stringa ACE (ASCII Compatible Encoding) corrispondente "xn--mller-kva.de", tuttavia, ha 16 caratteri.

È la stringa ACE utilizzata da DNS ed è la stringa ACE che rientra nel limite di 255 caratteri. Ciò significa che il limite massimo della sua versione unicode (dominio) è definito dal numero di caratteri Unicode usati e se - dopo la conversione IDNA - la stringa si adatta ancora entro il limite di 255 caratteri.

Geez, le specifiche avrebbero potuto essere un po 'più chiare su cose come questa. Soprattutto perché i nomi di dominio internazionali sono in circolazione da qualche parte vicino al 1 marzo 2004. Ma ho trovato la risposta, ed è quello che conta.

Forse questo può aiutare qualcuno che sta facendo la stessa domanda.

La risposta semplice relativa alla lunghezza del campo del mio database è 255 CHAR.

Il fatto che io memorizzi i nomi di dominio nella loro versione convertita (punycode/ACE) IDNA conferma solo questo limite massimo di caratteri.

+0

Solo pochi secondi a parte ... Penso che tu vinca però :-) Ottima domanda, e contento siamo arrivati ​​alla stessa conclusione! – cmbuckley

+0

Bah, chi sta contando i secondi? Accetterò semplicemente la tua risposta invece della mia. È il minimo che posso fare per restituirti qualcosa per il tuo sforzo. Immagino di essere in vena sociale oggi ... :) –

+0

Grazie per la domanda e la risposta. Qualche possibilità di includere un puntatore/link alla fonte dello snippet o qualsiasi riferimento (documenti RFC, IETF, ecc.)? Grazie! – JJC

0

RFC3492 dice questo circa una delle caratteristiche codifica os IDNA:

codifica efficiente: Il rapporto tra la lunghezza della stringa di base per esteso lunghezza della stringa è piccola. Questo è importante nel contesto dei nomi di dominio perché RFC1034 limita la lunghezza di un'etichetta di dominio a 63 caratteri.

Questo è tutto. 63 caratteri è una lunghezza massima per qualsiasi nome di dominio non codificato se è in IDNA o in ASCII.

+2

questa è la restrizione sui singoli _labels_ all'interno del nome del dominio, non dell'intero nome – Alnitak