2015-08-29 29 views
11

Ho visto diverse menzioni che la lunghezza massima della stringa di un nome DNS (nome dominio) è di 253 caratteri. Wikipedia sembra riferirsi questo vecchio post del blog:Qual è la lunghezza massima di un nome DNS

https://en.wikipedia.org/wiki/Hostname http://blogs.msdn.com/b/oldnewthing/archive/2012/04/12/10292868.aspx

D'altra parte, se ho capito la RFC, questo articolo è sbagliato. nome DNS lunghezza massima stringa dovrebbe essere di 250 caratteri ASCII invece di 253 in base alla seguente sequenza di byte che secondo RFC1035 è al massimo di 255 byte:

Per semplificare implementazioni, la lunghezza totale di un nome di dominio (cioè, etichetta ottetti ed ottetti lunghezza etichetta) è limitato a 255 ottetti o in meno.

Secondo RFC1035, i nomi di dominio è composto come segue:

un nome di dominio rappresentato come una sequenza di etichette, dove ogni etichetta è costituito da un ottetto lunghezza seguito da quel numero di ottetti. Il nome del dominio termina con l'ottetto della lunghezza zero per l'etichetta nulla della radice. Si noti che questo campo può essere un numero dispari di ottetti; non viene utilizzata alcuna imbottitura.

Il che significa che i seguenti campi costituiscono i nomi di dominio:

  1. Lunghezza Label (LL): 1 byte
  2. Nome Etichetta (LN): 63 byte (massimo) perché il valore massimo della lunghezza dell'etichetta può essere solo 00111111 (dal i primi due bit sono riservati per funzionalità speciali come i puntatori)
  3. Etichetta Null (NL): 1 byte (che rappresenta il dominio principale)

Il formato dovrebbe essere sempre (a differenza del post sul blog):

LL + LN [LL + LN ...] + NL

Il che significa che la lunghezza massima dovrebbe essere (1 byte = 1 carattere = 1 ottetto):

LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (63) LL (1) + LN (61) + NL (1) = 255 byte

Quindi se calcoliamo la parte stringa solo (LN s), otteniamo:

63 + 63 + 63 + 61 = 250 caratteri al massimo.

Mi sono perso qualcosa o dovremmo aggiornare alcuni riferimenti di Wikipedia? L'unica parte che non sono sicuro riguarda l'etichetta Null che fa parte dei 255 byte.

risposta

12

Con il metodo del conteggio, il nome di dominio a.b.c.d.e. sarà considerato lungo cinque caratteri. Sospetta che non molte persone troveranno utile quel modo di contare. Questo modo di contare rende anche la lunghezza massima variabile con il numero di etichette, quindi quando hai quattro etichette la lunghezza massima è di 250 caratteri, ma se hai 127 etichette la lunghezza massima è di 127 caratteri.

pensare in questo modo: quando il risultato della stampa di un nome di dominio per uso umano, noi facciamo stampa i byte di lunghezza, è solo che li stampiamo come periodi (tutti loro, ma il primo byte di lunghezza). Se non lo facessimo, non saremmo in grado di distinguere tra a.b.c. e abc.. Dal momento che li stampiamo, dovrebbero essere inclusi quando contiamo la lunghezza. E con questo modo di contare, la lunghezza massima è sempre di 253 caratteri (incluso il periodo finale e l'ottetto zero non stampato per la radice fa 255).

In altre parole, se si dispone di un massimo di 250 caratteri ASCII (lettere, numeri, trattino), considerando che il numero minimo di etichette è 4, sarà necessario aggiungere anche 3 punti stampabili tra di loro che riassumono in 253 caratteri stampabili (ommited il primo byte di lunghezza e l'etichetta nulla).

esempio che segue (in grassetto sono i caratteri stampabili, e LLS vengono stampati come punti):

LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (63) + LL (1) + LN (61) + NL (1) = 255 byte

Così il nuovo calcolo tra cui puntini diventano:

63 + + 63 + + 63 + + 61 = 25 caratteri massimo.

+0

Che avrebbe senso. Quindi, in altre parole, 250 è il numero massimo di caratteri (senza i punti) e se includiamo i punti (senza quello finale), il valore di 253 caratteri sarebbe corretto? –

8
  1. 253 caratteri è la lunghezza massima di pieno nome di dominio, tra cui punti: per esempio www.example.com = 15 caratteri.
  2. 63 caratteri nella lunghezza massima di "etichetta" (parte del nome del dominio separata da punto). Le etichette per www.example.com sono com, esempio e www.

Questo è un esempio del dominio con l'etichetta più lunga possibile (un sito Web completamente funzionante BTW): http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/. La lunghezza del nome di dominio = 71 caratteri.

Questo sarà un esempio di nome di dominio più lungo: abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com

Problemi correlati