¿Son válidos los nombres de host de una letra?

14

RFC-952 (última oración del punto 1 bajo Suposiciones) prohíbe los nombres de host de un solo carácter y he tenido experiencias (hace más de 7 años en el verano de 2002) en que algunos servicios se negarían a trabajar con nombres de host de un solo carácter (porque tales nombres eran no compatible con los estándares), pero he visto varios nombres de host de un solo carácter en uso en los últimos años. ¿Los nombres de host de un solo carácter ahora son válidos? (Si es así, ¿cuál es la referencia de validación adecuada?)

editar (para consolidar cierta información de las respuestas): varios aspectos del DNS parecen estar definidos en varios RFC, incluidos 1035 , 1123 y 2181 . De RFC-2181 sección 11 :

Note however, that the various applications that make use of DNS data
can have restrictions imposed on what particular values are
acceptable in their environment.  For example, that any binary label
can have an MX record does not imply that any binary name can be used
as the host part of an e-mail address.
[ ... ]
See also [RFC1123] section 6.1.3.5.

De RFC-1123 sección 6.1.3.5 :

The DNS defines domain name syntax very generally -- a
string of labels each containing up to 63 8-bit octets,
separated by dots, and with a maximum total of 255
octets.  Particular applications of the DNS are
permitted to further constrain the syntax of the domain
names they use, although the DNS deployment has led to
some applications allowing more general names.  In
particular, Section 2.1 of this document liberalizes
slightly the syntax of a legal Internet host name that
was defined in RFC-952 [DNS:4].

De RFC-1123 sección 2.1 :

The syntax of a legal Internet host name was specified in RFC-952
[DNS:4].  One aspect of host name syntax is hereby changed: the
restriction on the first character is relaxed to allow either a
letter or a digit.  Host software MUST support this more liberal
syntax.

Y finalmente, como se hizo referencia originalmente, de RFC-952 :

1. A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.).  Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background).  No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case.  The first
character must be an alpha character.  The last character must not be
a minus sign or period.
[ ... ]
Single character names or nicknames are not allowed.

Es a partir de seguir esta cadena que originalmente llegué a decir que RFC-952 prohíbe los nombres de host de un solo carácter.

Isaac
fuente

Respuestas:

2

Hay una diferencia entre "válido" y "funciona". Es completamente posible que los nombres de host no se consideren válidos si son caracteres únicos (no obstante mi publicación anterior). Sin embargo, muchos sistemas los permiten. Un sistema importante, el sistema AD / DNS de Microsoft, tiene una razón heredada para permitir nombres de caracteres únicos.

Los nombres NetBIOS de la vieja escuela pueden tener de 1 a 15 caracteres de longitud. Esta especificación se desarrolló independientemente de RFC952, se basa en un archivo diferente llamado lmhosts, por lo que funciona. El problema surgió cuando Microsoft se mudó de NetBEUI (en realidad, NBF, NetBIOS Frame Protocol) a TCP / IP (en realidad, NBT), y Microsoft tuvo que permitir la resolución de nombres en redes TCP / IP. MS eligió mantener una resolución de estilo NetBIOS con servidores WINS, evitando la necesidad de hosts compatibles con RFC952.

Luego vino Active Directory y sus dependencias DNS. El DNS dinámico era la regla, por lo que los clientes tenían que registrar su ComputerName (cuyos primeros 15 caracteres también son su nombre NetBIOS) en el dominio DNS. Dado que MS permite que los nombres NetBIOS de un solo carácter se registren en DNS, esto entró en conflicto con RFC952. Decidieron codificar sus sistemas para permitir esto, ya que emulaba cómo solía funcionar siempre en los días de WINS.

BIND DNS también permite nombres de host de un solo carácter. Pero el RFC2181 afirma que las aplicaciones necesitan examinar sus propios datos, ya no DNS. Lo que nos deja con una gran población de dispositivos y software para los que los nombres de host de un solo carácter están bien, y algunos valores atípicos que son estrictos con RFC952 que no lo permiten.

