Est-il valide qu'un nom d'hôte commence par un chiffre?

45

Est-il valide qu'un nom d'hôte commence par un chiffre? par exemple8server

D'après la lecture de la RFC 1123, il semblerait qu'il s'agisse d'un nom d'hôte valide. Cependant, je ne sais pas si un nom d’hôte ne peut commencer par un chiffre que s'il existe un suffixe, par exemple8server.com

L'origine de cette question est que InternetDomainName.isValid("8server");dans la bibliothèque Google Guava ( Javadoc ) rejette l'entrée. J'ai également posté une question spécifique sur le groupe de discussion goyave .

marque
la source
2
Comme preuve par exemple, ils existent: 7dayshop.com
Holloway
3
Que diriez-vous d'un nom d'hôte composé uniquement de chiffres? 88888888.cn
小 太郎
7
4chan.comest un nom d'hôte valide (et bien connu) qui commence par un numéro.
IQAndreas
3
Comment pouvez-vous oublier 9gag.com ? : D
ADTC
8
@IQAndreas, 4chan.org est une raison suffisante pour la rendre invalide . (Je rigole anonyme, ne me faites pas de mal.)
Paul Ruane

Réponses:

33

La RFC 1123 assouplit une contrainte de la RFC 952 qui spécifie un héritage du protocole de serveur de nom d'hôte (décrit dans la RFC 953 ) remplacé par le DNS. Donc, un nom d’hôte entièrement numérique serait valide pour ces RFC.

La RFC 1123 elle-même décrit les conséquences en ce qui concerne l'analyse IP par nom d'hôte:

Si un nombre décimal en point peut être entré sans ces délimiteurs d'identification, une vérification syntaxique complète doit être effectuée, car un segment d' un nom de domaine hôte est désormais autorisé à commencer par un chiffre et peut légalement être entièrement numérique (voir Section 6.1. 2.4). Toutefois, un nom d'hôte valide ne peut jamais avoir la forme décimale séparée par des points #. #. #. #, Car au moins l'étiquette du composant de niveau le plus élevé sera alphabétique.

Cependant, il était prévu dans les directives RFC 1178 de choisir un nom d'hôte valide en raison de problèmes d'implémentation. Un grand nombre de ces implémentations ne reconnaissent pas bien les noms d’hôte numériques et essaient de les analyser comme s’ils étaient des adresses IP jusqu’à ce qu’ils contiennent au moins un caractère non numérique, quel que soit l’emplacement.

En outre, vous constaterez que les implémentations ne respectent pas toujours les autres contraintes d'origine de la RFC 952, permettant par exemple au nom d'hôte de se terminer par un signe moins ou un point.

DNS a préservé ces spécifications d'origine pour les noms d'hôte et ajouté la prise en charge des caractères de soulignement ( RFC 2782 ).

Mise à jour Comme demandé dans les commentaires, clarification de la phrase: Toutefois, un nom d’hôte valide ne peut jamais avoir la forme décimale en pointillé #. #. #. #, Car au moins l’étiquette du composant de plus haut niveau sera alphabétique . Cela signifie que le nom de domaine de premier niveau doit être alphabétique . Par conséquent, le nom d'hôte qualifié complet ne peut jamais être confondu avec une adresse IPv4. La RFC 3696 pour le DNS a clarifié cette idée et l'a modifiée en une solution non entièrement numérique . Notez la légère différence.

Xavier Lucas
la source
7
Gardez à l'esprit que les implémentations qui ne pouvaient pas gérer les chiffres des noms remontaient aux années 1980; La RFC 1178 a été publiée en 1990. Tout ce qui ne peut pas le gérer maintenant est tout simplement un buggy.
Michael Hampton
@ MichaelHampton Vous seriez surpris de voir combien d'implémentations n'honorent toujours pas ces RFC. À partir de la gestion de vos fichiers hôtes Linux.
Xavier Lucas
11
Haha, non je ne voudrais pas. Il ne se passe pratiquement pas un jour sans que je n’aie à battre un développeur avec une RFC.
Michael Hampton
2
@ Michael Hampton: Vous ne croiriez pas la merde que je vois parfois chez les développeurs. Il y a quelques semaines, j'en ai eu un qui avait créé une page Web de configuration de réseau dans une caméra IP afin que l'utilisateur puisse entrer le nom d'hôte de la caméra. Il n'a effectué AUCUNE validation sur l'entrée utilisateur au format libre. L’utilisateur bêta-test est entré dans la "salle 1.10" et la caméra vidéo l’envoie joyeusement en tant qu’identifiant de client DHCP. Je peux vous assurer que les serveurs DHCP et DNS de Microsoft n’aiment pas cela. C'est une bonne chose que j'ai remarquée auparavant et qui est entré dans la production. Je ne peux que frémir à la pensée de ce qui arrive parfois au client ...
Tonny
13

À l'origine, le nom d'hôte ne pouvait pas commencer par un chiffre ou un trait de soulignement ( RFC 952 ), mais la nouvelle spécification RFC 1123, comme vous l'avez mentionné, le permet.

Concernant l'appel à isValid (), dans ce cas, le nom de domaine complet doit être passé en paramètre: InternetDomainName.isValid("8server.com");

Céline Aussourd
la source
Un nom de domaine complet doit-il vraiment être transmis à la méthode isValid? Après tout InternetDomainName.isValid("server");retourne vrai.
Marc
@ Mark OK, j'ai mis à jour la réponse en conséquence
Céline Aussourd
9

Oui. La RFC 1123 le permet clairement et voici un exemple:

http://9292.nl/

C'est le planificateur d'itinéraire pour les transports publics néerlandais.

Lâche anonyme
la source
3
Il y en a beaucoup plus: 9gag.com , 4chan.org , etc.