¿Es válido que un nombre de host comience con un dígito?


45

¿Es válido que un nombre de host comience con un dígito? p.ej8server

Al leer RFC 1123 parecería que este es un nombre de host válido. Sin embargo, no tengo claro si un nombre de host solo puede comenzar con un dígito cuando hay un sufijo, por ejemplo8server.com

El origen de esta pregunta es que InternetDomainName.isValid("8server");en la biblioteca Google Guava ( Javadoc ) rechaza la entrada. También publiqué una pregunta específica en el grupo de discusión de guayaba .


2
Como una especie de prueba por ejemplo, existen: 7dayshop.com
Holloway

3
¿Qué tal un nombre de host de solo dígitos? 88888888.cn
小 太郎

77
4chan.comes un nombre de host válido (y bien conocido) que comienza con un número.
IQAndreas

3
¿Cómo puedes olvidar 9gag.com ? : D
ADTC

8
@ IQAndreas, 4chan.org es una razón suficiente para invalidarlo . (Es broma, no me hagas daño.)
Paul Ruane

Respuestas:


33

RFC 1123 relaja una restricción de RFC 952 que especifica un legado del Protocolo de servidor de nombre de host (descrito en RFC 953 ) reemplazado por DNS. Por lo tanto, un nombre de host totalmente numérico sería válido según estos RFC.

RFC 1123 en sí analiza las consecuencias cuando se trata de análisis de IP versus análisis de nombre de host:

Si se puede ingresar un número decimal punteado sin tales delimitadores de identificación, entonces se debe realizar una verificación sintáctica completa, porque un segmento de un nombre de dominio host ahora puede comenzar con un dígito y legalmente podría ser completamente numérico (consulte la Sección 6.1. 2.4) Sin embargo, un nombre de host válido nunca puede tener la forma decimal con puntos #. #. #. #, Ya que al menos la etiqueta del componente de nivel más alto será alfabética.

Sin embargo, se proporcionó en las pautas de RFC 1178 para elegir un nombre de host válido debido a problemas de implementación. Muchas de estas implementaciones no reconocen bien los nombres de host numéricos e intentan analizarlos como si fueran IP hasta que contienen al menos un carácter no numérico sin importar la ubicación.

Además, encontrará que las implementaciones no siempre respetan otras restricciones originales de RFC 952, lo que permite, por ejemplo, que el nombre de host finalice con un signo menos o un punto.

DNS conservó estas especificaciones originales para los nombres de host y agregó soporte para guiones bajos ( RFC 2782 ).

Actualización Como se solicitó en los comentarios, aclaración de la oración: Sin embargo, un nombre de host válido nunca puede tener la forma decimal con puntos #. #. #. #, Ya que al menos la etiqueta del componente de nivel más alto será alfabética . Esto significa que el nombre de dominio de nivel superior debe ser alfabético , por lo que el nombre de host completo nunca se puede confundir con una dirección IPv4. RFC 3696 aclaró esta idea para DNS y cambió a no todo numérico . Tenga en cuenta la ligera diferencia.


77
Tenga en cuenta que las implementaciones que no podían manejar dígitos en nombres se remontan a la década de 1980; RFC 1178 se publicó en 1990. Cualquier cosa que no pueda manejarlo ahora es simplemente defectuoso.
Michael Hampton

@MichaelHampton Te sorprendería saber cuántas implementaciones aún no cumplen con estos RFC. A partir de su manejo de archivos de hosts Linux.
Xavier Lucas

11
Jaja, no, no lo haría. Apenas pasa un día en el que no tengo motivos para vencer a algún desarrollador con un RFC.
Michael Hampton

2
@Michael Hampton: No podrías creer la mierda que veo de los desarrolladores a veces. Hace un par de semanas tuve una que había creado una página web de configuración de red en una cámara IP para que el usuario pudiera ingresar el nombre de host de la cámara. No hizo NINGUNA validación en la entrada de usuario de formato libre. El usuario de la prueba beta ingresó en "Room 1.10" y la cámara lo envió felizmente como identificador de cliente DHCP. Les puedo asegurar que a los servidores DHCP y DNS de Microsoft no les gusta eso. Lo bueno que noté antes fue que entró en la producción. Solo puedo estremecerme al pensar lo que a veces llega al cliente ...
Tonny

13

Originalmente, el nombre de host no podía comenzar con un dígito o un guión bajo ( RFC 952 ), pero la nueva especificación RFC 1123, como mencionó, lo permite.

Con respecto a la llamada a isValid (), en este caso, el nombre de dominio completo debe pasarse en el parámetro: InternetDomainName.isValid("8server.com");


¿Debería pasar realmente un nombre de dominio completo al método isValid? Después de todo InternetDomainName.isValid("server");vuelve verdadero.
Mark

@Mark OK, actualicé la respuesta en consecuencia
Céline Aussourd

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.