sysadmin1138
fuente
There is a difference between 'valid' and 'it works'. En última instancia, creo que esa es la respuesta más razonable, aunque aprecié mucho toda la discusión generada. La conclusión que sacaría es que los nombres de host de un carácter siguen siendo técnicamente inválidos, pero funcionan bastante universalmente en este punto. (Del mismo modo, los guiones bajos están prohibidos, pero funcionan en su mayor parte).
Isaac
11

Pensaría que son válidos porque los servidores de nombres raíz son todos hosts de una sola letra (a.root-servers.net), y la especificación DNS no crea una excepción específica para ellos. El RFC en cuestión es específicamente para el formato de archivo host, no DNS. El DNS se definió en un RFC posterior ( RFC 1035 lo inicia). RFC 1123 (1989) lo declara claramente.

 The syntax of a legal Internet host name was specified in RFC-952
 [DNS:4].  One aspect of host name syntax is hereby changed: the
 restriction on the first character is relaxed to allow either a
 letter or a digit.  Host software MUST support this more liberal
 syntax.

Por lo tanto, los nombres de host de una sola letra son válidos en sistemas basados ​​en DNS, y lo han sido desde antes de que se inventara el spam. Los sistemas que no lo hacen no son compatibles con RFC y pueden ser burlados. A menos que no usen DNS en absoluto y solo usen archivos de host, en ese momento la pena es una mejor opción.

sysadmin1138
fuente
De acuerdo, lo había leído en RFC-1123, pero lo interpreté como que significa que las especificaciones que leí en RFC-952 se aplican, excepto que un dígito también es permisible como primer carácter (como usted citó, no altera el prohibición de nombres de un solo carácter). En cuanto a los servidores raíz, en algún momento me dijeron que eran algún tipo de excepción especial a la regla.
Isaac
2

Como los nombres de host existían antes de que alguien siquiera pensara en escribir un RFC sobre ellos, no veo ninguna razón por la que los nombres de host de un solo carácter de repente se vuelvan "ilegales". Ese RFC en particular me perdió cuando decía

Este RFC es la especificación oficial.

porque un RFC NO es un estándar. Ni siquiera cerca.

A pesar de lo anterior, debe tenerse en cuenta que el RFC en cuestión fue creado para aplicar a un grupo relativamente pequeño, a saber, el Departamento de Defensa (presumiblemente de los Estados Unidos).

John Gardeniers
fuente
RFC, por definición, no es un estándar. "Solicitud de comentarios" no grita exactamente "estándar" a nadie. Es interesante que se salieron con la suya en sus propios documentos.
Mark Henderson
1
en.wikipedia.org/wiki/Domain_name_system#Internet_standards enumera muchos RFC que "definen" el protocolo DNS. RFC-1123 (como lo menciona sysadmin1138) se encuentra entre los mencionados y hace referencia a RFC-952. Según mi experiencia, si bien las RFC son solicitudes, se convierten en definiciones cuando son aceptadas.
Isaac
@Farseeker, no digo que sea el caso aquí, pero siempre me sorprende la gente, la mayoría de los cuales deberían saberlo mejor, que citan a los RFC como si fueran la máxima autoridad en un tema en particular. Estoy bastante seguro de que hay un RFC al respecto en alguna parte. ;)
John Gardeniers
1
Algunas RFC en realidad son estándares: las RFC 1034 y 1035 juntas, por ejemplo, comprenden STD0013. La razón por la que se llaman "Solicitudes de comentarios" es histórica, y en esencia tenía que ver con un montón de estudiantes de posgrado de baja calificación de finales de los años 60 que no querían molestar a sus superiores (lo escuché en persona directamente del autor de RFC 1).
Alnitak
2
@John Sugiero que lea RFC 2026. "A una especificación que alcanza el estado de Estándar se le asigna un número en la serie STD mientras conserva su número RFC". Escribo documentos IETF para mi trabajo diario.
Alnitak
1

