Solución:
La mayoría de las respuestas dadas aquí son falso. Es perfectamente legal tener un guión bajo en un nombre de dominio. Permítanme citar el estándar, RFC 2181, sección 11, “Sintaxis del nombre”:
El propio DNS coloca solo una restricción en las etiquetas particulares que se pueden usar para identificar los registros de recursos. Esa única restricción se relaciona con la longitud de la etiqueta y el nombre completo. […] Las implementaciones de los protocolos DNS no deben imponer restricciones a las etiquetas que se pueden utilizar. En particular, los servidores DNS no deben negarse a dar servicio a una zona porque contiene etiquetas que pueden no ser aceptables para algunos programas cliente DNS.
Consulte también la especificación DNS original, RFC 1034, sección 3.5 “Sintaxis de nombre preferida”, pero léala con atención.
Los dominios con guiones bajos son muy comunes en la naturaleza. Cheque _jabber._tcp.gmail.com
o _sip._udp.apnic.net
.
Otros RFC mencionados aquí tratan con cosas diferentes. La pregunta original era para nombres de dominio. Si la pregunta es para nombres de host (o para URL, que incluyen un nombre de host), entonces esto es diferente, el estándar relevante es RFC 1123, sección 2.1 “Nombres y números de host” que limita nombres de host a letras-dígitos-guion.
Una nota sobre terminología, en apoyo a la respuesta de Bortzmeyer
Hay que tener claras las definiciones. Como se usa aquí:
- nombre de dominio es el identificador de un recurso en una base de datos DNS
- etiqueta es la parte de un nombre de dominio entre puntos
- nombre de host es un tipo especial de nombre de dominio que identifica a los hosts de Internet
los nombre de host está sujeto a las restricciones de RFC 952 y la ligera relajación de RFC 1123
RFC 2181 deja en claro que existe una diferencia entre un nombre de dominio y un nombre de host:
…[the fact that] cualquier etiqueta binaria puede tener un registro MX no implica que cualquier nombre binario pueda usarse como parte de host de una dirección de correo electrónico …
Así que subraya en nombres de host son un no-no, guiones bajos en nombres de dominio están bien.
En la práctica, uno puede ver nombres de host con guiones bajos. Como dice el Principio de Robustez: “Sea conservador en lo que envíe, liberal en lo que acepte”.
Una nota sobre la codificación
En el siglo XXI, resulta que nombres de host al igual que nombres de dominio puede ser internacionalizado! Esto significa recurrir a codificaciones en caso de etiquetas que contienen caracteres que están fuera del conjunto permitido.
En particular, permite codificar el _
en nombres de host (Actualización 2017-07: esto es dudoso, ver comentarios. _
todavía no se puede utilizar en nombres de host. De hecho, ni siquiera se puede utilizar en etiquetas internacionalizadas).
El primer RFC para la internacionalización fue el RFC 3490 de marzo de 2003, “Internacionalización de nombres de dominio en aplicaciones (IDNA)”. Hoy tenemos:
- RFC 5890 “IDNA: Definiciones y marco documental”
- RFC 5891 “IDNA: Protocolo”
- RFC 5892 “Los puntos de código Unicode e IDNA”
- RFC 5893 “Secuencias de comandos de derecha a izquierda para IDNA”
- RFC 5894 “IDNA: antecedentes, explicación y fundamento”
- RFC 5895 “Caracteres de asignación para IDNA 2008”
También puede consultar la entrada de Wikipedia
RFC 5890 introduce el término etiqueta LDH (Letter-Digit-Hypen) para etiquetas utilizada en nombres de host y dice:
Esta es la forma de etiqueta clásica que se usa, aunque con algunas restricciones adicionales, en los nombres de host (RFC 952). Su sintaxis es idéntica a la descrita como la “sintaxis de nombre preferida” en la Sección 3.5 de RFC 1034 modificada por RFC 1123. En resumen, es una cadena que consta de letras ASCII, dígitos y el guión con la restricción adicional de que el guión no puede aparecen al principio o al final de la cadena. Como todas las etiquetas DNS, su longitud total no debe exceder los 63 octetos.
Volviendo a tiempos más simples, este borrador de Internet es una propuesta temprana para nombre de host internacionalización. Los nombres de host con caracteres internacionales se pueden codificar utilizando, por ejemplo, la codificación ‘RACE’.
El autor de la propuesta de ‘codificación RACE’ señala:
De acuerdo con RFC 1035, las partes del host deben distinguir entre mayúsculas y minúsculas, comenzar y terminar con una letra o un dígito y contener solo letras, dígitos y el carácter de guión (“-“). Esto, por supuesto, excluye cualquier carácter internacionalizado, así como muchos otros caracteres del repertorio de caracteres ASCII. Además, las partes del nombre de dominio deben tener 63 octetos o menos de longitud … Todas las partes del nombre post-convertidas que contienen caracteres internacionalizados comienzan con la cadena “bq–“. (…) Se eligió la cadena “bq–” porque es extremadamente improbable que exista en partes del host antes de que se produjera esta especificación.
Es posible que deba saber una cosa adicional: si la parte del host o subdominio de la URL contiene un guión bajo, IE9 (no ha probado otras versiones) no puede escribir cookies.
Así que ten cuidado con eso. 🙂