web-dev-qa-db-fra.com

Quelle est la longueur maximale d'un nom DNS

J'ai vu plusieurs mentions que la longueur de chaîne maximale d'un nom DNS (nom de domaine) est de 253 caractères. Wikipédia semble faire référence à cet ancien article de blog:

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

D'un autre côté, si j'ai bien compris la RFC, cet article est faux. La longueur maximale de la chaîne du nom DNS doit être de 250 ASCII caractères au lieu de 253 sur la base de la séquence d'octets suivante qui selon RFC1035 est au maximum de 255 octets:

Pour simplifier les implémentations, la longueur totale d'un nom de domaine (c'est-à-dire les octets d'étiquette et les octets de longueur d'étiquette) est limitée à 255 octets ou moins.

Conformément à RFC1035, les noms de domaine sont composés comme suit:

un nom de domaine représenté comme une séquence d'étiquettes, où chaque étiquette se compose d'un octet de longueur suivi de ce nombre d'octets. Le nom de domaine se termine par l'octet de longueur nulle pour l'étiquette nulle de la racine. Notez que ce champ peut être un nombre impair d'octets; aucun rembourrage n'est utilisé.

Ce qui signifie que les champs suivants composent les noms de domaine:

  1. Longueur de l'étiquette ( [~ # ~] ll [~ # ~] ): 1 octet
  2. Nom de l'étiquette ( [~ # ~] ln [~ # ~] ): 63 octets (maximum) car la valeur maximale de la longueur de l'étiquette ne peut être que 00111111 ( puisque les deux premiers bits sont réservés à des fonctionnalités spéciales comme les pointeurs)
  3. Null Label ( [~ # ~] nl [~ # ~] ): 1 octet (représentant le domaine racine)

Le format doit toujours être (contrairement à l'article de blog):

[~ # ~] ll [~ # ~] + [~ # ~] ln [~ # ~] [ [~ # ~] ll [~ # ~] + [ ~ # ~] ln [~ # ~] ...] + [~ # ~] nl [~ # ~]

Ce qui signifie que la longueur maximale doit être (1 octet = 1 caractère = 1 octet):

[~ # ~] ll [~ # ~] (1) + [~ # ~] ln [~ # ~] (63) + [~ # ~] ll [~ # ~] (1) + [~ # ~] ln [~ # ~] (63) + [~ # ~] ll [~ # ~] (1) + [~ # ~] ln [~ # ~] (63) [~ # ~] ll [~ # ~] (1) + [~ # ~] ln [~ # ~] (61) + [~ # ~] nl [~ # ~] (1) = 255 octets

Donc, si nous calculons uniquement la partie chaîne ( [~ # ~] ln [~ # ~] s), nous obtenons:

63 + 63 + 63 + 61 = 250 caractères maximum.

Ai-je raté quelque chose ou nous devrions mettre à jour quelques références Wikipédia? La seule partie dont je ne suis pas sûr concerne le fait que l'étiquette Null fasse partie des 255 octets.

24
Nicolas Bouvrette

Avec votre façon de compter, le nom de domaine a.b.c.d.e. serait considéré comme comportant cinq caractères. Il soupçonne que peu de gens trouveront cette façon de compter utile. Cette façon de compter fait également varier la longueur maximale en fonction du nombre d'étiquettes, donc lorsque vous avez quatre étiquettes, la longueur maximale est de 250 caractères, mais si vous avez 127 étiquettes, la longueur maximale n'est que de 127 caractères.

Pensez-y de cette façon: lorsque nous imprimons un nom de domaine à usage humain, nous imprimons les octets de longueur, c'est juste que nous les imprimons sous forme de points ( tous sauf le premier octet de longueur). Sinon, nous ne pourrions pas faire la différence entre a.b.c. et abc.. Puisque nous les imprimons, ils doivent être inclus lorsque nous comptons la longueur. Et avec cette façon de compter, la longueur maximale est toujours de 253 caractères (y compris la période finale et l'octet zéro non imprimé pour la racine fait 255).

En d'autres termes, si vous avez un maximum de 250 ASCII (lettres, chiffres, tiret), considérant que le nombre minimum d'étiquettes est 4, vous devrez également ajouter 3 points imprimables entre eux qui totalisent jusqu'à 253 caractères imprimables (omis le premier octet de longueur et l'étiquette nulle).

Exemple ci-dessous (les caractères imprimables en gras et les LL sont imprimés en points):

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

Ainsi, le nouveau calcul incluant les points deviendra:

63 + 1 + 63 + 1 + 63 + 1 + 61 = 25 caractères maximum.

29
Calle Dybedahl
  1. 253 caractères est la longueur maximale de nom de domaine complet , points compris: par exemple www.example.com = 15 caractères.
  2. 63 caractères dans la longueur maximale d'une "étiquette" (partie de nom de domaine séparé par un point). Les étiquettes pour www.example.com sont com , exemple et www .

Ceci est un exemple du domaine avec l'étiquette la plus longue possible (un site Web pleinement fonctionnel BTW): http://www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com/ . La longueur du nom de domaine = 71 caractères.

Ce sera un exemple de plus long nom de domaine: abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcde.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com

29
Ruslan Babali