Creo que los nombres de host actuales dependen más de las especificaciones de DNS ya que DNS es lo que la mayoría de las personas usará dentro de una red o en Internet. Dicho esto, me vienen a la mente tres RFC (1034 - conceptos, 1035 - implementación y 2181 - aclaraciones sobre DNS).

La Sección 3 de RFC 1034 dice:

El espacio de nombre de dominio es una estructura de árbol. Cada nodo y hoja del árbol corresponde a un conjunto de recursos (que puede estar vacío). El sistema de dominio no hace distinciones entre los usos de los nodos interiores y las hojas, y este memo utiliza el término "nodo" para referirse a ambos.

Cada nodo tiene una etiqueta, que tiene una longitud de cero a 63 octetos. Los nodos hermanos pueden no tener la misma etiqueta, aunque la misma etiqueta se puede usar para nodos que no son hermanos. Una etiqueta está reservada, y esa es la etiqueta nula (es decir, de longitud cero) utilizada para la raíz.

Y en la Sección 11 de RFC 2181 tenemos una aclaración sobre cómo nombrar cada nodo de la dirección:

El DNS en sí coloca solo una restricción en las etiquetas particulares
que pueden usarse para identificar registros de recursos. Esa restricción se
relaciona con la longitud de la etiqueta y el nombre completo. La longitud de cualquier etiqueta está limitada a entre 1 y 63 octetos. Un nombre de dominio completo está limitado a 255 octetos (incluidos los separadores)

Entonces, a la luz de las especificaciones de DNS, puede tener a.domain.tld

volcado de memoria
fuente
Del siguiente párrafo en la Sección 11 de RFC-2181: Note however, that the various applications that make use of DNS data can have restrictions imposed on what particular values are acceptable in their environment. For example, that any binary label can have an MX record does not imply that any binary name can be used as the host part of an e-mail address. Básicamente, porque a.domain.tld es válido en DNS no lo convierte en un nombre de host válido. El final de la Sección 11 hace referencia a la Sección 6.1.3.5 de RFC-1123, que cita la Sección 2.1 de sí misma y RFC-952, como se discutió en la respuesta de sysadmin1138.
Isaac
La cita al final de la sección 6.1.3.5 habla de menos restricciones en la convención de nomenclatura definida en 952. También el 952 define una tabla de host DOD y no estoy completamente convencido de que sea más relevante que las especificaciones de DNS.
coredump
Creo que la liberalización de las restricciones mencionadas al final de 6.1.3.5 se refiere solo a permitir que el primer carácter sea un número; esta es la única modificación mencionada en la sección 2.1 de ese mismo RFC (que es la sección a la que 6.1. 3.5 se refiere). Es en esa sección 2.1 que se hace referencia a la definición del RFC-952 como la definición de un nombre de host legal.
Isaac
También verifique RFC 920 y 921 que trata de la migración del antiguo DARPA a los nombres de dominio.
coredump
1

Como ha determinado, RFC 1123 no está completamente claro sobre este problema de longitud.

La sección 2.1 dice:

El software de host DEBE manejar nombres de host de hasta 63 caracteres y DEBE manejar nombres de host de hasta 255 caracteres

Dado que este texto anula completamente el texto del RFC 952, también se debe considerar que implica que cualquier longitud de hasta 255 caracteres es legal.

Desafortunadamente, en 1989, Internet Drafts no recibió la revisión increíblemente rigurosa que reciben ahora, por lo que la ambigüedad probablemente simplemente no se detectó.

Alnitak
fuente
1
Pero 2.1 también dice: The syntax of a legal Internet host name was specified in RFC-952 [DNS:4]. One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. ¿No es razonable interpretar esto como que su cita no anula por completo el texto del RFC-952?
Isaac
Dice eso, pero está claramente mal. RFC 1123 también cambia explícitamente la longitud permitida de un nombre de host.
Alnitak